一般计算中,Fluent达到我们设定的残差值后就可以自动停止运算,但是有时候我们可能残差判断标准不一定是恒定的,或者有多款软件之间来回协同计算,那么就必须在Fluent UDF中判断残差标准是否达到然后停止计算,后面再进行其它UDF操作。我们知道,通常情况下开始迭代后,要停止计算只能按“Stop”按钮或者键入Ctrl+C组合键。这要改成在UDF中实现迭代停止就非常有难度了。
那么我们是否可以改一种思路呢?我们可以利用Execute_At_End宏在每次迭代(或时间步)结束时候判断是否满足残差标准,如果不满足就驱动fluent继续迭代1次,如果满足就不做任何操作,这样如果继续迭代,那么后面那次迭代完成后又会调用Execute_At_End宏判断是否继续更多一次的迭代,满足了就不做任何操作,相当于停止。于是这样循环往复就实现了迭代满足残差自动停止一样的效果。执行流程如下图所示。
其中,最核心的就是如何驱动Fluent迭代1次。这个可以借助VC++ Udf Studio插件来实现(注意,只有企业版有这个功能,学术版没有此功能)。
下面给出例子,该程序实现了当连续性方程的残差小于0.0001时停止计算。
//利用VC++ Udf Studi