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/)
-   -   UDF for velocity inlet depending on time (https://www.cfd-online.com/Forums/fluent-udf/203396-udf-velocity-inlet-depending-time.html)

EnriqueP June 26, 2018 09:18

UDF for velocity inlet depending on time
 
1 Attachment(s)
Hello,

I'm trying to setup a velocity which changes its value depending on time (attahced figure), in an inlet boundary condition.

The UDF that I have written is the following:
DEFINE_PROFILE(y_velocity,t,i)
{
real T, H; /* variable declarations */
face_t f;
T = 1;
H = 3;

begin_f_loop(f,t)
{
if(CURRENT_TIME <= T/2)
F_PROFILE(f,t,i) = 0;
else if (CURRENT_TIME <= 3*T/2 && CURRENT_TIME >T/2)
F_PROFILE(f,t,i) = 4*H/pow(T,2)*pow(CURRENT_TIME-T,2)-H;
else
F_PROFILE(f,t,i) = 0;
}
end_f_loop(f,t)
}

I am quite new to UDFs and Im having some trouble.
Any help would be really appreciated. Thank you.

Enrique P.
__

obscureed June 26, 2018 10:42

Hi Enrique,

This looks basically OK to me, except that you need a line include "udf.h" at the start. What trouble are you having?

I would always recommend that you compile UDFs rather than interpreting. Here are some useful posts on compiling UDFs -- for example: links to instructions Visual Studio 2017 for udf use - which modules do I need?; troubleshooting errors How to solve UDF compilation problems in Fluent.; the basic steps of compile/load/hook The UDF library you are trying to load (libudf) is not compiled for 3D on the current. (at the end).

Ach, I can't resist tweaking your code. It bothers me slightly to see T and t in the same code, though this is perfectly safe, but the thing that really bothers me is recalculating the same velocity for every face. Why not calculate it once and then use it repeatedly? Like this:
Code:

#include "udf.h"

#define PEAK_TIME 1.0
#define PEAK_VELOCITY -3.0

DEFINE_PROFILE(y_velocity,t,i)
{
  real tau,velocity;
  face_t f;

  tau = CURRENT_TIME / PEAK_TIME;
  if(tau > 0.5 && tau < 1.5) {
    velocity = PEAK_VELOCITY *
      (1.0 - 4.0 * (tau - 1.0) * (tau - 1.0));
    /* Note PEAK_VELOCITY is negative; it is multiplied by
    * a quadratic (on a line by itself) which is positive.
    * The quadratic has maximum value 1.0 at tau = 1.0
    * The quadratic has value 0.0 at tau = 0.5 and tau = 1.5. */
  }else{
    velocity = 0.0;
  }

  begin_f_loop(f,t)
  {
    F_PROFILE(f,t,i) = velocity;
  }
  end_f_loop(f,t)
}

Good luck!
Ed

EnriqueP June 27, 2018 02:35

Hello again, Obscureed.

I made the silliest mistake ever by not including the "udf.h". I realized like 5 mins after posting this.

Thanks for your help and for the improvement in the code.
Really appreciated.


All times are GMT -4. The time now is 22:38.