CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > ANSYS > FLUENT > Fluent UDF and Scheme Programming

A Problem of Fluent Interpreted UDF: parse error

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

Like Tree6Likes

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   February 19, 2010, 15:42
Unhappy A Problem of Fluent Interpreted UDF: parse error
  #1
New Member
 
PengYun
Join Date: Feb 2010
Posts: 1
Rep Power: 0
knight is on a distinguished road
Hello guys!
I am a newly learner of Fluent, I got some problems with my UDF file when I compiled it in Fluent.
I don't want to bother you, while I really searched everywhere but didn't find a good solution. I hope someone could help me

my fluent path:
C:\Fluent.Inc\fluent\ntbin\ntx86\fluent.exe -r6.2.16

Model exported by GAMBIT path:
E:\dissertation\fluent模型\2010-2-5\A11\a11.msh

Udf file(it is a peroidical velocity inlet)
E:\dissertation\fluent模型\2010-2-5\A11\velocity2.c

run FLUENT, READ CASE--A11.MSH,Done!
Then,DEFINE--UDF---INTERPRETED UDF---velocity2.c
It is reported that:

cpp -IC:\Fluent.Inc\fluent\fluent6.2.16/src
-IC:\Fluent.Inc\fluent\fluent6.2.16/cortex/src
-IC:\Fluent.Inc\fluent\fluent6.2.16/client/src
-IC:\Fluent.Inc\fluent\fluent6.2.16/multiport/src -I.
-DUDFCONFIG_H="<udfconfig.h>"
E:\dissertation\fluen 模型\2010-2-5\A11\velocity2.c
Error: E:\dissertation\fluent模型\2010-2-5\A11\velocity2.c: line 1: parse
error.


It's said that there is one PARSE ERROR in line 1,then I opened this velocity.c in VC++

-----------------------------------------------------------------------
#include "udf.h"
#include "stdio.h"
#include "math.h"
#include "stdlib.h"

DEFINE_PROFILE(inlet_velocity1, thread, i)
{
Domain *domain;
Thread *f_thread ;
face_t f;
float time;

// float inlet_d=0.397e-3;
// float ave_v=1.0;

// x0=-0.528e-3;
// y0=0.00000;
// z0=0.00000;
time=CURRENT_TIME;

begin_f_loop(f, thread)
{
F_PROFILE(f, thread, i) = abs(0.003*sin(2*6.283*time));
}
end_f_loop(f, thread)
}
----------------------------------------------------------------------
When compiling, VC said:
e:\dissertation\fluent模型\2010-2-5\a11\velocity2.c(1) : fatal error C1083:
Cannot open include file: 'udf.h': No such file or directory
error when running cl.exe

I remember there is no need to compile udf in VC. Just compiling it in fluent is Ok, because fluent will find the udf.h in its directory. But it seems my Fluent wouldn't cooperate. It turned the error to my velocity.c

Expecting help!
Sincerely thanks

Knight
knight is offline   Reply With Quote

Old   April 19, 2010, 20:17
Default
  #2
New Member
 
sourav singh
Join Date: Apr 2010
Posts: 1
Rep Power: 0
souravsingh1987 is on a distinguished road
I am facing in the same problem.. can someone please help..
souravsingh1987 is offline   Reply With Quote

Old   May 24, 2010, 03:04
Default
  #3
New Member
 
Pacheo
Join Date: Apr 2009
Posts: 7
Rep Power: 14
pacheo is on a distinguished road
Quote:
Originally Posted by knight View Post
Hello guys!
I am a newly learner of Fluent, I got some problems with my UDF file when I compiled it in Fluent.
I don't want to bother you, while I really searched everywhere but didn't find a good solution. I hope someone could help me

my fluent path:
C:\Fluent.Inc\fluent\ntbin\ntx86\fluent.exe -r6.2.16

Model exported by GAMBIT path:
E:\dissertation\fluent模型\2010-2-5\A11\a11.msh

Udf file(it is a peroidical velocity inlet)
E:\dissertation\fluent模型\2010-2-5\A11\velocity2.c

run FLUENT, READ CASE--A11.MSH,Done!
Then,DEFINE--UDF---INTERPRETED UDF---velocity2.c
It is reported that:

cpp -IC:\Fluent.Inc\fluent\fluent6.2.16/src
-IC:\Fluent.Inc\fluent\fluent6.2.16/cortex/src
-IC:\Fluent.Inc\fluent\fluent6.2.16/client/src
-IC:\Fluent.Inc\fluent\fluent6.2.16/multiport/src -I.
-DUDFCONFIG_H="<udfconfig.h>"
E:\dissertation\fluen 模型\2010-2-5\A11\velocity2.c
Error: E:\dissertation\fluent模型\2010-2-5\A11\velocity2.c: line 1: parse
error.


