|
[Sponsors] |
November 8, 2016, 02:54 |
Custom Nusselt Number for DPM
|
#1 |
New Member
Hannes
Join Date: Nov 2016
Location: Austria
Posts: 12
Rep Power: 9 |
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, 03:48 |
|
#2 |
New Member
Hannes
Join Date: Nov 2016
Location: Austria
Posts: 12
Rep Power: 9 |
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, 11:35 |
|
#3 |
New Member
Hannes
Join Date: Nov 2016
Location: Austria
Posts: 12
Rep Power: 9 |
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: 11 |
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: 12
Rep Power: 9 |
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: 11 |
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: 12
Rep Power: 9 |
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.
|
|
February 6, 2018, 12:13 |
|
#8 | |
New Member
sowmi
Join Date: Mar 2017
Posts: 14
Rep Power: 9 |
Quote:
I am also facing the same problem and your UDF helped me to correlate new nusselt calculation. Thanks for sharing. |
||
October 11, 2020, 07:57 |
|
#9 | |
New Member
Join Date: Oct 2019
Posts: 12
Rep Power: 6 |
Quote:
It has been a while since this post created. But I hope I can get an answer. Thank you. |
||
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
decomposePar problem: Cell 0contains face labels out of range | vaina74 | OpenFOAM Pre-Processing | 37 | July 20, 2020 05:38 |
Nusselt number calculation in Fluent | Sharadkumar Yeri | FLUENT | 52 | May 29, 2019 06:29 |
[snappyHexMesh] Error snappyhexmesh - Multiple outside loops | avinashjagdale | OpenFOAM Meshing & Mesh Conversion | 53 | March 8, 2019 09:42 |
[mesh manipulation] Mesh Refinement | Luiz Eduardo Bittencourt Sampaio (Sampaio) | OpenFOAM Meshing & Mesh Conversion | 42 | January 8, 2017 12:55 |
Cluster ID's not contiguous in compute-nodes domain. ??? | Shogan | FLUENT | 1 | May 28, 2014 15:03 |