|September 18, 2013, 12:28||
Fully explanation of BuoyantBoussinesq***Foam and Buoyant***Foam solvers
Join Date: Dec 2012
Posts: 9Rep Power: 5
In this thread I would like to finally clarify how BuoyantBoussinesq(Simple/Pimple)Foam and Buoyant(Simple/Pimple)Foam work (in 2.1.x version). Of course I've read carefully this pages:
but it didn't clear everything for me. So below you can find some questions:
1. Why in source code everywhere before "ghf" is "-", althought from st page, in the final equation "g*rhok" is with "+" (not minus)?
2. What does "fvc::ddtPhiCorr(rAU,U,phi) do? (you can find it in i.e. pEqn.H in buoyantBoussinesqSimpleFoam)
I know, that in nd page, there is small explanation:
"// adjusts the inlet and outlet fluxes to obey continuity, which is necessary for creating a well-posed // problem where a solution for pressure exists." but I totally can't understand it... Can someone explain it in simpler words and say why it is in this equation?
3. Why in pEqn.H there is written:
"U -= rAU*fvc::reconstruct( something/rAUf)"
Why can't we just write "U -= fvc::reconstruct(something) (I mean, without this strange manipulation: rAU*reconstruct(1/rAUf) ?
4. What exactly gives function "p_rghEqn.flux();" ?
5. In BuoyantSimleFoam and BuoyantBoussinesqSimpleFoam, in TEqn.H, what means addition:
and why in Pimple case this part doesn't exist?
6. What does below given function:
7. Why in energy equation for BuoyantPimpleFoam part "laplacian(kappaEff, T)" and viscous dissipation is neglected? It is neglected in compressible case, but why? I think that conduction still exist here in the same way like it exists in incompressible solver buoyantBoussinesqSimpleFoam.
8. And the final questions about BuoantPimpleFoam and pEqn.H :
-what does "rho=thermo.rho();" do?
If it calculates density from equation: rho=psi*p_rgh, why after that we have to update thermo.rho()? I understand that after recalculation of p_rgh, we have new p_rgh field, and the difference of new and old p_rgh field values and have influence on rho changing, but even if we update thermo.rho() with new p_rgh field values, in source code there is no line where after that we use this new, updated thermo.rho so... why do we calculate it? If pEqn.H loops are higher than 1, in next second loop rho is again calculated in first line with "rho=thermo.rho" command, so why did we need this psi*d(p) update for rho during previous loop?
And next question, why at the end of pEqn.H rho is again calculated from continuity conservation:
" #include "rhoEqn.H" ?
Or maybe first line "rho=thermo.rho();" is not a calculation of rho for new loop, but it just overwrite new "rho" field from "thermo.rho" field which is then updated during running of loop? Then it makes sense and this last question is solved.
Thanks for everyone, who will even try to answer for even one of this questions
Last edited by palazi88; September 18, 2013 at 13:49.