CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Fluent UDF and Scheme Programming (https://www.cfd-online.com/Forums/fluent-udf/)
-   -   How to change the turbulent viscosity via UDF!? (https://www.cfd-online.com/Forums/fluent-udf/68707-how-change-turbulent-viscosity-via-udf.html)

dmoroian October 29, 2009 12:17

First see if you get the right values from C_WALL_DIST macro. If not, then it is rather simple to write your own udf that computes this distance using the BOUNDARY_FACE_GEOMETRY macro.

Dragos

vsampath October 29, 2009 12:21

Thanks a lot.....

I tried the C_WALL_DIST.... the udf compiles but when initaliasing it shows error....... I will try with the Boundary_FACE_geometry..... where can i find an example on how to use that??

dmoroian October 29, 2009 12:46

I wouldn't give up using C_WALL_DIST macro. What error do you get? Could you post your udf? There is an error in your previous posted code.
Try first your code changing the line:
Code:

y=C_WALL_DIST(c,t);
with:
Code:

y=C_WALL_DIST(cell,thread);
...I hope you understand the error...


However, here is an untested example of how to compute it your self (should be valid for Gina, too):
Code:

real wallDist(cell_t c, Thread *t)
{
  real A[ND_ND], es[ND_ND], dr0[ND_ND];
  real ds, A_by_es;
  real y;
  int n;
  face_t f;
  Thread *tf;
 
  c_face_loop(c, t, n)        /* loops over all faces of a cell */
  {
      f = C_FACE(c,t,n);
      tf = C_FACE_THREAD(c,t,n);

      if(BOUNDARY_FACE_P(tf)) /* if the face is on boundary */
      {
        BOUNDARY_FACE_GEOMETRY(f,tf,A,ds,es,A_by_es,dr0);
        y = NV_DOT(es,dr0);

        return y;
      }
  }
  return 0;
}

Dragos

gina November 1, 2009 15:04

Hi Vivek,
can you find any solution for your udf?
for me, I could not turn it to have good results :(:(:(

gina November 1, 2009 15:36

there is someone who can help me?:(

I would like to know whether a UDF turbulent viscosity permits me to provide a turbulent viscosity profile where the turbulent visosity is a function of wall normal distance y.
I know that, i must calculate the wall normal distance and define turbulent viscosity as a function of the distance.

but how to do this?? I AM NEW IN UDF ALSO IN C PROGRAMATION.....

please i need some help

dmoroian November 2, 2009 00:46

Hi Gina,
I think your approach should work if you are using a low Re turbulence model (meaning without wall functions). Did you check if the C_WALL_DIST gives you the right values?

Dragos

gina November 2, 2009 15:31

hi Dragos,
I use k-e model with enhanced wall treatment.
my Reynolds number= 5400.

Gina

dmoroian November 2, 2009 17:28

Do you have enough resolution near the wall? If you don't then enhanced wall treatment will apply a wall function and your back to what Krishna said before.
If the resolution is enough then what is the error you are complaining about?
Have you checked the C_WALL_DISTANCE macro if it provides the right value?
You can also attach a debugger to your udf and follow it step by step. There is an example on wiki describing how to do this (http://www.cfd-online.com/Wiki/Fluen..._udf_using_gdb).

Dragos

gina November 3, 2009 13:05

dear dragos,
yes i have enough resolution near the wall.
no i have not checked the C_WALL_DISTANCE macro if it provides right value, how to do this?
the objective of my udf is to improved the nu_t formula in the near wall region when y_plus<=20.
can you send me your mail @ to explain better what i want to to
thank you

gina

pratikddhoot March 30, 2016 14:29

Quote:

Originally Posted by vsampath (Post 234415)
Gina i have a similar problem i am interested in getting the y co-ordinate

this is my udf

#include "udf.h"
DEFINE_PROPERTY(cell_viscosity,cell,thread)
{
cell_t c;
real x[ND_ND];
real mu_lam;
real y;
Domain *domain = Get_Domain(1);
Thread *t;
y=C_WALL_DIST(c,t);
printf("y= %f \n",y);
mu_lam= 0.001002*(2-(y/0.01));
printf("MU= %f \n",mu_lam);
return mu_lam;

}


y=C_WALL_DIST(c,t); does not seem to work for me...... is their an alternative way???

thanks

C_WALL_DIST is not a pre defined macro in udf. If you want the distance of a cell from a wall, you can use the centroid macro over a loop of all the cells and get distance from a particular side.

If you have used a centroid macro or any other method, please share. I am struggling with this too.

LuckyTran April 15, 2016 17:57

Quote:

Originally Posted by pratikddhoot (Post 592463)
C_WALL_DIST is not a pre defined macro in udf. If you want the distance of a cell from a wall, you can use the centroid macro over a loop of all the cells and get distance from a particular side.

If you have used a centroid macro or any other method, please share. I am struggling with this too.

Check out post #23 by Dragos. There's a UDF written that you can use.

pratikddhoot April 18, 2016 10:33

Quote:

Originally Posted by LuckyTran (Post 595264)
Check out post #23 by Dragos. There's a UDF written that you can use.

Thanks. But that still didn't help. I am still struggling to find the wall distance. If you have a better solution let me know.

Ekta J January 17, 2017 14:31

Quote:

Originally Posted by dmoroian (Post 233850)
I'm afraid that if you use a udf for the turbulent viscosity, you have to provide it for all the cells.
But I think you may check the manuals for the default implementation and add it to your own.
For example:
Code:

  real mu_t;
  real rho = C_R(c,t);
  real k  = C_K(c,t);
  real d  = C_D(c,t);

  mu_t = M_keCmu*rho*SQR(k)/d;

  return mu_t;

or try the default macro and see if it works:
Code:

mu_t  = C_MU_T(c,t);
Dragos

Hello, Does anyone know the correct udf for modifying turbulent viscosity in k-epsilon per phase model? (for Euler-Euler)

I am using the following udf (modified as per my knowledge, from the basic udf for k-epsilon mixture model) But it does not seem to be taking the correct value of k, epsilon etc from the fluent:

"
#include "udf.h"


DEFINE_TURBULENT_VISCOSITY(mu_t_ke_air,c,t)
{

real rho_g, KE_g, D_g, mu_t_g;

rho_g = C_R(c, t); /* gas phase density */
KE_g = C_K(c, t); /* gas phase Kinetic energy */
D_g = C_D(c, t); /* gas phase epsilon */

mu_t_g= 0.09*rho_g*KE_g*KE_g/D_g;

C_UDMI(c,t,2) = mu_t_g; // (Calculated above)

return mu_t_g;

}
"


All times are GMT -4. The time now is 20:06.