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);

}

}

}