Fluent 表达式的应用
本文摘要:(由ai生成)
本文主要介绍了在 CFD 仿真中使用表达式的方法,包括直接使用表达式、命名表达式、获取结果数据以及自定义物理场等内容。表达式是 Fluent 中内置的功能,可用于定义边界条件、区域条件、材料属性、部分物理机理、时间步长等。相较于 UDF 和 Profile,表达式具有定义方式简单明了、函数关系可视化、可定义参数并执行参数化分析、不引入额外文件、方便管理、兼容性强等优点。
说明:本文基于 2024R1 版本编写,其他版本在一些细节上可能会有所不同
1 简介
在 CFD 仿真中,会涉及到变量定义,如随时间变化的入口流量。表达式(Expression)。表达式是 Fluent 内置的功能,可定义边界条件、区域条件、材料属性、部分物理机理、时间步长等。表达式保存在 Fluent 的 CAS 文件中,不需要其他文件。
UDF(User-Defined Function,用户自定义函数)。UDF 是 C 语言代码,相较于表达式有更高的灵活度,且部分设置只能通过 UDF 定义。UDF 代码保存在独立的 C 语言代码文件中,可使用记事本、VS Code 等文本编辑软件读取和编辑。
Profile(目前无公认翻译,根据其内容和作用,可译为数据表)。数据表以若干离散点的形式定义了物理量随空间坐标或时间的变化关系,且仅限于定义边界条件和区域条件,不能定义其他变量(材料属性、时间步长、物理机理等)。数据表保存在独立的文本文件中,可使用 Excel 等软件读取和编辑。
表达式是一个显函数,显式地表示了自变量和对应的因变量之间的关系。其基本定义方式为:A=f(B, C, D…)。其中 A 为因变量,B、C、D 等为对 A 的数值有影响的自变量。在 Fluent 中,自变量可以为空间坐标、时间、流场物理量、材料属性等多种类型。表达式的函数计算包括数学计算(四则运算、指数运算、三角函数、数理统计函数等)和逻辑运算(IF、AND、OR 等逻辑条件)两类。关于表达式的自变量含义和运算函数详细的语法结构,可参考Fluent帮助文档 user's guide 部分,solution mode 册。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742904979_izm6rk.jpg?imageView2/0)
表达式语法和 Excel 中函数运算几乎相同,最主要区别是其单位需要使用方括号 [ ] 进行标记。表达式中所有符号均需要基于英文输入状态进行输入,无法识别中文输入状态的符号,如中文的方括号【】。
2 应用
2.1 直接使用表达式
很多设置中,其下拉菜单都有表达式选项,可直接输入表达式进行设置。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742910117_833ann.jpg?imageView2/0)
点击 f(x) 按钮,打开表达式编辑页面输入表达式。在编辑界面的右侧是当前支持的各类自变量类型。根据表达式的形式,其结果可能为一个数值,也可能是函数。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742904382_7h5y4s.jpg?imageView2/0)
![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742908716_dhbs9a.jpg?imageView2/0)
部分设置中,其下拉菜单无表达式选项,则不支持基于表达式进行定义。如图所示的汽蚀机理设置中,蒸汽压无法使用表达式进行定义,但可使用 UDF 定义。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742909027_4if9ml.jpg?imageView2/0)
所有基于整数的设置(如迭代次数),只能手动输入数值,不支持将其设置为变量。
2.2 命名表达式(Named Expression)
对于常用表达式,可使用命名表达式的方式将其进行封装,直接进行调用即可。如图所示,在界面上鼠标右键,点击新建一个命名表达式。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742904052_tozbmm.jpg?imageView2/0)
![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742907957_baow4o.jpg?imageView2/0)
在需要调用的地方,可直接作为已封装函数进行调用,无需额外的编写处理。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742904604_wr10hv.jpg?imageView2/0)
对于已编写完成的命名表达式,也可被其他命名表达式调用。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742909312_scyw6m.jpg?imageView2/0)
2.3 获取结果数据
某些仿真结果数据是物理量之间的函数运算,例如机翼升阻比、阀门压力损失等。可在报告定义中采用表达式方法获取这类数据。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742907632_gm8emh.jpg?imageView2/0)
创建过程中,可调用其他已设置的报告和命名表达式。如下图所示的功率数据,其中力矩是已设置的报告,角速度是已设置的命名表达式,均可直接进行调用。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742906641_re1nt4.jpg?imageView2/0)
2.4 自定义物理场
![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742909633_1puijf.jpg?imageView2/0)
在后处理中,可直接绘制基于此表达式自定义物理场的分布。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742903473_vd11h3.jpg?imageView2/0)
3 注意事项
3.1 量纲与单位制
表达式可以支持同一量纲的多种单位,程序后台会自动且强制地转换为国际单位制。如下图,km/h 也是速度单位,可以被正确的使用,求解过程中会自动转换为基于 m/s 的数值。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742903233_mf7ovx.jpg?imageView2/0)
对于加减运算,加减符号的两侧必须量纲相同,如下图所示。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742908489_4c6bx8.jpg?imageView2/0)
若加号两侧的量纲不同,则表达式报错,提示符号两侧量纲不同,其如下图所示。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742908249_xjei1d.jpg?imageView2/0)
对于三角、指数等更复杂的函数关系,建议先对涉及的物理量无量纲化后进行函数运算,再统一处理量纲问题。例如入口速度和时间的函数关系为:v=sin(t)+2 ,其直接输入会报错。提示正弦函数的运算对象必须为无量纲数或者以角度为单位。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742903783_61y6uj.jpg?imageView2/0)
上述修改,可先对时间进行无量纲化处理,最后统一乘以 1 [m/s] 以获得速度单位。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742903024_2nlzfn.jpg?imageView2/0)
3.2 重命名表达式
对于命名表达式,必须要未被调用才可进行重命名。如图所示,表达式已被调用,因此命名框部分为灰色,无法重命名。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742906902_f4uztq.jpg?imageView2/0)
3.3 表达式和参数的关系
基于命名表达式定义输入参数时,表达式必须为常数形式。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742906355_n2fz4u.jpg?imageView2/0)
![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742909882_37d2vi.jpg?imageView2/0)
若需要定义输出参数,仅需要在对应的报告中勾选 “create output parameter” 选项即可,无需额外设置。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1716742907155_y9dvx3.jpg?imageView2/0)