|
[Sponsors] |
July 9, 2009, 14: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, 11:30 |
|
#2 |
New Member
Join Date: Jan 2010
Posts: 23
Rep Power: 16 |
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, 14:54 |
|
#3 |
Senior Member
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 452
Rep Power: 24 |
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: 54-342-4511594 Int. 7032 Colectora Ruta Nac. 168 / Paraje El Pozo (3000) Santa Fe - Argentina. http://www.cimec.org.ar |
|
September 3, 2010, 15:16 |
|
#4 |
New Member
Join Date: Jan 2010
Posts: 23
Rep Power: 16 |
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, 17:19 |
|
#5 |
Senior Member
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 452
Rep Power: 24 |
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 non-linearity 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 non-linearities are present. Regards.
__________________
Santiago MÁRQUEZ DAMIÁN, Ph.D. Research Scientist Research Center for Computational Methods (CIMEC) - CONICET/UNL Tel: 54-342-4511594 Int. 7032 Colectora Ruta Nac. 168 / Paraje El Pozo (3000) Santa Fe - Argentina. http://www.cimec.org.ar |
|
September 17, 2010, 14:31 |
|
#6 |
New Member
Join Date: Jan 2010
Posts: 23
Rep Power: 16 |
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. |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
PISO Question | titio | OpenFOAM Running, Solving & CFD | 1 | July 6, 2009 06:33 |
Kubuntu uses dash breaks All scripts in tutorials | platopus | OpenFOAM Bugs | 8 | April 15, 2008 08: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 07:02 |
[blockMesh] Question about icoFoam boundary file | jack2000 | OpenFOAM Meshing & Mesh Conversion | 5 | April 26, 2007 13:19 |