defining temperature profile with UDF
1 Attachment(s)
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. 
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); " 
Thanks for your help.
I will try this. But what's the difference between them? 
eg. 295, the type of variable is "int";
295., "real"; maybe this is ur problem. 
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); 
4.331683168.
oh, i don't think it a right way to discribe a real value either. 
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 
hi
How can I do the same problem but in 3d, thanks
Quote:

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=(TtTb)/(xtxb); /* 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+(mxb)*dT; } end_c_loop_all(c,t) } } //////////////////// 
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.

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=(TtTb)/(xtxb); face_t f; begin_f_loop(f,thread) { F_CENTROID(x,f,thread); m=x[0]; F_PROFILE(f,thread,i)=Tb+(mxb)*dT; } end_f_loop(f,thread) } //////////////////// 
Just try it out and get back.
Yash 
All times are GMT 4. The time now is 21:45. 