<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>
<div>Dear Gmsher's,</div>

<div> </div>

<div>I encounterd the problem, that for a given .geo-file consecutive runs of gmsh FILENAME.geo -3 lead to different number of elements, i.e. non-deterministiv mesh generation (find an examples file below and attached to this email). Since I would like not to store all meshes I generate for scientific computations, it would be nice that a rerun of gmsh (with the same version) reproduces the exact same msh-file.  Here is my example geo-file:</div>

<div> </div>

<div>
<div>//+<br/>
SetFactory("OpenCASCADE");</div>

<div>Mesh.CharacteristicLengthMin = 0.001;<br/>
Mesh.CharacteristicLengthMax = 2.0;</div>

<div>Mesh.CharacteristicLengthExtendFromBoundary = 1;</div>

<div>Mesh.Algorithm = 6;<br/>
Mesh.Smoothing = 3;<br/>
Mesh.Algorithm3D = 1;</div>

<div>Box(1) = {0, -0.5, -0.5, 1, 1, 1};<br/>
Box(2) = {-1, -0.5, -0.5, 1, 1, 1};<br/>
Sphere(3) = {0.5, 0.0, 0.0, 0.3, -Pi/2, Pi/2, 2*Pi};</div>

<div>Coherence;</div>

<div>surfs_box1() = Unique(Abs(Boundary{ Volume{4}; } ));<br/>
lines_box1() = Unique(Abs(Boundary{ Surface{surfs_box1()}; } ));<br/>
pts_box1() = Unique(Abs(Boundary{ Line{lines_box1()}; } ));</div>

<div>surfs_sphere() = Unique(Abs(Boundary{ Volume{3}; } ));<br/>
lines_sphere() = Unique(Abs(Boundary{ Surface{surfs_sphere()}; } ));<br/>
pts_sphere() = Unique(Abs(Boundary{ Line{lines_sphere()}; } ));</div>

<div>surfs_box2() = Unique(Abs(Boundary{ Volume{2}; } ));<br/>
lines_box2() = Unique(Abs(Boundary{ Surface{surfs_box2()}; } ));<br/>
pts_box2() = Unique(Abs(Boundary{ Line{lines_box2()}; } ));</div>

<div>// sorted from largest to smallest:<br/>
Characteristic Length{pts_box2()} = 0.5;<br/>
Characteristic Length{pts_sphere()} = 0.2;<br/>
Characteristic Length{pts_box1()} = 0.1;</div>
</div>

<div> </div>

<div> </div>

<div>If have asked myself, whether there is an option to maybe set the internal seeds via something like:</div>

<div> </div>

<div>
<div>Mesh.GeneratorSeed = 1, 2, ... (defualt: 42)</div>

<div>or</div>

<div>Mesh.GeneratorSeed = currentTime;</div>

<div> </div>

<div>Unfortunatly I haven't found such an option. A grep to srand (assuming that only std::rand number generator is used within gmsh) within the gmsh source directory delivers</div>
</div>

<div> </div>

<div>
<div>Geo/SOrientedBoundingBox.cpp:326:  srand((unsigned)time(0));<br/>
Mesh/tetgenBR.cxx:9060:    srand(in->numberofpoints);<br/>
Mesh/meshGFaceRecombine.cpp:261:  srand(time(NULL));<br/>
Mesh/Levy3D.cpp:723:  srand(time(NULL));<br/>
Mesh/Levy3D.cpp:1357:    srand(time(NULL));<br/>
Mesh/Generator.cpp:1028:  srand(1);<br/>
Mesh/meshGFaceLloyd.cpp:379:  srand(time(NULL));</div>

<div>...</div>

<div> </div>

<div>Looking into the source files no switch for fixed initialized seeds, e.g. srand(1), and system-time initialized seeds, e.g. srand(time(NULL)), are found, which would be nice to have. A fast fix would be to fix all seeds to values which are deterministically determined either before the mesh generation run or by the provided geo file. Are there other random number generators used withing gmsh besides std::rand?</div>

<div> </div>

<div>I hope you can help me.</div>

<div> </div>

<div>Thanks alot and best regards,</div>

<div> </div>

<div>Thomas Kiel</div>
</div>

<div> </div>

<div>P.S.:</div>

<div>I'm useing precompiled gmsh version 3.0.6 (November 5 2017) from the website running on Linux version 4.8.0-0.bpo.2-amd64 (debian-kernel@lists.debian.org) (gcc version 4.9.2 (Debian 4.9.2-10) ) #1 SMP Debian 4.8.11-1~bpo8+1 (2016-12-14). To avoid spam this email is send from a private email address.</div>

<div> </div>

<div>
<div>--<br/>
Thomas Kiel<br/>
Theoretische Optik und Photonik</div>

<div> </div>

<div>Humboldt-Universität zu Berlin, Institut für Physik<br/>
Newtonstraße 15, 12489 Berlin</div>

<div> </div>

<div>Web:    <a href="https://deref-gmx.net/mail/client/iV3bbgfsf0U/dereferrer/?redirectUrl=https%3A%2F%2Ftop.physik.hu-berlin.de%2Fpeople%2Fthomas-kiel" onclick="parent.phx.event.mailUrlClicked('https:\/\/top.physik.hu-berlin.de\/people\/thomas-kiel'); return true;" target="_blank">https://top.physik.hu-berlin.de/people/thomas-kiel</a></div>
</div>
</div></div></body></html>