CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (https://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   Adding Boussinesq Approximation to multiphaseEulerFoam? (https://www.cfd-online.com/Forums/openfoam-programming-development/131626-adding-boussinesq-approximation-multiphaseeulerfoam.html)

dschmidt March 18, 2014 10:38

Adding Boussinesq Approximation to multiphaseEulerFoam?
 
1 Attachment(s)
Hello,

I'm quite new to openFoam, but I'm trying to implement the Boussinesq approximation into the multiphaseEulerFoam Solver (OF 2.2.x).

My first step was to add a simple temperature-equation for the hole system, including the calculation of rhok, as in other Boussinesq solvers.

TEqn.H:
Code:

      fvScalarMatrix TEqn
            (
                fvm::ddt(T)
                + fvm::div(phi, T)
                - fvm::laplacian(DT, T)
            );
   
        TEqn.relax();
   
        TEqn.solve();
   
        rhok = 1.0 - beta*(T - TRef);

As far as I could see, the gravity term is dealt within the pressure-equation, though I only modified two lines of code:

pEqn.H - lines 85-89
Code:

phiHbyAs[phasei] +=
      rAlphaAUfs[phasei]
      *(
      fluid.surfaceTension(phase)*mesh.magSf()/phase.rho()
      + /*(g & mesh.Sf())*/      fvc::interpolate(rhok)*(g & mesh.Sf())/phase.rho()                 
      );

...

pEqn.H - lines 235-241
Code:

phase.U() =
  HbyAs[phasei]
  + fvc::reconstruct
    (
      rAlphaAUfs[phasei]*/*(g & mesh.Sf())*/ fvc::interpolate(rhok)*(g & mesh.Sf())/phase.rho()
      + rAlphaAUfs[phasei]*mSfGradp/phase.rho() 
      );

Finally, in multiphaseEulerFoam.C I placed the "#include TEqn.H" right after the UEqn.

So my first question is, if this implementation makes sense or am I missing something important?



I also made some modifications to TEqn based on http://www.cfd-online.com/Forums/ope...er-solver.html
Code:

{
volScalarField rhoCp = fluid.rho()*fluid.Cp();

surfaceScalarField kByCpf = fvc::interpolate(fluid.kappa()/rhoCp + sgsModel->nut()/fluid.Prt());     

 fvScalarMatrix TEqn
 (
  fvm::ddt(T)
 + fvm::div(phi, T)
 - fvm::laplacian(kByCpf, T)
 );

TEqn.relax();

TEqn.solve();

rhok = 1.0 - beta*(T - TRef);
}

And tried to validate the modified multiphsaeEulerFoam against buoyantBoussinesqPimpleFoam, but as you can see in the picture, the temperature evolution is different (looks like lower Rayleigh Nr. with mod.MultiphaseSolver?), and so the velocities are different, too.

left: buoyantBoussinesqPimpleFoam | right: multiphaseEulerFoam-Boussinesq
Attachment 29438
Setup:
Fluid: Air (rho: 1.205; beta: 3.43e-03; Pr/Prt 0.71, nu: 15.11e-6; Cp: 1.005, kappa(multiphase): 0.0257)
T_left: 303 K
T_right: 283 K
TRef: 293 K



I believe/hope the reason can be found in the different TEqn-implementations, rather then in the PEqn, but would be glad if someone could support this assumption, and suggests an easy way to validate the multiphaseBoussinesq-version.

My first idea would be to edit the TEqn of PimpleBoussinesq Solver so it matches the TEqn with fixed diffusion coeff. (DT) and compare the results with the modified multiphaseSolver.

\\EDIT:
After implementing the same TEqn in both solvers I couldn't see much difference. Then I remembered that multiphaseEulerFoam
always has a residual phase fraction for overcoming the problems with non-phase intensive handling of the momentum equations.
So I edited the transport properties for the second phase (alpha uniform 0) to match the ones of the "alpha uniform 1" phase (air).
After that the temperature distribution looks more like the one with buoyantBoussinesqPimpleFoam, but the velocities are still lower
with the modified multiphaseSolver.
So the differences seem to be related to the fact, that multiphaseEulerFoam is not designed for dealing with a single phase system ?



Thanks !

tom_flint2012 January 16, 2017 17:40

Why no change to UEqns.h
 
Hello.
I have implemented your approach for the boussinsq approximation in multiphaseeulerfoam.

Please may you explain to me why you don't add a term in the UEqns.h file. Your advice would be greatly appreciated.

Best regards,

Tom

EDIT

My sincere apologies, I've just seen the peqn.h file again where the ueqns are modified. Apologies for any inconvenience.

Best regards,

Tom


All times are GMT -4. The time now is 19:57.