|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
#include"udf.h"
#include"surf.h"
real H2O_Saturation_Pressure(real T)
{
real ratio,aTmTp;
aTmTp=.01*(T-338.15);
ratio=(647.286/T-1.)*
(-7.419242+aTmTp*(.29721+
aTmTp*(-.1155286+
aTmTp*(8.685635e-3+
aTmTp*(1.094098e-3+
aTmTp*(-4.39993e-3+
aTmTp*(2.520658e-3-
aTmTp*5.218684e-4)))))));
return (22.089e6*exp(MIN(ratio,35.)));/错误处
}
real myHumidity(cell_t c,Thread *t)
{
int i;
Material *m=THREAD_MATERIAL(t,0),*sp;
real yi_h2o,mw_h2o;
real r_mix=0.0;
if(MATERIAL_TYPE(m)==MATERIAL_MIXTURE)
{
mixture_species_loop(m,sp,i)
{
r_mix+=C_YI(c,t,i)/MIXTURE_PROP(sp,PROP_mwi);
if(0==strcmp(MIXTURE_SPECIE_NAME(m,i),"h2o")||
(0==strcmp(MIXTURE_SPECIE_NAME(m,i),"H2O")))
{
yi_h2o=C_YI(c,t,i);
mw_h2o=MATERIAL_PROP(sp,PROP_mwi);
}
}
}
return ((ABS_P(C_P(c,t),op_pres)*yi_h2o/(mw_h2o*r_mix))/
H2O_Saturation_Pressure(C_T(c,t)));
}
#define CONDENS 2.0
#define MINMASS 1.0e-9
DEFINE_DPM_LAW(condenshumidlaw,p,coulped)
{
real area=M_PI*(P_DIAM(p)*P_DIAM(p));
real mp_dot;
cell_t c=RP_CELL(&p->cCell);
mp_dot=CONDENS*area*(myHumidty(c,t)-1.0);
if(mp_dot>0.0)
{
P_MASS(p)=MAX((P_MASS(p)+mp_dot*(p->time_step)),MINMASS);
P_DIAM(p)=pow(P_MASS(p)*6./(P_RHO(p)*M_PI),1./3.);
P_T(p)=C_T(c,t);
}
}
DEFINE_DPM_SOURCE(dpm_source,c,t,S,strength,p)
{
real mp_dot;
Material *sp=p->injection->material;
if(P_CURRENT_LAW(p)==DPM_LAW_USER_1)
{
mp_dot=(P_MASS0(p)-P_MASS(p))*strength;
S->mass+=mp_dot;
S->energy-=mp_dot*MATERIAL_PROP(sp,PROP_latent_heat);
}
}
DEFINE_DPM_SWITCH(dpm_switch,p,coulped)
{
cell_t c=RP_CELL(&p->cCell);
Thread *t=RP_THREAD(&p->cCell)
if(myHumidity(c,t)>1.0)
P_CURRENT_LAW(p)=DPM_LAW_USER_1;
else
{
if(P_MASS<=MINMASS)
P_CURRENT_LAW(p)=DPM_LAW_INITIAL_INERT_HEATING;
else
P_CURRENT_LAW(p)=DPM_LAW_VAPORIZATION;
}
}
#define UDM_RH 0
#define N_REQ_UDM 1
DEFINE_ON_DEMAND(set_relhum)
{
Domain *domain=Get_Domain(1);
cell_t cell;
Thread *thread;
if(sg_udm<N_REQ_UDM)
CX_Message("\nNot enough user defined memory allocated.%required\n",N_REQ_UDM);
else
{
thread_loop_c(thread,domain)
{
if(FLUID_THREAD_P(thread)&&NNULLP(THREAD_STORAGE(thread,SV_UDM_I)))
{
begin_c_loop(cell,thread)
C_UDMI(cell,thread,UDM_RH)=myHumidity(cell,thread);
end_c_loop(cell,thread)
}
}
CX_Message("\nRelative Humdity set in udm-%d\n",UDM_RH);
}
}
以上代码是完全摘自udf帮助文档,编译出错,提示:line 16 function returning float returns double.请问怎么改正
|
|