对一个简单解释型udf程序的详细解释
荷藕
include ""
/是一个头文件,如果不写的话就不能使用fluent udf中的宏,函数等/
DEFINE_PROFILEpressure_profile, t, i
/是一个宏,本例中用来说明进口压力与垂直坐标变量还可以是其他的变量的关系;pressure_profile晴天的英语 是函数名,可随意指定;t的数据类型是Thread t ,t表示指向结构体thread这里的thread表示边界上所有的网格面的集合的指针;i的数据类型是Int,表示边界的位置 或者说是什么每个循环内对位置变量这里应该是质心的纵坐标设置的数值标签/
{
real xND_ND;
/ 定义了质心的三维坐标,数据类型为real/
real y;
/定义了一个变量y, 数据类型为real /
face_t f;
/定义了一个变量f, 数据类型为face_t,也就是网格面的意思,即f代表一个网格单元的网格面 /
begin_f_loopf, t
/表示遍寻网格面,它的意思是说在计算的时候,要扫描所定义边界的所有网格面,对每个网格面都要赋值,值存储在猴头菇的营养价值F_PROFILEf, t, i中/
{物华天宝人杰地灵
F_CENTROIDx,f,t;
/一个函数,它的意思是读取每个网格面质心的二维坐标,并赋值给x;x为名称,接收三维坐标值;f为网格面因为这里只是取的面的二维坐标,所以为f,如果是网格单元的话,这里就为c;t为指向结构体thread这里的thread表示边界上所有的网格面的集合的指针/送呈台启的请帖写法
y = x1;
/把质心的三维坐标的纵坐标的数值赋给y/
F_PROFILEf, t, i = - yy/.0745.0745;
/赋给每个网格面的数值与网格质心纵坐标的关系;其实就是赋给质心的速度值这里只有大小与质心纵坐标的函数关系,因为fluent在计算的时候是把数据存储到网格质心上的,所以网格质心的速度值就代表网格的速度值;这里有了网格的质心纵坐标,然后有了质心速度值与纵坐标的函数关系,那么每个进口网格面的速度值也就知道了;f依然代表网格面;t表示指向结构体thread这里的thread表示边界上所有的网格面的集合的指针;i每个循环内对位置变量这里应该是质心的纵坐标设置的数值标签嘉奖主要事迹/
}
end_f_loopf, t/结束循环/
}
整体来看:包括两个宏:DEFINE_PROFILEpressure_profile, t, i和beginend_f_loopf, t;两个函数:F_CENTROIDx,f,t和F_PROFILEf, t, i;其他都是变量;
求解思路为,首先看用到的宏,本例中用到的是DEFINE_PROFILEname,t,i,它可以给进口或者边壁加载速度,温度,压力等变量;
然后我们知道了进口速度和进口纵坐标的关系,其实也就是每个网格面质心的速度值与质心纵坐标的关系;这样就好了,现在的关键是如何得到每个网格质心的纵坐标的数值;程序里是这样做的:首先通过F_CENTROIDx,f,t函数得到质心的二维坐标并赋给xND_ND,然后利用y = x1函数得到质心的纵坐标;;
需要某人做某事
得到了质心纵坐标以后,知道质心速度值与质心纵坐标的关系,再通过F_PROFILEf, t, i函数,就可以把由函数关系式得到的速度值赋给每个网格面的质心了;
注:类型,在fluent单精度里为float,双精度里为double float;
f, t循环宏,相当于c语言中的循环语句;因为上述都是说的对每一个网格面的赋值,而进口有很多网格面,所以就需要利用这个宏扫描所有的网格面,然后给所有的网格质心赋值;