Ä£ÄâµÄÄ¿±ê£ºÊ¹ÓÃÁËfluent14.5µÄdpmÄ£ÐÍÖеÄmulticomponent¿ÅÁ££¬Ä£ÄâÄòËØË®ÈÜÒºµÄÅçÎí¸ÉÔï¹ý³Ì£¬Ïë×Ô¶¨Òå¿ÅÁ£±íÃæµÄ´«ÖÊÃæ»ý
ʹÓõķ½·¨£ºÊ¹ÓúêDEFINE_DPM_HEAT_MASS£¬½«fluent udf manualÖÐDEFINE_DPM_HEAT_MASSµÄexample¸´ÖƹýÀ´ÐÞ¸Ä
³öÏÖµÄÎÊÌ⣺ֱ½Ó¸´ÖÆDEFINE_DPM_HEAT_MASSµÄexampleµ¼Èëfluent±àÒ룬Ìáʾ³öÏÖÓï·¨´íÎó£¬ÓÚÊÇÎÒ°Ñ75ÐÐµÄ if (P_total c->pressure && dydt[0] > 0.) ¸ÄΪif (P_total > c->pressure && dydt[0] > 0.) ,¸ù¾ÝÎïÀíÒâÒåµ±ÆøÌåµÄ±¥ºÍÕôÆûѹ´óÓÚÍâ½çѹÁ¦Ê±ÒºÌå·ÐÌÚ£¬ËùÒÔ¼ÓÁËÒ»¸ö´óÓںš£±àÒë¹ÒÔØûÎÊÌâÁË£¬¼ÆËãµÄʱºò¾Í³ö´í£¬ÏÔʾÈçÏÂ
DPM Iteration ....
MPI Application rank 1 exited before MPI_Finalize() with status -1073741819
999999 (..\src\mpsystem.c@1172): mpt_read: failed: errno = 10054
999999: mpt_read: error: read failed trying to read 4 bytes: No such file or directory
The fl process could not be started.
PS£º±àÒë»·¾³Ó¦¸ÃûÎÊÌ⣬ÒòΪ±àÒë¹ÒÔعýÁíÒ»¸öudfÊÇûÎÊÌâµÄ¡£udfÈçÏ£¬Ò²¿ÉÒԲμûfluent14.5 udf manual 2.5.4 177Ò³»òÕ߸½¼þµÄpdf¡£
/***********************************************************************
UDF for defining the heat and mass transport for
multicomponent particle vaporization
***********************************************************************/
#include "udf.h"
DEFINE_DPM_HEAT_MASS(multivap,p,Cp,hgas,hvap,cvap_surf,Z,dydt,dzdt)
{
int ns;
Material *sp;
real dens_total = 0.0; /* total vapor density*/
real P_total = 0.0; /* vapor pressure */
int nc = TP_N_COMPONENTS(p); /* number of particle components */
Thread *t0 = P_CELL_THREAD(p); /* thread where the particle is in*/
Material *gas_mix = THREAD_MATERIAL(DPM_THREAD(t0, p)); /* gas mixture
material */
Material *cond_mix = P_MATERIAL(p); /* particle mixture material*/
cphase_state_t *c = &(p->cphase); /* cell information of particle location*/
real molwt[MAX_SPE_EQNS]; /* molecular weight of gas species */
real Tp = P_T(p); /* particle temperature */
real mp = P_MASS(p); /* particle mass */
real molwt_bulk = 0.; /* average molecular weight in bulk gas */
real Dp = DPM_DIAM_FROM_VOL(mp / P_RHO(p)); /* particle diameter */
real Ap = DPM_AREA(Dp); /* particle surface */
real Pr = c->sHeat * c->mu / c->tCond; /* Prandtl number */
real Nu = 2.0 + 0.6 * sqrt(p->Re) * pow(Pr, 1./3.); /* Nusselt number */
real h = Nu * c->tCond / Dp; /* Heat transfer coefficient*/
real dh_dt = h * (c->temp - Tp) * Ap; /* heat source term*/
dydt[0] += dh_dt / (mp * Cp);
dzdt->energy -= dh_dt;
mixture_species_loop(gas_mix,sp,ns)
{
molwt[ns] = MATERIAL_PROP(sp,PROP_mwi); /* molecular weight of gas
species */
molwt_bulk += c->yi[ns] / molwt[ns]; /* average molecular weight */
}
/* prevent division by zero */
molwt_bulk = MAX(molwt_bulk,DPM_SMALL);
for (ns = 0; ns < nc; ns++)
{
int gas_index = TP_COMPONENT_INDEX_I(p,ns); /* gas species index of
vaporization */
if(gas_index >= 0)
{
/* condensed material */
Material * cond_c = MIXTURE_COMPONENT(cond_mix, ns);
/* vaporization temperature */
real vap_temp = MATERIAL_PROP(cond_c,PROP_vap_temp);
/* diffusion coefficient */
real D = MATERIAL_PROP_POLYNOMIAL(cond_c, PROP_binary_diffusivity, c->temp);
/* Schmidt number */
real Sc = c->mu / (c->rho * D);
/* mass transfer coefficient */
real k = (2. + 0.6 * sqrt(p->Re) * pow(Sc, 1./3.)) * D / Dp;
/* bulk gas concentration (ideal gas) */
real cvap_bulk = c->pressure / UNIVERSAL_GAS_CONSTANT / c->temp
* c->yi[gas_index] / molwt_bulk / solver_par.molWeight[gas_index];
/* vaporization rate */
real vap_rate = k * molwt[gas_index] * Ap
* (cvap_surf[ns] - cvap_bulk);
/* no vaporization below vaporization temperature, no condensation */
if (Tp < vap_temp || vap_rate < 0.0)
vap_rate = 0.;
dydt[1+ns] -= vap_rate;
dzdt->species[gas_index] += vap_rate;
/* dT/dt = dh/dt / (m Cp)*/
dydt[0] -= hvap[gas_index] * vap_rate / (mp * Cp);
/* gas enthalpy source term */
dzdt->energy += hgas[gas_index] * vap_rate;
P_total += cvap_surf[ns];
dens_total += cvap_surf[ns] * molwt[gas_index];
}
}
/* multicomponent boiling */
P_total *= Z * UNIVERSAL_GAS_CONSTANT * Tp;
if (P_total > c->pressure && dydt[0] > 0.)
{
real h_boil = dydt[0] * mp * Cp;
/* keep particle temperature constant */
dydt[0] = 0.;
for (ns = 0; ns < nc; ns++)
{
int gas_index = TP_COMPONENT_INDEX_I(p,ns);
if (gas_index >= 0)
{
real boil_rate = h_boil / hvap[gas_index] * cvap_surf[ns] *
molwt[gas_index] / dens_total;
/* particle component mass source term */
dydt[1+ns] -= boil_rate;
/* fluid species source */
dzdt->species[gas_index] += boil_rate;
/* fluid energy source */
dzdt->energy += hgas[gas_index] * boil_rate;
}
}
}
} |