|
[Sponsors] |
August 2, 2010, 12:21 |
defining temperature profile with UDF
|
#1 |
Member
mohammad
Join Date: Apr 2010
Posts: 42
Rep Power: 16 |
Dear all
I tried to define the temperature profile which is attached, with UDF. Here is the UDF: DEFINE_PROFILE(x_temperature,thread,index) { Domain *domain=Get_Domain(1); real x[ND_ND]; /* this will hold the position vector */ real y,b; face_t f; begin_f_loop(f,thread) /* loops over all faces in the thread passed in the DEFINE macro argument */ { F_CENTROID(x,f,thread); y = x[1]; b=x[0]; F_PROFILE(f,thread,index) =295+(11734506.78*(pow((y/2),2)-(pow(y,4)/(8.1*0.00001))))-4.331683168+(15.8038854*b); } end_f_loop(f,thread) } //////////////////////////////////// I hook the UDF in the boundary condition and i can get the results without any problem. However the results are wrong. Have i written the UDF correctly? Please help me, i really stuck on this problem. |
|
August 3, 2010, 00:18 |
|
#2 |
New Member
Join Date: Jul 2010
Posts: 6
Rep Power: 16 |
how about change"F_PROFILE(f,thread,index) =295+(11734506.78*(pow((y/2),2)-(pow(y,4)/(8.1*0.00001))))-4.331683168+(15.8038854*b);
" to this "F_PROFILE(f,thread,index) =295.+(11734506.78*(pow((y/2.),2.)-(pow(y,4.)/(8.1*0.00001))))-4.331683168+(15.8038854*b); " |
|
August 3, 2010, 03:28 |
|
#3 |
Member
mohammad
Join Date: Apr 2010
Posts: 42
Rep Power: 16 |
Thanks for your help.
I will try this. But what's the difference between them? |
|
August 3, 2010, 04:17 |
|
#4 |
New Member
Join Date: Jul 2010
Posts: 6
Rep Power: 16 |
eg. 295, the type of variable is "int";
295., "real"; maybe this is ur problem. |
|
August 3, 2010, 04:24 |
|
#5 |
Member
mohammad
Join Date: Apr 2010
Posts: 42
Rep Power: 16 |
Thanks for your reply.
why shouldn't i put "." after 4.331683168. For example F_PROFILE(f,thread,index) =295.+(11734506.78*(pow((y/2.),2.)-(pow(y,4.)/(8.1*0.00001))))-4.331683168.+(15.8038854*b); |
|
August 3, 2010, 06:29 |
|
#6 |
New Member
Join Date: Jul 2010
Posts: 6
Rep Power: 16 |
4.331683168.
oh, i don't think it a right way to discribe a real value either. |
|
August 3, 2010, 12:58 |
|
#7 |
Member
mohammad
Join Date: Apr 2010
Posts: 42
Rep Power: 16 |
Thanks again for your reply.
I checked that code too, but unfortunately the results were still the same and there was no difference between them. I have a question about velocity profile. Should i make this change in velocity profile too? I defined velocity profile too. UDF is: # include "udf.h" # include "math.h" DEFINE_PROFILE(x_velocity,thread,index) { real x[ND_ND]; /* this will hold the position vector */ real y; face_t f; begin_f_loop(f,thread) /* loops over all faces in the thread passed in the DEFINE macro argument */ { F_CENTROID(x,f,thread); y = x[1]; F_PROFILE(f,thread,index) =2* 0.05391789*(1-((y/0.00225)*(y/0.00225))) ; } end_f_loop(f,thread) } DEFINE_PROFILE(x_temperature,thread,index) { Domain *domain=Get_Domain(1); real x[ND_ND]; /* this will hold the position vector */ real y,b; face_t f; begin_f_loop(f,thread) /* loops over all faces in the thread passed in the DEFINE macro argument */ { F_CENTROID(x,f,thread); y = x[1]; b=x[0]; F_PROFILE(f,thread,index) =295+(11734506.78*(pow((y/2),2)-(pow(y,4)/(8.1*0.00001))))-4.331683168+(15.8038854*b); } end_f_loop(f,thread) } Thanks again |
|
June 24, 2013, 16:52 |
hi
|
#8 |
New Member
UMICH
Join Date: Jun 2013
Posts: 1
Rep Power: 0 |
How can I do the same problem but in 3d, thanks
|
|
July 2, 2013, 01:30 |
|
#9 |
New Member
hamid
Join Date: Jul 2013
Posts: 5
Rep Power: 13 |
hi all,
i am trying to write a udf for a linear temperature distribution along the wall as a temperature boundary condition. the wall is subjected to an end of 325 K and an end of 300 K temperature and a linear distribution should be peresent for the wall. the wall position from the origin -0.06 to +0.06 . i found a udf here but it seems that does not work because after interpreting and when i want to initialize an access violation error occurs. please please help me. this is the first time that i work with ansys fluent. thank you. //////////////////// #include "udf.h" DEFINE_INIT(linear_temp,d) { cell_t c; Thread *t; real xc[ND_ND]; real m; real Tt=325., Tb=300.; real xb=0.06,xt=-0.06; real dT=(Tt-Tb)/(xt-xb); /* loop over all cell threads in the domain */ thread_loop_c(t,d) { /* loop over all cells */ begin_c_loop_all(c,t) { C_CENTROID(xc,c,t); m=xc[0]; C_T(c,t)=Tb+(m-xb)*dT; } end_c_loop_all(c,t) } } //////////////////// |
|
July 2, 2013, 08:26 |
|
#10 |
Member
Yash Ganatra
Join Date: Mar 2013
Posts: 67
Rep Power: 13 |
You can't use C_T(c,t) = something ; FLUENT automatically computes cell temperature ; so that's the reason I guess access violation is coming ; go through FLUENT UDF MANUAL especially the DEFINE_PROFILE macro.
|
|
July 3, 2013, 01:09 |
|
#11 |
New Member
hamid
Join Date: Jul 2013
Posts: 5
Rep Power: 13 |
thanks yashganatra,
I have change my udf to the the following code. is it correct for a wall boudary condition??? best regards //////////////////// #include "udf.h" DEFINE_PROFILE(linear_temp,thread,i) { real x[ND_ND]; real m; real Tt=325.,Tb=300.; real xb=0.06,xt=-0.06; real dT=(Tt-Tb)/(xt-xb); face_t f; begin_f_loop(f,thread) { F_CENTROID(x,f,thread); m=x[0]; F_PROFILE(f,thread,i)=Tb+(m-xb)*dT; } end_f_loop(f,thread) } //////////////////// |
|
July 3, 2013, 01:15 |
|
#12 |
Member
Yash Ganatra
Join Date: Mar 2013
Posts: 67
Rep Power: 13 |
Just try it out and get back.
Yash |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
UDF error - parabolic velocity profile - 3D turbine | Zaqie | Fluent UDF and Scheme Programming | 9 | June 25, 2016 20:08 |
specified shear at wall - temperature gradient - UDF - access violation error | senD | Fluent UDF and Scheme Programming | 9 | September 18, 2014 08:29 |
Define profile inlet_temperature in UDF | mohammadkm | Fluent UDF and Scheme Programming | 19 | December 24, 2013 23:42 |
UDF temp. profile BC | Shashikant | FLUENT | 0 | June 24, 2006 04:16 |
temperature profile on boundary | sivakumar | FLUENT | 5 | November 24, 2002 01:58 |