# SIMPLE algorithm

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

 February 7, 2010, 05:43 SIMPLE algorithm #1 New Member   Join Date: Feb 2010 Posts: 4 Rep Power: 8 Hi, I have written the SIMPLE algorithm in Matlab (using an example 6.2 from Versteeg and Malalasekera: An Introduction to Computational Fluid Dynamics: The Finite Volume Method) for 1D, steady, incompressible, frictionless flow using a backward staggered grid and an upwind differencing scheme through a nozzle. The example uses 5 pressure nodes, and I get my program to converge to the Bernoulli solution (albeit quite inaccurately due to the coarse mesh). When I changed the program to handle N nodes, I had problems with convergence for any more than 5 nodes. The example in Versteeg applies both velocity and pressure under-relaxation factors (urf) at the end of the algorithm before substituting the new u and p field back into the discretised momentum equations: u = (1-urf).u_new + (urf).u_old p = (1-urf).p_new + (urf).p_old which for the 5 node case suggests using urf as 0.8. I later found that for 5 nodes I can use urf=1 and the solution still converges. Then, having looked at Patankar (Numerical Heat Transfer and Fluid Flow), I scrapped the pressure urf from this bit of the algorithm and moved it to: p=p*+p' =>to become=> p = p* + urf.p' However by doing this I found that urf is very sensitive to the number of nodes that I wish to use. I built in a loop to find the optimal urf by reducing the urf (from 1) by 0.01 each time the program started to diverge, and I did this for up to 100 nodes. This told me that I do not need to apply an under-relaxation to velocity (so I kept it at 1), only to pressure (urf_p). To give an example of a few... 5 nodes: urf_p = 1 10 nodes: urf_p = 0.49 20 nodes: urf_p = 0.20 25 nodes: urf_p = 0.15 40 nodes: urf_p = 0.08 50 nodes: urf_p = 0.06 75 nodes: urf_p = 0.04 80 nodes: urf_p = 0.04 100 nodes: urf_p = 0.03 Applying this and I can get convergence for up to 100 nodes, with the velocity and pressure fields becoming ever more accurate (with Bernoulli). However to increase the number of nodes further, I have to drop the urf_p down even further. The optimal urf_p seems to be proportional to a 1/N relationship (N=number of nodes). So if I want an even more accurate solution, say for 10,000 nodes, I have to use urf_p=0.0002 in order to get convergence, where I get an error in the mass flow rate on the order of 0.01%. Speed it not really a problem at the moment, even for 10,000 nodes I can get a converged solution in around 10 minutes. Basically the question is to whether this sort of behaviour is normal?

 February 19, 2010, 16:39 #2 New Member   Scott Join Date: Feb 2010 Posts: 1 Rep Power: 0 This behavior IS to be expected from the SIMPLE algorithm. I'm working on my masters in thermo/fluids and am also writing code for control volume methods. The slow rate of convergence and poor prediction of pressure fields are due to dropping the velocity contributions from neighboring nodes and using only the pressure field for corrections. Patankar addressed this issue through the SIMPLER alg. (SIMPLE Revised). SIMPLER requires additional computation steps, but achieves the correct velocity and pressure fields in the same time as SIMPLE. I got this information from a book written by Majumdar called Computational Methods for Heat and Mass Transfer. It describes several of these algorithms in detail including an example. I hope this has been helpful. -Best Regards Somnath25 likes this.

 February 21, 2010, 11:20 #3 New Member   Join Date: Feb 2010 Posts: 4 Rep Power: 8 Thanks for getting back to me, Scott. Unfortunately my college library does not have the book you mentioned, so I've been looking at SIMPLER in both Versteeg and Patankar. For the SIMPLER algorithm, in the calculation of the pseudo-velocities, am I right to assume that momentum source term 'b' is zero in case of 2D convection-diffusion?? In that case I would be left with: uPSEUDO = (aW.uW* + aE.uE* + aN.uN* + aS.uS*)/aP where aP = aW + aE + aS + aN + (Fe-Fw) + (Fn-Fs) Therefore in the calculation of the pseudo velocity, you do not need to a pressure field. Again, am I right in saying this? Thanks

February 23, 2010, 02:06
#4
New Member

Join Date: Dec 2009
Location: Pune
Posts: 10
Rep Power: 8
hi i am trying to write the code SIMPLE in the c language by using the upwind scheme but i am not getting how to start the code
so please send me theSIMPLE code