It's said that there is one PARSE ERROR in line 1,then I opened this velocity.c in VC++

-----------------------------------------------------------------------
#include "udf.h"
#include "stdio.h"
#include "math.h"
#include "stdlib.h"

DEFINE_PROFILE(inlet_velocity1, thread, i)
{
Domain *domain;
Thread *f_thread ;
face_t f;
float time;

// float inlet_d=0.397e-3;
// float ave_v=1.0;

// x0=-0.528e-3;
// y0=0.00000;
// z0=0.00000;
time=CURRENT_TIME;

begin_f_loop(f, thread)
{
F_PROFILE(f, thread, i) = abs(0.003*sin(2*6.283*time));
}
end_f_loop(f, thread)
}
----------------------------------------------------------------------
When compiling, VC said:
e:\dissertation\fluent模型\2010-2-5\a11\velocity2.c(1) : fatal error C1083:
Cannot open include file: 'udf.h': No such file or directory
error when running cl.exe

I remember there is no need to compile udf in VC. Just compiling it in fluent is Ok, because fluent will find the udf.h in its directory. But it seems my Fluent wouldn't cooperate. It turned the error to my velocity.c

Expecting help!
Sincerely thanks

Knight
u'd better not include chinese characters in your work folder.

try again.
pacheo is offline   Reply With Quote

Old   February 21, 2011, 10:42
Default math.h stdio.h stdlib.h udf.h in UDFs of FLUENT
  #4
Member
 
Engr Adeniyi
Join Date: Jan 2011
Posts: 32
Rep Power: 13
Galileo is on a distinguished road
This thread is old, but I faced similar problem and found this thinking the way out would have been discussed.

The way round would be to use this header only
#include "udf.h"

and leave out these headers:
#include "stdio.h"
#include "math.h"
#include "stdlib.h"


udf.h defines most of what is needed.

Hope this helps someone else.
AvaShahrokhi, Pacific and thedal like this.
Galileo is offline   Reply With Quote

Old   April 7, 2011, 03:45
Default
  #5
Member
 
Join Date: Mar 2011
Posts: 50
Rep Power: 12
cdf_user is on a distinguished road
make sure you include the full path to the file when you select the file through 'browse'. same goes for udf_library in build during compiling
cdf_user is offline   Reply With Quote

Old   March 13, 2012, 04:23
Default
  #6
New Member
 
Nicola
Join Date: Feb 2012
Posts: 5
Rep Power: 11
sirnick is on a distinguished road
Thank you very much Galileo, you save me!!
sirnick is offline   Reply With Quote

Old   April 18, 2013, 12:46
Default
  #7
New Member
 
Join Date: Apr 2013
Posts: 17
Rep Power: 10
nnvoro is on a distinguished road
I need to use Bessel functions and complex numbers in my udf to set womersley profile in the inlet, when I leave only #include "udf.h" in the header Fluent can't interpret my udf. How can I cope with this problem?
nnvoro is offline   Reply With Quote

Old   April 27, 2013, 06:00
Default
  #8
Member
 
Engr Adeniyi
Join Date: Jan 2011
Posts: 32
Rep Power: 13
Galileo is on a distinguished road
Quote:
Originally Posted by nnvoro View Post
I need to use Bessel functions and complex numbers in my udf to set womersley profile in the inlet, when I leave only #include "udf.h" in the header Fluent can't interpret my udf. How can I cope with this problem?

I am not quite clear with what you want to do, but for you to get help, you need to post more details. For example, you need to say what the error is; are you interpreting or compiling; how complex numbers will work in a BC. Unless you are using one of the parts of a complex number, it will be difficult to code z=a+ib.. You need to be able to express the problem in simple equation or the form the equation will take.
Galileo is offline   Reply With Quote

Old   April 28, 2013, 14:10
Default
  #9
New Member
 
Join Date: Apr 2013
Posts: 17
Rep Power: 10
nnvoro is on a distinguished road
Quote:
Originally Posted by Galileo View Post
I am not quite clear with what you want to do, but for you to get help, you need to post more details. For example, you need to say what the error is; are you interpreting or compiling; how complex numbers will work in a BC. Unless you are using one of the parts of a complex number, it will be difficult to code z=a+ib.. You need to be able to express the problem in simple equation or the form the equation will take.
Engr, I really appreciate that you answered me. The problem was that I was trying to write my boundary conditions in a compact form, for that I used expressions which contained imaginary numbers and Bessel functions. I was taking real part of this expression which is than was used for boundary conditions. Thus I needed imaginary numbers in order to avoid bulky expressions in my udf.
Now, my problem is solved, I did the thing I was trying to avoid, I wrote my udf without using imaginary numbers and Bessel functions.
Galileo likes this.
nnvoro is offline   Reply With Quote

