前面介绍了获取节点数据的宏。本文讲解一些关于面数据获取的宏。 这些面相关宏定义在头文件metric.h及mem.h 中,并且所有的宏均以F_ 作为前缀。 注意:面数据获取宏只能用于压力基求解器,并且一些与模型相关的宏,只在当模型被开启后才有效。
Fluent的数据以分层方式保存,如下图所示。最顶级为Domain,其下为Cell,再下为Face,最底层数据为Node。在访问过程中,也是从上往下逐层访问,采用循环遍历的方式。 
F_CENTROID宏用于网格面心坐标。 宏调用形式: F_CENTROID( x , f , t ) 宏参数: real x[ND_ND],face_t f,Thread *t 参数值获取: 通过x数组获得
此宏通过参数返回值,典型的传址调用。一个简单的示例: { /*定义数组接收坐标参数*/
real x[ND_ND];
real y;
face_t f;
begin_f_loop(f,t)
{
F_CENTROID(x,f,t);
y = x[1];
...
}
end_f_loop(f,t)
}
F_AREA宏用于获取网格面的法向向量。在一些求通过某些面的物理量分量时非常有用。在ANSYS Fluent中,边界面的法向通常指向计算域的外部。对于内部面的法向方向,通常利用节点排序采用右手定则进行确定。 宏调用形式: F_AREA(A , f , t ) 宏参数: real A[ND_ND],face_t f,Thread *t 参数值获取: 通过A数组获得
一个简单的片段: {
real NV_VEC(A); /*定义向量A*/
F_AREA(A, f, t);
}
注意:F_AREA宏通过传址调用返回值,参数A可以是数组A[ND_ND],也可以是向量。如果定义为向量,后面可以很方便的利用向量运算(点积和叉积等)。 面参数访问宏的一个主要用途在于访问边界面信息。如获取边界速度、压力、温度等。 如下表所示。 宏定义 | 参数类型 | 返回值 |
---|
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 | 返回组分质量分数 |
这些宏的返回值均为real型。采用返回值的形式获取参数。如下代码片段: real temperature;
temperature = F_T(f,t);
需要注意,这些宏只有在激活了相应的模型后才有效。如获取湍动能参数宏F_K(f,t),只有当激活了湍流模型后才可以使用。 有一些宏既可以访问边界面上数据,也可以访问内部面上的数据。比较常用的宏为F_P及F_FLUX。 宏定义 | 参数类型 | 返回值 |
---|
F_P(f,t) | face_t f Thread *t | 返回面上压力值,real类型 | F_Flux(f,t) | face_t Thread *t | 返回通过面的质量流量,real类型 |
与前面边界面参数宏使用方法类似。
|