<div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hello,</div><div><br></div><div>I am running Gmsh 4.0.1 and trying to use Boolean operators to subdivide (potentially complex) surfaces.</div><div>As a simple test, I am cutting a circular hole through a surface. The following .geo file produces exactly what I expect (a hole in a square, planar surface):</div><div> <br></div><div>SetFactory("OpenCASCADE");<br>Mesh.CharacteristicLengthMin = 0.1;<br>Mesh.CharacteristicLengthMax = 0.1;<br>Point(1) = {0,0,1};<br>Point(2) = {3,0,1};<br>Point(3) = {3,3,1};<br>Point(4) = {0,3,1};<br>Line(1) = {1,2};<br>Line(2) = {2,3};<br>Line(3) = {3,4};<br>Line(4) = {4,1};<br>Line Loop(100) = {1,2,3,4};<br>Plane Surface(100) = {100};<br>Cylinder(200) = {1.5, 1.5, -2, 0, 0, 6, 0.5, 2*Pi};<br>BooleanDifference{Surface{100};Delete;}{Volume{200};Delete;}</div><div><br></div><div><br></div><div>In general, though, my surfaces are nonplanar, so I changed the coordinate of Point(1) and Plane Surface -> Surface in the .geo file:</div><div><br></div><div><div>SetFactory("OpenCASCADE");<br>Mesh.CharacteristicLengthMin = 0.1;<br>Mesh.CharacteristicLengthMax = 0.1;<br>Point(1) = {0,0,1.2};<br>Point(2) = {3,0,1};<br>Point(3) = {3,3,1};<br>Point(4) = {0,3,1};<br>Line(1) = {1,2};<br>Line(2) = {2,3};<br>Line(3) = {3,4};<br>Line(4) = {4,1};<br>Line Loop(100) = {1,2,3,4};<br>Surface(100) = {100};<br>Cylinder(200) = {1.5, 1.5, -2, 0, 0, 6, 0.5, 2*Pi};<br>BooleanDifference{Surface{100};Delete;}{Volume{200};Delete;}</div><div><br></div><div><br></div><div>When I make this change, the Boolean difference operator no longer cuts a hole out of the curved surface. Gmsh also does not indicate any errors.</div><div>Can someone please explain what is causing this behavior? Thanks!</div><div><br></div><div>matt<br></div></div></div></div></div>