自己顶一下这个帖子
这段时间又重复看了文献,发现暂时能够写其中一个DEFINE_TRANS_RETHETA的UDF,源代码如下:
#include "udf.h"
#include "mem.h"
DEFINE_TRANS_RETHETA_T(user_Re_thetat, c, t)
{
/*变量定义(通过变量宏文件获取具体流场参数)*/
real Re_thetat; //当地转捩雷诺数(迭代求解)Rethetat = F(Tu)*F(lamda_theta)
//当地湍流度定义
real FTu; //F(Tu)
real Tu; //当地湍流度
real TKE = C_K(c,t); //湍动能 C_K(c,t)
real U = C_VMAG2(c,t); //当地速率
// real U = sqrt(C_U(c,t)*C_U(c,t)+C_V(c,t)*C_V(c,t)+C_W(c,t)*C_W(c,t));
//当地压力因子定义
real Flamda_theta; //F(lamda_theta)
real lamda_theta0; //压力梯度因子
real lamda_theta1; //压力梯度因子
real K; //加速因子
// real theta; //当地动量厚度(迭代求解)
real miu; //运动学粘性系数 v = u/rou
real dUdx; //速率沿不同方向导数(dUds,dUdx,dUdy,dUdz)
real dUdy;
real dUdz;
real dUds;
//变量求解
//首先获取基本流体参数比如速度、湍动能、倒数等,再计算相关参数
dUdx = 0.5*pow(U*U,-0.5)*(2.0*C_U(c,t)*C_DUDX(c,t)+2.0*C_V(c,t)*C_DUDX(c,t)+2.0*C_W(c,t)*C_DUDX(c,t));
dUdy = 0.5*pow(U*U,-0.5)*(2.0*C_U(c,t)*C_DUDY(c,t)+2.0*C_V(c,t)*C_DUDY(c,t)+2.0*C_W(c,t)*C_DUDY(c,t));
dUdz = 0.5*pow(U*U,-0.5)*(2.0*C_U(c,t)*C_DUDZ(c,t)+2.0*C_V(c,t)*C_DUDZ(c,t)+2.0*C_W(c,t)*C_DUDZ(c,t));
dUds = (C_U(c,t)/U)*dUdx+(C_V(c,t)/U)*dUdy+(C_W(c,t)/U)*dUdz;
miu = pow(C_T(c,t)/288.15,1.5)*(288.15+110.4)/(C_T(c,t)+110.4)*1.4607*pow(10.0,-5.0)/C_R(c,t); //计算运动学粘性系数
K = miu/(U*U)*dUds; //计算加速因子
Tu = 100.0*sqrt(2.0*TKE/3.0)/U; //计算湍流度
//迭代求解theta
lamda_theta0 = 0;
lamda_theta1 = 0;
do
{
lamda_theta0 = lamda_theta1;
/***********************求Re_thetat********/
if(Tu > 1.3)
{
FTu = 331.5*pow((Tu-0.5658),-0.671);
}
else
{
FTu = 1173.51-589.428*Tu+0.2196/(Tu*Tu);
}
if(lamda_theta0 > 0)
{
Flamda_theta = (1.0+0.275*(1.0-exp(-35.0*lamda_theta0))*exp(-2.0*Tu));
}
else
{
Flamda_theta = (1.0+(12.986*lamda_theta0+123.66*(lamda_theta0*lamda_theta0)+405.689*pow(lamda_theta0,3.0))*exp(-pow((Tu/1.5),1.5)));
}
Re_thetat = FTu*Flamda_theta;
/******************************************/
lamda_theta1 = (Re_thetat*Re_thetat)*K;
} while(fabs(lamda_theta1-lamda_theta0) < 0.01)
return Re_thetat;
}
但是在FLUENT里面interpreted的时候报错
a4c326d7-09fe-4d62-b316-79f687a754c0-image.png
这里75、76就是最后两行,返回值和右括号。
请教一下大家:chouchou: