前面介绍了获取节点数据的宏。本文讲解一些关于面数据获取的宏。
这些面相关宏定义在头文件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类型 |
与前面边界面参数宏使用方法类似。
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册