# meaning of HbyA

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

 June 6, 2013, 14:14 meaning of HbyA #1 Super Moderator     Tobias Holzmann Join Date: Oct 2010 Location: Leoben (Austria) Posts: 1,974 Blog Entries: 6 Rep Power: 33 Hi all, I am not clear about the variable HbyA Code: volVectorField HbyA("HbyA", U); HbyA = rAU*UEqn().H(); Can someone tell me what that variable is for? In the 1.6-ext version I found the same declaration: Code: U = rUA*UEqn().h(); So I think its the same, but why the different names? Thanks in advance Tobi

 June 6, 2013, 16:07 #2 Senior Member   Cyprien Join Date: Feb 2010 Location: Stanford University Posts: 262 Rep Power: 11 Dear Toby, As you noticed, both lines are similiar. Actually, the notation HbyA has been spread over all the solvers since the latest OF version (OF 2.2.0) for a sake of clarity. Keep in mind that for the computation of Naviers-Stokes equation, OF uses either PISO or SIMPLE algorithms. The semi-discretized form of the momentum is : where is the diagonal coefficients of the matrix resulting from the discretization of the momentum equation. stands for the non-diagonal coefficient (mainly composed by convective and diffusive terms) and the source terms (the source part of the transient term and other source that appear in UEqn) apart from the pressure gradient. Once this equation has been implicitly solved (the momentum predictor step), the predicted velocity does not satisfy the continuity equation. Moreover, in the previous equation, the pressure field result from the previous time step. Therefore, we are looking for (U,p) that obeys and Assembling this two equations, you can form the pressure equation: and then you reconstruct the velocity with: You clearly remark in this procedure that you use H divided by A or.. HbyA ;-) PS: in OF, rAU is the notation for the diagonal coeff of the matrix Best regards, Cyp Tushar@cfd, Tobi, armyou and 14 others like this.

 June 6, 2013, 16:23 #3 Senior Member   Cyprien Join Date: Feb 2010 Location: Stanford University Posts: 262 Rep Power: 11 I made slides some times ago to explain the PISO loops in OpenFOAM : http://fr.scribd.com/doc/143414962/P...on-in-OpenFOAM They are in French but understandable. It uses old OpenFOAM version, that means without the HbyA notation.

July 5, 2013, 02:45
#4
Senior Member

Dongyue Li
Join Date: Jun 2012
Location: Torino, Italy
Posts: 757
Rep Power: 10
Quote:
 Originally Posted by Cyp Assembling this two equations, you can form the pressure equation: Best regards, Cyp
Code:
fvScalarMatrix pEqn
(
fvm::laplacian(rAU, p) == fvc::div(rAU&HbyA)
);

 July 5, 2013, 06:24 #5 Super Moderator     Tobias Holzmann Join Date: Oct 2010 Location: Leoben (Austria) Posts: 1,974 Blog Entries: 6 Rep Power: 33 Hi all, as I understand from Cyp 's comment: So your last line should be: Code: fvScalarMatrix pEqn ( xxx == fvc::div(HbyA) ); I am not able to have a look into the code at the moment. Last edited by Tobi; July 6, 2013 at 05:41.

 November 15, 2013, 16:30 #6 Senior Member   Cyprien Join Date: Feb 2010 Location: Stanford University Posts: 262 Rep Power: 11 the same doc, in English with OF2.2 http://www.scribd.com/doc/181588911/...ion-of-icoFoam Tobi and pixarzhang like this.

December 24, 2013, 03:41
thx
#7
New Member

enzhen zhang
Join Date: Dec 2013
Location: Shanghai,China
Posts: 11
Rep Power: 6
Quote:
 Originally Posted by Cyp the same doc, in English with OF2.2 http://www.scribd.com/doc/181588911/...ion-of-icoFoam
it's very clear for me

March 14, 2014, 16:26
#8
Member

Join Date: Feb 2012
Posts: 49
Rep Power: 7
Dear Guys,

