CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Fluent UDF and Scheme Programming (https://www.cfd-online.com/Forums/fluent-udf/)
-   -   Calculate integrallll!!!!!!!! (https://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 12:55.