# [Gmsh] 2D meshing problem; extrude; 360 rotation; revolution solid.

Gustavo Charles Peixoto de Oliveira gustavo.oliveira at uerj.br
Thu Mar 26 05:49:38 CET 2015

```

Dear Gmshers,
I'm
trying to generate a revolution solid from a cosine function profile and
sequential 2D surface meshing. Although I could get to the
surface after a rotation around the x-axis with the
'Extrude' command, Gmsh returns an error if I try to mesh
this "apparently closed" resulting solid.
My
insight is that there's a problem with
overlapped entities after the 2*pi rotation, however I
can't get rid of the error. I tried a full rotation of 2*pi and 4 partial
rotations of pi/2 with the same profile, but
both the strategies haven't work,
while non-overlapping angles ( < 2*pi) have produced the
expected mesh.
Could someone help me
to understand what's going wrong and how can I have the mesh working?
Or maybe an alternative way. The .geo
is like below.
Thankfully,

/* Defaults */

Geometry.Surfaces = 1; //

/* Settings */

x0 = 0.0;

y0 = 0.0;

z0 = 0.0;

c1 = 0.05;

amp = 0.05;

r1 = 0.5*amp;

t0 = 2.0;

R0 = 0.5;

lambda = 2*R0;

L = lambda;

/* Discretization */

np = 10;

nt = 10;

dx = L/(np - 1);

Geometry.ExtrudeSplinePoints = nt;

// initial point

X[0] = x0 - lambda/2;

Y[0] = y0 + r1;

P0 = newp;

P[0] = P0;

Point(P0) = {X[0],Y[0],z0,c1};

// 'revolution' profile

For p In {1:np-1}

X[p] = X[0] + p*dx;

Y[p] = Y[0] + amp*Sinh(t0)*(1.0 + Cos(2*Pi*X[p]/lambda) );

Pp = newp;

Point(Pp) = {X[p],Y[p],z0,c1};

P[p] = Pp;

L = newl;

Line(L) = {P[p-1],P[p]};

extr[] = Extrude{ {0,0,0}, {1,0,0}, {0,0,0}, 2*Pi }{ Line{L};};

EndFor

/* Same profiles adapted for partial pi/2 revolution

Y[0] = y0 - r1;

P0 = newp;

P[0] = P0;

Point(P0) = {X[0],Y[0],z0,c1};

For p In {1:np-1}

X[p] = X[0] + p*dx;

Y[p] = Y[0] - amp*Sinh(t0)*(1.0 + Cos(2*Pi*X[p]/lambda) );

Pp = newp;

Point(Pp) = {X[p],Y[p],z0,c1};

P[p] = Pp;

L = newl;

Line(L) = {P[p-1],P[p]};

extr[] = Extrude{ {0,0,0}, {1,0,0}, {0,0,0}, Pi/4 }{ Line{L};};

EndFor

Z[0] = z0 + r1;

P0 = newp;

P[0] = P0;

Point(P0) = {X[0],y0,Z[0],c1};

For p In {1:np-1}

X[p] = X[0] + p*dx;

Z[p] = Z[0] + amp*Sinh(t0)*(1.0 + Cos(2*Pi*X[p]/lambda) );

Pp = newp;

Point(Pp) = {X[p],y0,Z[p],c1};

P[p] = Pp;

L = newl;

Line(L) = {P[p-1],P[p]};

extr[] = Extrude{ {0,0,0}, {1,0,0}, {0,0,0}, Pi/4 }{ Line{L};};

EndFor

Z[0] = z0 - r1;

P0 = newp;

P[0] = P0;

Point(P0) = {X[0],y0,Z[0],c1};

For p In {1:np-1}

X[p] = X[0] + p*dx;

Z[p] = Z[0] - amp*Sinh(t0)*(1.0 + Cos(2*Pi*X[p]/lambda) );

Pp = newp;

Point(Pp) = {X[p],y0,Z[p],c1};

P[p] = Pp;

L = newl;

Line(L) = {P[p-1],P[p]};

extr[] = Extrude{ {0,0,0}, {1,0,0}, {0,0,0}, Pi/4 }{ Line{L};};

EndFor

*/

--

Gustavo PEIXOTO DE OLIVEIRA, Dr.

State University of Rio de Janeiro

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.geuz.org/pipermail/gmsh/attachments/20150326/9912a463/attachment.html>
```