使用 gmsh 生成结构化抛物面

计算科学 gmsh
2021-12-07 05:22:31

我正在尝试获得如图所示的结构化网格。

我已经使用了超限曲面和曲线来实现相同的效果。虽然我得到了结构化网格,但我不知道如何处理旋转体元素。

请问,如何使用 gmsh 为旋转体元素生成结构化网格?

在此处输入图像描述

1个回答

谢谢。设法使用 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};