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/)
-   -   entropy generation with UDF (http://www.cfd-online.com/Forums/fluent-udf/75864-entropy-generation-udf.html)

mohammadkm May 7, 2010 06:25

entropy generation with UDF
 
1 Attachment(s)
Dear all
I want to compute entropy generation in tube with constant heat flux.
I wrote a udf to compute gradient temperature:
# include "udf.h"
# include "math.h"
DEFINE_ADJUST(adjust_gradient, domain)
{
Thread *t;
cell_t c;
face_t f;
domain = Get_Domain(1);
/* Fill UDS with the variable. */
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{
C_UDSI(c,t,0) = C_T(c,t);
}
end_c_loop (c,t)
}
thread_loop_f (t,domain)
{
if (THREAD_STORAGE(t,SV_UDS_I(0))!=NULL)
begin_f_loop (f,t)
{
F_UDSI(f,t,0) = F_T(f,t);
}
end_f_loop (f,t)
}
}
DEFINE_ON_DEMAND(store_gradient)
{
Domain *domain;
cell_t c;
Thread *t;
domain=Get_Domain(1);
/* Fill the UDM with magnitude of gradient. */
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{
C_UDMI(c,t,0) =(pow(NV_MAG(C_UDSI_G(c,t,0)),2));
}
end_c_loop (c,t)
}
}
////////////////////////////////
after the iteration in custom field function, i defined:
dissip=(2 * ((daxial-velocity-dx) ^ 2)) + ((daxial-velocity-dy) ^ 2)
S(generation)=((thermal-conductivity-lam * udm-0) / temperature ^ 2) + ((viscosity-lam * dissip) / temperature)
with this way i compute entropy generation in fluent.I can compile my code and get answer without any problem but my result is wrong(not validated with paper). I think my code for compute gradient temperature is incomplete and i need to compute gradient temperature in face too, but i dont know how can i do that?
please help with this problem
thanks

dmoroian May 7, 2010 07:32

I think you can easyly skip all the troubles by directly using the temperature gradient provided by fluent?
However, to be able to access gradients you need to tell fluent to store them (check the udf manual section 3.2.3 - solve/set/expert).
A suggestion:
instead of
Code:

C_UDMI(c,t,0) =(pow(NV_MAG(C_UDSI_G(c,t,0)),2));
you could use
Code:

C_UDMI(c,t,0) =NV_MAG2(C_UDSI_G(c,t,0));

mohammadkm May 7, 2010 12:43

Dear dragos
How can i directly use gradient temperature provided with fluent? there was no gradient temperature(dT/dx) in custom field function panel to use!!
I did that(solve/set/expert) but my result was not changed.
I tried this code to compute gradient face temperature:
# include "udf.h"
# include "math.h"
DEFINE_ADJUST(adjust_gradient, domain)
{
Thread *t;
cell_t c;
face_t f;
domain = Get_Domain(1);
/* Fill UDS with the variable. */
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{
C_UDSI(c,t,0) = C_T(c,t);
}
end_c_loop (c,t)
}
thread_loop_f (t,domain)
{
if (THREAD_STORAGE(t,SV_UDS_I(0))!=NULL)
begin_f_loop (f,t)
{
F_UDSI(f,t,0) = F_T(f,t);
}
end_f_loop (f,t)
}
}
DEFINE_ON_DEMAND(store_gradient)
{
Domain *domain;
cell_t c;
Thread *t;
face_t f;
domain=Get_Domain(1);
/* Fill the UDM with magnitude of gradient. */
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{
C_UDMI(c,t,0) =(pow(NV_MAG(C_UDSI_G(c,t,0)),2));
}
end_c_loop (c,t)
}
thread_loop_f(t, domain)
{
begin_f_loop(f,t)
{
F_UDMI(f,t,0) =(pow(NV_MAG(F_UDSI_G(f,t,0)),2));
}
end_f_loop(f, t)
}
}
/////////////////////////
but i got this error:
..\..\src\test.c(48) : error C2109: subscript requires array or pointer type
..\..\src\test.c(48) : error C2109: subscript requires array or pointer type
..\..\src\test.c(48) : error C2109: subscript requires array or pointer type
..\..\src\test.c(48) : error C2109: subscript requires array or pointer type
///////////////////////////////////////////////
please help me i don't know how to solve my problem. i am reletively new to UDF.
thanks

