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/)
-   -   UDF-How to calculate gradient of a scalar (http://www.cfd-online.com/Forums/fluent-udf/27505-udf-how-calculate-gradient-scalar.html)

Tony Tonton February 18, 2000 14:33

UDF-How to calculate gradient of a scalar
 
Hi! I am trying to write a UDF for fluent. I need to calculate the gradient of a scalar. Does anybody have any idea how can I do that. That is, what are the macros available in Fluent that I can usse to calculate the gradient? Thanking you in advance Tony

Graham Goldin February 20, 2000 16:44

Re: UDF-How to calculate gradient of a scalar
 
Fluent will store the gradient of all User Defined Scalars. So, enable a scalar in the Define -> Models -> User Defined Scalars panel, and turn off it's solution in the Solve -> Controls panel. Then, in your UDF, copy the scalar that you want (say temperature) into the User Defined Scalar ( C_UDSI(c,t,0) ), and you can use it's gradient ( C_UDSI(c,t,0)[i], where i=0,1 and 2 in 3D).

Ilkay Sensoy February 22, 2000 17:24

Re: UDF-How to calculate gradient of a scalar
 
Hi Everbody I would like to thank Graham very much for his reply. On the other hand, I will need more help on this. I am trying to get the gradient of a scalar that I get by using UDS in Fluent. That is, I want to use the gradient of C_UDSI(c,t,0) in my UDF code. Is C_UDSI_G(c,t,0) will give me the gradient of C_UDSI(c,t,0)?

If that is correct why in my UDF the gradient returns no value?

Thanking you in advance Regards


Ilkay Sensoy February 22, 2000 20:09

Re: UDF-How to calculate gradient of a scalar
 
Hi Everybody, I post a message concerning the calculation of a gradient of a scalar. I would like to share more information on that. There is a sample program in Fluent files. It calculates the magnitude of the gradient of T^4.I have tried to compile that code. But,the code did not generate an executable file. So there is something missing. I think I need to do something in fluent to make that code to work but I do not know what. I will aprciate your help Thanking you in advance Ilkay

Greg Perkins February 24, 2000 02:51

Re: UDF-How to calculate gradient of a scalar
 
Graham,

Thanks for your suggestions.

Is it necessary to copy the scalar to a UDS as you suggest in order to determine the gradient??

For example, for temperature can one access the gradient through the macro:

C_T_G(cell,thread)[x], where x = 0, 1, 2 for the spatial direction

I notice that in mem.h, C_DUDX (which calculates the gradient of the velocity component U in the x-direction) and others are actually defined as:-

C_U_G(cell,thread)[0] etc.

Also, how do you determine the temporal gradient of a scalar in transient calculations? In particular if I have a UDS how do I get access to the transient term, to add as a source term to one of the other transport equations???

Thanks

Regards

Greg Perkins

n.phililipova July 7, 2013 06:42

UDF- How to retrieve WSS from Fluent and calculate temporal and spatial gradients?
 
How to retrieve WSS from Fluent and calculate temporal and spatial gradients in UDF?

wond July 14, 2013 05:03

Hi,Greg Perkins,

Implemented of the source term is a way, but there may be a convergence problem.

I'm not sure if i understand U, but, in my opinion,the DEFINE_UDS_UNSTEADY udf is a good reference.

Wond

billwangard July 16, 2013 12:37

How to calculate UDS gradient
 
The following code should poplulate the UDS gradient variable:

Code:

#include "udf.h"
#include "sg.h"

DEFINE_ADJUST(adjust,d)
{
  int n;
  for(n=0; n<n_uds; ++n) uds_derivatives(d, n);

  /* The UDS gradients are now available */
 
 
}

void uds_derivatives(Domain *d, int n)
{
  /* Code to compute derivative of a variable.  Variable storage allocation first.... */
        MD_Alloc_Storage_Vars(d, SV_UDSI_RG(n), SV_UDSI_G(n), SV_NULL);
        Scalar_Reconstruction(d, SV_UDS_I(n), -1, SV_UDSI_RG(n), NULL);
        Scalar_Derivatives(d, SV_UDS_I(n), -1, SV_UDSI_G(n), SV_UDSI_RG(n), NULL);
        return;
}



Then, in your UDF, you can access the gradient with C_UDSI_G(c,t). Remember, this is a vector quantity.

wond July 17, 2013 01:16

Quote:

Originally Posted by billwangard (Post 440094)
The following code should poplulate the UDS gradient variable:

Code:

#include "udf.h"
#include "sg.h"

DEFINE_ADJUST(adjust,d)
{
  int n;
  for(n=0; n<n_uds; ++n) uds_derivatives(d, n);

  /* The UDS gradients are now available */
 
 
}

void uds_derivatives(Domain *d, int n)
{
  /* Code to compute derivative of a variable.  Variable storage allocation first.... */
        MD_Alloc_Storage_Vars(d, SV_UDSI_RG(n), SV_UDSI_G(n), SV_NULL);
        Scalar_Reconstruction(d, SV_UDS_I(n), -1, SV_UDSI_RG(n), NULL);
        Scalar_Derivatives(d, SV_UDS_I(n), -1, SV_UDSI_G(n), SV_UDSI_RG(n), NULL);
        return;
}



Then, in your UDF, you can access the gradient with C_UDSI_G(c,t). Remember, this is a vector quantity.

Hi, Bill,

As we know, The ANSYS FLUENT (V.13 or higher) have the couple level-set option. Do you have any idea to export the level-set function by udf?

Thanks a lot!

Wond

n.phililipova July 17, 2013 04:03

UDS Gradient variable
 
A would like to thank you so much to Bill Wangard for his immediate reply and for his help!
Wish you great further successes!
Nina Philipova

billwangard July 17, 2013 18:50

Regarding coupled level-sets, I don't have any information for you. Sorry.

n.phililipova July 20, 2013 08:00

Calculating WSS components and their derivatives
 
I found a code, that calculate WSS as a magnitude of viscous fources vector. Area vector is given also as a magnitude of a vector.
I need to calculate components of WSS and their gradients, I don't need a magnitude of vector.
Can someone help with advise, please!



#include "udf.h"
DEFINE_ON_DEMAND(wall_shear_calc)
{
Domain *d;
real wall_shear_force, area;
face_t f;
real A[ND_ND];
cell_t c, c0;
Thread *t,*t0, *c_thread;
int Zone_ID=6; /* Zone ID of the wall on which shear stress has to be calculated */
/* It can be obtained from the boundary condition panel.*/
d=Get_Domain(1);
/* Initialize the UDM value to zero in complete domain */
thread_loop_c(c_thread,d)
{
begin_c_loop(c, c_thread)
{
C_UDMI(c,c_thread,0)= 0;
}
end_c_loop(c, c_thread)
}
/* Calculate wall shear stress and store them in UDM */
t=Lookup_Thread(d,Zone_ID);
begin_f_loop(f, t)
{
F_AREA(A,f,t);
area = NV_MAG(A);
wall_shear_force = NV_MAG(F_STORAGE_R_N3V(f,t, SV_WALL_SHEAR));
c0 = F_C0(f,t);
t0 = THREAD_T0(t);
C_UDMI(c0,t0,0)= wall_shear_force/area;
}
end_f_loop(f, t)
}
/* *********************************************** */

n.phililipova July 22, 2013 03:28

How to Calculate WSS Spatial and Temporal Gradients
 
Please, exuse my misunderstanding!
If I correctly understood, I must retrieve calculated by Fluent Wall Shear Stress not to caculated them again. I am not sure that the available gradients and the stored variable are exactly WSS In code of Bill Wangard. Excuse me for that. I have just a small atempt in UDF. How can I assign exactly x-, y-, z-derivatives of WSS components and to calculate WSS temporal or spatial gradient.

Azy July 16, 2014 15:19

does anybody here know that how to calculate velocity gradient over tracked particles?

syavash July 18, 2014 18:56

Quote:

Originally Posted by Azy (Post 501811)
does anybody here know that how to calculate velocity gradient over tracked particles?

Hi,

Isn't it possible to identify the cell at which particle is present at a specific moment?! If yes, I think it would be a good approximation to use velocity gradient of the cell instead of the particle.

Bests.

Azy July 18, 2014 20:34

Quote:

Originally Posted by syavash (Post 502214)
Hi,

Isn't it possible to identify the cell at which particle is present at a specific moment?! If yes, I think it would be a good approximation to use velocity gradient of the cell instead of the particle.

Bests.

your suggestion is really wise, I have to think about it, and also try it.

Thanks alot

mvee February 9, 2015 02:12

UDS gradient
 
Hi Bill

I found your code of gradient is not working.
Have you checked at your end?
Can you please tell me the procedure?

Thank you


All times are GMT -4. The time now is 19:46.