CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM (http://www.cfd-online.com/Forums/openfoam/)
-   -   Differences in solution method for pisoFoam and buoyantBoussinesqPisoFoam (http://www.cfd-online.com/Forums/openfoam/71406-differences-solution-method-pisofoam-buoyantboussinesqpisofoam.html)

mchurchf December 30, 2009 17:56

Differences in solution method for pisoFoam and buoyantBoussinesqPisoFoam
 
To whom can help,

I am trying to reconcile some differences between pisoFoam and buoyantBoussinesqPisoFoam.

In the UEqn.H file of buoyantBoussinesqPisoFoam the following equation is set up to predict velocity:

UEqn
==
fvc::reconstruct((fvc::interpolate(rhok)*(g & mesh.Sf()) - fvc::snGrad(p)*mesh.magSf()))

However, in pisoFoam, this is the equation:

UEqn == -fvc::grad(p)

Aside from the inclusion of the gravity term in buoyantBoussinesqPisoFoam, why are the face values used to reconstruct the cell centered values, whereas in pisoFoam the cell center values are used directly?

The same situation occurs in setting up the pressure equation. In buoyantBoussinesqPisoFoam, the equation is:

volScalarField rUA("rUA", 1.0/UEqn.A());
surfaceScalarField rUAf("(1|A(U))", fvc::interpolate(rUA));
fvm::laplacian(rUAf, p) == fvc::div(phi)

whereas in pisoFoam, it is:

volScalarField rUA = 1.0/UEqn.A();
fvm::laplacian(rUA, p) == fvc::div(phi)

buoyantBoussinesqPisoFoam is solving for pressure on the faces, and pisoFoam is solving for cell centered pressure. Does this make a difference? Why are the two codes different in this manner?

Thank you

alberto January 10, 2010 17:27

Hi,

in pisoFoam you have the standard implementation, in buoyantBoussinesqPisoFoam the solution algorithm is modified as follows:

- you reconstruct the gravity and the pressure gradient contributions from the corresponding contribution to the flux

- you solve a "pseudo-staggered" version of the pressure equation

- you correct the flux

- you obtain the velocity correction reconstructing from the flux again (remember the flux is always continuous)

This technique tries to mimic a staggered grid arrangement. It is applied to the gravity term too, since it is included in the pressure equation.

Best,
Alberto

samiam1000 March 12, 2012 07:12

Quote:

Originally Posted by alberto (Post 242055)
Hi,

in pisoFoam you have the standard implementation

Dear Alberto,

I am trying to understand the different solvers. So, for simpleFoam I've found this wiki..
As far as the pisoFoam is concerned, you wrote that it present the standard implementation.
What does this mean? Is there a reference page?

Thanks a lot,
Samuele

alberto March 12, 2012 07:53

Quote:

Originally Posted by samiam1000 (Post 348911)
Dear Alberto,

I am trying to understand the different solvers. So, for simpleFoam I've found this wiki..
As far as the pisoFoam is concerned, you wrote that it present the standard implementation.
What does this mean? Is there a reference page?

Thanks a lot,
Samuele

Hi Samuele,

unfortunately I don't think there is a reference page. In pisoFoam you have the standard PISO algorithm you find in books, without body force term and without any particular treatment, except the Rhie-Chow interpolation. You can take a look at the icoFoam page on the wiki and you'll see many similarities.

My statement has to be read in the context of the comparison between the two solvers in the topic, where buoyantBoussinesqPisoFoam uses flux reconstruction to improve the solution procedure when body force terms are included.

Best,

samiam1000 March 12, 2012 07:57

That's great, thanks.

And what about the pimpleFoam solver? Do you know which solver is embedded in such a solver?

Thanks a lot,
Samuele

alberto March 12, 2012 08:00

The "pimple" solvers use a "combination of PISO and SIMPLE", which is not that far from the flavors you find in other codes with different names (unsteady SIMPLE, iterative PISO, depending on the creativity of the authors :-)).

In short, it is an iterative solution method with sub-iterations over the set of equations to improve the robustness of the algorithm using under-relaxation, and to speed-up transient simulations or perform pseudo-transient simulations.

Best,

sharonyue September 10, 2013 23:24

Quote:

Originally Posted by alberto (Post 242055)
Hi,

in pisoFoam you have the standard implementation, in buoyantBoussinesqPisoFoam the solution algorithm is modified as follows:

- you reconstruct the gravity and the pressure gradient contributions from the corresponding contribution to the flux

- you solve a "pseudo-staggered" version of the pressure equation

- you correct the flux

- you obtain the velocity correction reconstructing from the flux again (remember the flux is always continuous)

This technique tries to mimic a staggered grid arrangement. It is applied to the gravity term too, since it is included in the pressure equation.

Best,
Alberto

Dear Alberto,

Can I say that I have to reconstruct it when there is a body force? Is it a must?

for example, in interFoam's UEqn:
Code:

solve
        (
            UEqn
        ==
            fvc::reconstruct
            (
                (
                    fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
                  - ghf*fvc::snGrad(rho)
                  - fvc::snGrad(p_rgh)
                ) * mesh.magSf()
            )
        );

Can I code it like:
Code:

solve
        (
            UEqn
        ==
           
                    interface.sigmaK()*fvc::grad(alpha1)
                  - ghf*fvc::grad(rho)
                  - fvc::grad(p_rgh)
        );



All times are GMT -4. The time now is 01:35.