数据访问宏一
网格节点相关宏**
NODE_X (v) 节点v的x方向的坐标 (Node *v)
NODE_Y (v) 节点v的y方向的坐标 (Node *v)
NODE_Z (v) 节点v的z方向的坐标 (Node *v)
F_NODE (f,t,n) 获取节点 (face_t f, Thread *t, int n 节点索引号)
F_NNODES(f,t) 获取面上的节点数量 (face_t f, Thread *t)
网格面相关宏(压力基求解器)
F_CENTROID(x, f, t)获取网格面中心坐标; 注释:(real x[ND_ND],face_t f, Thread *t)
F_AREA(A,f,t)获取网格面的法向量 (real A[ND_ND]或NV_VEC(A),)其中A[0]为x方向投影面积、A[1]…、A[2]…、face_t f, Thread *t)
面物理量获取宏
F_U(f, t) u方向速度 (face_t f, Thread *t)
F_V(f, t) v方向速度 (face_t f, Thread *t)
F_W(f, t) w方向速度 (face_t f, Thread *t)
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)//i是组分的编号,组分中的物质编号:0,1,2
F_P(f, t) 获取面上的压力 (face_t f, Thread *t)
F_Flux(f, t) 获取通过面的质量流量 (face_t f, Thread *t)
单元数据访问宏
C_CENTROID(x,c,t) 获取网格单元中心 (real x[ND_ND],cell_t c,Thread *t)
C_VOLUME(_2D)(c,t) 获取网格单元体积 (cell_t c, Thread *t)//这是2D的案例,如果是三维的话,就把括号的2D删除!
C_NNODES(c,t) 获取网格单元节点数量 (cell_t c, Thread *t)
C_NFACES(c,t) 获取网格单元网格面数量 (cell_t c, Thread *t)
单元物理量获取宏
C_R(c, t) 获取网格单元密度 (cell_t c, Thread *t)
C_P(c, t) 获取网格单元压力 (cell_t c, Thread *t)
C_U(c, t) 获取网格单元 u方向速度 (cell_t c, Thread *t)
C_V(c, t) 获取网格单元v方向速度 (cell_t c, Thread *t)
C_W(c, t) 获取网格单元 w方向速度 (cell_t c, Thread *t)
C_T(c, t) 获取网格单元的温度 (cell_t c, Thread *t)
C_H(c, t) 获取网格单元的焓值 (cell_t c, Thread *t)
C_K(c, t) 获取网格单元的湍动能 (cell_t c, Thread *t)
C_NUT(c, t) 获取网格单元的湍流粘度 (cell_t c, Thread *t)
C_D(c, t) 获取网格单元的湍流耗散率 (cell_t c, Thread *t)
C_YI(c, t, i) 获取网格单元的组分质量分数 (cell_t c, Thread *t)//i是组分的编号,组分中的物质编号:0,1,2
单元物理量梯度获取宏
C_P_G(c, t) 获取网格单元压力梯度 (cell_t c, Thread *t)
C_U_G(c, t) 获取网格单元 u方向速度梯度 (cell_t c, Thread *t)
C_V_G(c, t) 获取网格单元v方向速度梯度 (cell_t c, Thread *t)
C_W_G(c, t) 获取网格单元 w方向速度梯度 (cell_t c, Thread *t)
C_T_G(c, t) 获取网格单元的温度梯度 (cell_t c, Thread *t)
C_H_G(c, t) 获取网格单元的焓值梯度 (cell_t c, Thread *t)
C_K_G(c, t) 获取网格单元的湍动能梯度 (cell_t c, Thread *t)
C_NUT_G(c, t) 获取网格单元的湍流粘度梯度 (cell_t c, Thread *t)
C_D_G(c, t) 获取网格单元的湍流耗散率梯度 (cell_t c, Thread *t)
C_YI_G(c, t, i) 获取网格单元的组分质量分数梯度 (cell_t c, Thread *t)//i是组分的编号,组分中的物质编号:0,1,2
注意:
UDF中能够利用宏C_T_G访问单元温度,却不能用C_U_G访问x方向速度梯度。
主要原因在于求解器为了计算效率,在求解时从内存中除了不被使用的数据。如果一定要保留这些梯度数据,可以使用TUI明亮solve/set/expert,之后再系统提示Keep temporary solve emory from being freed?后输入yes,这样的话所有的梯度数据都会被保留,但是计算过程中会消耗更多的内存。
C_P_G只能用于压力基求解器。
C_YI_G只能用于密度基求解器,若要在压力基中使用此宏,则需要设置species/save-gradient? 为#t。
数据访问宏二
相邻网格索引宏:
C0=F_C0(f,t) C1=F_C1(f,t)
T0=THREAD_T0(t) T1=THREAD_T1(t)
注:比较重要
边界面判断宏
BOUNDARY_FACE_THREAD(t)
begin_f_loop(f,t)
{
if(BOUNDARY_FACE_THREAD(t) )
{
…
}
}edn_f_loop(f,t)
获取域指针宏
Get Domain (id)
Domian *d=Get_Domain(id)
注:对于单向流,id值为1;对于多相流,混合相的id值为1,其余每一相id值可以在Phase面板中查看。
设置边界值
F_PROFILE(f,t,i)
DEFINE_PROFILE(name,t,i)
{
…
begin_f_loop(f,t)
{
…
F_PROFILE(f,t,i)=…
}end_f_loop(f,t)}
获取shadow面的thread宏
THREAD_SHADOW(t)
ND操作宏
ND_ND
向量运算宏
NV_MAG(x)=sqrt(x[0]*x[0]+x[1]*x[1]+x[2]*x[2])
NV_MAG2(x)=x[0]*x[0]+x[1]*x[1]+x[2]*x[2]///模的平方;
时间相关宏
CURRENT_TIME (或者RP_Get Real(“flow time”)) 当前流动时间
CURRENT_TIMENSTEP (RP_Get_Real(“physical-time-setp”)) 当前时间步长
PREVIOUS_TIME 上个时间步的流动时间
PREVIOUS_2_TIME 上两个时间步的流动时间
PREVIOUS_TIMESTEP 上一个时间步长
N_TIME (或者RP_Get_Real(“time-step”)) 时间步数
N_ITER 迭代步数
其他宏:
Data_Valid_P//
FLUID_THRED_P//判断是否是个流体域,比较少见
M_PI//这就是π,
N_UDM//UDM个数
N_UDS//UDS个数
SQR(k)//k的平方
UNIVERSAL_GAS_CONSTANT//
Lookup_thread(d,id)//比较重要,通过指针和ID值,可以对应的类型指针