
[Sponsors] 
July 9, 2009, 13:16 
Question about PISO in IcoFoam

#1 
Senior Member

Hi Foamers,
I have a question about the PISO implemented in icoFoam. According to the description given in Hrvoje thesis, the terms H(U) are only recalculated only when the new momentum predictor is calculated. For highly nonlinear flows, as in the flow of polymeric fluids they maybe important. How I can recalculate them whenever the flow field is recalculated? Regards, Titio 

September 3, 2010, 10:30 

#2 
New Member
Join Date: Jan 2010
Posts: 23
Rep Power: 9 
Hi Titio,
Did you ever find a solution to this? I've been wondering the same thing. As far as I can see, H(U) is not recalculated inside the PISO loop. To truly have the PISO algorithm, as defined by Issa, H should be recalculated for each intermediate velocity field (H(U**) in Issa's notation). As stated in Hrv's thesis, the current PISO ignores this coupling. I thought that perhaps updating UEqn after the velocity update inside the PISO loop would do the trick to change UEqn.H() at the next PISO step, but it doesn't seem to make a difference. James 

September 3, 2010, 13:54 

#3 
Senior Member
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 438
Rep Power: 17 
James, are you completely sure about H(U) is not updated in each PISO loop? U Field is corrected in each loop and H(U) is evaluated on the fly by a method using corrected U, so when P equation is assembled again, you have done it with a new H(U).
Regards.
__________________
Santiago MÁRQUEZ DAMIÁN, Ph.D. Research Scientist Research Center for Computational Methods (CIMEC)  CONICET/UNL Tel: 543424511594 Int. 7032 Colectora Ruta Nac. 168 / Paraje El Pozo (3000) Santa Fe  Argentina. http://www.cimec.org.ar 

September 3, 2010, 14:16 

#4 
New Member
Join Date: Jan 2010
Posts: 23
Rep Power: 9 
Hi Santiago,
Yes, I believe you are correct. I was actually just looking at the code and was about to post that I think I was mistaken. U is updated at the end of each PISO loop, and when UEqn.H() is called again at the beginning of the next loop, using this updated U. Therefore, U and p should satisfy continuity and momentum at the end of the PISO corrections, right? Is there a way to check this? Or is it still necessary to do a few "outer iterations" before going to the next time step? The way I understood the PISO algorithm is that it does not need further outer iterations (unlike SIMPLE if it were being used for an unsteady problem...) 

September 3, 2010, 16:19 

#5 
Senior Member
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 438
Rep Power: 17 
Issa shown in his paper, that is enough to do two or three PISO corrections, so that it isn't necessary to check the satisfaction of momentum and continuity.
Coming back to Titio's question, I think the problem isn't the recalculation or not of H(U) but the basic hypothesis made for PISO method. PISO method get rid off the nonlinearity of convective acceleration term supposing that U^(n+1)~U^(n) in order to linearize the equations. So the momentum predictor is calculated for U^(n+1) but when the convective acceleration term is assembled, U^(n) is used for the flux. This is useful in Co < 0.5 range in usual problems, but I think one must be more restrictive when high nonlinearities are present. Regards.
__________________
Santiago MÁRQUEZ DAMIÁN, Ph.D. Research Scientist Research Center for Computational Methods (CIMEC)  CONICET/UNL Tel: 543424511594 Int. 7032 Colectora Ruta Nac. 168 / Paraje El Pozo (3000) Santa Fe  Argentina. http://www.cimec.org.ar 

September 17, 2010, 13:31 

#6 
New Member
Join Date: Jan 2010
Posts: 23
Rep Power: 9 
To try and answer Titio's question (if he's even still interested, if not then it will satisfy my own curiousity):
If you wanted to change the coefficients of H to use the most recent fluxes, couldn't you just make another fvVectorMatrix using the new phi and whatever U you like? It appears to me that when you call "UEqn.H()" it uses whatever the current value of U is, but only uses the value of phi that was supplied when UEqn was defined. So, even though phi changes, UEqn.H() still uses the original phi. So, after each pressure solve, you have a new (divergence free) phi, and you could make a new fvVectorMatrix, call it "UnEqn" that uses this new phi and your predicted U. Now when you call "UnEqn.H()", you are using the updated coefficients of "H". At least, that's how I understand how it's working. It is probably also possible to just redefine "UEqn", but I'm not sure how to do that just yet. 

Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
PISO Question  titio  OpenFOAM Running, Solving & CFD  1  July 6, 2009 05:33 
Kubuntu uses dash breaks All scripts in tutorials  platopus  OpenFOAM Bugs  8  April 15, 2008 07:52 
Question about PISO  kar  OpenFOAM Running, Solving & CFD  6  March 10, 2008 10:29 
Problems understanding some piso details  tehache  OpenFOAM Running, Solving & CFD  3  July 27, 2007 06:02 
Question about icoFoam boundary file  jack2000  OpenFOAM Native Meshers: blockMesh  5  April 26, 2007 12:19 