1.Fluent自动更改边界条件类型
在进行仿真计算的过程中,有时候我们会想要在特定的时刻或者物理量达到一定的条件之后,自动改变边界条件的类型。主要有四种方法可以实现。
Command方法实现Event方法实现Scheme语言+TUI实现UDF+Scheme语言实现
注:
更改边界条件类型,单纯通过UDF实现不了,必须借助其他的方式
当然一些大佬只通过UDF确实能够实现这个功能,但是太复杂了!!!
2.通过Command实现
第一种方法,通过Command来实现。
2.1 具体操作步骤
Calculation Activities--Execute Commands
双击打开Execute Commands界面,点击New,创建新的command
下面我们来主要介绍Execute Commands界面
a. Active:表示当前的command是否生效,不勾选表示不生效
b. Name:command的名字
c. Execution Type:执行的方式,配合下面的Every,一共有三种方式:
Execute Repeatedly表示重复执行,可以实现循环执行某些命令。下面的Every表示每5个Iteration执行一次。
Execute Once表示只执行一次。下面的At表示在第一个迭代步就执行,可以自定义何时执行
Execute At End表示在模拟结束时执行

d. 执行时间:一共有三种执行时间Iteration、Time Step和Flow Time。其中稳态计算只有Iteration,瞬态计算三种都有
e. Command命令语句
这里需要命令语句,这里的命令语句是TUI命令,可以在Text Command List帮助手册进行学习。
注:这里的命令也可以是Scheme语言,TUI命令和Scheme都可以执行。也就是说Scheme语言不一定需要.scm文件导入才能够被执行
实际上这就是Fluent文本控制栏的命令,如果不熟悉这种命令,就可以直接通过文本控制栏先尝试一次
比如下面的命令表示将ID号为2的边界类型更改为wall
define/boundary-conditions/zone-type 2 wall 我们来解释这个代码,define/boundary-conditions是固定的
Zone-type第一个参数是输入需要修改的边界,有两种输入方式zone id、name
zone id:就是边界条件的ID号
name:边界条件的名字
2.2 Define Macro...
如果command命令代码不会写,还可以录制宏,然后执行这个宏即可。
如何录制宏?
首先点击Define Macro...
然后输入宏的名字,点击OK
此时这个界面Define Macro... 会变成End Macro... ,说明此时正在录制宏,你接下来对Fluent的操作都会被录制到宏里面。
接下来就是执行你先实现的步骤,比如更改边界条件类型。然后点击End Macro,录制宏结束
然后在命令栏输入要执行的宏的名字即可,比如macro-1
2.3 优缺点
Command命令是比较方便的,不需要什么学习成本就可以实现在特定迭代步或者时间步执行某些命令。
稳态和瞬态都可以使用
但最大的缺点就是无法实现根据某些物理量来触发条件。
3.通过Events实现
动网格界面的Events也能实现更改边界条件的功能。
注:Events必须在瞬态计算下才可用
勾选Dynamic mesh,如果不需要动网格,则②处的选项都不勾选。③即Events
Events界面
①表示Events的个数,即执行几个命令
②表示这个Events是否开启,类似command的active选项
③为Events的名字
④At time表示在什么时间执行这个命令,这个只能这样设置,没有command那么灵活
⑤Define就是设置要执行的命令,Fluent预设了很多命令
Type表示命令,比如Change Zone Type就表示更改边界条件类型
选择Change Zone Type,然后在zone处选择要更改的边界条件,New Zone Type选择改成的边界条件即可。然后就会在设定的时刻,更改边界条件。
Type有哪些??
Change Zone Type 改变计算域类型Copy Zone BC 复 制区域边界条件Activate Cell Zone 激活单元区域Deactivate Cell Zone 停用单元区域Create Sliding Interface 创建滑动交界面Delete Sliding Interface 删除滑动交界面Change Motion Attribute 更改运动属性Change Time Step Size 更改时间步长Change Under-Relaxation Factors 更改欠松弛因子Insert Boundary Zone Layer 插入边界区域层Remove Boundary Zone Layer 移除边界区域层Insert Interior Zone Layer 插入内部区域层Remove Interior Zone Layer 移除内部区域层Insert Cell Layer 插入单元层Remove Cell Layer 移除单元层Execute Command 执行命令Replace Mesh 替换网格Inert EGR Reset 惯性EGR重置
也可以输入command语句,代码和command代码完全相同。
可以看到上面的两种方式想要执行,都需要和迭代步或者时间步有关。
但是如果我们想要根据物理量来更改边界类型(如,当平均温度达到300K,则将inlet更换为wall边界),上面两种方式就无法实现这样的功能了。
想要实现这个的功能,我们必须要使用UDF或者scheme语言,同时还要结合TUI命令才能实现。
4.Scheme语言+TUI实现
4.1 基本思路
使用Scheme语言获取Fluent中的物理量数据,然后根据这个物理量是否达到条件,使用TUI命令对Fluent进行操作。
这种方式需要使用Scheme语言,同时还需要使用TUI命令。当我们编写好Scheme程序后,在File-read-scheme将这个.scm文件读入进去,然后还需要在Execute command中执行。
注:
a.由于这种方式没有使用UDF,因此只能直接获取Fluent的数据,无法获得cell、face等数据。
b.这种方式比较复杂,且scheme语言用起来不够熟悉,因此这种方式不过多介绍。
这里给大家一个scheme语言的源代码,大家可以参考这个代码实现自己的功能
(define (switch-bc)(define Tavg)(set! Tavg (string->number (pick-robust "/report/volume-integrals volume-avg (fluid) temperature no" 1)))(if (> Tavg 420)(ti-menu-load-string "define/boundary-conditions/zone-type 2 wall")))
将这个代码放到txt文件,然后将后缀名更改为.scm即可
4.2 详细的操作流程
详细的操作流程:
File--Read--Scheme

如果控制栏出现下面的信息,且温度达到420K时更改了边界条件,说明Scheme生效了
注:
这种方式不需要定义Report
实际上直接在Command中填写Scheme语言也可以,但是这种代码逻辑比较复杂。这里还是建议大家使用Scheme文件
这种方式虽然复杂,但是可以实现在自定义的条件下更改Fluent边界条件,这是这种方式的最大优点