|
[Sponsors] |
November 18, 2017, 11:32 |
condensation
|
#1 |
New Member
komeil
Join Date: Feb 2016
Posts: 14
Rep Power: 10 |
I want to model my condensation. Does anyone have a training model in this case?
|
|
December 8, 2017, 08:33 |
|
#2 |
New Member
Martin
Join Date: Apr 2017
Location: Germany
Posts: 26
Rep Power: 9 |
Hi,
as far as I could find out, condensation is only possible via UDF (at least in case of DPM, might be different for other multiphase problems). In the "fluent customization manual" you can find an example for a UDF that replaces standard heat mass transfer, I think it is called DEFINE_DPM_HEAT_MASS. Have a look at that and try to modify it according to your needs. Note: the example again does not cover condensation, if dm/dt is negative, it is set to zero, so you have to adjust this part. If you already have particles, condensation should generally work. If you have no particles where condensation could take place than you would have to model instantaneous condensation and that's for sure a very difficult thing. Find attached my version, which is not validated nor verified by now, so use is at your own risk. I took the ANSYS example and some code snippets from a colleague to build this I highly appreciate any review and feedback. Cheers Martin Code:
/*********************************************************************** UDF for defining the heat and mass transport for multicomponent particle vaporization - initial version from Fluent Customization Manual - modified by mho, August 2017 changes: - replaced Nusselt / added Sherwood-Correlation - added Stefan-Strom correction in mass flux term - removed (multicomponent) boiling - not valid any more for multicomponent drops, restricted to water drops! implicated simplifications to heat/mass-transfer: - no radiative heat exchange - no Stefan-Strom correction for heat transfer - UDF only valid for non boiling conditions - only valid for 1 component transferred through the 'wall' (droplet surface); see equation for Bm using (m-1) in denominator - Temperature in vapor film equals droplet temperature - ***********************************************************************/ #include "udf.h" DEFINE_DPM_HEAT_MASS(multivap_mho,p,Cp,hgas,hvap,cvap_surf,Z,dydt,dzdt) { int ns; /* number/index of gas species */ Material *sp; 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 *cell = &(p->cphase); /* cell information of particle location*/ double molwt[MAX_SPE_EQNS]; /* molar weight of gas species in kg/kmol */ double Tp = P_T(p); /* particle temperature */ double mp = P_MASS(p); /* particle mass */ double molwt_bulk = 0.; /* average molecular weight in bulk gas */ double Dp = DPM_DIAM_FROM_VOL(mp / P_RHO(p)); /* particle diameter */ double Ap = DPM_AREA(Dp); /* particle surface */ double Pr = cell->sHeat * cell->mu / cell->tCond; /* Prandtl number --- sHeat = specific heat capacity in J/kg/K tCond = thermal conductivity in W/m/K*/ double Cp_p = Cp; /* Particle heat capacity */ /* Nusselt number according to Whitaker aus Kneer, Waerme- und Stoffuebertragung Skript*/ double mu_surf = MATERIAL_PROP_POLYNOMIAL(gas_mix, PROP_mu, Tp); /* laminar viscosity of vapor in boundary layer kg/m/s (dynamic viscosity?) */ double Nu = 2.0 + (0.4 * pow(p->Re, 1./2.) + 0.06 * pow(p->Re, 2./3.) ) * pow(Pr, 0.4) * pow( (cell->mu / mu_surf), 1./4.); double h_low = Nu * cell->tCond / Dp; /* Heat transfer coefficient at low mass transfer conditions */ /* calculating average molar mass */ mixture_species_loop(gas_mix,sp,ns) { molwt[ns] = MATERIAL_PROP(sp,PROP_mwi); /* molar weight of gas species */ molwt_bulk += cell->yi[ns] / molwt[ns]; /* reciproke average molar weight */ } /* prevent division by zero */ molwt_bulk = MAX(molwt_bulk,DPM_SMALL); molwt_bulk = 1.0 / molwt_bulk; /* average molar weight */ /* loop over gas species for mass transfer on each species */ 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); /* diffusion coefficient in m^2/s */ double D = DPM_BINARY_DIFFUSIVITY(p,cond_c,P_T(p)); /* Schmidt number */ double Sc = cell->mu / (cell->rho * D); /* mu in Pa s */ /* Sherwood number according to Brauer 1979 aus Kraume, 2012, S.221 */ double f_k = 0.66 * pow( (1.0 + pow( (0.84 * pow(Sc, 1./6.)), 3.0)), -1./3.); double Sh = 2.0 + f_k * ( pow(p->Re*Sc, 1.7) / ( 1.0 + pow(p->Re*Sc, 1.2)) ); /* mass fractions of water */ /* mass fractions of water */ double y_water_vap_bulk = cell->yi[gas_index]; double molwt_air = 28.949; /* double x_water_liq = 1.0; */ double x_water_vap_surf = DPM_VAPOR_PRESSURE(p,cond_c,Tp) / cell->pressure; double y_water_vap_surf = x_water_vap_surf * molwt[ns] / (x_water_vap_surf * molwt[ns] + (1.0 - x_water_vap_surf) * molwt_air); /* mass transfer calculation with Stefan-Strom correction from 'A Heat Transfer Text Book', Lienhard , page 658 ff */ /* mass transfer coefficient for low rates */ double g_low = Sh * (cell->rho) * D / Dp; /* kg/(m^2 s) */ /* mass transfer coefficient correction for high rates; Bm is calculated only for case of only 1 species evaporating */ double Bm = (y_water_vap_bulk - y_water_vap_surf) / (y_water_vap_surf - 1); double g = g_low * ( log(1. + Bm) / Bm ); /* kg/(m^2 s) */ /* vaporization rate */ double vap_rate = g * Ap * Bm; /* no vaporization below vaporization temperature, no condensation --- !!! disengaged to allow condensation*/ /* vaporization temperature double vap_temp = MATERIAL_PROP(cond_c,PROP_vap_temp); if (Tp < vap_temp) || vap_rate < 0.0 vap_rate = 0.; */ dydt[1+ns] -= vap_rate; dzdt->species[gas_index] += vap_rate; /* heat transfer coefficient for high mass flow rates; see 'A Heat Transfer Textbook, eq. 11.115 */ /* specific heat of (water) vapor at drop temperature */ double Cp_i = MATERIAL_PROP_POLYNOMIAL(cond_c,PROP_Cp,Tp); double h = vap_rate * Cp_i / ( exp(vap_rate * Cp_i / h_low) - 1.0 ); double dh_dt = h * (cell->temp - Tp) * Ap; /* heat source term for heat transfer */ /* dydt[0]: particle temperature source term: dT/dt = dh/dt /(m Cp_p) */ dydt[0] += dh_dt / (mp * Cp_p); /*sensible heating*/ dydt[0] -= hvap[gas_index] * vap_rate / (mp * Cp_p); /*phase change*/ /* gas enthalpy source term */ dzdt->energy -= dh_dt; dzdt->energy += hgas[gas_index] * vap_rate; /* removed multicomponent boiling --- UDF only valid for non boiling conditions */ } } } |
|
December 13, 2017, 15:23 |
|
#3 | |
New Member
komeil
Join Date: Feb 2016
Posts: 14
Rep Power: 10 |
Quote:
Thank you for giving your time to read this message |
||
February 23, 2018, 05:56 |
|
#4 |
New Member
Martin
Join Date: Apr 2017
Location: Germany
Posts: 26
Rep Power: 9 |
Hi, I am sorry to answer only now... somehow I did not recognize your post.
Unfortunately I am not sure about what exactly you want(ed) to know. Perhaps you can specify your question |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
How accurate can CFX model condensation? | JuPa | CFX | 7 | January 20, 2019 18:17 |
Problem setting up Condensation | cwl | STAR-CCM+ | 2 | September 1, 2017 07:35 |
Boiling plus condensation in a closed domain | edmondlam | Fluent Multiphase | 0 | December 29, 2015 00:26 |
combustion radiation and condensation in cfx | siden | CFX | 1 | February 3, 2011 18:39 |
condensation on horizontal tube??? | Wikie | FLUENT | 0 | July 30, 2010 05:53 |