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/)
-   -   How do i create time dependent flows on UDF? (https://www.cfd-online.com/Forums/fluent-udf/82953-how-do-i-create-time-dependent-flows-udf.html)

nha1g08 December 9, 2010 15:22

How do i create time dependent flows on UDF?
 
How do I create this conditon using a UDF?

I want the velocity at the pipe inlet to be 10m/s from t=0 to 5

then i want the v=20m/s from t=5 to 6,

then i want the velocity again to be 10m/s from t =6 to 11

How do i set the time ticking ticking on the UDF? and what is the varaible for time?

Thanks

ComputerGuy December 9, 2010 19:56

nha1g08,

Try something like this. Inevitably I'm missing a semicolon in the following, but it should be relatively simple to fix. Interpret (or better, compile) this UDF, then hook it to your face velocity boundary condition. This loops over all cell faces at the inlet boundary and sets them to the given velocity depending on the simulation time.

Make sure you run transient!

Regards,
ComputerGuy

DEFINE_PROFILE(velocity_magnitude, t, i)
{
real velocity;
real the_current_time;
face_t f;

the_current_time = CURRENT_TIME;

if ((the_current_time>=0) && (the_current_time<5))
{
velocity=10;
}
if ((the_current_time>=5) && (the_current_time<6))
{
velocity=20;
}
if ((the_current_time>=6))
{
velocity=10;
}


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

bright181 December 12, 2010 03:20

I want the pressure of the pressureinlet to be 0 form 0 to 5 second
and the pressure of 8Mpa from 5 to 6 second
is it similar?
thank you in advance

ComputerGuy December 12, 2010 08:24

bright181,

Yes. You have to change the udf slightly and hook it to a different place on the inlet boundary conditions panel, but it's effectively the same. I have changed variable names for clarity.

ComputerGuy


Code:

#include "udf.h"
DEFINE_PROFILE(pressure_magnitude, t, i)
{
real pressure_mag;
real the_current_time;
face_t f;

the_current_time = CURRENT_TIME;

if ((the_current_time>=0.0) && (the_current_time<5.))
{
pressure_mag=0.0;
}
if ((the_current_time>=5.0) && (the_current_time<6.0))
{
pressure_mag=8.0e6;
}



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


nuengao January 4, 2011 23:42

Dear computerGuy

how to hook your codes to Fluent and how to set time in fluent


please give me your suggestion

thank

nuengao January 4, 2011 23:48

Could I have one question?

I'd like to know that how to define current time at fluent ?

sakshi1632 June 17, 2013 03:03

I want to inject a fluid at every 6 mins. I prepared a code, but ther seems to be an error in line 10 saying:" line 10: invalid type for integral binary expression: double % int."
Can anyone give me a solution to this?
Thankyou.:)
Here's the code:

#include "udf.h"

DEFINE_PROFILE(insulin_inlet,thread,position )
{ face_t f;

begin_f_loop(f,thread)
{
real t = RP_Get_Real("flow-time");

if (t%360==0)

F_PROFILE(f,thread,position) = 0.1;

else
F_PROFILE(f,thread,position) = 0;

} end_f_loop(f,thread) }

lomba June 17, 2013 06:06

get cell value
 
Hi,
Someone can help me please.
I would like to retrieve the value in a cell in the liquid phase and compared with a set value. Depending on the value found, I modified the condition of gas inlet. like a regulation loop.
Here is the UDF I wrote but I am having acces_violation.
the coordenates of the cell where i want get mass fraction value are x=0.08 and y=0.015

I get acess violation when i compiled my UDF.

Best regards!!!
Sorry for my english level!
/*---------------------------------------------------------------*/

#include "udf.h"

DEFINE_PROFILE(profile,thread,i)
{

face_t f;
cell_t c;
real YH, Rhol, ConsH, pH, pH1, cent,YH1, x, y;
real xc[ND_ND];


/*--------------------------------------------------------------------*/
Thread *thread_l = THREAD_SUB_THREAD(thread,0); /*to pointer the liquid phase*/
Thread *cell_thread;

/*--------------------------------------------------------------------*/

/*---mesurement---*/
/*--------------------------------------------------------------------*/
/*to get cell YI value*/

begin_c_loop_all(c,cell_thread)
{
x=xc[0];
y=xc[1];

C_CENTROID(xc,c,cell_thread);

if( x=0.08. && y=0.015.) /*probe position*/

YH = C_YI(c,thread_l,0);

ConsH=YH*C_R(c,thread_l);

}

end_c_loop_all(c,cell_thread)

pH=-log(ConsH);



/*--------------------------------------------------------------------*/


/*---injection CO2---*/
/*--------------------------------------------------------------------*/
begin_f_loop(f,thread)
{

if(pH >7)

F_PROFILE(f,thread,i) = 1;

else

F_PROFILE(f,thread,i) = 0;

}

end_f_loop(f,thread)

/*--------------------------------------------------------------------*/

}

sam2629 July 9, 2017 11:10

sakshi1632
 
I want to inject a fluid at every 6 mins. I prepared a code, but ther seems to be an error in line 10 saying:" line 10: invalid type for integral binary expression: double % int."
Can anyone give me a solution to this?
Thankyou.
Here's the code:

#include "udf.h"

DEFINE_PROFILE(insulin_inlet,thread,position )
{ face_t f;

begin_f_loop(f,thread)
{
real t = RP_Get_Real("flow-time");

if (t%360==0)

F_PROFILE(f,thread,position) = 0.1;

else
F_PROFILE(f,thread,position) = 0;

} end_f_loop(f,thread) }

hi,
did you know what was the problem of your code?

madhan September 21, 2017 07:57

Hi everybody,

I am doing a transient simulation of conjugated heat transfer problem. In that I have a solid that plays a role of heat generation(W/m3) varying with time (q=q(t)). Since i am weak in codings, I need a help to write a udf for heat source varying with time. value is q=6.75e11

Thank you.

pakk September 22, 2017 08:57

If q=6.75e11, it is not varying in time but constant... So I think you should be more clear in what you want.

madhan September 22, 2017 14:37

Quote:

Originally Posted by pakk (Post 665267)
If q=6.75e11, it is not varying in time but constant... So I think you should be more clear in what you want.

Hi,

I found out the example source. When I tried to run transient simulation with this udf. It doesnt looklike its working. The heat generation source is increasing for every 100 sec. But when i see the avearge temperature of heat source its was almost the same for all timesteps. Hereby I have attached the Udf. Please tell me what are the mistakes I have did.
Thank You.

#define Q1 2e10
#define Q2 2.97e10
#define Q3 3.80e10

DEFINE_SOURCE(qgen_source,c,t,dS,eqn)
{
real source;
real time = CURRENT_TIME;

if (time <= 100) /* time 0-100 q = Q1 */
{
/* source term */
source = Q1;

/* derivative of source term. */
dS[eqn] = 0.;
}
if (time > 100 && time < 200) /* time 100-200 q = Q2 */
{
source = Q2;

dS[eqn] = 0.;
}
if (time >= 200 && time < 300) /* time 200-300 q = Q3 */
{
source = Q3;

dS[eqn] = 0.;
}
if (time >= 300 && time <400) /* time 300 -400 q = 0 */
{
source = dS[eqn] = 0.;
}

return source;
}

pakk September 25, 2017 10:09

What makes you think that you made a mistake?

madhan September 25, 2017 16:58

Regarding entropy generation due to heat transfer and fluid friction.
 
1 Attachment(s)
Quote:

Originally Posted by pakk (Post 665578)
What makes you think that you made a mistake?

Hi pakk,

I figured out the mistake.that was is in timestep size when iam iterating it..

And I have a another doubt in the entropy generation for 3d problem. I am trying to calculate entropy generation for heat transfer and fluid friction using custom field functions.
from the literature i have found that the entropy for heat transfer can be found out from following formula but for fluid friction i dont know how to implement that formula..herby i have attached the photo.
please help me about that.

Thanking you.

tufygo April 4, 2018 08:44

Quote:

Originally Posted by ComputerGuy (Post 286806)
nha1g08,

Try something like this. Inevitably I'm missing a semicolon in the following, but it should be relatively simple to fix. Interpret (or better, compile) this UDF, then hook it to your face velocity boundary condition. This loops over all cell faces at the inlet boundary and sets them to the given velocity depending on the simulation time.

Make sure you run transient!

Regards,
ComputerGuy

DEFINE_PROFILE(velocity_magnitude, t, i)
{
real velocity;
real the_current_time;
face_t f;

the_current_time = CURRENT_TIME;

if ((the_current_time>=0) && (the_current_time<5))
{
velocity=10;
}
if ((the_current_time>=5) && (the_current_time<6))
{
velocity=20;
}
if ((the_current_time>=6))
{
velocity=10;
}


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

may you explain more i am newby and this did not work in my time dependent case

Singh3257 February 12, 2020 05:37

Quote:

Originally Posted by ComputerGuy (Post 286806)
nha1g08,

Try something like this. Inevitably I'm missing a semicolon in the following, but it should be relatively simple to fix. Interpret (or better, compile) this UDF, then hook it to your face velocity boundary condition. This loops over all cell faces at the inlet boundary and sets them to the given velocity depending on the simulation time.

Make sure you run transient!

Regards,
ComputerGuy

DEFINE_PROFILE(velocity_magnitude, t, i)
{
real velocity;
real the_current_time;
face_t f;

the_current_time = CURRENT_TIME;

if ((the_current_time>=0) && (the_current_time<5))
{
velocity=10;
}
if ((the_current_time>=5) && (the_current_time<6))
{
velocity=20;
}
if ((the_current_time>=6))
{
velocity=10;
}


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

but after 6 seconds the velocity of 10m/s will become constant and the requirement is of velocity fluctuation in every 5 second pulse.

vinerm February 12, 2020 05:52

UDF not required
 
UDF is an overkill for this work. Use a transient profile.


All times are GMT -4. The time now is 01:21.