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。