CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (http://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   pRef and adjustPhi (http://www.cfd-online.com/Forums/openfoam-programming-development/83876-pref-adjustphi.html)

santiagomarquezd January 13, 2011 16:09

pRef and adjustPhi
 
Hi all, I was studying adjustPhi and it is clear what is done, but I have a more basic question,

1. What is the reason of this adjustment and how it is related to pRef (the code is not run if pressure is fixed in some boundary)?

Regards

McCarra January 16, 2011 15:03

Hello Santiago,

Yes you are right. In case pressure has to be calculated, adjustPhi is necessary to obey continuity and allow a correct pressure solution. If pressure is already known (fixed) there's no reason for using adjustPhi.

Regards!

santiagomarquezd January 17, 2011 22:48

Josť, thx for the answer. I know that part, the background question is:

Why can appear mass imbalances if pressure is not fixed at any boundary?

Regards.

boger January 18, 2011 09:27

Keep in mind that the system of equations for the pressure Poisson equation is singular if there are Neumann conditions on all boundaries. On the other hand, if pressure is specified at one point or more, the matrix is non-singular. In the latter case, the matrix can be inverted without any problem, regardless of the right-hand side. In the former case, the matrix is singular and solutions to the system are more limited. In particular, they require that mass is already globally conserved, which amounts to one less condition that the solution needs to overcome.

That's a pretty non-technical explanation, but I hope it helps. For more info, see section 1.3 (compatibility conditions) in this link.

santiagomarquezd January 18, 2011 12:22

David thanks for your answer. It's true with all Neumann BC's, compatibility conditions must be satisfied. Nevertheless in FOAM due the pressure referencing you never solve a singular matrix. If you have a pressure boundary then there isn't a problem, on the other hand if pressure have to be referenced then you have to give a pRefValue and pRefCell or pRefPoint. With this data pressure value is enforced in that point by pEqn transformation, via fvMatrix::setReference() method. Looking at code, in fvMatrix.C


Code:

00475 template<class Type>
00476 void Foam::fvMatrix<Type>::setReference
00477 (
00478    const label celli,
00479    const Type& value,
00480    const bool forceReference
00481 )
00482 {
00483    if ((forceReference || psi_.needReference()) && celli >= 0)
00484    {
00485        source()[celli] += diag()[celli]*value;
00486        diag()[celli] += diag()[celli];
00487    }
00488 }
00489

it's clear that p value is enforced weakly. When you solve pEqn you don't obtain in pRefPoint the exact value you want. It would be completely different if you replace the equation for p en the cell corrresponding to pRefPoint doing diag()[celli]=1; and source()[celli]=pRef; then you recover the exact value of p.

May be this difference is the reason of the correction when you enforce the value of pRef. I don't know, but it's a detail we've found here with my advisor.

Regards.

boger January 18, 2011 12:56

As far as the weak enforcement, I think Hrv has discussed the reasoning previously on the forum. These touch on the topic (adjustPhi and the reference pressure), but if you dig around on the forum some more, I think there is a more explicit discussion somewhere already.

santiagomarquezd January 18, 2011 14:11

David, thx for the linx, I did some searching before but I couldn't arrive to these threads. Things aren't enterely clear yet. Hrv discusses the necessity of adjustPhi but not why it is necessary even if you set a reference. I'll post my conclusions later.

Regards.

mechy January 29, 2013 13:14

Quote:

Originally Posted by santiagomarquezd (Post 290993)
David, thx for the linx, I did some searching before but I couldn't arrive to these threads. Things aren't enterely clear yet. Hrv discusses the necessity of adjustPhi but not why it is necessary even if you set a reference. I'll post my conclusions later.

Regards.

Dear Santiago

did you find the answer of your question ?
if yes, please share it me.

Regards


All times are GMT -4. The time now is 18:31.