Fluent的界面GUI虽然繁杂丰富,但在很多时候并不能完全满足用户的需求,当我们想要对其进行二次开发,自动化处理时候,初学者往往会听到使用UDF,Scheme,Journal和Custom field function来达到自己的目的,但是厚厚的用户手册和一点编程要求又使得人需要花费较多的学习时间。但是在ANSYS Fluent 2019版本更新之后,推出了一项新的功能:Named Expression,即表达式功能。其易用程度要远远高于UDF,只需要简单的学习即可快速上手,在一定程度上可以替代简单的UDF。
Fluent Expressions是一种基于python的解释型语言,其主要功能是指定与时间步、迭代步、位置、求解变量相关的复杂的边界条件和源项,可以基于时间步和迭代步指定不同的模型和求解器设置。
通过建立表达式可以返回实数、布尔值、实数场或者布尔场,所以表达式中单位量纲必需要注意。数据的量纲用单位或者单位的组合定义。如:
质量的单位可以是:[kg], [g], [lb]
压力的单位可以是:[atm], [N m^-2], [Pa]
单位字符串的形式一般为[multiplier|unit|^power]
multiplier是一个倍乘数,例如:mega, pico, centi等
unit是单位,例如:kg, m, J等
power是指数
整个单位字符串必须用方括号包围,[...]
单位的声明需服从如下规则:
必须包含一个或多个unit
独立的unit必需用一个或多个空格分割
multiplier和 power不是必需的
可以使用缩写形式的 multiplier. n(nano) , u(micro), c(centi), k(kilo), m(milli), M(mega), G(giga)
Power以^代替。不支持使用/,所以必须使用负指数,如[kg m^-3]。但是可以使用/unit,如m/s
不能以量纲术语(例如: mass, length, time, temperature, angle)给定单位。 但Pa和J可以接受
单位字符串大小写敏感。例如Kg和KG是无效的
创建和使用表达式
那么,要怎样创建和使用表达式呢?
主要有两种,一种是直接在应用表达式的位置之中创建表达式;
另外就是创建一个可以在多个地方重复使用的表达式
表达式使用案例
以下示例显示如何定义层压管流的抛物线速度入口,如图。在此示例中,管道以 X 和 Z 方向为中心,管轴与 Y 方向对齐。其中入口的抛物线速度可用如下公式进行表示: \[ u_{max}(1-(radius/Radius)^2 ) \] 其中\(u_{max}\)是管道轴线处的速度,Radius是管道的半径,radius则为局部径向坐标。
要完全定义此示例:
1.创建一个名为umax的最大速度的命名表达式。
- 将名字输入为umax;
- 在Definition框内输入0.2 [m/s] 。然后单击OK创建命名表达式。
2.为管道的半径创建一个表达式。
- 通过右键单击大纲视图树中的Named Expressions并选择New....来打开Expressions对话框;
- 将名字输入为Radius;
- 在Definition框内输入sqrt(Area(["in"])/PI) 。其中“in”是入口边界的名称。PI是PI的表达式常数;
- 单击OK创建命名表达式。
3.创建局部径向轮廓的表达式。
- 打开表达式对话框并输入名称为radius。
- 在Definition框内输入sqrt(x*2+z*2)。这个表达式使用了平方根数学表达式运算符。
- 单击OK创建命名表达式。
4.创建入口速度剖面的表达式。这个表达式结合了您创建的其他表达式。
- 打开表达式对话框并输入名称为uprofile。
- 在Definition框内输入umax*(1- (radius/Radius)*2)。您可以使用“Definition* ”框右侧的“Expressions ”下拉框将命名表达式添加到表达式定义中,作为手动键入名称的替代方法。
- 单击OK创建命名表达式。
5.为速度入口指定uprofile
Setup → Boundary Conditions → Inlet → in→Edit...
- 从“Velocity Magnitude”右侧的下拉菜单中选择expression 。
- 在Velocity Magnitude字段中输入uprofile,然后单击确定。