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. |
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... |
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 ? |
Could you explain what you want to do.
|
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. |
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. |
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 .) |
Where are the five udf above only you are showing one?
If you have five udf means write in same file. |
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
|
Yes exactly, the whatever answer i have given first that is true.
Put all udf in same file.c ok |
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 |
Thanks
Thank your lucky stars.
Really thank you for your kind helps . c u later. |
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. |
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.
|
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.
|
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. |