I'm using the 3step runge-kutta scheme to solve Navier Stokes equation.
There are some differences in the equations must be solved, but the main equations are same.you can see the equations in the attachment(those equations are put in a for loop, from k=1 to k=3)
Also, below you can see my summarized code to solve that, but i don't know how to use coefficients(same as piso loop of icoFoam) !
I would appreciate any idea on how to change my code to something like the piso loop of icoFoam :

Code:
while (runTime.loop())
{
for (int i = 1 ;  i<=3 ; ++i)
{
U = U + runTime.deltaT() *
(
+ 2*alpha*fvc::laplacian(nu,U)
- gamma*fvc::div(phi, U)
- zeta*fvc::div(phiOld2, UOld2)
);

solve(alpha*runTime.deltaT()*fvm::laplacian(nu,Unew) - fvm::Sp(1.,Unew)  == //(alpha*runTime.deltaT())  ==
(-1.)*(U) + alpha*runTime.deltaT()*fvc::laplacian(nu,U) );

solve (fvm::laplacian(pPhi) == fvc::div(U)/(2.*alpha*runTime.deltaT()));// pPhi is a pseudo pressure without physical meaning

p += pPhi - alpha*runTime.deltaT()*nu*(fvc::laplacian(pPhi));

U.correctBoundaryConditions();
}
} //alpha,gamma and zeta change in each of those 3 steps
Attached Images
 RungeKutta3step.png (9.0 KB, 71 views)

 March 27, 2016, 06:17 #9 Senior Member   Saideep Join Date: Apr 2015 Location: INDIA Posts: 177 Rep Power: 4 Thanks guys for sharing this information!! I am just going through the implementation of PISO/ PIMPLE in interFoam solver. I could understand and link most part of what is discussed here but confused at parts. Hope you can help me out!! Starting with UEqn.H: fvVectorMatrix UEqn ( fvm::ddt(rho, U) + fvm::div(rhoPhi, U) + turbulence->divDevRhoReff(rho, U) == fvOptions(rho, U) ); Over here we already have a solution for velocity without influence of pressure.{solving NSE excluding variables of pressure and body forces that dont have an explicit U term}. We extract the diagonal{UEqn.A()} and off- diagonal portions {UEqn.H()}. Now passing to pEqn.H: We find and link velocity to flux over cell faces.(U -> phi) Additionally due to surface tension force induced flux, we add flux to the above calculated flux. {Even here pressure isnt included till now}. Now the pressure corection is directly applied as follows: fvm::laplacian(rAUf, p_rgh) == fvc::div(phiHbyA) /*we are finding for p_rgh*/ From this further correction to flux and U from the found out pressure is calculated to get the conservative velocity. My question, 1. In all explanations I have had browsed through, they explicitly mention usage of pressure twice. One as an approximate and one found as a real value. But from interFoam solver I see only once the usage of pressure and it is the corrected pressure that we are solving for. {above equation, laplacian pressure} 2. What are nOuterCorrectors, nCorrectors variablels? I see their default definitions but where are we specifying the loop? I guess it has something to do with pimple.correct() loop but how are the variables being used? Thanks and interested to hear your views, Saideep

 March 27, 2016, 18:24 #10 Super Moderator     Tobias Holzmann Join Date: Oct 2010 Location: Leoben (Austria) Posts: 1,974 Blog Entries: 6 Rep Power: 33 For nouter and ncorr See my blog __________________ Keep foaming, Tobias Holzmann

 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 aylalisa OpenFOAM Pre-Processing 2 October 20, 2013 05:49 adambarfi OpenFOAM Running, Solving & CFD 9 September 13, 2013 10:53 zhaoxinyu Fluent UDF and Scheme Programming 0 March 31, 2010 08:04 Sangamesh Siemens 0 May 15, 2007 05:15 cfdbeginner CFX 0 November 27, 2003 10:02

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