
[Sponsors] 
February 15, 2017, 18:01 
Stopping criterion for outer iteration loop

#1 
New Member
Join Date: Jul 2011
Posts: 6
Rep Power: 13 
Hey,
I am working on an implicit pressure based finite volume solver for incompressible and compressible flows. The momentum and continuity equations were solved segregated. At present the stopping criterion for the outer iteration loop (solution of momentum equations + pressure correction) depends on the maximum difference of the flow field from one iteration to another. Hence, the definition of the stopping criterion depends on the magnitude of the flow quantities and is very case specific. Now, I am going to revise the code and change the stopping criterion. I am planning to use instead a relative quantity to obtain a criterion that is less case specific. Precisely, I am planning to compute difference between to iterations and relate it to the value at the last iteration. Then the maximum (absolute) value is compared with the (user) defined stopping criterion. What do you think? Is this proper definition of the stopping criterion for the outer iteration loop or do I need to use another one? Thanks in advance! With best regards, Michel 

February 15, 2017, 19:25 

#2 
Senior Member
Filippo Maria Denaro
Join Date: Jul 2010
Posts: 6,182
Rep Power: 66 
Why do not use the residual of each equation?


February 16, 2017, 06:04 

#3 
New Member
Join Date: Jul 2011
Posts: 6
Rep Power: 13 
Hey,
this is a good idea, thank you. At the moment, it will increase the computational cost since I have to recompute the complete coefficient matrix and source termfor each momentum equation at the end of one outer iteration. If the code has to do another outer iteration, the complete coefficient matrix and source term has to be recomputed again since each equation uses the same arrays to store the linear equation system. I will now introduce new arrays to store the linear equation system for each momentum equation. Hence, I do not need to recompute it again at the beginning of a new outer iteration. This will increase the memory consumption but only slightly increase the computational cost. 

February 22, 2017, 09:59 

#4 
Senior Member
Lucky
Join Date: Apr 2011
Location: Orlando, FL USA
Posts: 5,055
Rep Power: 60 
Usually you are not doing matrix inversion (very expensive) but some type of system solver. You need a metric to determine whether you've solved the system or not at the inner iterations, so these residual matrices should already have been computed. Numerically you don't just say "solve this system" because you cannot numerically solve it exactly. You always say "solve this system, within this tolerance" and that tolerance is the residual. So you should have been doing these checks at the inner iteration level.
At the outer iteration, you should do one final update and recalculate your residuals. Usually at the start of a calculation you calculate the residuals to determine whether the system needs to be solved or not and only solve it if needed. I mean it's not extra memory or computation if you consider it a common best practice. 

Thread Tools  Search this Thread 
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
Pressure distribution on a wall  darazsbence  CFX  17  October 6, 2015 11:38 
[Gmsh] Problem with Gmsh  nishant_hull  OpenFOAM Meshing & Mesh Conversion  23  August 5, 2015 03:09 
Asymptotic stopping criterion is not working  rob50904  STARCCM+  2  January 28, 2013 09:25 
NACA0012 geometry/design software needed  Franny  Main CFD Forum  13  July 7, 2007 16:57 
Creating, loop or iteration using expression edito  Jan  CFX  3  July 28, 2003 12:01 