# defining temperature profile with UDF

 Register Blogs Members List Search Today's Posts Mark Forums Read

August 2, 2010, 11:21
defining temperature profile with UDF
#1
Member

Join Date: Apr 2010
Posts: 42
Rep Power: 12
Dear all
I tried to define the temperature profile which is attached, with UDF.
Here is the UDF:
{
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 */
{
y = x[1];
b=x[0];
}
}
////////////////////////////////////
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?
Attached Images
 123.bmp (32.6 KB, 195 views)

 August 2, 2010, 23:18 #2 New Member   Join Date: Jul 2010 Posts: 6 Rep Power: 12 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, 02:28 #3 Member   mohammad Join Date: Apr 2010 Posts: 42 Rep Power: 12 Thanks for your help. I will try this. But what's the difference between them?

 August 3, 2010, 03:17 #4 New Member   Join Date: Jul 2010 Posts: 6 Rep Power: 12 eg. 295, the type of variable is "int"; 295., "real"; maybe this is ur problem.

 August 3, 2010, 03:24 #5 Member   mohammad Join Date: Apr 2010 Posts: 42 Rep Power: 12 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, 05:29 #6 New Member   Join Date: Jul 2010 Posts: 6 Rep Power: 12 4.331683168. oh, i don't think it a right way to discribe a real value either.

June 24, 2013, 15: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

Quote:

 July 2, 2013, 00:30 #9 New Member   hamid Join Date: Jul 2013 Posts: 5 Rep Power: 9 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, 07:26 #10 Member   Yash Ganatra Join Date: Mar 2013 Posts: 67 Rep Power: 10 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, 00:09 #11 New Member   hamid Join Date: Jul 2013 Posts: 5 Rep Power: 9 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, 00:15 #12 Member   Yash Ganatra Join Date: Mar 2013 Posts: 67 Rep Power: 10 Just try it out and get back. Yash