[Gmsh] Silently created boundary entities

Banks, Stephen (Energy, Clayton North) Stephen.Banks at csiro.au
Mon Dec 14 13:44:08 CET 2020

I have partially addressed my issue. Whilst the GUI seems unable to add a volume for my geometry (i.e. after selecting the surfaces that would form a closed shell, it doesn't give me the option to create the volume), the Gmsh API succeeds using the gmsh/model/occ/addSurfaceLoop and gmsh/model/occ/addVolume functions. Interestingly, the Gmsh API succeeds at creating the surface loop regardless of whether the sewing flag is true or false, which makes it puzzling why the Gmsh GUI fails.

I don't think I understand sewing. None of my surfaces are connected by topologically identical boundary entities, which I presume to mean having common boundary entity tags (it is impossible since the surface boundary entities are created automatically, as discussed in my previous email), albeit they are connected by geometrically identical boundaries (to within a tolerance). If my understanding of "topologically identical" is correct, then the Gmsh documentation indicates that if sewing is false then it should fail, but it doesn't. Moreover, even if I set the geometrical tolerance and Boolean tolerance to zero, it still succeeds. One difference I did find was that when the sewing flag is true, adding a surface loop appears to duplicate all the surfaces involved and their boundaries, whilst having the sewing flag set to false does not. Are you able to offer any further explanation to help clarify what it means to be "topologically identical", and clarify whether the sewing behaviour I am observing is correct?


From: Banks, Stephen (Energy, Clayton North)
Sent: Monday, 14 December 2020 5:36 PM
To: gmsh at onelab.info
Subject: Silently created boundary entities


I am using Gmsh v4.8.0. When I create a NURBS surface by calling the gmsh/model/occ/addBSplineSurface function in the Gmsh API, the function silently adds points and lines (presumably to create the boundary entities):

  1.  What is the recommended method to identify these silently added entities? Is it to call gmsh/model/occ/getEntities before and after calling addBSplineSurface to see what has been added?
  2.  Is it possible to replace these boundary entities (lines and points) so that I can get the topology correct?

After reading the comments in the makeTrimmedSurface() function, found in the Gmsh source code file GModelIO_OCC.cpp, I suspect (2) has been attempted in the past, but abandoned in preference for relying upon Geometry.Tolerance and Geometry.ToleranceBoolean to allow operations to succeed for topologically different yet geometrically identical (to within tolerance) entities. Is this correct?

My motivation for asking is I have been constructing geometry using the Gmsh API OpenCASCADE kernel functions, then synchronising, then calling gmsh/fltk/run to experiment with how I should control the Gmsh API. For some reason, the FLTK graphical user interface is not allowing me to successfully add a volume, which I have presumed to be due to incorrect topology (as my original approach for constructing a geometry resulted in lots of geometrically identical entities). As such, I have been put in effort to avoid geometrically identical entities to get the topology I want, but the addBSplineSurface is preventing me from being successful.

Many thanks,

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://onelab.info/pipermail/gmsh/attachments/20201214/9430286b/attachment.html>

More information about the gmsh mailing list