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?

Regards,
Stephen


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

Hello,

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,
Stephen

_______________________________________________
gmsh mailing list
gmsh@onelab.info
http://onelab.info/mailman/listinfo/gmsh

Reply via email to