下文所有对iso-surface的描述和实验源于2022R1版本的Fluent。
一、iso-surface和iso-clip的用途
-
iso-surface的用途,本质上只有一个——绘制等值线或等值面。例如绘制温度取值为350K的等值线/面,或者绘制笛卡尔坐标系下X坐标为50m的等值面。
-
iso-clip的用途,本质就是创建基于某截面(可以是平面,也可以是曲面)上某物理量分布在数值范围内的区域,典型应用场景是“裁剪截面使其只显示矩形局部区域”。例如用plane-surface绘制了一个截面,却不想用bounded功能实现“只显示矩形局部区域”,这时候可以创建基于此plane-surface的iso-clip,而后将Clip to Values of设置为X/Y/Z中的一个坐标(根据实际情况设置),再创建一个基于前面iso-clip的iso-clip,将Clip to Values of设置为另一个坐标即可。
-
iso-clip截取局部区域,截取的区域不一定是连续的。在依据坐标范围截取时连续,但是依据温度、密度、压力这些物理量的范围截取时不一定连续。
二、iso-surface和plane-surface的区别
plane-surface截面是全局截面,会将所有区域都包括在内。
有时候,人们需要的只是等值区域,例如一个很大的钢板,我们需要绘制350K的这条等温线时,就需要用到iso-surface。
iso在iso-surface这一术语中来自希腊語的ισος(isos),意思相同或相等。
网上有好几个回答(典型当属CSDN文章-Fluent截取局部面),说他们两个的区别在于一个是全局,一个是截取“部分”/“局部”。但我觉得这个说法可能误导人,不是很准确。
例如一个钢板5*5*4,我们用中间的plane-surface可以截取一个5*5的平面。
而如果在plane-surface设置对话框中还额外勾选bounded,并且在定义三个点时采用连续定义(顺时针或逆时针)的方式,就能实现截取3*3的平面。
这才是准确的“全局转局部”,虽然只能截取矩形局部区域,但是基本也够用了!而如果你不喜欢用这个方式创建局部
iso-surface不能用于将全局转为局部区域,只能用于将全局转为等值区域。
三、iso-surface的GUI式添加方法
3.1 创建iso-surface
Domain选项卡——surface组——create下拉按钮——iso-surface。
如果你发现这个按钮是灰色的,往往是因为你没有初始化,或者你的模型没有计算从而得到有效的物理场数据。
3.2 设置Surface of Constant
Surface of Constant下第一个下拉框,表示你选择要取等值线/面依据的数值变量是何种类型。
除了密度、压力、速度、温度,这些大家容易想到的变量外,还可以是网格、单元信息、UDM。
如果你选择网格,那么第二下拉框,可以是笛卡尔坐标系下的XYZ分量,也可以是圆柱坐标系/极坐标系下的角度/半径/切向分量,也可以是单元格本身的质量(正交质量)。
3.3 设置等值线/面的来源区域
详见本文第四部分4.2、4.4、4.5、4.6。
章节4.2会告诉你不要选择全部取值都相同的区域对象。
章节4.4会告诉你iso-value不能超过surfaces或zones中某一者的范围之外。
章节4.5会告诉你如果选了surface,那么就不建议再选zone。
章节4.6会告诉你如果surface和zone都选,那么选中的surface一定要处于被选中的zone之中。
3.4 设置iso-value
iso-value是等值面/线的数值,例如想得到350K的等值面iso-value就应该设置为350K。
iso-value不仅可以用滑块拖动得到,也可以直接输入数值。滑块优点在于可以预览,以及可以很快将数值取到有效区间。直接输入数值的优势在于精准,并且可以在一个iso-value上定义多个数值,不同数值用空格隔开即可。
iso-value的取值有限制,详见本文第四部分4.3。
iso-value设置完后,就可以确定(创建/保存)了。
四、iso-surface的使用注意事项
4.1 等值线/面功能在于截取区域,形成一个范围,后面的云图等只能在这个范围内显示
如下图所示,以上面用turbulence等值的区域,作为云图显示范围,得到turbulence为1.51时的温度分布情况。
4.2 如果整个对象的范围的上限下限相同,那么一定会出错
如下图所示,如果选了inlet这个surface,因为这个surface的任意一点温度都为419.4727,那么只要选中它就一定会犯错。不管iso-value是否在这个范围之内,不管是否还选中了其他surface或zone。
4.3 数值不能超过surfaces或zones中某一者的范围之外
如下图所示,inlet这个surface其实是下面fluid中fff-enclosure_enclosure区域里的。
如果同时选中inlet和zones中的所有,在compute计算温度范围时,计算出来的范围是surfaces和zones里取并集得到的范围。
这样有一个缺陷——你无法知道surface中包括的温度值。
当你Iso-Values取一个surface中没有的温度数值,那么就会弹出iso面创建失败的错误【Error:Surface creation failed!】。
因此,我建议直接不选zones,直接选inlet,就可以完美显示整个surface的温度云图了。
4.4 一个zone也不选,一个surface也不选,相当于选中所有zones
如下图所示,如果一个zone也不选,一个surface也不选时,等值线温度云图。
这回全选中,
结果不变。
4.5 如果选了surface,那么就不建议再选zone
因为如果你选了surface,最后一定只会显示等值线;不管你额外选不选zone。
如下图,surface中只选interior-fff-mold_d_solidl-fff-mold_solid1,而zone中不选任何对象。
显示效果如下。
第二次,我们额外选中这个内部面的两边实体。
显示效果并没有变化。
4.6 如果surface和zone都选,那么选中的surface一定要处于被选中的zone之中
例如,下面的interior-fff-mold_d_solidl-fff-mold_solid1是fff-mold_d_solid1和fff-mold_solid1区域之间的内部面。
如果选中这个内部面,只选区域fff-mold_d_solid1或fff-mold_solid1都不行,必须都选上。
这里的意思是说,其实你只选上面的surface就好,不用再选下面的zone。而如果你执意要选zone,那么必须选中下面的区域fff-mold_d_solid1和fff-mold_solid1,至于其他zone你可选可不选。
而下面的outlet是fff-enclosure_enclosure的外壁面(只不过是入口边界类型壁面)。
如果选中outlet(温度值不止一个),那么在zone中要至少选中fff-enclosure_enclosure。
五、iso-surface的TUI式添加方法
TUI命令是进行批量化处理的神器,如果你对它很陌生,在刚开始学习的时候我建议你根据GUI界面上的定义/设置操作来逐步测试TUI命令和相应参数。
以及利用好fluent软件右上角的搜索框,利用好fluent console中的代码提示来输入。
TUI命令创建iso-surface的基本命令是/surface/iso-surface
。
我们在console窗口执行这个命令,然后再多按一次回车,就可以看到接下来可以输入的参数。
/surface/iso-surfaceiso-surface of>
abs-angular-coordinate production-of-k
absolute-pressure q-criterion
angular-coordinate radial-coordinate
axial-coordinate radial-velocity
axial-velocity raw-q-criterion
boundary-cell-dist reference-temperature-at-y+
boundary-layer-cells rel-mach-number
boundary-normal-dist rel-tangential-velocity
boundary-volume-dist rel-total-pressure
cell-acoustic-courant-number rel-total-temperature
cell-convective-courant-number rel-velocity-magnitude
cell-element-type relative-velocity-angle
cell-equiangle-skew relative-x-velocity
cell-equivolume-skew relative-y-velocity
cell-id relative-z-velocity
cell-parent-index rothalpy
cell-partition-active skin-friction-coef
cell-partition-stored sound-speed
cell-refine-level specific-diss-rate
cell-reynolds-number specific-heat-cp
cell-type stanton-number
cell-volume strain-rate-mag
cell-volume-change tangential-velocity
cell-wall-distance temperature
cell-weight thermal-conductivity-eff
cell-zone thermal-conductivity-lam
density total-energy
density-all total-enthalpy
dp-dt total-enthalpy-deviation
dp-dx total-pressure
dp-dy total-temperature
dp-dz turb-diss-rate
dx-velocity-dx turb-intensity
dx-velocity-dy turb-kinetic-energy
dx-velocity-dz turb-reynolds-number-rey
dy-velocity-dx udm_cur_rating
dy-velocity-dy udm_curing_ratio
dy-velocity-dz udm_derivative_of_cur_rating
dynamic-pressure udm_volume_unit_heat
dz-velocity-dx user-energy-source
dz-velocity-dy user-volumetric-energy-source
dz-velocity-dz velocity-angle
enthalpy velocity-magnitude
entropy viscosity-eff
face-area-magnitude viscosity-lam
face-handedness viscosity-ratio
gamma viscosity-turb
gas-constant vorticity-mag
heat-flux wall-adjacent-temperature
heat-transfer-coef wall-shear
heat-transfer-coef-wall wall-temp-in-surf
heat-transfer-coef-wall-adj wall-temp-out-surf
heat-transfer-coef-yplus wall-temp-thin
helicity wall-temperature
interface-overlap-fraction x-coordinate
internal-energy x-face-area
lambda2-criterion x-velocity
mach-number x-vorticity
mark-poor-elements x-wall-shear
mass-imbalance y-coordinate
mesh-x-velocity y-face-area
mesh-y-velocity y-plus
mesh-z-velocity y-star
nusselt-number y-velocity
orthogonal-quality y-vorticity
partition-neighbors y-wall-shear
prandtl-number-eff z-coordinate
prandtl-number-lam z-face-area
pressure z-velocity
pressure-coefficient z-vorticity
pressure-hessian-indicator z-wall-sheariso-surface of>
我们可以发现,这里面的参数本质上就是GUI界面上Surface of Constant的两个下拉框中的,只不过GUI界面分成两个层级供用户选择,而TUI是直接用一级参数就可以表达。
我们接着输入x-coordinate回车执行。
console界面提示输入iso-surface的名称,于是输入一个名称(中间不能带空格,不要有特殊字符,首字符不能是数字)后再回车。
console界面提示输入from surface的参数,因为不想选择任一surface,直接输入()
而后回车。
console界面提示输入from zone的参数,我们如果要选fff-mold_d_solid1
这个区域,输入(fff-mold_d_solid1)
回车,建议还是加英文括号,因为这会让你有一个意识——此处可以有多个zone。
console界面自动计算出选定对象在X坐标上的可选范围,于是输入命令(-0.2 -0.1 0.1 0.2)
来创建4个等距截面,它们的X坐标分别是-0.2 -0.1 0.1 0.2m。
创建iso-surface成功,我们回到GUI界面查看TUI命令创建的surface是正确的。
接下来就是TUI命令的文本化。
因为TUI命令好用就好用在批处理上,你不得不将上面在测试过程中分步回车执行的命令和参数转移到文本文件(后缀是jou)中。
转移技巧大概有4点:
- 一个命令占一行,例如创建ISO平面命令/surface/iso-surface占一行,计算结果导出命令/file/transient-export/ascii占一行。
- 命令和参数、不同参数之间用空格隔开,这也是“空格不能作为对象名称”的原因。一旦你在GUI界面创建surface或contour等对象中名称带有空格,会报错unbound variable。在TUI命令中参数带空格也是这样。
- 对于默认的参数,仔细看方括号里是啥。如果你想保持默认,直接将方括号里的复制过去即可。
- 如果某一类参数可以设置多个,那么一般用圆括号将这类参数括起来,不同参数用空格隔开。
- 有些TUI命令执行完毕后,console还是在这个命令环境中,虽然fluent在执行另一个命令时会自动quit出这个命令环境,但我还是建议各位用q来退出,这样写出来的TUI批处理文件可读性和兼容性更强。
现学现用!
将上面一步步执行的命令文本化,就是/surface/iso-surface x-coordinate isof1 () (fff-mold_d_solid1) (-0.2 -0.1 0.1 0.2)
。
六、iso-clip的GUI式添加方法
6.1 创建Iso-clip
Domain选项卡——surface组——create下拉——iso-clip按钮。
6.2 确定Clip to Values of
这里跟iso-surface的相同,不再赘述。
6.3 设置Clip Surface
如果说前两步,体现不出iso-clip和iso-surface的区别,那么这一步就开始体现出差异了。
iso-clip只能选中一个surface,而iso-surface中可以选中多个surface。
iso-clip不能选cell zones,因此也就没办法显示很复杂的曲面,只能在已有surface上显示限定范围内物理量分布的区域。
Clip Surface不仅可以选plane-surface、iso-surface,而且还可以选iso-clip。利用可以选择clip自身的特性,可以截取出矩形区域(2D)、长方形区域(3D),方法是一次选X,一次选Y(一次选Z)。
6.4 定义Min-Max值
这一步,是体现Clip Surface和iso-surface本质区别的地方。
Iso-surface只能显示物理量单个数值对应的区域,而Clip Surface可以显示物理量连续区间内的区域。
同样,当我们用圆盘来调整最小最大值时,在右边显示窗口中可以预览到裁剪区域的范围(灰色)。
七、Iso-clip的TUI式添加方法
Iso-clip的TUI式添加方法就此省略,本文第五部分已经讲述了TUI命令的编写技巧和文本化技巧,上面已经讲的很清楚了。