有限元网格生成器,地址: http://gmsh.info
四个模块:几何,网格,求解器,后处理
API没有文档,要自己看demo
> gmsh a.geo
点击保存,存.msh格式,可以在文件菜单中导出其他格式
非交互模式:eg. 仅网格化
> gmsh a.geo -2
-1
-2
-3
执行1D 2D 3D网格生成,然后退出
-o file
指定输出文件名
-format string
选择输出格式:msh unv stl mesh bdf等等
-refine
执行统一的网格细化,然后退出
-clmin float
最小网格元素大小
-clmax float
最大网格元素大小
-clcurv
从曲率自动计算元素大小
脚本支持C/C++风格的注释
For i In {1:3}
x~{i} = i;
EndFor
等价于
x_1 = 1;
x_2 = 2;
x_3 = 3;
有Cos Exp Log等内置函数, 可以定义简单的宏
If (balabala)
ElseIf (balabala)
Else
EndIf
其它:
Pi
, Menory
, Exit
, Printf
几何模块:提供简单CAD引擎
每个元素要有唯一的编号
Point ( 1 ) = { x, y, z <, expression > }; 可选设置此处网格大小
Point ( 2 ) = {x2,y2,z2};
Line (3) = {1,2};
Circle(4) = {};
创建一个圆弧。右边三个表达式定义弧的起点,中心和终点。使用内置的几何内核,弧应该严格小于Pi。通过OpenCASCADE内核,可以提供附加表达式 s来定义一个完整的圆(第四个表达式是半径)或两个角度之间的圆弧(接下来的两个表达式)。
Rectangle(5) = {};
创建一个矩形。3个第一个表达式定义了左下角; 接下来的两个定义宽度和高度。如果提供了第6个表达式,它将定义一个半径以围绕矩形拐角。Rectangle仅在OpenCASCADE内核中可用。
Sphere(6) = {};
创建一个由其中心和半径的3个坐标定义的球体。附加表达式定义3个角度限制。Sphere仅在OpenCASCADE内核中可用。
Box(7) = {};
创建一个框,由一个点的3个坐标和3个范围定义。Box仅在OpenCASCADE内核中可用。
其他的格式在gui里面导出看一下
也可以通过拉伸点线面等操作来构建线面体
布尔运算:
BooleanIntersection {list} {list}; 交集
BooleanUnion {} {};
BooleanDifference {} {};
BooleanFragments {} {};
”物理“是为了分组
Mesh 2 划分2D网格
Point | Line {} In Surface {}; 嵌入点线使符合
Coherence Mesh; 删除重复顶点
Mesh ASCII 文件格式
$MeshFormat
version-number file-type data-size
$EndMeshFormat
$PhysicalNames
number-of-namesphysical-dimension physical-number "physical-name"
…
$EndPhysicalNames
$Nodes
number-of-nodesnode-number x-coord y-coord z-coord
…
$EndNodes
$Elements
number-of-elementselm-number elm-type number-of-tags < tag > … node-number-list
…
$EndElements
$Periodic
number-of-periodic-entitiesdimension slave-entity-tag master-entity-tagnumber-of-nodesslave-node-number master-node-number
…
$EndPeriodic
$NodeData
number-of-string-tags
< "string-tag" >
…
number-of-real-tags
< real-tag >
…
number-of-integer-tags
< integer-tag >
…
node-number value …
…
$EndNodeData
$ElementData
number-of-string-tags
< "string-tag" >
…
number-of-real-tags
< real-tag >
…
number-of-integer-tags
< integer-tag >
…
elm-number value …
…
$EndElementData
$ElementNodeData
number-of-string-tags
< "string-tag" >
…
number-of-real-tags
< real-tag >
…
number-of-integer-tags
< integer-tag >
…
elm-number number-of-nodes-per-element value …
…
$EndElementNodeData
$InterpolationScheme
"name"
number-of-element-topologieselm-topologynumber-of-interpolation-matricesnum-rows num-columns value …
…
$EndInterpolationScheme