CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Fluent UDF and Scheme Programming (https://www.cfd-online.com/Forums/fluent-udf/)
-   -   Unsteady temperature profile (https://www.cfd-online.com/Forums/fluent-udf/111139-unsteady-temperature-profile.html)

rachana December 28, 2012 16:19

Unsteady temperature profile
 
Hi, I am trying to define unsteady temperature profile in Fluent. The same profile has to be repeated everyday, where the temperature linearly increases from 300 K to 305 K for 1st 8 hours, then linearly decreases back to 300 K in the next 8 hours and then remains constant at 292 K for the last 8 hours. I am using the following code for the udf. But the result I am getting shows the temperature to increase continuously using the 1st profile (but it doesn't stop at 305 and just keeps increasing). Please help me out here. I had been struggling with this for days.


#include "udf.h"

DEFINE_PROFILE(unsteady_temperature, thread, position)
{
face_t f;
int n;
real t = CURRENT_TIME;

begin_f_loop(f, thread)

{

for (n=1; n<=31; n+=3)

{

if (CURRENT_TIME <= 3600*8*n)
F_PROFILE(f, thread, position) = 300.0 + 5.0 * (t/8.0/3600.0);

else if(CURRENT_TIME <= (3600*8*(n+1)))
F_PROFILE(f, thread, position) = 305.0 - 5.0/8.0 * (t/3600.0-8.0);

else
F_PROFILE(f, thread, position) = 292.0 + 0.0 * t;

}

}

end_f_loop(f, thread)

}

Sixkillers December 29, 2012 03:59

Obviously your solution through for cycle isn't working as you want. I think that much more easier solution is just to simply subtract number of days from current time and then use it in your "decision tree". So here is my approach:

PHP Code:

#include "udf.h"

DEFINE_PROFILE(unsteady_temperaturethreadposition)
{
  
face_t f;
  
int days;
  
real t CURRENT_TIME;
  
  
days = (int)(/(24.0*3600.0));
  
24.0*3600.0*days;

  
begin_f_loop(fthread)
  {
    if (
<= 3600*8)
      
F_PROFILE(fthreadposition) = 300.0 5.0 * (t/8.0/3600.0);
    else if(
<= (3600*16))
      
F_PROFILE(fthreadposition) = 305.0 5.0/8.0 * (t/3600.0-8.0);
    else 
      
F_PROFILE(fthreadposition) = 292.0 0.0 t;
  }
  
end_f_loop(fthread)


I did not test it too much, so it is up to you :)

rachana December 29, 2012 09:16

Thank you very very much. It worked. I had done 2 days analysis by subtracting 24 hours in 2nd day profile. But didn't know how to extend it for longer period of time. Thanks a lot.


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