
[Sponsors] 
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.7894e05 #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 2Dcase 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.670367e8; /* 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  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
Nusselt number calculation in Fluent  Sharadkumar Yeri  FLUENT  44  November 15, 2017 23:44 
decomposePar problem: Cell 0contains face labels out of range  vaina74  OpenFOAM PreProcessing  30  August 23, 2017 13:25 
Mesh Refinement  Luiz Eduardo Bittencourt Sampaio (Sampaio)  OpenFOAM Mesh Utilities  42  January 8, 2017 13:55 
Error snappyhexmesh  Multiple outside loops  avinashjagdale  OpenFOAM Native Meshers: snappyHexMesh and Others  50  March 7, 2016 03:35 
Cluster ID's not contiguous in computenodes domain. ???  Shogan  FLUENT  1  May 28, 2014 15:03 