|
|

楼主 |
发表于 2013-4-10 01:55:36
|
显示全部楼层
回复 2# a2883524 的帖子
#include "udf.h"
#include "dpm.h"
#define DPM_MINIMUM_DIAMETER(p) 1.0e-7
#define DPM_MINIMUM_MASS(p)5.236e-25*p->state.rho
static devol_on = 0;
static surface_combustion_on = 0;
static a=1.;
static Favtor_v=0.95;
DEFINE_DPM_LAW(udf_devol_law, p, ci)
{
real T_p = P_T(p);
real mp0= P_INIT_MASS(p);
#define mp (P_MASS(p))
real Dp0= P_INIT_DIAM(p);
#define Dp (P_DIAM(p))
real dt = P_DT(p); /* p->time_step */
/* real mpt=mp; */
real Kv, dm_v;
Material *m = P_MATERIAL(p);
real Av = MATERIAL_PROP_COEF(m,PROP_devol,0); /* Pre-Exponential Factor 26100 */
real Ev = MATERIAL_PROP_COEF(m,PROP_devol,1); /* Activation Energy 7.970000e+007 J/(kg*mol) */
real f_v = DPM_VOLATILE_FRACTION(p); /* Volatile Component Fraction 72.8 % */
real f_char = DPM_CHAR_FRACTION(p); /* Combustible Fraction 24.2 % */
real f_ash=1.-f_v-f_char; /* Ash content 3 % */
real R_gas = UNIVERSAL_GAS_CONSTANT; /* 8314.34 */
real min_volatile_mass = P_INIT_MASS(p) * (1. - DPM_VOLATILE_FRACTION(p));
real V_star=a*f_v;
devol_on = 1;
if (P_MASS(p) <= min_volatile_mass)
/* if ((mp0-mp)<Favtor_v*f_v*mp0) */
{
if (ci) AddSources(p);
p->current_law_index++;
HeatMassUpdate(p,ci);
devol_on = 0;
return;
}
if (Ev/(R_gas*T_p)<50.)
Kv=Av*exp(-Ev/(R_gas*T_p));
else
Kv=0.;
mp = (1.-f_v)*mp0 + (mp-(1.-f_v)*mp0)*exp(-Kv*dt);
if ((mp-mp0*(1.-f_v))/mp0 < 0.01)
mp=mp0*0.9999*(1.-f_v);
UpdateTemperature(p,0,mp);
P_DIAM(p)=Dp0;
P_RHO(p) = P_MASS(p)/(M_PI*Dp*Dp*Dp/6.);
#undef mp
#undef Dp
}
[ 本帖最后由 w112w 于 2013-4-11 19:41 编辑 ] |
|