# Generating structured paraboloid using gmsh

I am trying to get the structured mesh as shown in the figure.

I have used the transfinite surface and curve to achieve the same. Though I get the structured mesh but I do not know how to do for body-of-revolution elements.

May I ask, How to generate structured mesh for body-of-revolution elements using gmsh?

• You have to partition the domain such that each partition is topologically equivalent to a hexahedron (6 faces, four vertices on each face). – Biswajit Banerjee Apr 4 at 20:02
• I have no clue right now and would be nice to have a code snippet to start with. – jomegaA Apr 4 at 20:21
• You could use an arc-length parameterization to create a spline that follows the parabola. Then mesh this and extrude the mesh rotationally. – nicoguaro Apr 5 at 1:15

Thanks. Managed to get the structured paraboloid using gmsh.

c                             = 299792458;
f                             = 3.0e9;
lambda                        = c/f;
D                             = 1.25*lambda;
f2d                           = 0.72;
focallength                   = D*f2d;
parabolLowerEdgeHeight        = -D/2;
parabolPoints                 = 11;
delta                         = D/(parabolPoints-1);
h                             = lambda/12;

For i In {0:parabolPoints-1}
x                         = (i*delta)+parabolLowerEdgeHeight;
z                         = (x*x)/(4.0*focallength);
points1[i]                = newp;
Point(points1[i])         = {x, 0, z, h};
EndFor

x                             = ((parabolPoints-1)*delta)+parabolLowerEdgeHeight;
z                             = (x*x)/(4.0*focallength);
Point(12)                     = {0, 0, z};
Spline(1)                     = points1[];
Split Line(1) {6};

Rotate {{0, 0, 1}, {0, 0, 0}, Pi/2} { Duplicata { Line{2}; } }
Rotate {{0, 0, 1}, {0, 0, 0}, Pi/2} { Duplicata { Line{3}; } }

Circle(6)                     = {11, 12, 23};
Circle(7)                     = {23, 12, 1};
Circle(8)                     = {1, 12, 13};
Circle(9)                     = {13, 12, 11};

Line Loop(10)                 = {3, 6, -5};
Line Loop(12)                 = {5, 7, 2};
Line Loop(14)                 = {2, -4, -8};
Line Loop(16)                 = {4, 3, -9};

Surface(11)                   = { -10};
Surface(13)                   = { -12};
Surface(15)                   = { 14};
Surface(17)                   = { 16};

Physical Surface("reflector")         = {15, 17, 11, 13};

//+
Transfinite Surface {11};
//+
Transfinite Surface {13};
//+
Transfinite Surface {17} Right;
//+
Transfinite Surface {15} Right;
//+
Recombine Surface {13, 11, 17, 15};

• Could you describe the approach used so it would be of use for other people? – nicoguaro Apr 11 at 17:27
• You may need to define the transfinite surface and recombine them. Updated my answer with code. – jomegaA Apr 15 at 10:25