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) } } |
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. |
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:
|
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:
|
Tnx for reply
Quote:
|
All times are GMT -4. The time now is 03:36. |