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 can i use multiple udfs (https://www.cfd-online.com/Forums/fluent-udf/72955-how-can-i-use-multiple-udfs.html)

hami9293 February 23, 2010 01:35

how can i use multiple udfs
 
Hello every body
as a amateur user of fluent i have a problem
when i want to define multiple udf in my case file, my last defined udfs disappeared.
How can use multiple udfs in one case file?

thank you.

Goldsstean February 23, 2010 01:51

Re: how can i use multiple udfs
 
Write all the udf inside same header file for e.g

#include "udf.h"

DEFINE_PROPERTY(prop, c, t)
{

}

DEFINE_ON_DEMAND(ondemand)
{

}

So on...

hami9293 February 23, 2010 02:09

how
 
#include "udf.h"
my udf is so:

DEFINE_PROFILE(inlet, thread, position)

{
real pi = 3.1459 ;
real P0 = 11208 ;

face_t f;
real t = CURRENT_TIME;

begin_f_loop(f, thread)
{
t = t - floor(t) ;
if ( t>=0.5 )
F_PROFILE(f, thread, position) = P0*sin(pi*t);
else
F_PROFILE(f, thread, position) = P0*(1.5 - 0.5*cos(2*pi(t-0.5)));
}
end_f_loop(f, thread)

}
should i change it ?

Goldsstean February 23, 2010 02:13

Could you explain what you want to do.

hami9293 February 23, 2010 02:19

reply
 
I have a pipe that has one inlet and four outlet.
the boundary condition for the inlet and outlet in transient pressure.
my udf is this transient pressure.
now when I interpret the pressure that is used for e.g. out 2 the last interpreted udfs has disappeared.

Goldsstean February 23, 2010 02:25

Correct me if im wrong, you would like to give profile to inlet and outlet too. then this udf will not work write separate udf.

If not try to compile and hook.

hami9293 February 23, 2010 02:34

explain.
 
let me explain more.

I have 5 different udfs for five boundaries . when i define e.g the third one , the two last defined udfs disappeared . ( i mean when i want to specify the boundary condition of the boundaries instead of 5 different udf i just have one .)

Goldsstean February 23, 2010 03:39

Where are the five udf above only you are showing one?

If you have five udf means write in same file.

hami9293 February 23, 2010 03:45

reply
 
there are almost the same with a few differences in the formula of the pressure . I have written the first udf that is for inlet

Goldsstean February 23, 2010 03:47

Yes exactly, the whatever answer i have given first that is true.

Put all udf in same file.c ok

Goldsstean February 23, 2010 03:51

For eg

#include "udf.h"

DEFINE_PROFILE(inlet1, thread, position)

{
your programe;
}

DEFINE_PROFILE(inlet2, thread, position)

{
your programe;
}

DEFINE_PROFILE(inlet3, thread, position)

{
your programe;
}
DEFINE_PROFILE(inlet4, thread, position)

{
your programe;
}
DEFINE_PROFILE(inlet5, thread, position)

{
your programe;
}


Save the file and interprete you will see all the profile and select respectively for the inlet.

ok thanks I have work c u

hami9293 February 23, 2010 06:20

Thanks
 
Thank your lucky stars.
Really thank you for your kind helps .
c u later.

mmunige June 5, 2016 21:09

nested if statement in udf
 
Respected members

I am using udf for defining transient temperature at inlet boundary of my model in fluent. I am writing nested if statement, but model keeps on using the same equation after 180 seconds, and does not move to the next if else statement. My udf is as follows:

#include"udf.h"

DEFINE_PROFILE(inlet_temperature,thread,position )
{

face_t f;
begin_f_loop(f,thread)

{

real t = RP_Get_Real("flow-time");

if ( t <= 100.0 )

F_PROFILE(f,thread,position) = 379.48 + 0.0004*t;

else if (100.0 < t <= 180.0 )

F_PROFILE(f,thread,position) = 1.0624*t + 352.0;

else if (180.0 < t <= 200.0 )

F_PROFILE(f,thread,position) = 0.2716*t + 494.4;

else if (200.0 < t <= 400.0 )
F_PROFILE(f,thread,position) = 328.14*pow(t,0.097);
else
F_PROFILE(f,thread,position) = 727.82;

}
end_f_loop(f,thread)
}

sorry for my poor knowledge of programming.
please help me on this error.
Thanks.

S_Tanuj February 12, 2020 08:47

Earlier I had the same issue. There were three UDF, out of the three two were of the same macro (DEFINE_SOURCE) and the other one was of the different macro (DEFINE_ZONE_MOTION). They can be easily compiled but make sure "the library name" should be different for both. Keeping the same name will lead to "fatal error". To compile, build and load separately.

vinerm February 12, 2020 09:38

Use different function names
 
You can compile all in one library, however, you have to ensure that the function names, i.e., the first arguments are different for each DEFINE_ function. That's how those are supposed to be recognized within Fluent while hooking them.

Elechi May 27, 2020 19:25

C
 
@S_Tanju... I think the problem is from your relational operators

This line "else if (100.0 < t <= 180.0 ) " should have been written as "else if 100.0 < t && t <= 180.0 "


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