<p>Thank you Prof. Geuzaine!</p><p>I didn't think on it!
;)</p><p>Regards,</p><p>On Thu, March 26, 2015 15:14, Christophe
Geuzaine wrote:<br />
><br />
>> On 26 Mar 2015, at 05:49, Gustavo Charles Peixoto de Oliveira<br />
>> <gustavo.oliveira@uerj.br> wrote:<br />
>><br />
>><br />
>><br />
>><br />
>> Dear Gmshers,<br />
>><br />
>> I'm trying to generate a revolution solid from a cosine function
profile<br />
>> and sequential 2D surface meshing. Although I could get to the
surface<br />
>> after a rotation around the x-axis with the 'Extrude' command,
Gmsh<br />
>> returns an error if I try to mesh this "apparently
closed" resulting<br />
>> solid.<br />
>><br />
>> My insight is that there's a problem with overlapped entities
after the<br />
>> 2*pi rotation, however I can't get rid of the error. I tried a
full<br />
>> rotation of 2*pi and 4 partial rotations of pi/2 with the same
profile,<br />
>> but both the strategies haven't work, while non-overlapping
angles ( <<br />
>> 2*pi) have produced the expected mesh.<br />
>><br />
>> Could someone help me to understand what's going wrong and how
can I<br />
>> have the mesh working? Or maybe an alternative way. The .geo is
like<br />
>> below.<br />
>><br />
>> Thankfully,<br />
>><br />
><br />
> Extrude in 2 steps:<br />
><br />
> /* Defaults */<br />
> Geometry.Surfaces = 1; //<br />
><br />
> /* Settings */<br />
> x0 = 0.0;<br />
> y0 = 0.0;<br />
> z0 = 0.0;<br />
> c1 = 0.05;<br />
> amp = 0.05;<br />
> r1 = 0.5*amp;<br />
> t0 = 2.0;<br />
> R0 = 0.5;<br />
> lambda = 2*R0;<br />
> L = lambda;<br />
><br />
> /* Discretization */<br />
> np = 10;<br />
> nt = 10;<br />
> dx = L/(np - 1);<br />
> Geometry.ExtrudeSplinePoints = nt;<br />
><br />
> // initial point<br />
> X[0] = x0 - lambda/2;<br />
> Y[0] = y0 + r1;<br />
> P0 = newp;<br />
> P[0] = P0;<br />
> Point(P0) = {X[0],Y[0],z0,c1};<br />
><br />
> // 'revolution' profile<br />
> For p In {1:np-1}<br />
> X[p] = X[0] + p*dx;<br />
> Y[p] = Y[0] + amp*Sinh(t0)*(1.0 + Cos(2*Pi*X[p]/lambda) );<br />
> Pp = newp;<br />
> Point(Pp) = {X[p],Y[p],z0,c1};<br />
> P[p] = Pp;<br />
> L = newl;<br />
> Line(L) = {P[p-1],P[p]};<br />
> extr[] = Extrude{ {0,0,0}, {1,0,0}, {0,0,0}, Pi }{ Line{L};};<br />
> extr2[] = Extrude{ {0,0,0}, {1,0,0}, {0,0,0}, Pi }{
Line{extr[0]};};<br />
> EndFor<br />
><br />
><br />
><br />
> --<br />
> Prof. Christophe Geuzaine<br />
> University of Liege, Electrical Engineering and Computer Science<br />
> http://www.montefiore.ulg.ac.be/~geuzaine<br />
><br />
><br />
><br />
><br />
<br />
<br />
--<br />
Gustavo PEIXOTO DE OLIVEIRA, Dr.<br />
State University of Rio de Janeiro <br />
 </p>