很多朋友在开发Fluent模型中需要用UDF获取组分传输模型中的某气体组分的摩尔分数(或体积分数)或者分压力,但是UDF自带的只有获取质量分数的宏C_YI(c,t),需要自己写额外的代码去转换,有一定难度。已经不止一次看到论坛或者我们UDF编译调试插件群里的朋友问起这个问题,这里做个标准教程记录下来,希望对大家有用。
总体来说,有两种方法,一种是利用内置的函数来转换,另外一种就是自己写代码转换,这里逐一介绍。
1. 利用内置函数转换
内置转换方法参考了Fluent官方解决方案,稍微作了一些修改,并加了一些注释(利用VC++ UDF Studio插件编译通过)。
//利用VC++ UDF Studio插件编译通过
#include "udf.h"
#define CO2_INDEX 2 //假设你想获取CO2的摩尔分数,且CO2的序号为2,case不同可能有所不同
#define ZONE_ID 4 // 4是要汇报的区域ID,case不同可能有所不同
DEFINE_EXECUTE_AT_END(report_CO2_Pressure)
{
cell_t c;
Domain*domain= Get_Domain(1); //获取计算域指针
Material *mix_mat = mixture_material(domain); //获取气体混合物材料属性
Thread*tc=Lookup_Thread(domain, ZONE_ID);
begin_c_loop(c,tc)
{
int i = -1; //循环的组分序号
Material *spe_mat = NULL; //定义组分材料属性
real all_mass_fracts[MAX_SPE_EQNS]; //需要用户自己填充的各气体组分质量分数的数组
real all_mole_fracts[MAX_