# Description of flux() method

 Register Blogs Members List Search Today's Posts Mark Forums Read

March 20, 2013, 05:19
Explanation of flux() method
#1
Senior Member

Fumiya Nozaki
Join Date: Jun 2010
Location: Yokohama, Japan
Posts: 173
Rep Power: 8
I try to describe the role of flux() method and how it achieves it's role in OpenFOAM.
This topic is difficult for me to comprehend, so I'm grad if the following explanations could be of some help
• Role of flux() method
To construct the conservative face flux
• How to achieve this
If we discretize the pressure poisson equation(e.g., pEqn in simpleFoam), we can get

---(1)

where (See the attached picture).

The second term of the l.h.s of the eqn. (1) is the explicit non-orthogonal correction term
(source term) and the first term is the implicit orthogonal part(matrix coefficients).
If we arrange the above equation using OpenFOAM notation(v2.2), we get

---(2)

Then we can construct the conservative face flux phi by

---(3)

In the eqn. (3), the pEqn.flux() calculates

---(4)

,so we can get the conservative face flux using the following code

Code:
if (simple.finalNonOrthogonalIter())
{
phi = phiHbyA - pEqn.flux();
}
• Where is flux() function implemented?
As you can see in the eqn. (4), the flux() is the sum of
• 1st term
the off-diagonal coefficients of the pressure poisson equation multiplied by pressure values at cell centers

in fvMatrix.C
Code:
00895     for (direction cmpt=0; cmpt<pTraits<Type>::nComponents; cmpt++)
00896     {
00897         fieldFlux.internalField().replace
00898         (
00899             cmpt,
00900             lduMatrix::faceH(psi_.internalField().component(cmpt))
00901         );
00902     }
and lduMatrix::faceH is implemented in lduMatrixTemplates.C
Code:
00092         for (register label face=0; face<l.size(); face++)
00093         {
00094             faceHpsi[face] =
00095                 Upper[face]*psi[u[face]]
00096               - Lower[face]*psi[l[face]];
00097         }
• 2nd term
the non orthogonality explicit corrections

in fvMatrix.C
Code:
00937     if (faceFluxCorrectionPtr_)
00938     {
00939         fieldFlux += *faceFluxCorrectionPtr_;
00940     }

Please correct the mistakes, if any.

Best regards,
Fumiya
Attached Images
 over-relaxed.png (5.5 KB, 73 views)

Last edited by fumiya; March 21, 2013 at 11:09.

August 25, 2013, 23:40
#2
Senior Member

Dongyue Li
Join Date: Jun 2012
Location: Torino, Italy
Posts: 701
Rep Power: 8
Quote:
 Originally Posted by fumiya I try to describe the role of flux() method and how it achieves it's role in OpenFOAM. This topic is difficult for me to comprehend, so I'm grad if the following explanations could be of some help .......................... Best regards, Fumiya
Excellent!!Fumiya now Its a bit clear regarding the p.Eqn.flux().

BTW, do you think
Code:
fvScalarMatrix pEqn
(
fvm::laplacian(rAU, p) == fvc::div(phiHbyA)
);

fvScalarMatrix pEqn
(
);
is the same?

 Thread Tools Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post m-fry Main CFD Forum 1 April 20, 2010 14:40 maximus Main CFD Forum 0 February 24, 2006 01:05 Kyung FLUENT 1 June 3, 2005 12:35 lego CFX 3 November 5, 2002 21:09 Francesco Di Maio Main CFD Forum 0 August 21, 2000 04:23

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