Old   May 1, 2013, 05:29
Default
  #10
New Member
 
Wu Zhuo
Join Date: Apr 2013
Posts: 3
Rep Power: 10
mumu678 is on a distinguished road
感觉使用udf.h就可以满足需求
mumu678 is offline   Reply With Quote

Old   May 6, 2013, 06:17
Default salam
  #11
New Member
 
tehran
Join Date: May 2013
Posts: 4
Rep Power: 10
armanrazy is on a distinguished road
because u used a space before include
Pacific likes this.
armanrazy is offline   Reply With Quote

Old   December 8, 2013, 09:00
Default error while building udf
  #12
New Member
 
siddharth mittal
Join Date: Dec 2013
Posts: 3
Rep Power: 9
siddharth12 is on a distinguished road
I am getting error while compiling udf in fluent 13.0.0

error is
module machine type 'x64' conflicts with target machine type 'X86'

please help
please....
siddharth12 is offline   Reply With Quote

Old   March 5, 2016, 01:26
Default Parse error
  #13
New Member
 
kalaivani
Join Date: Feb 2016
Posts: 2
Rep Power: 0
kalaivani is on a distinguished road
Sir,
Sir,

I tried to work out an example in LNA in ANSYS tool . I got the result.But if i replace it by a HEMT model i get the parse error as Cant interpret this device.Please provide me a solution so that it would be helpful for me to arrive at good solutions.
kalaivani is offline   Reply With Quote

Old   January 16, 2018, 01:37
Default "error:E:fluent/volume.c;line 28 parse error." The udf are as follows:
  #14
Member
 
wan zhihua
Join Date: Dec 2017
Posts: 67
Rep Power: 5
zhihuawan is on a distinguished road
Quote:
Originally Posted by nnvoro View Post
Engr, I really appreciate that you answered me. The problem was that I was trying to write my boundary conditions in a compact form, for that I used expressions which contained imaginary numbers and Bessel functions. I was taking real part of this expression which is than was used for boundary conditions. Thus I needed imaginary numbers in order to avoid bulky expressions in my udf.
Now, my problem is solved, I did the thing I was trying to avoid, I wrote my udf without using imaginary numbers and Bessel functions.

Hi,nnvoro,I meet the same problem,can you help me?this is my problems.

when I interpret the udf to the fluent,it gives errors "error:E:fluent/volume.c;line 28 parse error." The udf are as follows:

/************************************************** *********************
udfexample.c
UDF for specifying volume profile boundary condition
************************************************** **********************/

#include "udf.h"

