[Gmsh] Creation of simple surface mesh

Christophe Geuzaine cgeuzaine at uliege.be
Sat Jun 8 16:19:54 CEST 2019


Hi Florian,

This should now be fixed on master.

Christophe

> On 5 Jun 2019, at 14:11, Florian Lindner <mailinglists at xgm.de> wrote:
> 
> Hey,
> 
> thanks again four your explanation. The Resclassify 2D in the GUI works fine
> 
> The meshing, both GUI and command line gives me segfaults on the original Stanford bunny.
> 
> When doing 2D meshing with automatic algorithm:
> 
> Thread 1 "gmsh" received signal SIGSEGV, Segmentation fault.
> 0x0000555555a8b15c in getColorByElement (ele=0x5555573e0530) at /home/lindnefn/software/gmsh/Geo/GModelVertexArrays.cpp:75
> 75            if(e && (e->dim() == ele->getDim())) return getColorByEntity(e);
> (gdb) bt
> #0  0x0000555555a8b15c in getColorByElement (ele=0x5555573e0530) at /home/lindnefn/software/gmsh/Geo/GModelVertexArrays.cpp:75
> #1  getColorByElement (ele=0x5555573e0530) at /home/lindnefn/software/gmsh/Geo/GModelVertexArrays.cpp:46
> #2  0x0000555555a8b6d2 in addElementsInArrays<MTriangle> (e=e at entry=0x555558f32880, elements=std::vector of length 17353, capacity 32768 = {...}, edges=edges at entry=true, faces=faces at entry=false)
>    at /usr/include/c++/8.3.0/bits/stl_vector.h:930
> #3  0x0000555555a8d51d in initMeshGFace::operator() (f=0x555558f32880, this=<synthetic pointer>) at /home/lindnefn/software/gmsh/Geo/GModelVertexArrays.cpp:348
> #4  std::for_each<std::_Rb_tree_const_iterator<GFace*>, initMeshGFace> (__f=..., __last=..., __first=0x555558f32880) at /usr/include/c++/8.3.0/bits/stl_algo.h:3882
> #5  GModel::fillVertexArrays (this=this at entry=0x5555568a5260) at /home/lindnefn/software/gmsh/Geo/GModelVertexArrays.cpp:471
> #6  0x0000555555f76cb7 in drawContext::drawMesh (this=this at entry=0x5555568d5330) at /home/lindnefn/software/gmsh/Graphics/drawMesh.cpp:712
> #7  0x0000555555f74855 in drawContext::draw3d (this=0x5555568d5330) at /home/lindnefn/software/gmsh/Graphics/drawContext.cpp:321
> #8  0x0000555555ebcd60 in openglWindow::draw (this=0x5555568d5010) at /home/lindnefn/software/gmsh/Fltk/openglWindow.cpp:355
> #9  openglWindow::draw (this=0x5555568d5010) at /home/lindnefn/software/gmsh/Fltk/openglWindow.cpp:172
> #10 0x00007ffff7c79186 in Fl_Gl_Window::flush() () from /usr/lib/libfltk_gl.so.1.3
> #11 0x00007ffff7877218 in Fl::flush() () from /usr/lib/libfltk.so.1.3
> #12 0x00007ffff7878352 in Fl::wait(double) () from /usr/lib/libfltk.so.1.3
> #13 0x00007ffff787842e in Fl::check() () from /usr/lib/libfltk.so.1.3
> #14 0x00007ffff78ce872 in Fl_Widget::do_callback(Fl_Widget*, void*) () from /usr/lib/libfltk.so.1.3
> #15 0x00007ffff787ebf5 in Fl_Button::handle(int) () from /usr/lib/libfltk.so.1.3
> #16 0x00007ffff7876a8a in ?? () from /usr/lib/libfltk.so.1.3
> #17 0x00007ffff787896e in Fl::handle_(int, Fl_Window*) () from /usr/lib/libfltk.so.1.3
> #18 0x00007ffff78d596b in fl_handle(_XEvent const&) () from /usr/lib/libfltk.so.1.3
> #19 0x00007ffff78d7206 in ?? () from /usr/lib/libfltk.so.1.3
> #20 0x00007ffff78d7522 in fl_wait(double) () from /usr/lib/libfltk.so.1.3
> #21 0x00007ffff78782d6 in Fl::wait(double) () from /usr/lib/libfltk.so.1.3
> #22 0x00007ffff78783de in Fl::run() () from /usr/lib/libfltk.so.1.3
> #23 0x0000555555e90cdb in FlGui::run () at /home/lindnefn/software/gmsh/Fltk/FlGui.cpp:655
> #24 0x00005555558aac9c in GmshFLTK (argc=<optimized out>, argv=<optimized out>) at /home/lindnefn/software/gmsh/Common/GmshGlobal.cpp:438
> #25 0x00005555558ab04d in GmshMainFLTK (argc=2, argv=0x7fffffffd878) at /home/lindnefn/software/gmsh/Common/GmshGlobal.cpp:494
> #26 0x00007ffff47d9ce3 in __libc_start_main () from /usr/lib/libc.so.6
> #27 0x00005555558a958e in _start () at /usr/include/c++/8.3.0/bits/char_traits.h:287
> 
> 
> or when selecting the frontal-delauney algo:
> 
> Thread 1 "gmsh" received signal SIGSEGV, Segmentation fault.
> 0x000055555762a0b0 in ?? ()
> (gdb) bt
> #0  0x000055555762a0b0 in ?? ()
> #1  0x000055555609481c in Patch::Patch (this=0x7fffffffb9d0, element2entity=std::map with 0 elements, bndEl2Ent=std::map with 0 elements, els=std::set with 342 elements = {...}, toFix=std::set with 110 elements = {...}, 
>    bndEls=std::set with 0 elements, fixBndNodes=false) at /home/lindnefn/software/gmsh/contrib/MeshOptimizer/Patch.cpp:69
> #2  0x000055555608bdaf in MeshOpt::MeshOpt (this=0x7fffffffb9d0, element2entity=..., bndEl2Ent=..., els=..., toFix=..., bndEls=..., par=...) at /home/lindnefn/software/gmsh/contrib/MeshOptimizer/MeshOpt.cpp:45
> #3  0x0000555556085132 in (anonymous namespace)::optimizeDisjointPatches (vertex2elements=..., element2entity=..., el2BndEl=..., bndEl2Ent=std::map with 0 elements, badasses=..., par=...)
>    at /home/lindnefn/software/gmsh/contrib/MeshOptimizer/MeshOptimizer.cpp:484
> #4  0x00005555560879f7 in MeshOptimizer (entities=std::vector of length 102, capacity 152 = {...}, par=...) at /home/lindnefn/software/gmsh/contrib/MeshOptimizer/MeshOptimizer.cpp:785
> #5  0x000055555605855e in HighOrderMeshOptimizer (entities=std::vector of length 102, capacity 152 = {...}, p=...) at /home/lindnefn/software/gmsh/contrib/HighOrderMeshOptimizer/HighOrderMeshOptimizer.cpp:380
> #6  0x0000555556058a0e in HighOrderMeshOptimizer (gm=<optimized out>, p=...) at /home/lindnefn/software/gmsh/contrib/HighOrderMeshOptimizer/HighOrderMeshOptimizer.cpp:393
> #7  0x0000555555bb5e21 in OptimizeHighOrderMesh (m=<optimized out>) at /home/lindnefn/software/gmsh/Mesh/Generator.cpp:1011
> #8  0x0000555555bbb882 in GenerateMesh (m=m at entry=0x5555568a5260, ask=ask at entry=2) at /home/lindnefn/software/gmsh/Mesh/Generator.cpp:1147
> #9  0x0000555555a5e959 in GModel::mesh (this=0x5555568a5260, dimension=dimension at entry=2) at /home/lindnefn/software/gmsh/Geo/GModel.cpp:890
> #10 0x0000555555e962cb in mesh_2d_cb (w=<optimized out>, data=<optimized out>) at /home/lindnefn/software/gmsh/Fltk/graphicWindow.cpp:1919
> #11 0x00007ffff78ce872 in Fl_Widget::do_callback(Fl_Widget*, void*) () from /usr/lib/libfltk.so.1.3
> #12 0x00007ffff787ebf5 in Fl_Button::handle(int) () from /usr/lib/libfltk.so.1.3
> #13 0x00007ffff7876a8a in ?? () from /usr/lib/libfltk.so.1.3
> #14 0x00007ffff787896e in Fl::handle_(int, Fl_Window*) () from /usr/lib/libfltk.so.1.3
> #15 0x00007ffff78d596b in fl_handle(_XEvent const&) () from /usr/lib/libfltk.so.1.3
> #16 0x00007ffff78d7206 in ?? () from /usr/lib/libfltk.so.1.3
> #17 0x00007ffff78d7522 in fl_wait(double) () from /usr/lib/libfltk.so.1.3
> #18 0x00007ffff78782d6 in Fl::wait(double) () from /usr/lib/libfltk.so.1.3
> #19 0x00007ffff78783de in Fl::run() () from /usr/lib/libfltk.so.1.3
> #20 0x0000555555e90cdb in FlGui::run () at /home/lindnefn/software/gmsh/Fltk/FlGui.cpp:655
> #21 0x00005555558aac9c in GmshFLTK (argc=<optimized out>, argv=<optimized out>) at /home/lindnefn/software/gmsh/Common/GmshGlobal.cpp:438
> #22 0x00005555558ab04d in GmshMainFLTK (argc=2, argv=0x7fffffffd878) at /home/lindnefn/software/gmsh/Common/GmshGlobal.cpp:494
> #23 0x00007ffff47d9ce3 in __libc_start_main () from /usr/lib/libc.so.6
> #24 0x00005555558a958e in _start () at /usr/include/c++/8.3.0/bits/char_traits.h:287
> 
> 
> Using the command line works better:
> 
> gmsh -2 -algo frontal -clscale 0.1 bun_zipper.msh -o bunny.msh
> 
> works. However, when I want to ouput VTK
> 
> gmsh -2 -algo frontal -clscale 0.1 bun_zipper.msh -o bunny.vtk
> 
> 
> Info    : Writing 'bunny.vtk'...
> 
> Thread 1 "gmsh" received signal SIGSEGV, Segmentation fault.
> 0x0000555555a5d2f1 in GModel::indexMeshVertices (this=this at entry=0x5555568a5260, all=true, singlePartition=singlePartition at entry=0, renumber=renumber at entry=true) at /home/lindnefn/software/gmsh/Geo/MVertex.h:86
> 86        long int getIndex() const { return _index; }
> (gdb) bt
> #0  0x0000555555a5d2f1 in GModel::indexMeshVertices (this=this at entry=0x5555568a5260, all=true, singlePartition=singlePartition at entry=0, renumber=renumber at entry=true) at /home/lindnefn/software/gmsh/Geo/MVertex.h:86
> #1  0x0000555555ac88d1 in GModel::writeVTK (this=this at entry=0x5555568a5260, name="bunny.vtk", binary=false, saveAll=true, saveAll at entry=false, scalingFactor=scalingFactor at entry=1, bigEndian=bigEndian at entry=false)
>    at /home/lindnefn/software/gmsh/Geo/GModelIO_VTK.cpp:31
> #2  0x000055555590298c in CreateOutputFile (fileName=..., format=<optimized out>, status=<optimized out>, redraw=<optimized out>) at /home/lindnefn/software/gmsh/Common/CreateFile.cpp:355
> #3  0x0000555555901ead in CreateOutputFile (fileName="bunny.vtk", format=10, status=status at entry=true, redraw=redraw at entry=true) at /home/lindnefn/software/gmsh/Common/CreateFile.cpp:295
> #4  0x00005555558aa1cd in GmshBatch () at /home/lindnefn/software/gmsh/Common/GmshGlobal.cpp:354
> #5  0x00005555558ab0cf in GmshMainFLTK (argc=9, argv=0x7fffffffd808) at /home/lindnefn/software/gmsh/Common/GmshGlobal.cpp:488
> #6  0x00007ffff47d9ce3 in __libc_start_main () from /usr/lib/libc.so.6
> #7  0x00005555558a958e in _start () at /usr/include/c++/8.3.0/bits/char_traits.h:287
> 
> Saving as STL file works, but according to paraview the STL file in no way reflects the actual geometry.
> 
> The .msh file you sent me, however, seems to work and produce fine VTKs.
> 
> If I can help debugging the segfaults above, I am happy to provide any help. The Bunny STLs are from http://graphics.stanford.edu/data/3Dscanrep/
> 
> Best Regards,
> Florian
> 
> Am 04.06.19 um 17:13 schrieb Christophe Geuzaine:
>> 
>> 
>>> On 3 Jun 2019, at 16:04, Florian Lindner <mailinglists at xgm.de> wrote:
>>> 
>>> Hi Christophe,
>>> 
>>> thanks for your help! I have compiled gmsh from git to try it.
>>> 
>>> I am able to successfully remesh (double click on viewport -> change Global Mesh Size Factor), then click Mesh -> 2D to remesh.
>>> 
>>> Some questions:
>>> 
>>> * How can I change the meshing algorithm?
>> 
>> The same as for CAD surfaces: Tool->Options->Mesh->General and choose the 2D algo you want. You can also do all of this from the command line, e.g. 'gmsh file.msh -2 -clscale 0.1 -algo frontal', or in a script.
>> 
>>> 
>>> * Is there a way to achieve a smiliar semi-automatic meshing on the STL file of the bunny? Or is underlying parametrization you provided required?
>>> 
>> 
>> You need to create the parametrization. With the current development version you can do it this way:
>> 
>> - open the stl
>> - launch the "Reclassify 2D" tool (in the module tree, under Mesh)
>> - select all elements, check "Create parametrized discrete model" then "Reclassify"
>> - 'File->Save as' and choose a filename with an '.msh' extension
>> 
>> This procedure will change (will be made simpler! :-) in the final release.
>> 
>> Christophe
>> 
>> 
>>> Thanks a lot!
>>> Florian
>>> 
>>> Am 29.05.19 um 16:07 schrieb Christophe Geuzaine:
>>>> 
>>>> Hi Florian,
>>>> 
>>>> This is a nice test-case for our new remeshing pipeline. It's still quite experimental, but you can give it a try with the latest development snapshot: just open the attached .msh file, which contains a mesh of the bunny as well as an underlying parametrization. You can remesh this file simply by selecting the algorithm ("Frontal-Delaunay" in the attached picture) and the mesh size you want (e.g. by double-clicking in the window and changing the global mesh size factor).
>>>> 
>>>> Nothing about the new remeshing features is documented yet, but feel free to play around with it and report your findings ;-)
>>>> 
>>>> Christophe
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> On 29 May 2019, at 15:25, Florian Lindner <mailinglists at xgm.de> wrote:
>>>>> 
>>>>> Hello,
>>>>> 
>>>>> I have an existing surface geometry, which is the Stanford bunny [1] as PLY format.
>>>>> 
>>>>> My goal is too evaluate a mapping algorithm on a non-trivial geometry. The algorithm works only on point data, therefore I don't need an triangulation.
>>>>> 
>>>>> From the existing surface data I want to generate sampled points of various densities on the surface of the geometry and save these as a standard data format (e.g. VTK).
>>>>> 
>>>>> As I want to generate different mesh sizes, I need something like a background mesh size or a characteristic length which controls the sampling frequency. The exact placement of the points is not important, it should "make sense", i.e. be roughly equidistant or maybe influenced by the curvature.
>>>>> 
>>>>> So far I have only Merge "bun_zipper.ply"; in my .geo file. 
>>>>> 
>>>>> I think you can feel, that I am very uncertain how to progress and I would be very happy for guidance!
>>>>> 
>>>>> Thanks!
>>>>> Florian
>>>>> 
>>>>> 
>>>>> [1] http://graphics.stanford.edu/pub/3Dscanrep/bunny.tar.gz
>>>>> 
>>>>> _______________________________________________
>>>>> gmsh mailing list
>>>>> gmsh at onelab.info
>>>>> http://onelab.info/mailman/listinfo/gmsh
>>>> 
>>>>>>>> Prof. Christophe Geuzaine
>>>> University of Liege, Electrical Engineering and Computer Science 
>>>> http://www.montefiore.ulg.ac.be/~geuzaine
>>>> 
>>>> 
>>>> 
>> 
>>>> Prof. Christophe Geuzaine
>> University of Liege, Electrical Engineering and Computer Science 
>> http://www.montefiore.ulg.ac.be/~geuzaine
>> 
>> 
>> 

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






More information about the gmsh mailing list