GAMBIT学习笔记
学习GAMBIT时的一些问题。
几何绘制
Connect / Disconnect的用法
以二维为例,在通过Split操作用线或面将面分隔开时,产生的两个面默认是保持网格连续性的,也就是说他们共用一条(或几条)边。对他们的共用边使用Disconnect Edges,可以将共用边拆成(部分)重合的两条,不再保持网格连续。放过来可以用Connect Edges连接两个面,这会删除重合边中的一条。相比之下,Merge Faces会完全删除公共边,而此法会留下边,可用于分块划分网格。
导入几何图形
以二维为例,在CAD软件中绘制好曲面(而不仅是线框)之后,导出.igs文件,即可导入GAMBIT。
Form Face的用法
绘制平面十分简单,绘制曲面可使用额外的选项:
- Initial Face:参照面,绘制的面会尽量与其保持曲率一致
- Guide Edges:指定必须经过的边
- Guide Vertices:指定必须经过的点
杂项问题
| 命令 | 用法 | 
|---|---|
| Smooth/Heal | 自动修复有问题的几何特征 | 
| Convert(Nonreal to Real) | 将虚几何元素转化为实几何元素 | 
网格划分
Link / Dislink的用法
(不确信的内容)应该是指将拓扑特征相似的两个图形进行关联,之后对其中一个划分网格时会自动给另一个也划分网格,要求两图形边数/面数相同,此外为了确定网格形态还需要指定参照点、参照方向。
Mesh的用法
- Mesh Edges中,可以通过调节- Ratio调节线网格偏置
- Mesh Faces中,可选的单元形状有四边形/三角形/混搭,网格类型有- Map正规形,- Submap分块正规形,- Pave无规形。前两者只适用于近四边形的简单形状,一般采用- Pave。
- Mexh Volumns中,可选的单元形状有- Hex六面体/- Hex + Wedge六面体+楔形/- Tet + Hybrid四面体+六面体+四棱锥+楔形,网格类型众多,主要有- Map, Submap,- Cooper根据指定的“源”面扫掠,- TGrid各种单元混搭,- Hex Core中心为六面体单元,周围异形部分为混搭。
三维的格子能画出来就不错了
Boundary Layer的设置
设定从边界向内部厚度等比变化的多层网格,以下四个参数需设定三个:
- First row第一层厚度
- Growth factor厚度比
- Rows层数
- Depth总厚度
而第一层网格长度需要先用对边分网格的方法定好。此外,如果将Algorithm选为Aspect ratio(first),则等比的不是厚度,而是长厚比。
杂项问题
| 命令 | 用法 | 
|---|---|
| Move Face Nodes | 选择面内的网格节点并进行拖动,如果勾选 smooth周边网格也会随之变化 | 
| Split Quad Meshes | 将四边形网格变为三角形网格 | 
| Split Meshed Face | 将选择的网格面按照若干网格节点连成的折线分成两个虚拟面 | 
| Set Face Vertex Type | 设置某个面上某点附近的网格形态(影响网格节点的数量、网格边的夹角等),例如 End外凸顶点,Corner内凹顶点 | 
| Modify | (不确信的内容)主要用于 Face,很少用于Volume。主要用于曲面上,根据设置的网格边角度范围,将网格边转化为拓扑曲面片 | 
单元/边界类型设定
单元类型包括:FLUID流体,SOLID固体。
常用边界类型包括:
| 类型 | 意义 | 意义及在Fluent中需要指定的参数 | 
|---|---|---|
| WALL | 壁面 | 可指定切向速度分量和热边界条件 | 
| AXIS | 轴 | 必须与X轴重合,无条件 | 
| MASS_FLOW_INLET | 质量入口 | 指定流入质量流速,不可压流中可用速度入口代替 | 
| VELOCITY_INLET | 速度入口 | 指定流入流速 | 
| PRESSURE_INLET | 压力入口 | 指定流入口的总压 | 
| OUTFLOW | 出口 | 模拟前未知情况的出口,不可用于可压流动 | 
| PRESSURE_OUTLET | 压力出口 | 指定流出口的静压 | 
| INTERIOR,INTERNAL | 内部界面 | 划分网格等使用的辅助面,一个面,两侧网格匹配 | 
| INTERFACE | 界面 | 配对的两个面,在不同的网格间交换信息 | 
| SYMMETRY | 对称 | 对称关系,意味着法向速度为0,各物理量梯度为0,也可用于粘性流动中的零剪切壁面/自由表面 | 
脚本用法
GAMBIT在保存文件时会生成同名的.jou文件,也就是脚本文件。可以通过File -> Run Journal运行。另外,可以通过File -> Clean Journal清理脚本,去除无意义的代码。
基础语法
变量类型基本上只有String, Integer, Real,各种对象的label其实都是个字符串。
变量声明:
| 1 | $length = 0.1 | 
列表声明:
| 1 | declare $points[1 : 3] | 
支持的数学符号:+  -  *  /  ^,以及大量数学函数。
支持的关系、逻辑算符:
| 1 | 符号 .gt. .ge. .lt. .le. .eq. .ne. .and. .or. .not. | 
以/开头的行被认为是注释。
其他详见此页面https://www.sharcnet.ca/Software/Gambit/html/users_guide/ug0b.htm#exp。
逻辑控制
if语句,没有else if选项,不过可以手动嵌套:
| 1 | if cond (X) / X: 返回布尔值的表达式 | 
do循环,其实混合了for循环和do循环:
| 1 | do para "$P" [init I] cond (X) [incr N] / $P: 循环计数变量,必须预先声明过 | 
在do循环中也可以使用break和next。
命令
一般来说命令格式为:
| 1 | Operator [Keyword [Variables]] / Operator一般为两个单词,表示操作,如vertex reflect | 
具体的很复杂,实际上就看看录制出来的.jou文件学习一下就行,具体参考见https://www.sharcnet.ca/Software/Gambit/html/command_reference/crtoc.htm。