dmoroian May 8, 2010 04:19

It seems either I missunderstood again your problem, or you mixed up concepts.
To clarify: if you need temperature gradient only as a field function, then you don't need udf's. To get the temperature gradient available in field function you have to tell fluent to store it after each iteration (presuming that you have enabled the energy equation first). If you had red the manual page I suggested, you would have found, that storing the gradients is straight forward:
Code:

/solve/set/expert
...
Keep temporary solver memory from being freed? [no] yes
...

After at least 1 iteration you will see three new fields in the derivatives of the field function: dT-dX, dT-dY, and dT-dZ

mohammadkm May 9, 2010 17:12

Dear dragos
you solved my problem, thank for your help.
As you said there is no need to write udf, i just used "/solve/set/expert".
After that i changed criteria of energy from 1e-6 to 1e-12 and my solution was validated.
thanks again

Rahul123 March 12, 2013 08:14

Hi,
I am solving a 2D problem. I want to write the value of temperature gradient on a surface (I need the values). Can anyone tell me how to do it......I think a udf is to be written but I dont understand which macro to use. I have the end point coordinates of the surface(line)

mohammadkm March 12, 2013 10:39

you don't need to write udf for calculating the gradient. you should just keed the data by typing a command in the console. I can't remember the command but you can find it in the UDF PDF file.

Rahul123 March 12, 2013 13:41

I want the gradient value on a wall i.e, surface.....will it be possible

mohammadkm March 14, 2013 16:35

I think it is possible. And the command to keep the memory is :
/solve/set/expert
...
Keep temporary solver memory from being freed? [no] yes

good luck

Rahul123 February 13, 2014 13:50

hi,
could you please write the custom field function for entropy generation

mohammadkm February 24, 2014 15:20

Dear Rahul,
Custom field function can be written based on the formula that I have attached in the first post. For adding gradient temperature you need to type the following statement in the cosole:
/solve/set/expert...Keep temporary solver memory from being freed? [no] yes...Good luck

ashok_iit@hotmail.com August 30, 2014 13:03

Regarding Entropy generation
 
I tried to calculate the entropy generation using the command: solve/set/expert
Now, I got the reconstructed dT-dx, dT-dy and dT-dz.
Can these values directly be used in my custom Field function to compute entropy.

Can any one help me out
mail me: ashok_iit@hotmail.com

setty September 12, 2014 13:18

how i enter attached equation in custom filed function?
 
Quote:

Originally Posted by mohammadkm (Post 476546)
Dear Rahul,
Custom field function can be written based on the formula that I have attached in the first post. For adding gradient temperature you need to type the following statement in the cosole:
/solve/set/expert...Keep temporary solver memory from being freed? [no] yes...Good luck

---------------------------------------------------------
Hi mohammad
how i enter equation that you attached in custom filed function?
please help me about this
thnx

Ras0ul July 11, 2015 12:29

entropy generation custom field function
 
Dear all
I entered the entropy generation equation in custom field function.but my result is wrong(not validated with paper). I examined my results and found that Fluent calculate the temperature gradient, but it can not properly calculate the square of the temperature gradient!!!
please help with this problem
thanks

pakk July 14, 2015 10:05

There are two options:
- Fluent has a bug and calculates the square of the gradient of temperature wrong.
- You did something wrong when you tried to let Fluent calculate the square of the gradient of the temperature.

You seem to think that the second option is very unlikely. I think the first option is very unlikely.

Ras0ul July 14, 2015 10:58

Dear pakk
of course, i think the first option is very unlikely. But I really do not know what's the problem. For a specific position within the computational domain, when i account the entropy based on the components separately, there is difference between the answer with custom field printing result. Interestingly, this difference can be seen when i want to calculate the square of the temperature gradient !

pakk July 14, 2015 11:16

So you agree that it is possible that you did something wrong when you tried to calculate the square of the temperature gradient, but you don't know what it is you could have done wrong.

And what now? I think it is impossible to get help on which of your steps could be wrong, if you don't say which steps you took. But that is just my opinion.


All times are GMT -4. The time now is 00:24.