CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   Fluent UDF and Scheme Programming (http://www.cfd-online.com/Forums/fluent-udf/)
-   -   defining temperature profile with UDF (http://www.cfd-online.com/Forums/fluent-udf/78786-defining-temperature-profile-udf.html)

mohammadkm August 2, 2010 11:21

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.

oldfreshman August 2, 2010 23:18

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);
"

mohammadkm August 3, 2010 02:28

Thanks for your help.
I will try this. But what's the difference between them?

oldfreshman August 3, 2010 03:17

eg. 295, the type of variable is "int";
295., "real";
maybe this is ur problem.

mohammadkm August 3, 2010 03:24

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);

oldfreshman August 3, 2010 05:29

4.331683168.
oh, i don't think it a right way to discribe a real value either.

mohammadkm August 3, 2010 11:58

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

drek26 June 24, 2013 15:52

hi
 
How can I do the same problem but in 3d, thanks



Quote:

Originally Posted by oldfreshman (Post 269901)
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);
"


Hamid-Moezzi July 2, 2013 00:30

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)
}
}
////////////////////

yashganatra July 2, 2013 07:26

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.

Hamid-Moezzi July 3, 2013 00:09

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)
}
////////////////////

yashganatra July 3, 2013 00:15

Just try it out and get back.

Yash


All times are GMT -4. The time now is 17:31.