CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   FLUENT (https://www.cfd-online.com/Forums/fluent/)
-   -   Erron: FLUENT received fatal signal (ACCESS_VIOLATION) in DPM Heat and Mass Transfer (https://www.cfd-online.com/Forums/fluent/179866-erron-fluent-received-fatal-signal-access_violation-dpm-heat-mass-transfer.html)

Melvin November 9, 2016 05:14

Erron: FLUENT received fatal signal (ACCESS_VIOLATION) in DPM Heat and Mass Transfer
 
Hi everyone..

I am a Ph.D. Student with research about simulation of coal drying and newbie in Ansys fluent. In my simulation I use UDF based on DPM multicomponent model as shown in UDF Guide for DPM_Heat_and_Mass_Transfer to dry coal lignite, I use Ansys Fluent 12 version with the transient model, injection of particle occur on 60 to 61 second, as much as 600 gr. After I compile my UDF there are occur error as shown below. Whether this UDF can use in the transient model or only in steady case. what the different in UDF between steady and unsteady.??? Thankyou

Error:
FLUENT received fatal signal (ACCESS_VIOLATION)
1. Note exact events leading to error.
2. Save case/data under new name.
3. Exit program and restart to continue.
4. Report error to your distributor.
Error Object: #f

Did someone know how to solve this problem?? my UDF as listed below

#include "udf.h"
DEFINE_DPM_HEAT_MASS(multivap,p,Cp,hgas,hvap,cvap_ bulk,cvap_surf,dydt,dzdt)
{
int ns ; /*declaring variable i as an integer*/
int nc = TP_N_COMPONENTS( p ); /* number of particle component */
real dens_total = 0.0; /*total vapor density*/
real P_total = 0.0; /*vapor pressure*/
cell_t c0 = RP_CELL( &(p->cCell) ); /* cell and thread */
Thread *t0 = RP_THREAD( &(p->cCell) ); /* where the particle is in */
Material *gas_mix = THREAD_MATERIAL( t0 ); /* gas mixture material */
Material *cond_mix = p->injection->material; /* particle mixture material */
cphase_state_t *c =&(p->cphase); /*cell info of particle location */
real molwt[MAX_SPE_EQNS]; /* molecular weightf gas species */
real Tp = P_T(p); /* particle temperature */
real mp = P_MASS(p); /* particle mass */
real molwt_bulk = 0.; /* average molecular weight in the 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;
{
Material *sp;
mixture_species_loop(gas_mix,sp,ns)
{
molwt[ns] = MATERIAL_PROP(sp,PROP_mwi); /* molecular weight of gas species */
molwt_bulk += C_YI(c0,t0,ns) / molwt[ns]; /* average molecular weight */
}
}
/* prevent division by zero */
molwt_bulk = MAX(molwt_bulk,DPM_SMALL);

for( ns = 0; ns < nc; ns++ );
{
/* gas species index of vaporization */
int gas_index = TP_COMPONENT_INDEX_I(p,ns);
if ( gas_index >= 0 )
{
Material * cond_c = MIXTURE_COMPONENT(cond_mix, ns); /*condensed material*/
real vap_temp = MATERIAL_PROP(cond_c,PROP_vap_temp); /* vaporization temperature */
real D = MATERIAL_PROP_POLYNOMIAL(cond_c,PROP_binary_diffus ivity,c->temp); /* diffusion coefficient */
real Sc = c->mu / ( c->rho * D ); /* Schmidt number */
real k = ( 2.0 + 0.6 * sqrt(p->Re) * pow( Sc, 1./3. ) ) * D /Dp; /* mass transfer coefficient */
real cvap_bulk = c->pressure / UNIVERSAL_GAS_CONSTANT / c->temp
* c->yi[gas_index] / molwt_bulk / solver_par.molWeight[gas_index]; /* bulk gas concentration */
real vap_rate = k * molwt[gas_index] * Ap * ( cvap_surf - cvap_bulk ); /* vaporization rate */
if( 0. < vap_rate && Tp < vap_temp )
vap_rate = 0.;
dydt[1+ns] -= vap_rate;
dzdt->species[gas_index] +=vap_rate;
dydt[0] -= hvap[gas_index] * vap_rate / ( mp * Cp ); /* dT/dt = dh/dt / (m Cp) */
dzdt->energy += hgas[gas_index] * vap_rate; /* gas enthalpy source term */
P_total += cvap_surf; /*vapor pressure = vapor equilibrium concentration of vaporizing components*/
dens_total += cvap_surf * molwt[gas_index]; /*Total vapor density = mol/m3 *kg/mol*/
}
}
}

SJSW November 13, 2016 22:35

1. It looks like that this model doesn't need the macro "DEFINE_DPM_INJECTION_INIT".
2. Why do you use "RP_CELL" and "cCell" in this line "cell_t c0 = RP_CELL( &(p->cCell) )"?? @@
I think that you could first modify the example macro provided in "DEFINE_DPM_HEAT_MASS", instead of mixing the codes of "DEFINE_DPM_INJECTION_INIT" and "DEFINE_DPM_HEAT_MASS".

Melvin November 17, 2016 01:06

Quote:

Originally Posted by SJSW (Post 625204)
1. It looks like that this model doesn't need the macro "DEFINE_DPM_INJECTION_INIT".
2. Why do you use "RP_CELL" and "cCell" in this line "cell_t c0 = RP_CELL( &(p->cCell) )"?? @@
I think that you could first modify the example macro provided in "DEFINE_DPM_HEAT_MASS", instead of mixing the codes of "DEFINE_DPM_INJECTION_INIT" and "DEFINE_DPM_HEAT_MASS".

Hi SJSW.
After I deleting that line... The simulation also gets the error. If I use the UDF as written in UDF guide fluent 12.. it can not be compiled.
Can you tell me wich part must be modified from the UDF as listed above?? Are the injection particles must be written in separate UDF??. The injection particle actually was setting in Define > injection>set> point properties for start and stop time
thanks


All times are GMT -4. The time now is 07:01.