DEFINE_PROFILE(inlet_volume, thread, position)
{
real x[ND_ND]; /* this will hold the position vector */
real y, h;
face_t f;
h = -0.0009; /* inlet height in m */
begin_f_loop(f,thread)
{
F_CENTROID(x, f, thread);
y = x[1];
if (y<h)
{
F_PROFILE(f, thread, position) =1;
}
else {
F_PROFILE(f, thread, position) =0;
}
end_f_loop(f, thread)

}
zhihuawan is offline   Reply With Quote

Old   January 16, 2018, 04:47
Default
  #15
Senior Member
 
Join Date: Sep 2017
Posts: 230
Rep Power: 8
obscureed is on a distinguished road
Dear Zhihuawan,

You start the face loop with "begin_f_loop(f,thread) {", so you need to end it with "} end_f_loop(f,thread)" -- note the closing "}", which is currently missing.

I would highly recommend that everyone trying to write UDFs (or other code) uses a text editor that indents automatically, and that shows matching pairs of opening brackets/braces/parentheses/etc. If you don't have time to learn vim or emacs, try Notepad++ and look for auto-indent.

Also, this thread is about interpreted UDFs. I would highly recommend using compiled UDFs unless your sys-admins make it completely impossible. Interpreted UDFs are very restricted (and probably slow, though I have never tested this).

Best regards,
Ed
pakk likes this.
obscureed is offline   Reply With Quote

Old   January 17, 2018, 20:31
Default [QUOTE=obscureed;678284]Dear Zhihuawan, You start the face loop with "begin_f_loop(f
  #16
Member
 
wan zhihua
Join Date: Dec 2017
Posts: 67
Rep Power: 5
zhihuawan is on a distinguished road
Quote:
Originally Posted by obscureed View Post
Dear Zhihuawan,

You start the face loop with "begin_f_loop(f,thread) {", so you need to end it with "} end_f_loop(f,thread)" -- note the closing "}", which is currently missing.

I would highly recommend that everyone trying to write UDFs (or other code) uses a text editor that indents automatically, and that shows matching pairs of opening brackets/braces/parentheses/etc. If you don't have time to learn vim or emacs, try Notepad++ and look for auto-indent.

Also, this thread is about interpreted UDFs. I would highly recommend using compiled UDFs unless your sys-admins make it completely impossible. Interpreted UDFs are very restricted (and probably slow, though I have never tested this).

Best regards,
Ed

Thank you very much .I solve my problem by your idea. but I have some questions:
(1)I want to send you the udf files, but I do not know how.
(2)I also want to compile it ,but it failed ,should I change the udf to be a compiled udf.How can do it ?
(3)Can you tell me what should learn if I want to master the udf prgramming.
Thank you very much.
zhihuawan is offline   Reply With Quote

Old   January 17, 2018, 20:56
Default This is the pictures about my udf and error tips.
  #17
Member
 
wan zhihua
Join Date: Dec 2017
Posts: 67
Rep Power: 5
zhihuawan is on a distinguished road
Quote:
Originally Posted by obscureed View Post
Dear Zhihuawan,

You start the face loop with "begin_f_loop(f,thread) {", so you need to end it with "} end_f_loop(f,thread)" -- note the closing "}", which is currently missing.

I would highly recommend that everyone trying to write UDFs (or other code) uses a text editor that indents automatically, and that shows matching pairs of opening brackets/braces/parentheses/etc. If you don't have time to learn vim or emacs, try Notepad++ and look for auto-indent.

Also, this thread is about interpreted UDFs. I would highly recommend using compiled UDFs unless your sys-admins make it completely impossible. Interpreted UDFs are very restricted (and probably slow, though I have never tested this).

Best regards,
Ed
This is the pictures about my udf and error tips.

IMG_5436.jpg

IMG_5437.jpg
zhihuawan is offline   Reply With Quote

Old   January 18, 2018, 02:16
Default
  #18
Senior Member
 
Join Date: Nov 2013
Posts: 1,913
Rep Power: 23
pakk will become famous soon enough
Quote:
Originally Posted by zhihuawan View Post
This is the pictures about my udf and error tips.

Attachment 60866

Attachment 60867
Please show the error that you get when you try to compile the udf. Not the error that you get when you try to load the udf.
You should see a warning about line 12 or 13. The code that you used is slightly different from the code that you posted on this forum.
pakk is offline   Reply With Quote

Old   January 18, 2018, 06:24
Default [QUOTE=pakk;678527]Please show the error that you get when you try to compile the udf
  #19
Member
 
wan zhihua
Join Date: Dec 2017
Posts: 67
Rep Power: 5
zhihuawan is on a distinguished road
Quote:
Originally Posted by pakk View Post
Please show the error that you get when you try to compile the udf. Not the error that you get when you try to load the udf.
You should see a warning about line 12 or 13. The code that you used is slightly different from the code that you posted on this forum.
I do not know how to comiled the udf ,can you tell me how to do it?Yes ,I plus a "}" before the "end_f_loop(f,thread)",therefore ,it can works.
zhihuawan is offline   Reply With Quote

Old   January 18, 2018, 07:47
Default
  #20
Senior Member
 
Join Date: Nov 2013
Posts: 1,913
Rep Power: 23
pakk will become famous soon enough
Quote:
Originally Posted by zhihuawan View Post
I do not know how to comiled the udf ,can you tell me how to do it?Yes ,I plus a "}" before the "end_f_loop(f,thread)",therefore ,it can works.
You were able to find the "load" button. On the same screen, there is the "build" button. You should click the "build" button before you click the "load" button.
pakk is offline   Reply With Quote

Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

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 Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
parse error while interpreting udf Kristin Fluent UDF and Scheme Programming 3 March 15, 2012 06:43
UDF: DEFINE_CG_MOTION for vertical jump motion of an electrode! alban Fluent UDF and Scheme Programming 2 June 8, 2010 18:54
Version 15 on Mac OS X gschaider OpenFOAM Installation 113 December 2, 2009 10:23
Compiling problems with hello worldC fw407 OpenFOAM Installation 21 January 6, 2008 17:38
DecomposePar links against liblamso0 with OpenMPI jens_klostermann OpenFOAM Bugs 11 June 28, 2007 17:51


All times are GMT -4. The time now is 19:17.