|
[Sponsors] |
[UDF] Relative coordinates in logarithmic velocity profile |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
April 19, 2009, 13:31 |
[UDF] Relative coordinates in logarithmic velocity profile
|
#1 |
New Member
Join Date: Apr 2009
Posts: 14
Rep Power: 17 |
Hello, I have a problem with the definition of a boundary condition with UDF to simulation of the wind in a terrain. I have to define a velocity inlet in a 3d domain; this condition is a logarithmic velocity profile. I can define the logarithmic velocity profile with UDF, like this:
#include "udf.h" DEFINE_PROFILE(log_velocity,thread,index) { real x[ND_ND]; real z; face_t f; begin_f_loop(f,thread) { F_CENTROID(x,f,thread); z = x[2]; F_PROFILE(f,thread,index) = 3*log(z/0.01)/log(10/0.01); } end_f_loop(f,thread) } My domain is this: I have to impose the logarithmic profile in the front face that is shown in figure. My question is how I define in the UDF so that the velocity in bottom of the face is equal 0. My problem is the coordinates that I use in UDF are absolute and I don’t know how to define relative coordinates, in order to the z in the equation that defines the velocity profile, is the height relatively to the bottom of the face and not the absolute height. I would appreciate any suggestions. Last edited by cfdworker; April 23, 2009 at 21:39. |
|
April 21, 2009, 06:28 |
|
#2 |
New Member
VLKOH
Join Date: Mar 2009
Location: Malaysia
Posts: 20
Rep Power: 17 |
hi, i need help on creating UDF for logarithmic velocity profile for my final year project also. But i am not very familiar with c programming language...any good example for me to follow??
thanks |
|
April 23, 2009, 12:53 |
|
#3 |
New Member
VLKOH
Join Date: Mar 2009
Location: Malaysia
Posts: 20
Rep Power: 17 |
Hi cfdworker....
since ur simulation problem is 3D, then how about the y vector?? and for the array part,shudnt it be 3D array?? Any pro or expert here mind to share their suggestion and opinion? thanks. |
|
April 23, 2009, 13:25 |
|
#4 |
New Member
Join Date: Apr 2009
Location: KA, Germany
Posts: 20
Rep Power: 17 |
I guess your boundary condition for the landscape ist WALL. To estimate the distace from any cell to the nearest WALL, you could maybe use C_WALL_DIST(c,t).
|
|
April 23, 2009, 18:20 |
|
#5 |
New Member
Join Date: Apr 2009
Posts: 14
Rep Power: 17 |
Hi, thanks for the reply. I tried to use the C_WALL_DIST(c,thread) macro like this:
#include "udf.h" DEFINE_PROFILE(log_velocity,thread,index) { real z; face_t f; cell_t c; begin_f_loop(f,thread) { z = C_WALL_DIST(c,thread); F_PROFILE(f,thread,index) =3*log(z/0.01)/log((10)/0.01); } end_f_loop(f,thread) } But when i selected the udf in velocity inlet in boundary condition, fluent gave me this message: Error: FLUENT received fatal signal (ACCESS_VIOLATION) 1. Note exact events leading to error. 2. Save case/data under new name. 3. Exit program and restart to continue. 4. Report error to your distributor. Error Object: () I think the problem is that the boundary condition that I set is to a face and I use a macro for cells in the udf. I don’t know how to use this macro for my situation. Can anyone help me with this issue ? Thanks in advance Last edited by cfdworker; April 23, 2009 at 18:44. |
|
April 27, 2009, 11:25 |
|
#6 |
New Member
Join Date: Apr 2009
Posts: 14
Rep Power: 17 |
Someone can help me. Please I need someone who is patient to help me with this problem.
Thanks. |
|
April 27, 2009, 21:38 |
|
#7 |
New Member
Join Date: Apr 2009
Posts: 14
Rep Power: 17 |
I tried to make another udf, as shown:
#include "udf.h" DEFINE_PROFILE(inlet_x_velocity, thread, position) { cell_t c; begin_c_loop(c, thread) { C_PROFILE(c, thread, position) = 3.*log(C_WALL_DIST(c,thread)/(0.01))/log(10./(0.01)); } end_c_loop(c, thread) } But gave me the same error message. I want to use the distance between the faces centroids that were determined by the F_CENTROID(f,thread) macro in the first udf and the terrain, in the face where I have to impose the velocity profile. But the only macro i know that give an distance is the C_WALL_DIST(c,thread), and this is applied to cells. I don't Know how to determine the distance for faces, for my problem. Please, i beg for help. |
|
April 29, 2009, 05:03 |
|
#8 |
Senior Member
Max
Join Date: Mar 2009
Posts: 133
Rep Power: 17 |
Hello,
try this one and let me know if it works. Having a look at the UDF-Manual section 3.2.5 might also help. #include "udf.h" DEFINE_PROFILE(log_velocity,thread,index) { real z; face_t f; cell_t c; Thread *tc; begin_f_loop(f,thread) { c = F_C0(f,thread); tc = THREAD_T0(f,thread); z = C_WALL_DIST(c,tc); F_PROFILE(f,thread,index) =3*log(z/0.01)/log((10)/0.01); } end_f_loop(f,thread) } cheers |
|
April 29, 2009, 10:14 |
|
#9 |
New Member
Join Date: Apr 2009
Posts: 14
Rep Power: 17 |
hello, thanks for the reply. I used your udf, but still gives the same error message, when I do init to start iterate. Error: FLUENT received fatal signal (ACCESS_VIOLATION) 1. Note exact events leading to error. 2. Save case/data under new name. 3. Exit program and restart to continue. 4. Report error to your distributor. Error Object: () |
|
April 29, 2009, 10:34 |
|
#10 |
Senior Member
Max
Join Date: Mar 2009
Posts: 133
Rep Power: 17 |
Hm,
seems like Fluent does not recognize C_WALL_DIST() at all. Is your case laminar or turbulent? It might be that C_WALL_DIST() is only available if a turbulence model is activated. cheers |
|
April 29, 2009, 10:59 |
|
#11 |
New Member
Join Date: Apr 2009
Posts: 14
Rep Power: 17 |
My case is turbulent. I think that the fluent recognizes the macro, i think that the problem is in using macro for cells in a boundary condition that is imposed in a face. I do not know if this is the problem. What do you think ?
Thanks |
|
April 29, 2009, 11:38 |
|
#12 |
Senior Member
Max
Join Date: Mar 2009
Posts: 133
Rep Power: 17 |
No, F_C0 and THREAD_T0 give you cell index and cell thread of the adjacent cell to each face at your boundary which is o.k. You can try the following:
type solve/set/expert in the text user interface of Fluent and enter yes if asked to keep temporary memory from being freed. Maybe a DEFINE_PROFILE macro for velocity i.e. applied for momentum equation does not has default access to C_WALL_DIST which is relevant for turbulence. Hope this helps |
|
April 29, 2009, 12:12 |
|
#13 |
New Member
Join Date: Apr 2009
Posts: 14
Rep Power: 17 |
I already did what you said, but even so it gives the same error message.
Thanks for the replys. |
|
April 30, 2009, 10:41 |
|
#14 |
Senior Member
Max
Join Date: Mar 2009
Posts: 133
Rep Power: 17 |
Hi again,
it seems like you have to do some testing what the actual problem is. If you replace C_WALL_DIST with for example C_CENTROID: does it work? This would indicate that C_WALL_DIST is to blame If so, try to hook your DEFINE_PROFILE for one of the turbulence variables, e.g. k, and check whether it works then. If yes you could iterate one single iteration/timestep, store the cell wall distance in a UDM and proceed with your velocity-profile-udf using this values. cheers |
|
April 30, 2009, 16:54 |
|
#15 |
New Member
Join Date: Apr 2009
Posts: 14
Rep Power: 17 |
Hello. I did what you said. I replace C_WALL_DIST for C_CENTROID, but still gives the same error.
|
|
May 4, 2009, 04:34 |
|
#16 |
Senior Member
Max
Join Date: Mar 2009
Posts: 133
Rep Power: 17 |
Well, then something more fundamental is wrong with your udf. If you compile your udf, what does the log-file say? Everything ok or some warnings?
cheers |
|
May 4, 2009, 11:11 |
|
#17 |
New Member
Join Date: Apr 2009
Posts: 14
Rep Power: 17 |
Hello.
I found a alternative way to define the velocity profile for my problem. What I did was, first write out a profile file at the inlet boundary, then obtain a profile file, which contains vectores of x,y,z,cell wall distance and velocity magnitude, then I read the file with excel and replace the velocity magnitude by a function of cell wall distance (which is the logarithmic function for velocity profile). Then i save the altered data and read this back to fluent as profile. Finally, then I used these profiles as boundary conditions for the inlet. Thanks for the replys. |
|
May 14, 2009, 13:27 |
|
#18 |
New Member
VLKOH
Join Date: Mar 2009
Location: Malaysia
Posts: 20
Rep Power: 17 |
hi there, how to use fluent to read the altered data??
mind to share?? Thanks. |
|
August 6, 2010, 14:11 |
|
#19 |
New Member
1236
Join Date: Mar 2010
Posts: 9
Rep Power: 16 |
dear cfdworker,
i have a problem same as your case and i have to define logarithmic velocity inlet at the beginning of cylindrical pipe.but unfortunately i have a error when i want to hook this udf and set as velocity inlet in boundary condition panel or it doesn't iterate( error is invalid number?!).please tell me how i can solve my problem.i have wrote the udf as below.velocity inlet is in y direction. #include "udf.h" DEFINE_PROFILE(inlet_y_velocity, thread, position) { real xc[ND_ND]; real ro,mu_t,visc_t,x,y,z,a,r,rw,utaw,rbi,yplus,b; cell_t c; face_t f; ro = C_R(c,thread); mu_t = C_MU_T(c,thread); visc_t=mu_t/ro; begin_f_loop(f, thread) { F_CENTROID(xc,f,thread); x = xc[0]; y = xc[1]; z = xc[2]; rw=0.5; utaw=0.0176; r=sqrt(pow(x,2)+pow(z,2)); rbi=r/rw; yplus=utaw*r/visc_t; b=(1.5*yplus*(1+rbi))/(1+2*pow(rbi,2.)); F_PROFILE(f, thread, position) = utaw*(2.5*log(b)+5.5); } end_f_loop(f, thread) } |
|
August 8, 2014, 12:59 |
wind profile
|
#20 |
New Member
Mahdi
Join Date: Nov 2012
Location: Malaysia
Posts: 27
Rep Power: 14 |
Dear friends
Would you mind if I remind this thread after along time? Actually I want to simulate a tower with 30 levels in a 3D domain created by ICEM CFD. My objective is to simulate airflow around the tower and also investigate about the flow inside apartments in several levels which their windows are open in windward direction so I concern about wind profile which gives different value of velocity in different levels (heights). I have found that Log law wind profile will be used in this study but I'm very beginner in UDF so would you please guide me how come I can write a correct UDF suitable in my case? I will use K-Epsilon RNG and K-Omega turbulence models in my study and inlet is velocity inlet and outlet will be pressure outlet. the dimensions of domain is 700m (X), 350m (Y) and 280m (Z) which Z is height direction in this case. and apartments will be in 1m, 6m, 10m, 25m and 50 m of height. Would you please guide me how I can solve my problem? |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
3D UDF Paraboilc Velocity Profile (Can't Maintain) | Sing | FLUENT | 12 | August 7, 2017 07:25 |
[boundary condition] logarithmic velocity profile | cfdworker | FLUENT | 2 | April 18, 2009 00:36 |
maintaining a logarithmic velocity distribution | Morten Andersen | CFX | 1 | January 8, 2007 12:37 |
Variables Definition in CFX Solver 5.6 | R P | CFX | 2 | October 26, 2004 03:13 |
Terrible Mistake In Fluid Dynamics History | Abhi | Main CFD Forum | 12 | July 8, 2002 10:11 |