[Gmsh] node positions on B-splines

Rene Schneider rene.schneider at mathematik.tu-chemnitz.de
Thu Feb 14 14:48:35 CET 2013


Hi

First of all, thanks for providing this great software.

I'm trying to mesh a 3D geometry defined by extruding B-spline segments, 
see attached example.

I noticed that nodes accumulate close to the lines that originate from 
extruding the end-points of the B-splines, resulting in extremely thin 
surface triangles. Thus fairly bad tets are generated in the 3d mesh in 
these regions.

Even worse: if the mesh is refined, the surface triangles are "sucked" 
into this region, degenerating to zero surface area. Correspondingly 
tets result, with zero volume.

I presume this problem could result from an error in distance 
measurement on the surface.

If I use splines instead of B-splines, the problem is gone.

Any help is appreciated, I really need those B-splines.

I'm using
$ gmsh --version
2.6.1
under Linux.


Rene
-------------- next part --------------
DefineConstant[ lc = { 0.5, Path "Gmsh/Parameters"}];
DefineConstant[ r1 = { 2, Path "Gmsh/Parameters"}];
DefineConstant[ r2 = { 3, Path "Gmsh/Parameters"}];
DefineConstant[ hole1x = { -2-r1, Path "Gmsh/Parameters"}];
DefineConstant[ hole2x = { 10+r2, Path "Gmsh/Parameters"}];
Point(1) = {hole1x, 0, 0, lc};
Point(2) = {hole2x, 0, 0, lc};
Point(3) = {hole1x-r1, 0, 0, lc};
Point(4) = {hole1x, r1, 0, lc};
Point(5) = {hole1x+r1, 0, 0, lc};
Point(6) = {hole2x+r2, 0, 0, lc};
Point(7) = {hole2x, r2, 0, lc};
Point(8) = {hole2x-r2, 0, 0, lc};
Point(9) = {0, 0, 0, lc};
Point(10) = {0, 1, 0, lc};
Point(11) = {1, 2.5 , 0, lc};
Point(12) = {4, 3, 0, lc};
Point(13) = {7, 3.5, 0, lc};
Point(14) = {8, 1, 0, lc};
Point(15) = {8, 0, 0, lc};
Point(16) = {hole1x-1.5*r1, 0, 0, lc};
Point(17) = {hole1x-1.5*r1, 1.5*r1, 0, lc};
Point(18) = {2, 1.8*r2, 0, lc};
Point(19) = {5, 2*r2, 0, lc};
Point(20) = {8, 2.2*r2, 0, lc};
Point(21) = {hole2x+1.5*r2, 1.5*r2, 0, lc};
Point(22) = {hole2x+1.5*r2, 0, 0, lc};
Circle(1) = {3, 1, 4};
Circle(2) = {4, 1, 5};
Line(3) = {8, 7};
Line(4) = {7, 6};
BSpline(5) = {9, 10, 11, 12};
BSpline(6) = {12, 13, 14, 15};
BSpline(7) = {16, 17, 18, 19};
BSpline(8) = {19, 20, 21, 22};
Symmetry {0, 1, 0, 0} {
  Duplicata { Line{7, 8, 4, 3, 6, 5, 2, 1}; }
}
Line Loop(17) = {7, 8, -10, -9};
Line Loop(18) = {1, 2, -15, -16};
Line Loop(19) = {5, 6, -13, -14};
Line Loop(20) = {3, 4, -11, -12};
Plane Surface(21) = {17, 18, 19, 20};
Extrude {0, 0, 3} {
  Surface{21};
}