7.2.10.3 网格坐标与面积 Name(Arguments) C_CENTROID(x,c,t) F_CENTROID(x,f,t) F_AREA(A,f,t) NV_MAG(A) C_VOLUME(c ,t) Argument Type real x[ND_ND],cell_t c, Thread *t real x[ND_ND], face_t f, Thread *t A[ND_ND],face_t f,Thread *t A[ND_ND] cell_t c, Thread *t Returns x(网格坐标) x(面坐标) A(面矢量) 面矢量A大小 2D或3D网格体积;对称体网格体积/2π Source metric.h metric.h metric.h metric.h metric.h
7.2.10.4 节点坐标与节点(网格)速度
列表中的节点速度与移动网格模拟有关。 Name(Arguments) NODE_X[node] NODE_Y[node] NODE_Z[node] NODE_GX[node] NODE_GY[node] NODE_GZ[node] Argument Type Node *node Node *node Node *node Node *node Node *node Node *node Returns 节点的x坐标 节点的y坐标 节点的z坐标 节点的x向速度 节点的y向速度 节点的z向速度 Source metric.h metric.h metric.h mem.h mem.h mem.h 7.2.10.5 面变量
下面列表中的函数只能在segregated solver中获取,耦合计算时不能引用的。 Name(Arguments) F_P(f,t) F_U(f,t) F_V(f,t) F_W(f,t) F_T(f,t) F_H(f,t) F_K(f,t) F_D(f,t) F_YI(f,t,i) F_UDSI(f,t,i) F_UDMI(f,t,i) Argument Type face_t f, Thread *t face_t f, Thread *t face_t f, Thread *t face_t f, Thread *t face_t f, Thread *t face_t f, Thread *t face_t f, Thread *t face_t f, Thread *t face_t f, Thread *t, int i face_t f, Thread *t, int i face_t f, Thread *t, int i Returns 压力 u速度 v速度 w速度 温度 焓 湍流动能 湍流能量耗散系数 组分质量分数 用户自定义标量(i表示第几个方程) 用户自定义内存变量(i表示第几个) Source mem.h(all) 7.2.10.6 网格变量
下面列表中的是网格变量,不像面变量,网格变量在耦合与非耦合计算中都能获取(available in both the segregated and the coupled solvers)。下面三个列表中所列出的分别是:
94
计算变量、导数和物性参数。 Name(Arguments) C_P(c,t) C_U(c,t) C_V(c,t) C_W(c,t) C_T(c,t) C_H(c,t) C_YI(c,t) C_UDSI(c,t,i) C_UDMI(c,t,i) C_K(c,t) C_D(c,t) C_RUU(c,t) C_RVV(c,t) C_RWW(c,t) C_RUV(c,t) C_RVW(c,t) C_RUW(c,t) C_FMEAN(c,t) C_FMEAN2(c,t) C_FVAR(c,t) C_FVAR2(c,t) C_PREMIXC(c,t) C_LAM_FLAME _SPEED(c,t) C_CRITICAL_STRAIN _RATE(c,t) C_POLLUT(c,t,i) C_VOF(c,t,0) C_VOF(c,t,1) Name(Arguments) C_DUDX(c,t) C_DUDY(c,t) C_DUDZ(c,t) C_DVDX(c,t) C_DVDY(c,t) C_DVDZ(c,t) C_DWDX(c,t) C_DWDY(c,t) C_DWDZ(c,t) C_DP(c,t)[i] C_D_DENSITY(c,t)[i]
Argument Type 参数类型都定义为: cell_t c, Thread *t, int i, int j Returns 压力 u速度 v速度 w速度 温度 焓 组分质量分数 用户自定义标量 用户自定义内存变量 湍流动能 湍流能量耗散系数 uu雷诺应力 vv雷诺应力 ww雷诺应力 uv雷诺应力 vw雷诺应力 uw雷诺应力 第一平均混合物分数 第二平均混合物分数 第一混合物分数偏差 第二混合物分数偏差 反应进程变量 层流火焰速度 临界应变率 污染物组分 第一相体积分数 第二相体积分数 Returns 各向速度导数 压力梯度(i表示方向) 密度梯度(i表示方向) Source mem.h sg_mem.h Argument Type Source mem.h 95
Name(Arguments) C_R(c,t) C_MU_L(c,t) C_MU_T(c,t) C_MU_EFF(c,t) C_K_L(c,t) C_K_T(c,t) C_K_EFF(c,t) C_CP(c,t) C_RGAS(c,t) C_DIFF_L(c,t,i,j) C_DIFF_EFF(c,t,i) C_ABS_COEFF(c,t) C_SCAT_COEFF(c,t) Argument Type Returns 密度 层流粘性系数 湍流粘性系数 有效粘性系数 导热系数 湍流导热系数 有效导热系数 比热 气体常数 层流组分扩散系数 有效组分扩散系数 吸收系数 散射系数 Source mem.h 7.2.10.7 循环宏 如果要实现扫描全场的网格就需要使用循环宏。下面给出两种类型的循环宏。一种以begin开始,end结束,用来扫描线上的所有网格和面;另一种用来扫描所有的线。
cell_t c; face_t f; Thread *t; Domain *d;
begin_c_loop(c, t) { }
end_c_loop(c, t) /*循环遍历线上的所有网格*/
begin_f_loop(f, t) { }
end_f_loop(f, t) /*循环遍历线上的所有面*/
thread_loop_c(t, d) {
} /*遍历网格线*/
thread_loop_f(t, d) {
} /*遍历面上的线*/
7.2.10.8 数据的可得性
在书写UDF的时候,要保证出现在函数中的数据是能够从解法器上获得的。为了检验数据的这种可得性,我们可以使用函数Data_Valid_p,如果数据正确该函数返回值为1,否则返回0。
96
Int Data_Valid_P(); /*取自文件case.h*/
当我们读取case文件时,就会装载相应的UDF。如果此时函数用到一个未初始化的变量,诸如内部网格速度,计算就会发生错误。为了避免这种类型的错误发生,解法器会执行一条if else 语句。如果数据可得,就按照正常情况执行下去;否则,就停止运算。一旦流场初始化之后,函数会被重新激活,然后读取正确的数据运行。
7.2.10.9 设置面变量值的函数
宏F_PROFILE设置的是面上的变量值,该函数在设置边界面时使用。 face_t f; Thread *t;
F_PROFILE(f,,t,,nvar) /* from mem.h */
函数中的参数nvar不需用户设定,而是由FLUENT解法器传递给UDF。nvar是特定边界的数字标签。例如,与总压和总温相关的入口边界,nvar取值为0和1;与速度三个方向标量和静态温度相关的边界,nvar取值为0,1,2和3。
我们在定义边界条件面板定义边界条件时,解法器就设定nvar的值。 ! 整型变量nvar是不能改变的,只能由FLUENT解法器传递。
7.2.11 DPM宏
下面列出的离散相模型的宏定义在源文件dpm.h中,变量p是指向结构Tracked_Particle的指针(Tracked_Particle *p)。
7.2.11.1 颗粒变量的宏
1. 当前位置颗粒变量
P_DIAM(p) 颗粒直径
P_VEL(p)[i] 颗粒速度,i=0,1,2 P_T(p) 颗粒温度 P_RHO(p) 颗粒密度 P_MASS(p) 颗粒质量 P_TIME(p) 当前颗粒时间 P_DT(p) 颗粒时间步长
P_LF(p) 颗粒液相分数(只适用于湿燃烧颗粒) P_VFF(p) 颗粒挥发性馏分(只适用于燃烧颗粒)
2. 进入当前网格颗粒变量
P_DIAM0(p) 颗粒直径
P_VEL0(p)[i] 颗粒速度,i=0,1,2 P_T0(p) 颗粒温度 P_RHO0(p) 颗粒密度 P_MASS0(p) 颗粒质量 P_TIME0(p) 颗粒时间
P_LF0(p) 颗粒液相分数(只适用于湿燃烧颗粒)
97
3. 刚注射入区域的颗粒变量
P_INIT_DIAM(p) 颗粒直径 P_INIT_MASS(p) 颗粒质量 P_INIT_RHO(p) 颗粒密度 P_INIT_TEMP(p) 颗粒温度
P_INIT_LF(p) 颗粒液相分数(只适用于湿燃烧颗粒) P_EVAP_SPECIES_INDEX(p) 混合物蒸发组分数
(evaporating species index in mixture) P_DEVOL_SPECIES_INDEX(p) 混合物液化组分数
(devolatizing species index in mixture) P_OXID_SPECIES_INDEX(p) 混合物氧化物组分数
(oxidizing species index in mixture) P_PROD_SPECIES_INDEX(p) 混合物燃烧产物分数
(combustion products species index in mixture) P_CURRENT_LAW(p) current particle law index P_NEXT_LAW(p) next particle law index
P_USER_REAL(p,i) 用户自定义变量(i表示第几个)
7.2.11.2 颗粒物性的宏
P_MATERIAL(p) 颗粒指针 DPM_SWELLING_COEFF(p) 颗粒膨胀系数
DPM_EMISSIVITY(p) 辐射模型颗粒发射率 DPM_SCATT_FACTOR(p) 辐射模型颗粒散射因子 DPM_EVAPORATION_TEMPERATURE(p) 颗粒物质蒸发温度 DPM_BOILING_TEMPERATURE(p) 颗粒物质沸腾温度 DPM_LATENT_HEAT(p) 颗粒物质潜热 DPM_HEAT_OF_PYROLYSIS(p) 颗粒物质分解热 DPM_HEAT_OF_REACTION(p) 颗粒物质反应热 DPM_VOLATILE_FRACTION(p) 颗粒物质挥发性馏分 DPM_CHAR_FRACTION(p) 颗粒物质炭化分数
DPM_SPECIFIC_HEAT(p,t) 颗粒物质在温度t时的比热
第三节 编译连接UDFs
函数的编译与连接取决于使用的UDF是Interpreted型,还是Compiled型。下面3.3和3.4节也分别介绍了Interpreted型和Compiled型UDF的编译和连接。
7.3.1 概述
我们在第一章就介绍过Interpreted型和Compiled型UDF的区别以及各自的特点,在此不再累述。为了显示区别,FLUENT中两种UDF的设置面板是不同的。Interpreted型面板有一个Compile按钮,点击时就会对源文件进行编译;Compiled型面板有一个open按钮,点击时会打开事先编译好的机器源代码库,然后连接运行。
98