【网格生成】Gmsh快速入门教程 --2.“geo”脚本方式使用

上一篇文章讲解了Gmsh的图形化方式入门使用。根据Gmsh官方的描述,Gmsh使用可以分为三个层次:

  1. 图形化界面使用;
  2. “.geo”语言方式;
  3. 通过Gmsh API方式,将gmsh集成至其他软件。

【网格生成】Gmsh快速入门教程 --2.“geo”脚本方式使用_第1张图片
那么今天就来介绍Gmsh的第二种使用方式,通过“geo”脚本调用Gmsh。geo是Gmsh定义的一种内置脚本格式,使用ASSIC编码,可以被Gmsh解析器解析。几乎所有在图形化界面能完成的任务都可以在geo脚本中实现。

下面具体介绍geo脚本语句,语句参考自官方教程。首先创建一个名为demo.geo的文件。

几何定义

// 创建变量lc
lc = 1e-2;
// 创建一个坐标值为(0, 0, 0)序号为1的 点单元 ,点的第四个参数表示划分网格的疏密程度,数字越小,
// 则表示周围网格越密集。前三个参数对应xyz坐标轴数值必须设置,第四个参数为可选参数。
Point(1) = {0, 0, 0, lc};
// 同理可创建更多顶点,但需要保证每个点的编号唯一,且都为正数。
Point(2) = {.1, 0,  0, lc};
Point(3) = {.1, .3, 0, lc};
Point(4) = {0,  .3, 0, lc};


// 创建一个边单元。边的序号为1,边的起点为序号为1的顶点,终点为序号为2的顶点。
// 同理,维度为1的边,其序号也需要保证唯一。
Line(1) = {1, 2};
// 创建多个边单元
Line(1) = {1, 2};
Line(2) = {3, 2};
Line(3) = {3, 4};
Line(4) = {4, 1};

// 创建一个曲线环单元。语句形式与边类似,左侧表示曲线序号,右侧表示组成环的边的序号。
// 需要注意,这里的边是有先后顺序的,序号前的负号表示将边的首尾倒转。
Curve Loop(1) = {4, 1, -2, 3};

// 上述组成的边环,在形式上已经看起来是一个“长方形”。但是此时对其画2维网格,得到的
// 结果是空的,因为此时只是一个“环”,内部仍然是空的。
// Surface语句可以将环的内部填充,成为一个面。
Plane Surface(1) = {1};

以上就简单的定义了一个长方形的平面。几何部分的定义结束了,你可以直接使用上一篇文章提到的图形化方式打开demo.geo,并进行后续的网格划分操作。

当然geo脚本能做的事情很多,并不局限于几何的定义。

其他操作

// 对几何体划分2维网格。
// 每次使用Gmsh打开该geo文件就会直接进行网格划分。
Mesh 2;
// 保存网格文件。
Save "demo.msh"

// msh是gmsh默认的网格格式,当然它还支持很多其他的格式,修改对应后缀名即可。
Save “demo.vtk”
// 上文提到的,可以切换几何内核。
SetFactory("OpenCASCADE");
// 在OpenCASCADE内核中,构建几何体更为方便,可以直接构建一个长方形,无需从点、边、开始。
Rectangle(2) = {.2, 0, 0, .1, .3};

总结

本文简要介绍了Gmsh的第二种使用方式,即通过geo脚本构建几何体,并完成网格划分,网格文件保存的工作。更多Gmsh geo脚本相关的操作可以参考用户手册。下一篇文章将讲解Gmsh第三种使用方式,即将gmsh集成至其他软件中。

你可能感兴趣的:(有限元分析,网格生成,CAE)