|
[Sponsors] |
January 22, 2014, 20:57 |
ForAll Loop
|
#1 |
New Member
Sanj M
Join Date: Dec 2013
Location: Ohio
Posts: 10
Rep Power: 12 |
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, 02:16 |
|
#2 |
Senior Member
Lieven
Join Date: Dec 2011
Location: Leuven, Belgium
Posts: 299
Rep Power: 22 |
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; } } Cheers, L |
|
January 23, 2014, 12:29 |
|
#4 |
New Member
Sanj M
Join Date: Dec 2013
Location: Ohio
Posts: 10
Rep Power: 12 |
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, 12:44 |
|
#5 |
Senior Member
Anton Kidess
Join Date: May 2009
Location: Germany
Posts: 1,377
Rep Power: 30 |
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. |
|
January 23, 2014, 12:50 |
|
#6 |
New Member
Sanj M
Join Date: Dec 2013
Location: Ohio
Posts: 10
Rep Power: 12 |
Anton,
Thank you so much it worked like a charm!!! Sanj |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
[Gmsh] Problem with Gmsh | nishant_hull | OpenFOAM Meshing & Mesh Conversion | 23 | August 5, 2015 02:09 |
forAll loop getting stuck? I'm stuck too! | CHARLES | OpenFOAM Programming & Development | 6 | October 11, 2013 16:46 |
basic question with 'ForAll' loop | Pascal_doran | OpenFOAM Post-Processing | 10 | December 14, 2012 17:39 |
[CAD formats] my stl surface is seen as just a line | rcastilla | OpenFOAM Meshing & Mesh Conversion | 2 | January 6, 2010 01:30 |
NACA0012 geometry/design software needed | Franny | Main CFD Forum | 13 | July 7, 2007 15:57 |