CAPE Forum

Ansys => Fluent => Topic started by: deord on February 11, 2012, 01:30:19 PM

Title: Droplet breakup model for steady dpm tracking
Post by: deord on February 11, 2012, 01:30:19 PM
Hi,

How do I implement droplet breakup model for steady particle tracking in Fluent?

Can anyone help me in this?

Thanks.
Title: Re: Droplet breakup model for steady dpm tracking
Post by: william on February 11, 2012, 01:33:15 PM
Although steady DPM tracking is more computationally efficient than unsteady tracking, there are certain limitations. One of those limitations is that the spray models for breakup are not available for steady tracking. To incorporate droplet breakup into their models while maintianing the computational efficiency afforded by steady tracking, some users have turned to implementing breakup models using UDFs. However, care must be taken to ensure that this is done properly.

The provided udf permits the droplets to breakup one time when they cross the x=0.1 m plane, and the breakup results in two equally sized daughter droplets. These aspects can of course be modified, but it is important that P_DIAM(p) and P_MASS(p) are specified correctly. P_MASS0(p) must also be included if 2-way coupling is enabled in the discrete phase model.

NOTE: This steady breakup udf works for FLUENT 6.3.31 and later versions.


/* breakup udf for steady tracking
/*
/* this example breaks up the droplets one time when they
/* cross the x = 0.1 m plane.
/*
/* one dpm scalar is required
/*
/* NOTE: This steady breakup template works for FLUENT 6.3.31 and later versions. */


#include "udf.h"

#define BREAKUP_SMALL 1e-8

void assign_init_mass_to_tp_and_p(Tracked_Particle *tp, real mass_factor)
{
#if RP_NODE
Injection *I = tp->injection;
Particle *p = NULL;
#endif

P_INIT_MASS(tp) *= mass_factor;

#if RP_NODE
if (dpm_par.unsteady_tracking)
return;

loop(p, I->p)
if (p->part_id == tp->part_id)
P_INIT_MASS(p) *= mass_factor;
#endif
}

DEFINE_DPM_SCALAR_UPDATE(steady_breakup,c,t,initialize,p)
{
real mass_factor = 0.5; /* drop breaks in half */

if (dpm_par.unsteady_tracking)
return;

if (initialize)
{
p->user[0] = 0.;
}
else
{
if ((p->user[0] < BREAKUP_SMALL) && (P_POS(p)[0] > 0.1))
{
P_DIAM(p) /= pow( 1/mass_factor, 0.33333 ); /* assume droplets break in half */
P_MASS(p) *= mass_factor;
P_MASS0(p) *= mass_factor; /* necessary if 'interaction with continuous phase' is enabled */
p->user[0] = 1.;
assign_init_mass_to_tp_and_p(p,mass_factor);
}
}
}