Fluent支持利用UDF(User-Defined Functions)定义一些GUI无法直接输入的控制参数,后面又提供了表达式(Expressions)功能用于此类参数的输入。在实际的操作过程中,表达式输入显然要比UDF方便很多。但就目前而言,表达式功能无法完全覆盖UDF,而且从原理上来讲,表达式功能也无法完全取代UDF。
本文简单描述表达式与UDF的差异。
DEFINE_ADJUST 宏,你可以在每一迭代步调整流场;通过 DEFINE_INIT 自定义非均匀的初始化场;甚至直接修改现有的物理模型的求解逻辑。其实表达式功能在大部分主流的CFD软件中都存在(如STAR CCM+、CFX等),但这些软件中同样也提供了用户自定义程序的功能(如STAR CCM+支持使用C或Fortran,CFX使用Fortran)用于访问求解器底层数据。主要的原因还是因为表达式只是表层访问,难以触及求解器底层数据或控制逻辑。
简单总结一下:如果只是定义随时间或空间变化的压力、温度,首选表达式;如果涉及复杂的物理模型重构、额外方程求解或特定的求解控制逻辑,则需要借助于 UDF。