CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > FLUENT

Error while compliling an UDF

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

Reply
 
LinkBack Thread Tools Display Modes
Old   September 1, 2009, 08:20
Default Error while compliling an UDF
  #1
New Member
 
Kappe
Join Date: Aug 2009
Posts: 8
Rep Power: 9
Kappe is on a distinguished road
Hi I have written an UDF to oscillate my geometry. When i complie it i have the fluent says:
1 file(s) copied. ( the UDF.c file)
1 file(s) copied.( udf.h)
1 file(s) copied.(metric.h)
(system "copy C:\Fluent.Inc\fluent6.2.16\src\makefile_nt.udf libudf\ntx86\2ddp\makefile") 1 file(s) copied.
0
(chdir "libudf")()
(chdir "ntx86\2ddp")()
UDF.c
e:\shreyas\naca0012\unstructured\libudf\src\udf.c( 27) : warning C4700: uninitialized local variable 'node' used
# Generating udf_names.c because of makefile UDF.obj

Done.


Opening library "libudf"...
Error: open_udf_library: The system cannot find the file specified.

Error Object: ()

THE LOG FILE SAYS:
sed' is not recognized as an internal or external command,
operable program or batch file.
NMAKE : U1077: 'C:\WINDOWS\system32\cmd.exe' : return code '0x1'
Stop.
PLZ HELP!!!!!




my UDF is


#include "udf.h"
#include "metric.h"

DEFINE_CG_MOTION(Oscillation, dt, vel, omega, time, dtime)

{


face_t f;
Thread *tf = DT_THREAD(dt);
real xn, yn, r, sin_theta, cos_theta;
int n;

begin_f_loop(f,tf) /* Loops over all faces in the thread passed in the DEFINE macro argument */

{
f_node_loop(f,tf,n) /* Loops over all nodes in the face */

{
Node *node;
xn = NODE_X(node); // calculate x-coordinate of a grid point on wall
yn = NODE_Y(node); // calculate y-coordinate of a grid point on wall
r = sqrt(pow(xn,2)+pow(yn,2)); // calculate radial coordinate of the grid point on wall
sin_theta = yn/r;
cos_theta = xn/r;
vel[1]=cos(3.14159*time)*cos_theta*0.087266463*3.14159*r ; //y-component of velocity
vel[0]= cos(3.14159*time)*sin_theta*0.087266463*3.14159*r; //x-component of velocity


}
}

end_f_loop(f,tf);

}
Kappe is offline   Reply With Quote

Old   June 23, 2011, 17:53
Default
  #2
Member
 
Join Date: Mar 2011
Posts: 38
Rep Power: 7
aleisia is on a distinguished road
Hi, have you figured out the way to eliminate the "warning C4700: uninitialized local variable 'node' used"?
I have the same problem in mu UDF, can you please share your experience with me?

Thanks!

Quote:
Originally Posted by Kappe View Post
Hi I have written an UDF to oscillate my geometry. When i complie it i have the fluent says:
1 file(s) copied. ( the UDF.c file)
1 file(s) copied.( udf.h)
1 file(s) copied.(metric.h)
(system "copy C:\Fluent.Inc\fluent6.2.16\src\makefile_nt.udf libudf\ntx86\2ddp\makefile") 1 file(s) copied.
0
(chdir "libudf")()
(chdir "ntx86\2ddp")()
UDF.c
e:\shreyas\naca0012\unstructured\libudf\src\udf.c( 27) : warning C4700: uninitialized local variable 'node' used
# Generating udf_names.c because of makefile UDF.obj

Done.


Opening library "libudf"...
Error: open_udf_library: The system cannot find the file specified.

Error Object: ()

THE LOG FILE SAYS:
sed' is not recognized as an internal or external command,
operable program or batch file.
NMAKE : U1077: 'C:\WINDOWS\system32\cmd.exe' : return code '0x1'
Stop.
PLZ HELP!!!!!




my UDF is


#include "udf.h"
#include "metric.h"

DEFINE_CG_MOTION(Oscillation, dt, vel, omega, time, dtime)

