导图社区 UDF 数据结构、循环宏、几何宏
学习UDF函数第一章,UDF主要涉及到数据结构、循环宏和几何宏等多个方面。后续更新……
编辑于2024-04-09 14:37:44UDF 数据结构、循环宏、几何宏
UDF 固定格式开头
#include "udf.h"
mesh结构
2D 网格
网格面=face
网格边=face
3D网格
网格体=cell
网格面=face
网格边=edge
计算域
Domain
cell thread(链表)
cell
face thread(链表)
faces
cell zone condition
solid1(链表)对应一个thread
Thread *t
solid2(链表)对应一个thread
Thread *t
fluid1(链表)对应一个thread
Thread *t
fluid2(链表)对应一个thread
Thread *t
由很多个自定义结构体(网格)组成
cell_t c
boundary condition
inlet(链表)对应一个thread
Thread *t
outlet(链表)对应一个thread
Thread *t
wall(链表)对应一个thread
Thread *t
wall(interior)(链表)对应一个thread
Thread *t
由很多个自定义结构体(网格面)组成
face_t f
变量存储在网格(自定义)结构体中
数据类型
Domain *d
Thread *t
cell_t c
face_t f
Node *node
红色部分格式不能动
real xc[ND_ND]
二维
real xc[2]
三维
real xc[3]
几何宏
求几何特征
(c,t)
Thread *t与cell_t c
(f,t)
Thread *t与face_t f
C_NNODES(c, t)
cell节点数
n=C_NNODES(c, t); 相当于定义了 int n;
C_NFACES(c, t)
cell面数
F_NNODES(f, t)
子主题
C_CENTROID(xc, c, t)
cell中心坐标
当前的网格中心坐标
x→xc[0]
y→xc[1]
z→xc[2]
F_CENTROID(x, f, t)
face中心坐标
当前的网格中心坐标
x→xc[0]
y→xc[1]
F_AREA(A, f, t)
face法向量
用法
real area[ND_ND]; F_AREA(area, f, t)
x→area[0]
单位法向量
area[0]/sqrt(area[0]*area[0]+area[1]*area[1]+area[2]*area[2])
y→area[1]
单位法向量
area[1]/sqrt(area[0]*area[0]+area[1]*area[1]+area[2]*area[2])
z→area[2]
单位法向量
area[2]/sqrt(area[0]*area[0]+area[1]*area[1]+area[2]*area[2])
NV_MAG(A)
网格面积
sqrt(area[0]*area[0]+area[1]*area[1]+area[2]*area[2])
与F_AREA(A, f, t)配合使用
real A[ND_ND];real At; F_AREA(A, f, t); At=NV_MAG(A)
把面积赋予At
C_VOLUME(c, t)
网格体积
C_VOLUME_2D(c, t)
2D网格体积
长方体planar(z方向无限延伸)
fluent认为Z方向为1m
轴对称
2Pi
NODE_X(nn)
节点坐标
NODE_Y(nn)
节点坐标
NODE_Z(nn)
节点坐标
动网格
变量
C_R(c,t)
密度
C_P(c,t)
压力
C_U(c,t)
x方向速度
C_V(c,t)
y方向速度
C_W(c,t)
z方向速度
C_T(c,t)
温度
C_H(c,t)
焓
C_K(c,t)
湍动能
C_D(c,t)
湍动能耗散率
C_YI(c,t,i)
质量分数
C_UDSI(c,t,i)
用户自定义标量
Loop循环宏
Thread 循环
thread_loop_c(t,d)
对cell zone condition 里面的计算域(solid1,solid2,fluid1,fluid2)进行循环
假设计算到solid1时,solid1就是t
thread_loop_f(t,d)
对boundary condition 里面的计算域(inlet,outlet,...)进行循环
假设计算到inlet时,inlet就是t
cell 循环
begin_c_loop(c,t)
end_c_loop(c,t)
可单独使用
对t里面的cell进行循环
假设计算到solid1时,solid1就是t
对solid1中的网格进行循环
face 循环
begin_f_loop(f,t)
end_f_loop(f,t)
可单独使用
对t里面的cell进行循环
假设计算到inlet时,inlet就是t
对inlet中的网格进行循环
使用结构
thread_loop_c(t,d) { begin_c_loop(c,t) {...} end_c_loop(c,t) }
thread_loop_f(t,d) { begin_f_loop(f,t) {...} end_f_loop(f,t) }