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/)
-   -   Calculate integrallll!!!!!!!! (http://www.cfd-online.com/Forums/fluent-udf/105643-calculate-integrallll.html)

fatemeh chitgarha August 5, 2012 04:37

Calculate integrallll!!!!!!!!
 
I want to calculate an integral spatial. One of the following variables in integral is a UDS function of time and place(UDSI(X,t)).I want to calculate this Integral in every time step in a preprocessing stage. But i confused!
Do FLUENT UDS information saves at everyTIME step? What should I do??? HOW call info?????????
Here, I attached my UDF file.
Maybe you can find the problem and help me!
Thank you very much!
:(
#include "udf.h"
DEFINE_ON_DEMAND(on_demand)
{
Domain *d;
Thread *t;
cell_t c;
real sum_diss=0.;
real sum_dissa=0.;
d = Get_Domain(1);
thread_loop_c(t,d)
{
begin_c_loop(c,t)
{
for(CURRENT_TIME =15.491; CURRENT_TIME > 0.001; CURRENT_TIME--)
sum_diss += C_UDSI(c,t,0) * C_R(c,t) * C_VOLUME(c,t);
sum_dissa += C_UDSI(c,t,0) * C_VOLUME(c,t);
end_c_loop(c,t)
}
begin_c_loop(c,t)
{
C_UDMI(c, t, 1) = sum_diss/sum_dissa;
}
end_c_loop(c,t)
}
}

Amir August 5, 2012 11:39

Dear Fatemeh,

Your implemented algorithm doesn't make sense! you cannot march in time like that; you have to choose a proper macro such as DEFINE_ADJUST which executed each time step and use global variables to store accumulative ones.

gearboy August 6, 2012 01:37

You should use DEFINE_EXECUTE_AT_END so as to sum up the variables you need at the end of each time step. Declare the sum_diss and sum_dissa as global variables(outside the DEFINE_EXECUTE_AT_END macro range).

real sum_diss=0.;
real sum_dissa=0.;
DEFINE_EXECUTE_AT_END(execute_at_end)
{
Domain *d;
Thread *t;
cell_t c;

d = Get_Domain(1);
thread_loop_c(t,d)
{
begin_c_loop(c,t)
{
sum_diss+=C_UDSI(c,t,0)*C_R(c,t)*C_VOLUME(c,t);
sum_dissa+=C_UDSI(c,t,0)*C_VOLUME(c,t);
C_UDMI(c, t, 1) = sum_diss/sum_dissa;
}
end_c_loop(c,t)
}
Message0("current time=%f,sum_diss=%f,sum_dissa=%f\n",CURRENT_TIME,s um_diss,sum_dissa);
}





Quote:

Originally Posted by fatemeh chitgarha (Post 375422)
I want to calculate an integral spatial. One of the following variables in integral is a UDS function of time and place(UDSI(X,t)).I want to calculate this Integral in every time step in a preprocessing stage. But i confused!
Do FLUENT UDS information saves at everyTIME step? What should I do??? HOW call info?????????
Here, I attached my UDF file.
Maybe you can find the problem and help me!
Thank you very much!
:(
#include "udf.h"
DEFINE_ON_DEMAND(on_demand)
{
Domain *d;
Thread *t;
cell_t c;
real sum_diss=0.;
real sum_dissa=0.;
d = Get_Domain(1);
thread_loop_c(t,d)
{
begin_c_loop(c,t)
{
for(CURRENT_TIME =15.491; CURRENT_TIME > 0.001; CURRENT_TIME--)
sum_diss += C_UDSI(c,t,0) * C_R(c,t) * C_VOLUME(c,t);
sum_dissa += C_UDSI(c,t,0) * C_VOLUME(c,t);
end_c_loop(c,t)
}
begin_c_loop(c,t)
{
C_UDMI(c, t, 1) = sum_diss/sum_dissa;
}
end_c_loop(c,t)
}
}


fatemeh chitgarha August 8, 2012 18:56

tnx For YOUR REPLY! if i put C_UDMI in inside loop, integral is soleved for each cell, but i need vloume integral in intire domain in each time step!!!! what do I do?
tnx for help.

Quote:

Originally Posted by gearboy (Post 375516)
You should use DEFINE_EXECUTE_AT_END so as to sum up the variables you need at the end of each time step. Declare the sum_diss and sum_dissa as global variables(outside the DEFINE_EXECUTE_AT_END macro range).

real sum_diss=0.;
real sum_dissa=0.;
DEFINE_EXECUTE_AT_END(execute_at_end)
{
Domain *d;
Thread *t;
cell_t c;

d = Get_Domain(1);
thread_loop_c(t,d)
{
begin_c_loop(c,t)
{
sum_diss+=C_UDSI(c,t,0)*C_R(c,t)*C_VOLUME(c,t);
sum_dissa+=C_UDSI(c,t,0)*C_VOLUME(c,t);
C_UDMI(c, t, 1) = sum_diss/sum_dissa;
}
end_c_loop(c,t)
}
Message0("current time=%f,sum_diss=%f,sum_dissa=%f\n",CURRENT_TIME,s um_diss,sum_dissa);
}


fatemeh chitgarha August 8, 2012 18:59

Tnx for reply

Quote:

Originally Posted by Amir (Post 375459)
Dear Fatemeh,

Your implemented algorithm doesn't make sense! you cannot march in time like that; you have to choose a proper macro such as DEFINE_ADJUST which executed each time step and use global variables to store accumulative ones.



All times are GMT -4. The time now is 15:47.