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/)
-   -   Pressure equation for compressible solver (https://www.cfd-online.com/Forums/openfoam-programming-development/159128-pressure-equation-compressible-solver.html)

Akshay September 9, 2015 09:06

Pressure equation for compressible solver
 
Hello!

I was trying to understand how the pressure equation(how 'p' is calculated) is formulated for a compressible flow(pressure based solver). I looked up openfoam's simpleFoam & rhoSimpleFoam to understand the differences but things are still unclear.
rhoSimpleFoam
fvScalarMatrix pEqn
(
fvm::div(phid, p)
- fvm::laplacian(rho*rAU, p) == fvOptions(psi, p, rho.name())
);

simpleFoam
fvScalarMatrix pEqn
(
fvm::laplacian(rAU, p) == fvc::div(phiHbyA)
);

Could someone help me with these equations?

Another thing I noticed in the rhoSimpleFoam solver is that they use setReference for pressure....I thought this referencing is needed only for incompressible flows that do not have any pressure boundaries so that the pressure values are not floating.

pEqn.setReference(pRefCell, pRefValue);

So why is this used in the compressible solver?

Regards
Akshay

Akshay September 12, 2015 07:29

Shoutout to bruno!!
 
Hey Bruno!!! As usual...I'm relying on you to point me in the right direction :p

wyldckat September 12, 2015 16:55

Quick answers:
Quote:

Originally Posted by Akshay (Post 563612)
Hey Bruno!!! As usual...I'm relying on you to point me in the right direction :p

:confused: OK... you should perhaps re-read again this post: http://www.cfd-online.com/Forums/ope...-get-help.html - you'll understand why in my next answer...

Quote:

Originally Posted by Akshay (Post 563120)
Could someone help me with these equations?

Your question is not clear. What exactly don't you understand?

Quote:

Originally Posted by Akshay (Post 563120)
pEqn.setReference(pRefCell, pRefValue);

So why is this used in the compressible solver?

The subsection "4.5.3.1 Pressure referencing" in the OpenFOAM User Guide addresses why this reference pressure is needed, namely because it's how relative pressure has to be dealt with. This means that the solver rhoSimpleFoam can also operate with relative pressure, even if it's compressible.
Beyond this, this pressure referencing is needed when no boundary condition defines a pressure value, e.g. if all BCs are zero gradient, then the equation would be undefined, hence the need for a reference pressure value in a specific point.

Akshay September 18, 2015 10:24

1. I basically wanted to know the difference between the pressure equations solved for an incompressible flow and pressure equation for a compressible flow.

2. Regarding reference pressure locations - I think some of the commercial codes use this only for incompressible solvers. Right? If yes, then why is that?

wyldckat September 19, 2015 13:07

Greetings Akshay,

Quote:

Originally Posted by Akshay (Post 564599)
1. I basically wanted to know the difference between the pressure equations solved for an incompressible flow and pressure equation for a compressible flow.

I've been using OpenFOAM for so long that it's affecting me. Essentially, since OpenFOAM is really picky about every single detail, I'm getting picky about every single detail as well :rolleyes:
Anyway, the reason why I don't understand you question is as follows...

rhoSimpleFoam
Code:

fvScalarMatrix pEqn                       
(   
    fvm::div(phid, p) 
  - fvm::laplacian(rho*rAU, p)  == fvOptions(psi, p, rho.name()) 
);

"fvOptions" is used for source terms. If you ignore this, you have this equation:
Code:

fvScalarMatrix pEqn                       
(   
    fvm::div(phid, p) 
  - fvm::laplacian(rho*rAU, p)  == 0
);

which is the same as:
Code:

fvScalarMatrix pEqn                       
(   
    fvm::laplacian(rho*rAU, p) == fvm::div(phid, p) 
);

It's pretty much the same structure as in simpleFoam:
Code:

fvScalarMatrix pEqn
(
    fvm::laplacian(rAU, p) == fvc::div(phiHbyA)
);

with the exception that "rho" is not present, because it's constant and cancels out.

Does this answer your question? If not, then please be specific about what you want to understand ;).



Quote:

Originally Posted by Akshay (Post 564599)
2. Regarding reference pressure locations - I think some of the commercial codes use this only for incompressible solvers. Right? If yes, then why is that?

I believe I already answered that question. But here's another thread on this topic: http://www.cfd-online.com/Forums/ope...-openfoam.html

The missing detail is probably what you're not asking: Why is the pressure relative to a reference value and not absolute? A few answers:
Best regards,
Bruno

Akshay September 21, 2015 04:03

Thanks Bruno and I apologize for not being able to hit the nail on the head with regards to my questions. Things are clear now but I have a follow up question ....
  • The rhoSimpleFoam solver we are talking about here is a pressure based solver. Yes it can have a reference pressure location(referencing). If we talk about a density based solver (rhoCentralFoam) then there is no pressure equation(pressure obtained using equation of state) to solve and we wouldn't need a reference pressure location for such a solver. Am I making sense?
Reg
Akshay

wyldckat September 21, 2015 13:21

Quote:

Originally Posted by Akshay (Post 564922)
The rhoSimpleFoam solver we are talking about here is a pressure based solver. Yes it can have a reference pressure location(referencing). If we talk about a density based solver (rhoCentralFoam) then there is no pressure equation(pressure obtained using equation of state) to solve and we wouldn't need a reference pressure location for such a solver. Am I making sense?

Quick answer: It does make sense what you're saying and seems to be correct. Nonetheless, do keep in mind that it can depend on the implementation; I say this because one possible implementation (which probably doesn't make much sense for compressible flow) would be to make the density "rho" relative to a reference :)

Akshay September 28, 2015 05:47

Hmm...to continue on this topic....

Interestingly, it looks like this referencing is not used for rhoPimpleFoam pressure equation but it is used for rhoSimpleFoam. What does steady or transient have to do with referencing the pressure value??

wyldckat October 3, 2015 10:22

Hi Akshay,

From what I can deduce, there are at least two possible reasons:
  1. The developers were not asked to implement this feature into rhoPimpleFoam.
  2. By looking at the source code, the same happens in the solvers buoyantSimpleFoam and buoyantPimpleFoam. This leads us to think about what is actually is being modelled: steady-state simulations are used mostly because the simulations should be faster to run than running a transient solver; which means that when simulating the steady-state flow profile, what we want is what the flow looks like when it reaches steady-state or a somewhat averaged result of a near steady-state.
For #2, think of it this way:
  • A steady-state simulation will very likely have a specific point where the pressure is constant and you may know what is the exact pressure value or at least have an idea of it. For example, at the top or bottom of the domain, due to gravity.
  • On the other hand, in a transient simulation, the probability of having a specific point inside the domain that has a constant pressure level is usually very unlikely, unless you're trying to simulate stale air inside a closed box with no source of momentum or pressure variation ;)
Best regards,
Bruno


All times are GMT -4. The time now is 07:40.