在Fluent中可以通过特定方程的残差来进行求解设置调整,比如通过监测连续性方程的残差来动态调整时间步长。例如:当连续性方程残差大于0.01时将时间步长减小为0.001s, 反之则将时间步长增大至0.1s。本文旨在提供类似需求的一个通用方法。
(1)问题描述
如何通过特定方程的残差来进行求解设置调整。
(2)解决思路
1.使用scheme语言命令获取特定方程的当前迭代步残差;
2.对获取的值进行判断并调整相关设置。
(3)获取特定方程的当前迭代步残差
在右侧残差图中,有6个方程。
以取连续性方程continuity残差为例
-(car(%residual-history 'continuity 1))
-这里取出来的值为real类型
同理,取其它方程方式残差命令为
-(car(%residual-history 'x-velocity 1))
-(car(%residual-history 'y-velocity 1))
-(car (%residual-history 'z-velocity 1))
-(car(%residual-history 'energy 1))
(4)定义named expression并赋值
· 首先定义一个表达式(expression);
· 然后用命令行将获取的残差给表达式(expression)赋值,以下为测试语句
/define/named-expressions/edit "residua_continuity" definition (number->string (car (%residual-history 'continuity 1 ))) q
(5)时时更新Expression的值
时时更新Expression的值需要使用Execute commands,将上面的TUI命令设置如下即可。
注意:由于获取残差的操作会使得计算变慢,因此这里可以通过每隔一定迭代步数(比如20)更新一次。
(6)利用Expression进行设置调整