{


face_t f;
Thread *tf = DT_THREAD(dt);
real xn, yn, r, sin_theta, cos_theta;
int n;

begin_f_loop(f,tf) /* Loops over all faces in the thread passed in the DEFINE macro argument */

{
f_node_loop(f,tf,n) /* Loops over all nodes in the face */

{
Node *node;
xn = NODE_X(node); // calculate x-coordinate of a grid point on wall
yn = NODE_Y(node); // calculate y-coordinate of a grid point on wall
r = sqrt(pow(xn,2)+pow(yn,2)); // calculate radial coordinate of the grid point on wall
sin_theta = yn/r;
cos_theta = xn/r;
vel[1]=cos(3.14159*time)*cos_theta*0.087266463*3.14159*r ; //y-component of velocity
vel[0]= cos(3.14159*time)*sin_theta*0.087266463*3.14159*r; //x-component of velocity


}
}

end_f_loop(f,tf);

}
aleisia is offline   Reply With Quote

Old   June 24, 2011, 09:04
Default
  #3
New Member
 
John Palmore
Join Date: Jun 2010
Posts: 8
Rep Power: 8
p4lm0r3 is on a distinguished road
To me it looks like the variable node has not been declared properly. I think your code should look something like this:

Node *node;
begin_f_loop(f,tf) /* Loops over all faces in the thread passed in the DEFINE macro argument */

