# Urgent! UDF error "implicit declaration of function"

 Register Blogs Members List Search Today's Posts Mark Forums Read

 June 17, 2010, 16:54 Urgent! UDF error "implicit declaration of function" #1 Member   Ivan Join Date: May 2009 Posts: 85 Rep Power: 9 Urgent, will wait online for answers! After compiling the following UDF, I see the error message "inlet_u.c:39: warning: implicit declaration of function erf". And the simulation crash if I continue using this UDF. What is the reason? and How can I solve it? Thanks! /* UDF for specifying a transient inlet velocity profile boundary condition */ #include "udf.h" #include "math.h" #define PI 4.*atan(1.) #define RT 0.00183 real VM=21.911; real VNin=0.01; /**************** x velocity ****************/ DEFINE_PROFILE(v_x, thread, index) { face_t f; real t,dt,u; real D1,D2,D3,D4,D5,D6,D7; real G1,G2,G3; /* wind gust model parameters */ D1=VM*700; D2=7/(3*RT); D3=1; D4=3/(3*RT); D5=0.15; D6=7/(10*RT); D7=2*PI/(RT/10); /* get flow time */ t = CURRENT_TIME; /* u = X Velocity */ if (t<=VNin*RT) { u = VM;} else { /* get dt */ dt = t-VNin*RT; /* wind gust model */ G1=D1*dt*exp(-D2*dt); G2=D3*erf(D4*dt); G3=D5*exp(-D6*dt)*sin(D7*dt); /* get u */ u = VM+G1+G2+G3;} /* assign X velocity */ begin_f_loop(f, thread) { F_PROFILE(f, thread, index) = u; } end_f_loop(f, thread) }

 June 17, 2010, 16:57 #2 Member   Ivan Join Date: May 2009 Posts: 85 Rep Power: 9 The only problem is the function erf. But I have included math.h, anything else needs to be done? Or math.h is NOT the right header file to include if I want to use function erf? erf is error function.

 June 17, 2010, 17:24 #3 Senior Member   Join Date: Nov 2009 Posts: 411 Rep Power: 11 I suppose you are on a Windows system ? If yes the erf function is not implemented in math.h . So basically you will need to implement a custom version of erf in your UDF function. If you are on Linux erf should be already defined in math.h so you need to search for the error in a different place. Do

 June 17, 2010, 17:30 #4 Member   Ivan Join Date: May 2009 Posts: 85 Rep Power: 9 Thank you so much for replying. I run Fluent on Linux. I searched the src folder (it contains the udf.h file) for the file math.h and did NOT find it. If I have to implement a custom version of erf, how to do it? I checked the UDF manual, it says "C compilers include a library of standard mathematical and I/O functions", but it does not say what if I want to use a function like erf.

 June 17, 2010, 17:35 #5 Senior Member   Join Date: Nov 2009 Posts: 411 Rep Power: 11 I would recommend you to use a good book like: http://books.google.ca/books?id=1aAO...page&q&f=false for understanding the theory (erf is not so easy to implement in C). BTW you can not use the code from the book because it is very C++ (template classes and so on) and Fluent won't accept it, but probably you can modify the code ... Do

 June 17, 2010, 17:37 #6 Senior Member   Join Date: Nov 2009 Posts: 411 Rep Power: 11 Hey, try the same code but with: #include instead of: #include "math.h" Let me know if this has solved your problem. Do

 June 17, 2010, 17:39 #7 Senior Member   Join Date: Nov 2009 Posts: 411 Rep Power: 11 /* UDF for specifying a transient inlet velocity profile boundary condition */ #include "udf.h" #include #define PI 4.*atan(1.) #define RT 0.00183 real VM=21.911; real VNin=0.01; /**************** x velocity ****************/ DEFINE_PROFILE(v_x, thread, index) { face_t f; real t,dt,u; real D1,D2,D3,D4,D5,D6,D7; real G1,G2,G3; /* wind gust model parameters */ D1=VM*700; D2=7/(3*RT); D3=1; D4=3/(3*RT); D5=0.15; D6=7/(10*RT); D7=2*PI/(RT/10); /* get flow time */ t = CURRENT_TIME; /* u = X Velocity */ if (t<=VNin*RT) { u = VM;} else { /* get dt */ dt = t-VNin*RT; /* wind gust model */ G1=D1*dt*exp(-D2*dt); G2=D3*erf(D4*dt); G3=D5*exp(-D6*dt)*sin(D7*dt); /* get u */ u = VM+G1+G2+G3;} /* assign X velocity */ begin_f_loop(f, thread) { F_PROFILE(f, thread, index) = u; } end_f_loop(f, thread) }

 June 17, 2010, 17:39 #8 Member   Ivan Join Date: May 2009 Posts: 85 Rep Power: 9 Is it possible that a function libarary containing erf is NOT installed so I can NOT use erf?

 June 17, 2010, 17:43 #9 Member   Ivan Join Date: May 2009 Posts: 85 Rep Power: 9 I tried #include with no luck. got the same error message

 June 17, 2010, 17:46 #10 Senior Member   Join Date: Nov 2009 Posts: 411 Rep Power: 11 It depends of your Linux system, but yes it is possible to not have a C compiler installed. What you can do is to give a search on all your system after math.h (probably it is in /usr/... but better check all), once you find math.h you can check directly if your particular system implements erf (on Ubuntu 9.04 I know the function is implemented). If you want I can send you my messenger id (in a private message) and we will be able to talk faster. Do

 June 17, 2010, 17:54 #11 Member   Ivan Join Date: May 2009 Posts: 85 Rep Power: 9 Thank you DoHander, I am in a rush. And It just came to my mind that I can use (1-exp(-D4*t)) to replace erf function in the code, and it turns out that the velocity profile looks very similar to the one using erf. Engineer must make approximations all the time anyway. I will come back to solve this problem later. thanks again. Ivan

 June 17, 2010, 18:01 #12 Senior Member   Join Date: Nov 2009 Posts: 411 Rep Power: 11 You use a very crude approximation for erf, you will get about 10^-1 error if you use (1-exp(x)) instead of the actual erf. The good thing is that if you were capable to compile your code using the exp function you have math.h on your system . The bad thing is that probably you don't have an erf implementation. Do

 June 17, 2010, 18:02 #13 Senior Member   Join Date: Nov 2009 Posts: 411 Rep Power: 11 Here is a slightly better approximation: http://en.wikipedia.org/wiki/Error_function Do

 June 17, 2010, 18:11 #14 Member   Ivan Join Date: May 2009 Posts: 85 Rep Power: 9 Great! that is indeed a better approximation with elementary functions. Thanks!! Ivan

 Thread Tools Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post gschaider OpenFOAM 300 October 29, 2014 19:00 Max FLUENT 1 September 24, 2010 20:30 Prashanth FLUENT 0 March 3, 2009 23:26 jens_klostermann OpenFOAM Bugs 11 June 28, 2007 17:51 Prateep Chatterjee FLUENT 6 October 16, 2001 19:20

All times are GMT -4. The time now is 10:56.