CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > ANSYS > FLUENT

Custom Nusselt Number for DPM

Register Blogs Community New Posts Updated Threads Search

Like Tree1Likes
  • 1 Post By MetricDevice

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   November 8, 2016, 02:54
Default Custom Nusselt Number for DPM
  #1
New Member
 
Hannes
Join Date: Nov 2016
Location: Austria
Posts: 12
Rep Power: 9
MetricDevice is on a distinguished road
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!
MetricDevice is offline   Reply With Quote

Old   November 8, 2016, 03:48
Default
  #2
New Member
 
Hannes
Join Date: Nov 2016
Location: Austria
Posts: 12
Rep Power: 9
MetricDevice is on a distinguished road
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.
mrhaghighatjoo likes this.
MetricDevice is offline   Reply With Quote

Old   November 10, 2016, 11:35
Default
  #3
New Member
 
Hannes
Join Date: Nov 2016
Location: Austria
Posts: 12
Rep Power: 9
MetricDevice is on a distinguished road
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.
MetricDevice is offline   Reply With Quote

Old   June 2, 2017, 05:43
Default
  #4
New Member
 
Outside US and Canada
Join Date: Apr 2015
Location: Beijing
Posts: 9
Rep Power: 11
arctan is on a distinguished road
Hi MetricDevice,
How do you modify mass and energy source in continuous phase?
arctan is offline   Reply With Quote

Old   June 2, 2017, 06:38
Default
  #5
New Member
 
Hannes
Join Date: Nov 2016
Location: Austria
Posts: 12
Rep Power: 9
MetricDevice is on a distinguished road
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.
MetricDevice is offline   Reply With Quote

Old   June 2, 2017, 08:49
Default
  #6
New Member
 
Outside US and Canada
Join Date: Apr 2015
Location: Beijing
Posts: 9
Rep Power: 11
arctan is on a distinguished road
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
arctan is offline   Reply With Quote

Old   June 2, 2017, 09:04
Default
  #7
New Member
 
Hannes
Join Date: Nov 2016
Location: Austria
Posts: 12
Rep Power: 9
MetricDevice is on a distinguished road
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.
MetricDevice is offline   Reply With Quote

Old   February 6, 2018, 12:13
Default
  #8
New Member
 
sowmi
Join Date: Mar 2017
Posts: 14
Rep Power: 9
Sowmi is on a distinguished road
Quote:
Originally Posted by MetricDevice View Post
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.
Hi Metric device
I am also facing the same problem and your UDF helped me to correlate new nusselt calculation. Thanks for sharing.
Sowmi is offline   Reply With Quote

Old   October 11, 2020, 07:57
Default
  #9
New Member
 
Join Date: Oct 2019
Posts: 12
Rep Power: 6
ArikGuyz is on a distinguished road
Quote:
Originally Posted by arctan View Post
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
Hello. Did you manage to add energy source to continuous phase considering the temperature change implemented through custom law.

It has been a while since this post created. But I hope I can get an answer. Thank you.
ArikGuyz is offline   Reply With Quote

Reply


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 Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


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


All times are GMT -4. The time now is 18:51.