Gmsh简介
Gmsh是一款开源的三维非结构有限元网格生成软件. 它内置了前后处理的模块以及高阶网格生成工具. Gmsh有图形和脚本两种模式,用户可以快速生成简单的有限元网格. Gmsh是高精度格式求解器最常用的前处理软件.
使用Gmsh时, 用户首先定义几何模型, 然后Gmsh将自动生成网格, 最后用户可以根据需要选择分区等后处理功能. Gmsh的几何生成和其他常用的CAD软件类似, 都是先由点生成线, 再到面, 最后生成体. 有了几何模型之后, 下一步是可以利用Gmsh的选项生成非结构的网格. 最后是后处理的阶段. 所有这些操作都是可以通过脚本实现.
下面以几个简单例子说明Gmsh脚本的编写
例子
均匀网格
均匀网格是一个最简单的例子. 下面是一个区域为正方形均匀网格. 脚本代码如下:
xmin = -
0.5;
xmax =
0.5;
ymin =
0;
ymax =
1;
NX =
16;
NY =
16;
Point (
1) =
{xmin, ymin, 0};//设置点
Point (
2) =
{xmax, ymin, 0};
Point (
3) =
{xmax, ymax, 0};
Point (
4) =
{xmin, ymax, 0};
Line (
1) =
{1,2};//连线
Line (
2) =
{2,3};
Line (
3) =
{3,4};
Line (
4) =
{4,1};
Transfinite
Line {1,-3} = NX+
1;//在线上布置点
Transfinite
Line {2,-4} = NY+
1;
Line Loop (
1) =
{1,2,3,4};//将封闭的线连成面
Plane Surface (
1) =
{1};//生成面
Transfinite Surface
{1};//网格生成
Recombine Surface
{1};//得到结构
Gmsh脚本语言的语言和C语言类似. 脚本的内容也是按照定义几何, 生成网格, 后处理等步骤编写的. 本例中, 区域是边长为1的正方形. 每个边上有16个点. 最终生成256个四边形网格.
非均匀网格
上边是最简单的Gmsh网格生成例子, 几何都是通过自己定义得到的. 这在几何比较简单的时候是可行的, 如果几何非常复杂, 使用这种方式将非常繁琐. Gmsh提供了Extrude的功能, 使编写脚本的效率提高.下面的代码的功能和上面的是一样的.
N =
16;
Point(
1) =
{-0.5, 0, 0, 0.1};
line[] = Extrude
{1, 0, 0.} {
Point{1}; Layers
{N+1};
};
Physical
Line(
1) =
{line[1]};
surface[] = Extrude
{0, 1, 0} {
Line{line[1]}; Layers
{N+1}; Recombine;
};
现在的脚本,看起来比较简单.
下面一个例子是一个非均匀的例子, 比较复杂.
N =
1;
lc = Pi/nl;
Point(
1) = {-
0.5,
0,
0, lc};
ny =
16;
r =
1.2^(N/
2);
h0 =
0.5*(
1-r)/(
1-r^(ny/
2));
h=
0.;
For i In {
0:(ny-
2)/
2}
h += h0*r^i;
y[i] = h;
y[ny-i-
2] =
1-h;
EndFor
y[ny/
2-
1] =
0.5;
y[ny-
1] =
1.;
For i In {
0:ny-
1}
layer[i] =
1;
EndFor
line[] = Extrude {
1,
0,
0.} {
Point{
1}; Layers{ layer[], y[]};
};
Physical Line(
1) = {line[
1]};
surface[] = Extrude {
0.0,
1.0,
0.0} {
Line{line[
1]}; Layers{ layer[], y[] };Recombine;
};
转载请注明原文地址: https://ju.6miu.com/read-660125.html