|
[Sponsors] |
February 5, 2012, 16:46 |
UDF for energy source term
|
#1 |
New Member
Join Date: Feb 2012
Posts: 3
Rep Power: 14 |
in my heat transfer model i want to write a udf for the energy source term
S y = - density * dH\dt where H= the total enthalpy , t= time my udf is ; #include "udf.h" #define dens 800.0 DEFINE_SOURCE(heat source,cell,thread,dS,eqn) { real source ; source= - C_H-G(cell,thread)*dens ; dS [eqn] =0 ; return source ; } can any one help me to , i dont know if the cell enthaly gredient is equal to the chane of enthalpy with time? |
|
February 25, 2012, 10:26 |
|
#2 |
New Member
Join Date: Feb 2012
Posts: 3
Rep Power: 14 |
im waiting for ur help???
|
|
February 28, 2012, 09:36 |
|
#3 |
New Member
Philipp Schapotschnikow
Join Date: Oct 2010
Posts: 11
Rep Power: 16 |
No, the gradient is a spacial derivative. Besides, it is a vector. You need a time derivative, which YOU have to provide.
|
|
March 1, 2012, 22:57 |
|
#4 |
New Member
Join Date: Feb 2012
Posts: 3
Rep Power: 14 |
yes u are right
but how can i write the dh/dt? |
|
March 6, 2012, 17:49 |
|
#5 |
Senior Member
Micael
Join Date: Mar 2009
Location: Canada
Posts: 157
Rep Power: 18 |
I did this before. I don't have access to it right now, but here is the idea (I AM NOT SURE OF THE EXACT SYNTAX, I just write it roughly by memory):
1- compute/store H in a UDM with a "Adjust" UDF 2- then derive it in your Source UDF, something like that (first order in that example): time_step = "macro for time step goes here"; dHdt = (UDM(0) - UDM_M1(0)) / time_step; // suppose you put H in UDM(0) For what I remember, it was not that easy to implement, but the idea is there. Among all, make sure to understand exactly when "Adjust" is executed. This line: dS [eqn] =0 ; can be a problem. Make sure to understand what it means, look at UDF guide. You may need to derive your source term to ever converge (depend on your problem). I always derive my source term, it is either safer or downright necessary (numerically). Keep motivation high, this problem will be challenging if you are beginner, but it is feasible. Last edited by Micael; March 7, 2012 at 18:50. |
|
March 7, 2012, 17:40 |
|
#6 |
Senior Member
Real Name :)
Join Date: Jan 2010
Location: United States
Posts: 192
Rep Power: 16 |
Perhaps something like the following:
Make sure you enable a user-defined memory location... Also, I'm assuming you want the density at the current time step, not the average density between the two timesteps (current and previous). Also, enthalpy has a spatial gradient (x/y/z), but you want the gradient w.r.t. time. This is a crude approximation of a derivative. Ideally, you should do some higher order approximations. Finally: there is an "if" statement in there to ensure that, at the beginning of the simulation where you have no derivative information, no source term is calculated. --ComputerGuy Code:
#include "udf.h" DEFINE_SOURCE(heat_source,cell,thread,dS,eqn) { real source; source=0.0; real dHdt; dHdt=(C_H(cell,thread)-C_UDMI(cell,thread,0))/CURRENT_TIMESTEP; if(CURRENT_TIME>0) { source= -dHdt*C_R(cell,thread); } C_UDMI(cell,thread,0)=C_H(cell,thread); dS[eqn] =0.0; return source; } |
|
March 7, 2012, 19:00 |
|
#7 | |
Senior Member
Micael
Join Date: Mar 2009
Location: Canada
Posts: 157
Rep Power: 18 |
Quote:
Code:
C_UDMI(cell,thread,0)=C_H(cell,thread); Keep in mind that dS[eqn]=0 could lead to convergence problem, but it is ok to try it first like that. Otherwise, ComputerGuy is right, DEFINE_SOURCE should looks similar to that. Last edited by Micael; March 7, 2012 at 20:52. |
||
March 7, 2012, 19:17 |
|
#8 | |
Senior Member
Real Name :)
Join Date: Jan 2010
Location: United States
Posts: 192
Rep Power: 16 |
Quote:
ComputerGuy Code:
#include "udf.h" DEFINE_EXECUTE_AT_END(ThisRunsAtEndOfTimestep) { Domain *d; Thread *t; cell_t c; d = Get_Domain(1); /* mixture domain if multiphase */ thread_loop_c(t,d) { if (FLUID_THREAD_P(t)) { begin_c_loop(c,t) { C_UDMI(c,t,0)=C_H(c,t); } end_c_loop(c,t) } } } DEFINE_SOURCE(heat_source,cell,thread,dS,eqn) { real source; source=0.0; real dHdt; dHdt=(C_H(cell,thread)-C_UDMI(cell,thread,0))/CURRENT_TIMESTEP; if(CURRENT_TIME>0) { source= -dHdt*C_R(cell,thread); } dS[eqn] =0.0; return source; } |
||
March 7, 2012, 20:51 |
|
#9 |
Senior Member
Micael
Join Date: Mar 2009
Location: Canada
Posts: 157
Rep Power: 18 |
Yes, that's it ComputerGuy!
Only left is the special case of the very first time step and the whole thing is adressed. |
|
March 7, 2012, 21:13 |
|
#10 | |
Senior Member
Real Name :)
Join Date: Jan 2010
Location: United States
Posts: 192
Rep Power: 16 |
Quote:
engloly: Let us know if these work ComputerGuy |
||
March 8, 2012, 16:33 |
|
#11 |
Senior Member
Micael
Join Date: Mar 2009
Location: Canada
Posts: 157
Rep Power: 18 |
Still one detail, the UDM should be initialized so that during the first time step there is a value for it.
|
|
June 25, 2017, 07:05 |
Energy source term does not work!
|
#12 |
New Member
mehran
Join Date: Mar 2017
Posts: 1
Rep Power: 0 |
Dear all,
I wrote a udf for energy equation, but I think it depends on the magnitude of sigma_r. For sigma_r equal to 3e-1, udf works well , but if you change it to 3e-3, udf doesn't work. can anybody help me? UDF code: #include "udf.h" #define PI 3.14159265 #define ei 40e-3 #define sigma_r 3e-3 #define sigma_t 0.5e-6 #define t0 0 DEFINE_SOURCE(Energy_source, c, ct, dS, eqn) { real source; real pos[ND_ND]; real centre[ND_ND]; real flow_time; real r; NV_D(centre,=,0.8,0,0); /* Set a vector */ flow_time = CURRENT_TIME; /* Special Fluent macro */ C_CENTROID(pos,c,ct); NV_VV(pos,=,pos,-,centre); /* Vector arithmetic */ r = NV_MAG(pos); source = (ei/(4*pow(PI,2)*pow(sigma_r,3)*sigma_t))*exp(-0.5*pow((flow_time-t0)/sigma_t,2))*exp(-0.5*pow(r/sigma_r,2)); dS[eqn] = 0; return source; } |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Injection of the source term UDF | stage81 | FLUENT | 0 | September 27, 2010 08:20 |
UDF Source Term | Christian | FLUENT | 4 | August 1, 2009 06:53 |
The source term of UDF | summer | FLUENT | 0 | August 24, 2006 18:44 |
UDFs for Scalar Eqn - Fluid/Solid HT | Greg Perkins | FLUENT | 0 | October 14, 2000 00:03 |
UDFs for Scalar Eqn - Fluid/Solid HT | Greg Perkins | FLUENT | 0 | October 11, 2000 04:43 |