|
[Sponsors] |
February 17, 2014, 05:55 |
UDF for perpertual velocity step change
|
#1 |
New Member
Wanda Selamat
Join Date: Oct 2013
Posts: 1
Rep Power: 0 |
Hi, I am working on a UDF to mimic a daily water flow in pipe for a year period. Water will start flowing from 9:00 am (32400 s + 86400 x day) until 6:00 pm (64800 s + 86400 x day) daily at a velocity of 0.0562 m/s. A velocity ramp in a period of 10 s will be given before start-up and after shut-down of the flow.
The plot (unfinished) of the intended scheme would somewhat look like the attached photo, which was obtained using a UDF by manually inserting the values in the conditions/statements (about 4000 lines). With the help of a spreadsheet to write the lines, it was still manageable. However, I would like to have a UDF that is simple and robust. I had tried numerous UDF but to no avail. The most promising one that I could come up with is as follows. I would appreciate if someone can assist me on this. Thanks. #include "udf.h" DEFINE_PROFILE(discontinuous_1y,x,i) { int t = CURRENT_TIME; face_t f; real off = 0, on = 0.0562; //velocity during no-flow and flow real ramp = 10, v; //ramp time 10 s before flow and after flow is given real slope = on/ramp; //slope used during ramp time int start, stop; int *time; time = &t; if(t < 86400) //1 day equals 86400 s { if(*time % 86400 == 64800) //9:00 am day-0 start = *time; else if(*time % 86400 == 43200) //6:00 pm day-0 stop = *time; } else { if(*time % 86400 == 32400) //9:00 am day-i start = *time; else if(*time % 86400 == 64800) //6:00 pm day-i stop = *time; } begin_f_loop(f,x) { if(t <= 32400) v = off; else if(t <= (start + ramp) && t > start) v = slope * (t - start); else if(t <= stop && t > (start + ramp)) v = on; else if(t <= (stop + ramp) && t > stop) v = on - slope * (t - stop); else v = off; F_PROFILE(f,x,i) = v; } end_f_loop(f,x) } DEFINE_DELTAT(deltat_1y,d) { int t = CURRENT_TIME; real tstep, off = 5399, on = 3239, up = 10, down = 2; //time step values real ramp = 10; int start; int stop; int *time; time = &t; if(t < 86400) { if(*time % 86400 == 64800) start = *time; else if(*time % 86400 == 43200) stop = *time; } else { if(*time % 86400 == 32400) start = *time; else if(*time % 86400 == 64800) stop = *time; } if(t < 32400) tstep = 3600; else if(t < (start + ramp) && t >= start) tstep = up; else if(t < stop && t >= (start + ramp)) tstep = on; else if(t < (stop + ramp) && t >= stop) tstep = down; else tstep = off; return tstep; } Last edited by romanpicisan; February 17, 2014 at 11:03. |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
UDF error - parabolic velocity profile - 3D turbine | Zaqie | Fluent UDF and Scheme Programming | 9 | June 25, 2016 20:08 |
Upgraded from Karmic Koala 9.10 to Lucid Lynx10.04.3 | bookie56 | OpenFOAM Installation | 8 | August 13, 2011 05:03 |
DPM UDF particle position using the macro P_POS(p)[i] | dm2747 | FLUENT | 0 | April 17, 2009 02:29 |
UDF problem : inlet velocity in cyl. coord. system | Jongdae Kim | FLUENT | 0 | June 15, 2004 12:21 |
Terrible Mistake In Fluid Dynamics History | Abhi | Main CFD Forum | 12 | July 8, 2002 10:11 |