找回密码
 注册
查看: 2712|回复: 1

udf纠错!

[复制链接]
发表于 2005-3-5 10:35:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

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;
  }
}
&#35;define UDM_RH 0
&#35;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.请问怎么改正
发表于 2005-3-5 23:09:46 | 显示全部楼层

udf纠错!

把函数类型改为double.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表