教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

中科大FLUENT讲稿 第七章 自定义函数(4)

来源:网络收集 时间:2026-07-16
导读: 到数据文件中,如果下次将kount值读入FLUENT继续运算,则kount将在10的基础上增加。我们可以存贮任意多的静态变量,不过读写顺序必须一致。 7.2.10 解法器函数(Solver Functions) 7.2.10.1 概述 在很多情况下,UD

到数据文件中,如果下次将kount值读入FLUENT继续运算,则kount将在10的基础上增加。我们可以存贮任意多的静态变量,不过读写顺序必须一致。

7.2.10 解法器函数(Solver Functions) 7.2.10.1 概述

在很多情况下,UDF需要得到FLUENT解法器中的数据。例如:

1.所求解的变量及其导数(例如,速度,温度等);

2.网格和面几何性质(例如,面面积,网格体积,网格质心坐标等); 3.物质的物理性质(例如,密度,粘性系数,导热系数等)。

! 我们可以取出比热,但是不能修改。

我们可以利用下一节所列FLUENT提供的解法器函数,得到解法器中的数据。这里所说的函数是从广义上讲的,因为其中包括函数和宏,只有在源文件appropriate.h中定义的才是真正的函数。

! 如果使用的是Interpreted 型的UDF,则只能使用这些FLUENT提供的解法器函数。

解法器函数可以与C函数一起在函数体中混合使用。为方便起见,一些最常用的C函数列在附录B中。

下面章节列出的函数中包括它们的参数,参数类型和返回值,还有对该函数说明的源文件。例如

C_CENTROID(x,c,t)

有三个参数:x,c和t,其中c和t为输入参数,x为输出参数,输出网格的坐标值。

7.2.10.2 辅助几何关系 Name(Arguments) Argument Type Returns Source C_NNODES(c,t) cell_t c, Thread *t 网格节点数 mem.h C_NFACES(c,t) cell_t c, Thread *t 网格面数 mem.h F_NNODES(f,t) face_t f, Thread *t 面节点数 mem.h 7.2.10.3 网格坐标与面积 Name(Arguments) Argument Type Returns Source C_CENTROID(x,c,t) real x[ND_ND],cell_t x(网格坐标) metric.h c, Thread *t F_CENTROID(x,f,t) real x[ND_ND], face_t x(面坐标) metric.h f, Thread *t F_AREA(A,f,t) A[ND_ND],face_t f,A(面矢量) metric.h Thread *t NV_MAG(A) A[ND_ND] 面矢量A大小 metric.h C_VOLUME(c ,t) cell_t c, Thread *t 2D或3D网格metric.h 体积;对称体网格体积/2π

7.2.10.4 节点坐标与节点(网格)速度

列表中的节点速度与移动网格模拟有关。 Name(Arguments) Argument Type Returns Source NODE_X[node] Node *node 节点的x坐标 metric.h NODE_Y[node] Node *node 节点的y坐标 metric.h NODE_Z[node] Node *node 节点的z坐标 metric.h NODE_GX[node] Node *node 节点的x向速度 mem.h NODE_GY[node] Node *node 节点的y向速度 mem.h NODE_GZ[node] Node *node 节点的z向速度 mem.h 7.2.10.5 面变量

下面列表中的函数只能在segregated solver中获取,耦合计算时不能引用的。 Name(Arguments) Argument Type Returns Source F_P(f,t) face_t f, Thread *t 压力 mem.h(all) F_U(f,t) face_t f, Thread *t u速度 F_V(f,t) face_t f, Thread *t v速度 F_W(f,t) face_t f, Thread *t w速度 F_T(f,t) face_t f, Thread *t 温度 F_H(f,t) face_t f, Thread *t 焓 F_K(f,t) face_t f, Thread *t 湍流动能 F_D(f,t) face_t f, Thread *t 湍流能量耗散系数 F_YI(f,t,i) face_t f, Thread *t, 组分质量分数 int i F_UDSI(f,t,i) face_t f, Thread *t, 用户自定义标量(i int i 表示第几个方程) F_UDMI(f,t,i) face_t f, Thread *t, 用户自定义内存变int i 量(i表示第几个) 7.2.10.6 网格变量 下面列表中的是网格变量,不像面变量,网格变量在耦合与非耦合计算中都能获取(available in both the segregated and the coupled solvers)。下面三个列表中所列出的分别是:计算变量、导数和物性参数。 Name(Arguments) Argument Type Returns Source C_P(c,t) 参数类型都定义压力 mem.h C_U(c,t) 为: u速度 C_V(c,t) cell_t c, v速度 C_W(c,t) Thread *t, w速度 C_T(c,t) int i, 温度 C_H(c,t) int j 焓 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] 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) Argument Type uu雷诺应力 vv雷诺应力 ww雷诺应力 uv雷诺应力 vw雷诺应力 uw雷诺应力 第一平均混合物分数 第二平均混合物分数 第一混合物分数偏差 第二混合物分数偏差 反应进程变量 层流火焰速度 临界应变率 污染物组分 第一相体积分数 第二相体积分数 Returns 各向速度导数 压力梯度(i表示方向) 密度梯度(i表示方向) sg_mem.h Source mem.h Argument Type Returns 密度 层流粘性系数 湍流粘性系数 有效粘性系数 导热系数 湍流导热系数 有效导热系数 比热 气体常数 层流组分扩散系数 有效组分扩散系数 吸收系数 Source mem.h C_SCAT_COEFF(c,t) 散射系数 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。

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。 我们在定义边界条件面板定义边界条件时,解法器就设定n …… 此处隐藏:3316字,全部文档内容请下载后查看。喜欢就下载吧 ……

中科大FLUENT讲稿 第七章 自定义函数(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/447792.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)