首页/文章/ 详情

七十八、Fluent自适应时间步长操作详解2

1月前浏览1599

1. 表达式调节时间步长

1) 介绍

Fluent提供了自适应时间步长的界面,通过Adaptive界面,Fluent能够根据一些准则来自动调节时间步长。参考文章:


除了这种方式,还可以使用表达式expression和UDF来调节时间步长,表达式相对UDF更加容易入门,表达式的使用可参考文章:七十一、Fluent表达式进阶实例七十、Fluent表达式基础实例

 

某些情况下表达式对于时间步长的调节要比UDF更加方便。(因为expression对于物理量的求和、平均等处理非常方便)

比如利用expression实现调节时间步长的功能。当流动时间t小于0.5s,时间步长等于0.1s,流动时间t大于0.5s,时间步长等于0.2s

 

写成表达式为:IF(t<0.5[s],0.1[s],0.2[s])

 


2) 设置方法

表达式更改时间步长,Type不能选择Adaptive,而应该选择Fixed。然后在Time Step Size下拉框选择New Expression,输入上面的表达式即可。表达式的具体用法可以参考文章:七十一、Fluent表达式进阶实例七十、Fluent表达式基础实例

 

3) 具体案例:根据残差改变时间步长

正常情况下后处理界面Residuals只有mass Imbalance,只能显示质量流量的净值(Flux中的mass flow rate净值)。

使用文本命令/solve/set/advanced>retain-cell-residuals,输入yes,可激活其他的残差值,如下图。

 

但expression中Residuals还是只有mass Imbalance。因此我们使用mass Imbalance当成更改时间步长的标准,当净流量小于5e-5时,时间步长为0.1s,大于5e-5时,时间步长0.2s。

表达式Expression:IF(AreaAve(lassImbalance,['out’])<5e-5 [kg/s]0.1[s],0.2[s])

 
 

2. UDF调节时间步长

2.1 介绍

DEFINE_DELTAT可以用来调整时间步长,根据需要自适应时间步长。此宏只能用于调节时间步长。当编译此宏之后,在Run calculation界面的Type栏会出现UDF,选中此项,时间步长就会自动切换为自己UDF定义的时间步长。

 

2.2 DEFINE_DELTAT(name,d)宏的用法

 

此宏有两个参数name和d,name为UDF的名称,可以为任意名称;d返回计算域domain,对于多相流d返回混合域。整个宏的返回值为时间步长。

对于DEFINE_DELTAT这个宏,由于只返回domain,想要获取网格物理量,涉及到UDF循环语句,比较麻烦

 2.3 DEFINE_DELTAT应用举例

根据流动时间调节时间步长,流动时间小于0.5s时,时间步长为0.1;流动时间大于等于0.5s时,时间步长为0.2s。本案例和上面的表达式案例相同,非常简单。

#include "udf.h"

DEFINE_DELTAT(mydeltat, d)

{

    real time_step;

    real flow_time = CURRENT_TIME;

    if (flow_time < 0.5)

        time_step = 0.1;

    else

        time_step = 0.2;

    return time_step;

}


来源:Fluent学习笔记
FluentFlux多相流UDF
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-03-06
最近编辑:1月前
Fluent学习笔记
博士 签名征集中
获赞 95粉丝 198文章 105课程 2
点赞
收藏
未登录
还没有评论

课程
培训
服务
行家

VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