{
f_node_loop(f,tf,node) /* Loops over all nodes in the face */

{
xn = NODE_X(node); // calculate x-coordinate of a grid point on wall
yn = NODE_Y(node); // calculate y-coordinate of a grid point on wall
...
p4lm0r3 is offline   Reply With Quote

Old   June 27, 2011, 20:59
Default
  #4
Member
 
Tobino
Join Date: Jan 2011
Location: Osaka,Japan
Posts: 33
Rep Power: 7
tobino is on a distinguished road
Hi,
I am too using UDF, your code not problem may be you not complete in creating environment for Fluent to connect with C programme.
tobino is offline   Reply With Quote

Old   June 28, 2011, 17:34
Exclamation Problem with six_dof.h
  #5
New Member
 
Turan Colak
Join Date: Jun 2011
Posts: 2
Rep Power: 0
colaktu is on a distinguished road
Dear Friends;
I'd faced a problem with my six_dof.h file. I'd build an UDF file that used sdof_properties macro, fluent returned a parse error. I've checked some other macros such as velocity, boundary it works fine. But when i used dynamic mesh macros, get parse errors. I tried "#include six_dof.h" option and received parse error at line 69. Is there any body faced with this before or knows solution.
thanks..
colaktu is offline   Reply With Quote

Old   June 30, 2011, 09:46
Default
  #6
Member
 
Adrien Lemoine
Join Date: Jun 2011
Location: Paris,France
Posts: 31
Rep Power: 7
AdrienL is on a distinguished road
Hi,

here is your UDF (corrected from line 21 to 26) and it s working on my computer.

UDF :

#include "udf.h"
#include "metric.h"

DEFINE_CG_MOTION(Oscillation, dt, vel, omega, time, dtime)

{


face_t f;
Thread *tf = DT_THREAD(dt);
real xn, yn, r, sin_theta, cos_theta;
int n;

begin_f_loop(f,tf) /* Loops over all faces in the thread passed in the DEFINE macro argument */

{
f_node_loop(f,tf,n) /* Loops over all nodes in the face */

{
Node *node;
xn = NODE_X(node); /* calculate x-coordinate of a grid point on wall */
yn = NODE_Y(node); /* calculate y-coordinate of a grid point on wall */
r = sqrt(pow(xn,2)+pow(yn,2)); /* calculate radial coordinate of the grid point on wall */
sin_theta = yn/r;
cos_theta = xn/r;
vel[1]=cos(3.14159*time)*cos_theta*0.087266463*3.14159*r ; /*y-component of velocity */
vel[0]= cos(3.14159*time)*sin_theta*0.087266463*3.14159*r; /*x-component of velocity */


}
}

end_f_loop(f,tf);

}

(DON'T FORGET TO USE dos2unix fonction if using Unix)

Sincerly

Adrien



Plz add reputation if the answer is correct
AdrienL is offline   Reply With Quote

Old   July 1, 2011, 00:14
Default
  #7
Member
 
Join Date: Mar 2011
Posts: 38
Rep Power: 7
aleisia is on a distinguished road
Hi AdrienL,
Can you please take a look at my UDF?I want to model a filter (but not modeling it as a porous media), in a room I have SO2 and air mixture. First I want to get the SO2 mass flow rate at the inlet surface of the filter, then multiply it by 0.999989, and set the sink rate of the filter volume as -0.999989*(SO2 mass flow rate at the inlet surface)/(Volume of filter). For the outlet of the filter, I set it as "interior", and my simulation is always transient.

The error I got for parallel computing is:

999999 (..\src\mpsystem.c@1149): mpt_read: failed: errno = 10054

999999: mpt_read: error: read failed trying to read 4 bytes: No such file or directory
MPI Application rank 0 exited before MPI_Finalize() with status -1073741819

If I switched to serial computing, the error I got is:
Error:
FLUENT received fatal signal (ACCESS_VIOLATION)
1. Note exact events leading to error.
2. Save case/data under new name.
3. Exit program and restart to continue.
4. Report error to your distributor.

Error:
FLUENT received fatal signal (ACCESS_VIOLATION)
1. Note exact events leading to error.
2. Save case/data under new name.
3. Exit program and restart to continue.
4. Report error to your distributor.
Error Object: #f

I don't know what I wrote wrong,,,

#include "udf.h"

#define inlet_surface_ID 70
#define filter_volume_ID 3

DEFINE_ADJUST(my_adjust, d)
{
int i=0;
real massflowrate=0.;
real vol=0.;
#if !RP_HOST
/* real A[ND_ND]; */
/* real flux[ND_ND]; */
real NV_VEC(flux);
real NV_VEC(A); /* declaring vectors flux and A */
real source;

/* real ti = RP_Get_Real("flow-time"); */ /* ti = CURRENT_TIME;*/
face_t f;
cell_t c;
Thread *t;
Thread *thread;

/* vol=0.0; */
/* massflowrate=0.0; */

t = Lookup_Thread(d, inlet_surface_ID); /* defining the inlet surface thread by specifying the Zone_ID*/
thread= Lookup_Thread(d, filter_volume_ID); /* defining the filter volume thread by specifying the Zone_ID*/



/* Send the ID value to all the nodes */
/* host_to_node_real_4(f, t, c, thread); Does nothing in serial, t is the thread of inlet surface, thread is the thread of the filter volume */

/*Start to calculate the mass flow rate through the inlet surface and store it in UDM*/

begin_f_loop(f,t)
if PRINCIPAL_FACE_P(f,t) /* tests if the face is the principle face FOR COMPILED UDFs ONLY */
{
/* NV_D(flux, =, F_U(f,t), F_V(f,t), F_W(f,t)); */ /* defining flux in terms of velocity field */
/* NV_S(flux, *=, F_R(f,t)); */ /* multiplying density to get flux vector */
/* F_AREA(A,f,t); */ /* face normal vector returned from F_AREA */
/* i is being used uninitialized. Please fix this */
massflowrate += F_FLUX(f,t)*F_YI(f,t,i); /* dot product of the inlet surface flux and area vector, multiplied by the mass fraction of species i */
}
end_f_loop(f,t)

# if RP_NODE /* Perform node synchronized actions here, Does nothing in Serial */
massflowrate = PRF_GRSUM1(massflowrate);
# endif /* RP_NODE */


begin_f_loop(f,t)
if PRINCIPAL_FACE_P(f,t) /* tests if the face is the principle face FOR COMPILED UDFs ONLY */
{
F_UDMI(f, t, 0)= massflowrate; /* YOU MAY NEED TO CHECK THE NODE AS THE SUMMED UP VALUE OF massflowrate IS DONE AT node0. */
}
end_f_loop(f,t)
#if RP_NODE0
Message0("Inlet TEP Mass Flow Rate through %d is: %g \n", inlet_surface_ID, massflowrate);
#endif
/*Start to calculate the total volume of filter volume and store it in UDM */
begin_c_loop(c,thread)
{
vol += C_VOLUME(c,thread); /* get cell volume */
}
end_c_loop_int(c,thread)

#if RP_NODE /* Perform node synchronized actions here, Does nothing in Serial */
vol= PRF_GRSUM1(vol);
# endif /* RP_NODE */

begin_c_loop_int(c,thread)
{
C_UDMI(c, thread, 1)= vol; /* YOU MAY NEED TO CHECK THE NODE AS THE SUMMED UP VALUE OF massflowrate IS DONE AT node0. */
}
end_c_loop_int(c,thread)

#if RP_NODE0
Message0("Sink Volume in %d is: %g \n", filter_volume_ID, vol);
#endif

#endif
}

DEFINE_SOURCE(cell_tepmass_source, c, thread, dS, eqn)
{
real source=0.;
real tepflowrate=0.;
real vol_tot=0.;
#if !RP_HOST
/* real ti = RP_Get_Real("flow-time"); /\* ti = CURRENT_TIME;*\/ */
face_t f=0;
Thread *t;
/* Thread *thread; */
Domain *d = Get_Domain(1);
t= Lookup_Thread(d, inlet_surface_ID); /* defining the inlet surface thread by specifying the Zone_ID*/
thread= Lookup_Thread(d, filter_volume_ID); /* defining the filter volume thread by specifying the Zone_ID*/

/* f is being utilized without initialization. This will lead to errors.Please fix this issue */
/* instead of F_UDMI, you can store data in C_UDMI */
tepflowrate= F_UDMI(f, t, 0);
vol_tot = C_UDMI(c, thread, 1);

#endif

/* Pass the node's TEP mass flow rate and volume to the Host for calculating source */
node_to_host_real_2(tepflowrate, vol_tot); /* Does nothing in SERIAL */
#if !RP_NODE
source=0.999989*tepflowrate/vol_tot;
dS[eqn]=0.;
Message("Sink Rate in Filter %d is %g (kg/m^3/s)\n", filter_volume_ID,source);
#endif
return source;
}


Quote:
Originally Posted by AdrienL View Post
Hi,

here is your UDF (corrected from line 21 to 26) and it s working on my computer.

UDF :

#include "udf.h"
#include "metric.h"

DEFINE_CG_MOTION(Oscillation, dt, vel, omega, time, dtime)

{


face_t f;
Thread *tf = DT_THREAD(dt);
real xn, yn, r, sin_theta, cos_theta;
int n;

begin_f_loop(f,tf) /* Loops over all faces in the thread passed in the DEFINE macro argument */

{
f_node_loop(f,tf,n) /* Loops over all nodes in the face */

{
Node *node;
xn = NODE_X(node); /* calculate x-coordinate of a grid point on wall */
yn = NODE_Y(node); /* calculate y-coordinate of a grid point on wall */
r = sqrt(pow(xn,2)+pow(yn,2)); /* calculate radial coordinate of the grid point on wall */
sin_theta = yn/r;
cos_theta = xn/r;
vel[1]=cos(3.14159*time)*cos_theta*0.087266463*3.14159*r ; /*y-component of velocity */
vel[0]= cos(3.14159*time)*sin_theta*0.087266463*3.14159*r; /*x-component of velocity */


}
}

end_f_loop(f,tf);

}

(DON'T FORGET TO USE dos2unix fonction if using Unix)

Sincerly

Adrien



Plz add reputation if the answer is correct
aleisia is offline   Reply With Quote

Reply

Thread Tools
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 On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
UDF parallel error: chip-exec: function not found????? shankara.2 Fluent UDF and Scheme Programming 1 January 16, 2012 23:14
How to add a UDF to a compiled UDF library kim FLUENT 3 October 26, 2011 21:38
Dynamic Mesh UDF Qureshi FLUENT 1 December 2, 2009 01:27
UDF...UDF...UDF...UDF Luc SEMINEL FLUENT 0 November 25, 2002 05:03
UDF, UDF, UDF, UDF Luc SEMINEL Main CFD Forum 0 November 25, 2002 05:01


All times are GMT -4. The time now is 14:46.