Droplet breakup model for steady dpm tracking  (Read 1627 times)

Offline deord

  • Newbie
  • *
  • Posts: 9
  • Reputation: +0/-0
  • Searching for solution
    • View Profile
Droplet breakup model for steady dpm tracking
« 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.

Offline william

  • Full Member
  • ***
  • Posts: 147
  • Reputation: +18/-0
  • Know it, share it.
    • View Profile
Re: Droplet breakup model for steady dpm tracking
« Reply #1 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);
}
}
}