# Custom Nusselt Number for DPM

 Register Blogs Members List Search Today's Posts Mark Forums Read

 November 8, 2016, 03:54 Custom Nusselt Number for DPM #1 New Member   Hannes Join Date: Nov 2016 Location: Austria Posts: 11 Rep Power: 3 Hello everyone, I am doing some research on particle flow and particle heating in combustion environments. Ceramic particles (about 400 to 800 microns in diameter) are injected directly into a natural gas flame and heat up, I want to calculate the temperature over residence time using the discrete phase model. The results look pretty good as a start but now I am facing a problem. I would like to customize the way fluent calculates the Nusselt number for the particles. Measurements show, that the particle temperature overshoots and I guess, that the Nusselt formulation by Kudryashev Nu=0,664*squrt(Re)*Pr^(0.33) or maybe a weighting between the latter Nusselt correllation and the formulation by Ranz and Marshall (which is default in Fluent) is more suitable. I found the DEFINE_DPM_HEAT_MASS - UDF in the Fluent UDF manual but in this case, no evaporation, melting or other phase changes take place and I don't have multicomponent particles either. Does somebody know how a UDF which is suitable for my case look like? Thank you!

 November 8, 2016, 04:48 #2 New Member   Hannes Join Date: Nov 2016 Location: Austria Posts: 11 Rep Power: 3 Alright, I guess I ran across the solution. The UDF looks like this: -------------------------------------------------- /******* DPM LAW for droplet heating ********/ #define RO_AIR 1.225 #define RO_WATER 998.2 #define MU_AIR 1.7894e-05 #define CP_AIR 1006.43 #define CP_WATER 4182 #define K_AIR 0.0242 DEFINE_DPM_LAW(DropHeatLaw,p,ci) { real area, rel_vel, Re, Pr, HTC, delta_temp; cell_t c = P_CELL(p); Thread *t = P_CELL_THREAD(p); area = 4.0 * M_PI * pow(P_DIAM(p),2.0); rel_vel = sqrt(pow((P_VEL(p)[0] - C_U(c,t)),2.0) + pow((P_VEL(p)[1] - C_V(c,t)), 2.0)); Re = RO_AIR * P_DIAM(p) * rel_vel /MU_AIRů /* Reynolds number */ Pr = CP_AIR*MU_AIR/K_AIR; /* Prandtl number */ HTC = K_AIR * (2.0 + 0.6*pow(Re,0.5)*pow(Pr,1./3.))/ P_DIAM(p); delta_temp = P_DT(p) * area * HTC * (C_T(c,t)-P_T(p))/(P_MASS(p)*CP_WATER); P_T(p) = P_T(p) + delta_temp; } ----------------------------------------------- This is suitable for a 2D-case with constant material properties. I'm able to adapt this function for my needs. I've found it online in a PhD thesis. Maybe this code helps somebody who is facing the same problem.

 November 10, 2016, 12:35 #3 New Member   Hannes Join Date: Nov 2016 Location: Austria Posts: 11 Rep Power: 3 Hey everyone, right now I am getting really tired of troubleshooting, maybe it's just a simple mistake but I don't see it. What I am working on are particles which are injected into a flame, they heat up and fall through cold air afterwards where they are supposed to cool down. Here is my UDF with the custom Nusselt corellation: ---------------------------------------------------------- #include "udf.h" #include "math.h" #include "dpm_types.h" #include "dpm_laws.h" #include "mem.h" #include "dpm.h" #include "materials.h" DEFINE_DPM_LAW(HeatingSphere,p,c) { Thread *t0 = P_CELL_THREAD(p); //Pointer on Thread real gastemp = C_T(c,t0); //Flue Gas Temperature real eta = C_MU_L(c,t0); //Molecular Viscosity of the flue gas real lambda = C_K_L(c,t0); //Thermal conductivity of flue gas real rho = C_R(c,t0); //Density of flue gas real cp = C_CP(c,t0); //Specific heat of flue gas //calculation of the relative velocity real rel_vel = sqrt(pow((P_VEL(p)[0] - C_U(c,t0)),2) + pow((P_VEL(p)[1] - C_V(c,t0)),2) + pow((P_VEL(p)[2] - C_W(c,t0)),2)); real Pr = eta * cp / lambda; //Prandtl real Re = rel_vel * P_DIAM(p) * rho / eta; //Reynols real Nu = 0.568 * pow(Pr,0.333333) * sqrt(Re) + 0.0104 * pow(Pr,0.3333333) * pow(Re,0.666666) + 1.7; //Custom Nusselt Correllation real alpha = lambda * Nu / P_DIAM(p); //Heat Transfer Coefficient real Area = 4.0 * M_PI * pow(P_DIAM(p),2); //Particle Surface real massPartikel = P_MASS(p); real partikeltemp = P_T(p); real timestep = P_DT(p); real sigma = 5.670367e-8; /* Stefan Bolzmann Konstante */ real G = C_STORAGE_R_XV(c,t0,SV_DO_IRRAD,0); real T_radiation = pow(G/(4*sigma),0.25); //Radiation Temperature Material *m = P_MATERIAL(p); real epsilon = DPM_EMISSIVITY(p,m);//Particle Emissivity real cpParticle = DPM_SPECIFIC_HEAT(p,P_T(p)); real dT = timestep * Area * ( alpha * (gastemp - P_T(p)) + epsilon * sigma * (pow(T_radiation,4) - pow(P_T(p),4) ) ) / (massPartikel * cpParticle); P_T(p) = P_T(p) + dT; } ----------------------------------------------------------------- The calculation of Reynolds and Nusselt works pretty good, the calculated values look plausible. Particle Temperatures rise much faster and higher as I would expect. Any ideas where the mistake might be? Thank you! Edit: There's one thing more. The particle specific heat is defined as a temperature dependend function, it works fine when I don't use the custom dpm heating law. But, after I activate the dpm law, the specific heat of the particles doesn't fit the particle temperatures anymore.

 June 2, 2017, 05:43 #4 New Member   Outside US and Canada Join Date: Apr 2015 Location: Beijing Posts: 9 Rep Power: 4 Hi MetricDevice, How do you modify mass and energy source in continuous phase?

 June 2, 2017, 06:38 #5 New Member   Hannes Join Date: Nov 2016 Location: Austria Posts: 11 Rep Power: 3 I almost forgot about this topic, sorry. Here's the solution: real Area = 4.0 * M_PI * pow(P_DIAM(p),2); //Particle Surface I've made a really stupid mistake and calculated the particle surface area with the corresponding particle diameter, not with the radius. Sometimes, i could bang my head against the wall but whatever... @arctan There is no mass source, the energy source is implemented using the default function of Fluent.

 June 2, 2017, 08:49 #6 New Member   Outside US and Canada Join Date: Apr 2015 Location: Beijing Posts: 9 Rep Power: 4 In your solution, you mean: real Area = 4.0 * M_PI * pow(P_DIAM(p)/2.0,2); //Particle Surface Anyway, I'm writing my custom vaporization law (law 2) for evaporation of water droplet with DEFINE_DPM_LAW and I need to modify mass and energy terms in continuous phase. But I don't know how, may be with DEFINE_DPM_SOURCE? Any ideas? What do you mean by "the energy source is implemented using the default function of Fluent."? Thanks

 June 2, 2017, 09:04 #7 New Member   Hannes Join Date: Nov 2016 Location: Austria Posts: 11 Rep Power: 3 I'd try DEFINE_DPM_HEAT_MASS; so far I haven't worked with evaporating droplets but I guess, that's the way to go.

 Thread Tools Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post Sharadkumar Yeri FLUENT 44 November 15, 2017 23:44 vaina74 OpenFOAM Pre-Processing 30 August 23, 2017 13:25 Luiz Eduardo Bittencourt Sampaio (Sampaio) OpenFOAM Mesh Utilities 42 January 8, 2017 13:55 avinashjagdale OpenFOAM Native Meshers: snappyHexMesh and Others 50 March 7, 2016 03:35 Shogan FLUENT 1 May 28, 2014 15:03

All times are GMT -4. The time now is 06:03.