Lucas - I've committed a fix in the code, which should at least allow to bypass the issue.

Loops now correctly update the value of the loop variable before the next iteration. You can still not change "step" in your example (because the list "{0:100:step}" is fixed), but you can change the variable "k" inside the loop, e.g.

For k In {0:100:1}
  Printf("k = %f", k );
  k++;
EndFor



On 20/10/09 22:11, Christophe Geuzaine wrote:
Lucas Blattner Martinho wrote:
Dear Gmsh developers,


I am trying to use Gmsh's "For" loop with a variable incrementation
step, however I am not obtaining the expected results.

For example, I expected the following Gmsh commands

step = 1.0;
For k In {0:100:step}
Printf("step = %f k = %f", step, k ) >> "test.txt";
step = step +1;
EndFor


would produce an output file called "test.txt" containing the
following data:

step = 1.000000 k = 0.000000
step = 2.000000 k = 2.000000
step = 3.000000 k = 5.000000
.
.
.
and so on.


However, the previous commands result in the following output file:

step = 1.000000 k = 0.000000
step = 2.000000 k = 1.000000
step = 3.000000 k = 2.000000
step = 4.000000 k = 3.000000
step = 5.000000 k = 4.000000
.
.
.
and so on.


It seems that incrementation of the "step" variable inside the loop
does not result in a variable update of "k", which keeps growing with
unit steps.

I found this strange behaviour while trying to emulate a "While" loop
, which doesn't appear to be promptly available in Gmsh (by setting a
"step" variable bigger than the "for" loop's range, when some break
condition is satisfied ).


Am I missing something and these are in fact the expected behaviours,
or would this be a bug of some sort?

Indeed, it's a limitation of our implementation: we don't reevaluate the
arguments of the For after each iteration...


Is there a better way to work these issues around (emulating a "While"
loop) ?


Not that can I directly think of. I am adding this issue to our TODO list.

Thanks for the feedback,

Christophe



yours faithfully,
Lucas Blattner Martinho
**




------------------------------------------------------------------------

_______________________________________________
gmsh mailing list
[email protected]
http://www.geuz.org/mailman/listinfo/gmsh




--
Prof. Christophe Geuzaine
University of Liege, Electrical Engineering and Computer Science
http://www.montefiore.ulg.ac.be/~geuzaine

_______________________________________________
gmsh mailing list
[email protected]
http://www.geuz.org/mailman/listinfo/gmsh

Reply via email to