F_PROFILE 宏在 DEFINE_PROFILE UDF 中使用,对给定的面(face)和线索(thread)设置边界值。标号 i 既是F_PROFILE 也是 DEFINE_PROFILE 的参数,用来识别特定的,待设置边界变量(如:压力、温度、速度), F_PROFILE 在mem.h 中定义。
- 语法: F_PROFILE(f,t,i)
- 参数:
- face_t f //the index of the face
- thread *t //a pointer to the face’s thread
- int i //an integer index to the particular face variable that is to be set
- 返回值: void
说明:在将一个 DEFINE_PROFILE UDF 链接(hook)到边界条件对话框的特定变量(如,压力、温度、速度)时,ANSYS Fluent 会定义 i,i 被传递给 UDF 用来识别在操作哪个变量。
实例:
假设欲定义一个压力变化的边界条件,式子如下:
p
(
y
)
=
1.1
×
1
0
5
−
0.1
×
1
0
5
(
y
0.0745
)
2
p(y)=1.1\times10^5-0.1\times10^5(\frac{y}{0.0745})^2
p(y)=1.1×105−0.1×105(0.0745y)2
可利用 DEFINE_PROFILE UDF 宏来实现,在边界区域(boundary zone)上遍历所有的面(face)来设置压力数组,对于每一个面,用 F_PROFILE设置压力。下面的例子中,F_CENTROID 获得面中心的 y 轴坐标,用来计算每个面的压力。求解器把数据传递给 Pressure Inlet 边界条件对话框的 Gauge Total Pressure。
/********************************************************************
UDF for specifying a parabolic pressure profile boundary profile
********************************************************************/
#include "udf.h"
DEFINE_PROFILE(pressure_profile,t,i)
{
real x[ND_ND];
real y;
face_t f;
begin_f_loop(f,t)
{
F_CENTROID(X,f,t);
y = x[1];
F_FPOFILE(f,t,i) = 1.1e5 - y*y/(.0745*.0745)*0.1e5;
}
end_f_loop(f,t)
}
参考自 ANSYS Fluent 18.2 帮助文档
Customization Manual > Ⅰ. Creating and Using Defined Functions > 3. Additional Macros for Writing UDFs > 3.2 Data Access Macros > 3.2.6 Special Macros > 3.2.6.4. Set Boundary Condition Value(F_PROFILE)