CFX之CEL语⾔介绍
在CFX中,CFX表达式语⾔(CFX Expression Language :CEL)作为⼀种解释性和说明性的语⾔嵌⼊到CFX中。利⽤CEL,⽤户可以提⾼分析模拟的功能,⽽不需要使⽤外部分离的Fortran⼦程序。
在ANSYS的CFX程序中,只要是可以输⼊值的地⽅就可以使⽤CEL表达式进⾏输⼊。
CEL的适⽤范围:
通过变量定义材料属性;
设定复杂的边界条件;
对于求解⽅程增加求解项。
⽤户也可以使⽤监测点功能,在求解过程中对于某个CEL表达式进⾏监测。
注意:
有些CEL表达式只能在ANSYS的CFX中使⽤,⽽不能使⽤在CFD的后处理中。任何在CFX前处理器中创建的CEL表达式并作为设计浏览器(Design Exploration)中的输出参数,在设计浏览器运⾏的过程
中可能导致致命的错误;所以,若⽤户需要进⾏设计浏览,则需要在CFD-Post(后处理)中创建所需所有的设计变量。
本读本包含如下内容:
1、CEL基础。
2、CEL操作符,常量和表达式。
3、CEL的例⼦。
4、CEL技术细节。
1、CEL基础
值和表达式
利⽤CEL可以创建值变量和表达式。值变量可以是带量纲的,也可以是不带量纲的。例如下⾯这个最简单的不带量纲的变量:
b = 3.743
⽤户也可以创建具有量纲的变量,如下:
g = 9.81 [m s^-2]
在CFD计算过程中,变量的量纲是具有意义的,它们表征了质量,长度,时间,温度或者⾓度的信息。量纲也是理解值和表达式的基础概念之⼀。
在CEL中,值可以直接指定,也可以作为表达式的⼀部分。例如,⽤户可以使⽤两个值变量求和形成⼀个表达式:
= +
在本例中,⽤户可能希望将和相加并赋值给,若只是两个⽆量纲的变量进⾏相加⽤户不需要考虑量纲的问题;但是这两个变量具有量纲则需要考虑量纲的问题了。
表达式可以由之前已定义的表达式进⾏定义,例如:
= +
在CFX中进⾏表达式求值往往需要进⾏单位装换,在缺省状态下使⽤公制单位制(SI单位制),这样⽤户就可以使⽤任何⾃⼰的单位制了。
若某个表达式未设定⾃⼰的单位字符串,但是引⽤的变量中有的是具有单位的,则结果表达式的单位由引⽤的变量或表达式计算后的量纲所决定。例如:某个表达式引⽤了x坐标平⽅的倒数,则隐式的使⽤了长度的-2次⽅单位。
在表达式中使⽤定位符
在CFX模拟过程中,具有物理⾯和⽹格⾯的概念:
物理⾯:在CFX中表征物理边界条件的⾯称之为物理⾯;
⽹格⾯:在CFX中在⼏何拓扑结构中划分⽹格的⾯称之为⽹格⾯。
在模拟过程中,这两种类型的⾯可能占据完全不同的⼏何区域;然⽽,并不需要将物理⾯和⽹格⾯的名称完全区分开,这样只会在表达式使⽤过程中造成混淆。
为了避免混淆,在CFX使⽤“@”进⾏物理⾯和⽹格⾯的区分。若在⾯名称中到了“@”定位符则表⽰是⼀个物理⾯;若未到则在⽹格⾯的列表中进⾏查。例如:“in1”既是⼀个物理⾯的名称,可能也是⼀个⽹格⾯的名称,则“@”表⽰使⽤的是⼀个物理⾯。
在CFX中,⽤户可以使⽤@REGION参数表⽰某个命名的⾯是⽹格⾯。例如,为了表⽰⽹格⾯in1,可以使⽤如下表达式:
@REGION:in1
注意:若定位符不是作为物理⾯或者⽹格⾯的表达式⽽出现,则该表达式⽆效。CEL语句
CEL语⾔是⼀种说明性的语⾔。⽤户使⽤表达式语句进⾏表达式的申明和定义,并和Fortran以及C语⾔进⾏表达式定义的相⼀致:
语句中必须包含如下内容:
The statement must consist of the following:
⼀个数,量纲可选,⽤于定义⼀个常量。
对于数学表达式,可能需要引⽤⼀个或者多个数学常量,变量,系统变量或者⽤户⾃定义的变量,并由+,-,*,/和^运算符进⾏连接,并⽤()
定义运算的优先级,这些规则和传统的数学运算规则⼀致。
对于关系表达式则包含关系运算符,⼀个或者多个数学常量或者从数学表⽰计算的结果,并由<=,<,==,!=,>.>=连接⽽成,并可以由可选的()设
定运算优先级。
对于逻辑表达式包含逻辑操作符,⼀个或者多个逻辑常量或者关系运算的结果,并通过!,&&,||连接⽽成,并可以由可选的()设定运算优先级。使⽤常量
在表达式中使⽤常量并不需要预先定义,例如:可以使⽤x + 5 [m]进⾏表达式计算;或者⽤户也可以先定义⼀个常量b=5[m],再创建⼀个表达式x+b。
逻辑常量值为false和true。逻辑表达式的计算结果为0或者1,分别对应false 和TRUE。
推荐⽤户使⽤常量进⾏表达式的定义,因为可能有多个表达式同时引⽤⼀个常量的情况,这样只需要修改常量表达式即可。
表达式参数
在CEL语⾔中,所有的数值均作为实数进⾏处理;并遵循如下从⾼到低的计算优先级顺序。
指数运算:x^y。
单操作数的取负运算:-x。
乘除运算具有相同的优先级:x*y/z。
加减运算:x+y-z。
逻辑运算和关系运算遵循如下从⾼到低的计算优先级顺序:
⾮运算:!x。
关系运算(<=, <, > and >=):x >= y。
关系运算(== and !=):x != y。
逻辑与运算:x && y。
逻辑或运算:x || y。
多⾏表达式有时是⼗分有⽤的,尤其是对于复杂的表达式,可以使⽤多⾏创建⽤户需要的表达式。在CFX中可以创建多⾏表达式,每⾏需要⽤合适的分隔符进⾏分隔。
例如:⽤户需要表达式A + B/C,其中A,B和C都是复杂的表达式。在这种情况下,可以使⽤三⾏进⾏表达式的书写:
A +
B
/ C
注意:第⼀⾏表达式A书写完成后⽤+结束,表达式B写在单独的⼀⾏上,⽽表达式C⽤/开头。⼀旦表达式书写完成,他将出现在表达式定义的列表中
CEL中的操作符,常量和表达式
操作符
在CFX中提供了⼀定范围的数学,逻辑以及操作性的操作符,并以内建函数的形式帮助⽤户创建复杂的表达式。下表中列出了CEL表达式中所使⽤的操作符的详细信息。
CEL supports the conditional if statement using the following syntax:
在12版的CFX中提供了if条件语句,⽽在以往的CFX中是使⽤step函数实现的条件判断功能。if语句的使⽤格式如下:
if( cond_expr, true_expr, false_expr )
其中:
cond_expr: ⽤于进⾏测试的逻辑表达式。
true_expr: 当逻辑表达式为真时所执⾏的数学运算表达式。
false_expr : 当逻辑表达式为假时所执⾏的数学运算表达式。
注意:
true_exp以及false_expr表达式⽆论逻辑表达式是真还是假时均单独运算。其结果是条件表达式在这样的表达式if( x>0, 1/x, 1.0)中不能避免除零错误,
当x=0时,⽽⽆论x>0的条件是否满⾜表达式1/x也会执⾏。
CEL常量
在表达式列表的详细视图中右击⿏标可以访问CEL常量,列表如下:
表达式的使⽤
CEL表达式的使⽤分为两个阶段:
el表达式执行结果为
定义CEL表达式
引⽤CEL表达式
CEL表达式的定义阶段是指使⽤值集以及合法的参数创建表达式的过程,利⽤表达式详细视图可以帮助⽤户创建表达式。
使⽤温度的偏移量
在表达式中使⽤温度值的时候,⼀般较安全的⽅式均采⽤[K]作为温度单位。设想⼀下若需要将[K]的温度单位进⾏偏移并转变成[C]单位,这样的装换是在内部进⾏的,例如:下⾯的四个语句等价:
Temperature = 30 [C]
Temperature = 303.15 [K]
Temperature = 0 [C] + 30 [K]
Temperature = 273.15 [K] + 30 [K]
因为在CFX程序内部[C]单位和[K]是兼容的并在内部做了单位转化,但是下⾯的语句和上⾯的效果不同:Temperature = 0 [C] + 30 [C]
上⾯的语句等价于将Temperature设定为576.3[K],这是因为在CFX内部⾸先将0[C]和30[C]分别转化为273.15[K]和303.15[K],之后再进⾏相加操作;所以和⽤户设想的结果产⽣了偏差。但是下⾯的两个语句等价:
Specific Heat = 4200 [J kg^-1 C^-1]
Specific Heat = 4200 [J kg^-1 K^-1]
例⼦1:基于粘度的雷诺数
在本例中,我们假定某种流体的动⼒学粘度未知,但是雷诺数和⼊⼝速度以及长度⽐已知,流体为可压缩流即密度可变。根据上述信息,可以通过下⾯的公式计算流体粘度:
其中:
Re:雷诺数
ρ:流体密度
U:⼊⼝速度
L:长度⽐
µ:流体粘度
与上述公式等价的CCL语⾔如下:
LIBRARY :
CEL :
EXPRESSIONS :
Re = 4.29E6 [ ]
Vel = 60 [m s^-1]
L=1.044[m]
Visc=areaAve(density)@in*Vel*L/Re
END
END
MATERIAL : Air Ideal Gas
Option = Pure Substance
PROPERTIES :
Option = Ideal Gas
Molar Mass = 2.896E1 [kg kmol^-1]
Dynamic Viscosity = Visc
Specific Heat Capacity = 1.E3 [J kg^-1 K^-1]
Thermal Conductivity = 2.52E-2 [W m^-1 K^-1]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。