资源预览内容
第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
第9页 / 共23页
第10页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
在 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=5m,再创建一个表达式 x+b。逻辑常量值为 false 和 true。逻辑表达式的计算结果为 0 或者 1,分别对应false 和 TRUE。推荐用户使用常量进行表达式的定义,因为可能有多个表达式同时引用一个常量的情况,这样只需要修改常量表达式即可。表达式参数在 CEL 语言中,所有的数值均作为实数进行处理;并遵循如下从高到低的计算优先级顺序。 指数运算:xy。 单操作数的取负运算:-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 表达式中所使用的操作符的详细信息。OperatorFirst Operands Dimensions xSecond Operands Dimensions yOperands Values (Approx)Results Dimensions-x Any Any xx+y Any x Any xx-y Any x Any xx*y Any Any Any x*yx/y Any Any 0 x/yxy (if y is a simple, constant, integer expression) Any Dimensionless Anya xyxy (if y is any simple, constant, expression) Any Dimensionless x 0 xyxy (if y is not simple & constant)Dimensionless Dimensionless x 0 Dimensionless!x Dimensionless 0 or 1 Dimensionlessx y Any x 0 or 1 Dimensionlessx = y Any x 0 or 1 Dimensionlessx = y Any x 0 or 1 Dimensionlessx != y Any x 0 or 1 Dimensionlessx & y Dimensionless Dimensionless 0 or 1 Dimensionlessx | y Dimensionless Dimensionless 0 or 1 Dimensionlessa For y 0, 1/x, 1.0)中不能避免除零错误,当 x=0 时,而无论 x0 的条件是否满足表达式 1/x 也会执行。CEL 常量在表达式列表的详细视图中右击鼠标可以访问 CEL 常量,列表如下:Constant Units DescriptionR J K-1 mol-1 Universal Gas Constant: 8.314472avogadro mol-1 6.02214199E+23boltzmann J K-1 1.3806503E-23clight m s-1 2.99792458E+08e Dimensionless Constant: 2.7182817echarge A s Constant: 1.60217653E-19epspermo 1./(clight*clight*mupermo)g m s-2 Acceleration due to gravity: 9.8066502mupermo N A-2 4*pi*1.E-07pi Dimensionless Constant: 3.141592654 planck J s 6.62606876E-34stefan W m-2 K-4 5.670400E-08表达式的使用CEL 表达式的使用分为两个阶段: 定义 CEL 表达式 引用 CEL 表达式CEL 表达式的定义阶段是指使用值集以及合法的参数创建表达式的过程,利用表达式详细视图可以帮助用户创建表达式。使用温度的偏移量在表达式中使用温度值的时候,一般较安全的方式均采用K作为温度单位。设想一下若需要将K的温度单位进行偏移并转变成C单位,这样的装换是在内部进行的,例如:下面的四个语句等价:Temperature = 30 CTemperature = 303.15 KTemperature = 0 C + 30 KTemperature = 273.15 K + 30 K因为在 CFX 程序内部C单位和K是兼容的并在内部做了单位转化,但是下面的语句和上面的效果不同:Temperature = 0 C + 30 C上面的语句等价于将 Temperature 设定为 576.3K,这是因为在 CFX 内部首先将 0C和 30C分别转化为 273.15K和 303.15K,之后再进行相加操作;所以和用户设想的结果产生了偏差。但是下面的两个语句等价:Specific Heat = 4200 J kg-1 C-1Specific Heat = 4200 J kg-1 K-1例子 1:基于粘度的雷诺数在本例中,我们假定某种流体的动力学粘度未知,但是雷诺数和入口速度以及长度比已知,流体为可压缩流即密度可变。根据上述信息,可以通过下面的公式计算流体粘度:=其中:Re:雷诺数:流体密度U:入口速度L:长度比:流体粘度与上述公式等价的 CCL 语言如下:LIBRARY :CEL :EXPRESSIONS :Re = 4.29E6 Vel = 60 m s-1L=1.044mVisc=areaAve(density)in*Vel*L/ReENDENDMATERIAL : Air Ideal GasOption = Pure SubstancePROPERTIES :Option = Ideal GasMolar Mass = 2.896E1 kg kmol-1Dynamic Viscosity = ViscSpecific Heat Capacity = 1.E3 J kg-1 K-1Thermal Conductivity = 2.52E-2 W m-1 K-1ENDENDEND这里共创建了 4 个 CEL 表达式,前 3 个表达式分别用于创建 Re,Vel 以及 L,并在第四个表达式引用前 3 个表达式用于创建表达式 Visc,其中areaAve(density)in 用于计算入口 in 的平
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号