Quote:
 Originally Posted by SamR Hi, I have written the SIMPLE algorithm in Matlab (using an example 6.2 from Versteeg and Malalasekera: An Introduction to Computational Fluid Dynamics: The Finite Volume Method) for 1D, steady, incompressible, frictionless flow using a backward staggered grid and an upwind differencing scheme through a nozzle. The example uses 5 pressure nodes, and I get my program to converge to the Bernoulli solution (albeit quite inaccurately due to the coarse mesh). When I changed the program to handle N nodes, I had problems with convergence for any more than 5 nodes. The example in Versteeg applies both velocity and pressure under-relaxation factors (urf) at the end of the algorithm before substituting the new u and p field back into the discretised momentum equations: u = (1-urf).u_new + (urf).u_old p = (1-urf).p_new + (urf).p_old which for the 5 node case suggests using urf as 0.8. I later found that for 5 nodes I can use urf=1 and the solution still converges. Then, having looked at Patankar (Numerical Heat Transfer and Fluid Flow), I scrapped the pressure urf from this bit of the algorithm and moved it to: p=p*+p' =>to become=> p = p* + urf.p' However by doing this I found that urf is very sensitive to the number of nodes that I wish to use. I built in a loop to find the optimal urf by reducing the urf (from 1) by 0.01 each time the program started to diverge, and I did this for up to 100 nodes. This told me that I do not need to apply an under-relaxation to velocity (so I kept it at 1), only to pressure (urf_p). To give an example of a few... 5 nodes: urf_p = 1 10 nodes: urf_p = 0.49 20 nodes: urf_p = 0.20 25 nodes: urf_p = 0.15 40 nodes: urf_p = 0.08 50 nodes: urf_p = 0.06 75 nodes: urf_p = 0.04 80 nodes: urf_p = 0.04 100 nodes: urf_p = 0.03 Applying this and I can get convergence for up to 100 nodes, with the velocity and pressure fields becoming ever more accurate (with Bernoulli). However to increase the number of nodes further, I have to drop the urf_p down even further. The optimal urf_p seems to be proportional to a 1/N relationship (N=number of nodes). So if I want an even more accurate solution, say for 10,000 nodes, I have to use urf_p=0.0002 in order to get convergence, where I get an error in the mass flow rate on the order of 0.01%. Speed it not really a problem at the moment, even for 10,000 nodes I can get a converged solution in around 10 minutes. Basically the question is to whether this sort of behaviour is normal?

 March 3, 2010, 10:38 Colocated grid - boundary condition #5 Member   jk Join Date: Jun 2009 Posts: 64 Rep Power: 9 Hi Scott, I have written a solver (FVM) with staggered grid arrangement and it is working well (compared with fluent solver also). But it is not robust for different geometries. So i started working on the colocated grid. I have taken a simple 1d grid (assuming a diffuser or a nozzle) with varying area at different nodes. I am writing a cell centered FVM. I have tried with different conditions (bc's). Solution is diverging for all the condition. I think i have problem in my exit bc. It is as follows: Assuming I have 8 cell centered nodes (or 8 control volumes). 1. Node no.1 is the ghost node. similarly node no.8 is the ghost node. 2. U-Momentum equation is solved for the nodes 2 to 7. 3. At the inlet (CVno.2, basically west face velocity of control volume 2) i am giving the velocity inlet bc. 4. Pressure at the ghost node 1 is taken from node 2 (i.e p(1)=p(2)) 5. Similarly for velocity u(1)=u(2) (these velocities are nodal and not face) 6. At the exit i am extrapolating nodal velocity like u(8)=u(7) and the face velocity equal to u(7) (i.e ue(7)=u(7) where ue(7) is the east face velocity of node 7) 7. My pressure at the exit is p(8)=0 Please tell me Whatever i said above is right or do i need any in my boundary condition. Please help me in this regard thanks Jyothish

 October 26, 2010, 03:10 #6 New Member   alex Join Date: Oct 2010 Posts: 4 Rep Power: 7 Hello, please send your source code SIMPLE / SIMPLER scheme through my email, ahazbavi@ymail.com.

 October 26, 2010, 16:07 #7 Senior Member     Morteza Join Date: May 2010 Location: Iran,Islamic Republic of Posts: 161 Rep Power: 8 hi i have written a code that used simple code in fortran. it is ac ode for flow in a tube that there are two rectangular obstacle inside. i can debug your code if i see it....send it to me if you like. morteza08@gmail.com

 September 27, 2011, 10:17 SIMPLE algorithm code #8 New Member   Azeldin El-sawi Join Date: Sep 2011 Posts: 2 Rep Power: 0 Hi everyone; I have worked on phase change materials and I have done some simulations on Fluent. At this time I need to use SIMPLE algorithm code in order to get velocity- pressure coupling. However, I have difficulty in coding SIMPLE algorithm as tool. So, if anyone has worked on SIMPLE algorithm, I really appreciated send it to me on my e-mail, azeldin.elsawi@gmail.com

 September 29, 2011, 07:52 Fluent for Phase change materials #9 New Member   Azeldin El-sawi Join Date: Sep 2011 Posts: 2 Rep Power: 0 Hi everybody; I would like to know the viscosity could be changed in Fluent as case of phase change materials.

 October 7, 2011, 23:14 simple #10 Member   kabilan.B Join Date: Jul 2010 Location: chennai Posts: 79 Rep Power: 8 hi i need that coding, could u please send me, it should be very useful for me. i just try in the fortran. thanks........................

 March 28, 2014, 17:16 Example 6.2 matlab file #11 New Member   Banma Kadachha Join Date: Mar 2014 Posts: 3 Rep Power: 4 Can somebody send me the matlab file for this please. I really need it. I will really appreciate it.

 March 31, 2014, 15:15 please send me this code #12 New Member   Banma Kadachha Join Date: Mar 2014 Posts: 3 Rep Power: 4 Could you please send me this code at banmakadachha@gmail.com

 January 5, 2015, 05:30 #13 New Member   Join Date: Jan 2015 Posts: 1 Rep Power: 0 Could you please send me this code thanks alot my email: hoangbh86@gmail.com

 January 28, 2016, 09:24 request #14 New Member   Somnath Pal Join Date: Aug 2015 Posts: 1 Rep Power: 0 can you please send the code at dasguptadebayan@gmail.com

 Tags matlab, simple algorithm, under-relaxation factor

 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 zouchu Main CFD Forum 1 January 20, 2014 18:02 jika Main CFD Forum 2 October 22, 2009 06:46 Yan Kai Main CFD Forum 0 April 18, 2007 03:48 Yan Kai FLUENT 0 April 13, 2007 23:17 Jonathan Castro Main CFD Forum 3 December 10, 1999 05:59

All times are GMT -4. The time now is 09:57.