# ForAll Loop

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

 January 22, 2014, 21:57 ForAll Loop #1 New Member   Sanj M Join Date: Dec 2013 Location: Ohio Posts: 10 Rep Power: 3 Hello Guys, Is there an alternative to the forAll loop? Basically I need to run the following code every time step and as a result it takes a long time. The code is: forAll(alpha1, celli) { if (alpha1[celli] < 0) { alpha1[celli] = 0; } else if (alpha1[celli] > 1) { alpha1[celli]=1; } else { alpha1[celli]=alpha1[celli]; } }//end for loop This ensures that alpha1 in any cell is always between 0 and 1. I have heard about field operations to make it faster but dont know how to implement it. Can some one please shed some light on this matter. Thanks, Sanj

 January 23, 2014, 03:16 #2 Senior Member   Lieven Join Date: Dec 2011 Location: Mol, Belgium Posts: 295 Rep Power: 13 I don't think there is a lot of alternative, but you can already simplify (read 'speed up') it a little bit by removing the identity alpha1[celli]=alpha1[celli]: Code: ```forAll(alpha1, celli) { if (alpha1[celli] < 0) { alpha1[celli] = 0; } if (alpha1[celli] > 1) { alpha1[celli]=1; } }``` Or you can write the second 'if' with 'else if'. Nevertheless, it remains an expensive operation. Cheers, L

 January 23, 2014, 06:08 #3 Senior Member     Anton Kidess Join Date: May 2009 Location: Delft, Netherlands Posts: 919 Rep Power: 17 Try this: alpha1 = max(min(alpha1,1.0), 0.0); __________________ *On twitter @akidTwit *Spend as much time formulating your questions as you expect people to spend on their answer. *Help define the OpenFOAM stackexchange Q&A site: http://area51.stackexchange.com/prop...oam-technology

 January 23, 2014, 13:29 #4 New Member   Sanj M Join Date: Dec 2013 Location: Ohio Posts: 10 Rep Power: 3 Dear Liven and Anton, Thanks for your swift responses. I appreciate taking the time to help me. Lieven: Yes thanks for the code it works perfectly but as you said it is still time expensive. Anotn: I understand that the max and min will bound the alpha1 values. But, how will it update each cell if celli is missing? Pardon me for my poor knowledge in openfoam and c++. Thanks, Sanj

 January 23, 2014, 13:44 #5 Senior Member     Anton Kidess Join Date: May 2009 Location: Delft, Netherlands Posts: 919 Rep Power: 17 Foam functions are smart. Foam::min / Foam::max will see that you are passing a vol*Field and then automatically know to loop over all cells. You can completely throw out the forAll loop - just this single line will do. __________________ *On twitter @akidTwit *Spend as much time formulating your questions as you expect people to spend on their answer. *Help define the OpenFOAM stackexchange Q&A site: http://area51.stackexchange.com/prop...oam-technology

 January 23, 2014, 13:50 #6 New Member   Sanj M Join Date: Dec 2013 Location: Ohio Posts: 10 Rep Power: 3 Anton, Thank you so much it worked like a charm!!! Sanj

 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 nishant_hull Open Source Meshers: Gmsh, Netgen, CGNS, ... 23 August 5, 2015 02:09 CHARLES OpenFOAM Programming & Development 6 October 11, 2013 16:46 Pascal_doran OpenFOAM Post-Processing 10 December 14, 2012 18:39 rcastilla OpenFOAM Meshing & Mesh Conversion 2 January 6, 2010 02:30 Franny Main CFD Forum 13 July 7, 2007 15:57

All times are GMT -4. The time now is 11:22.