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

UDF in Cylindrical Coordinate

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

Like Tree1Likes
  • 1 Post By Nourhan Bahgat

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   August 22, 2011, 03:51
Question UDF in Cylindrical Coordinate
  #1
New Member
 
Masoud Hassani
Join Date: Aug 2011
Posts: 3
Rep Power: 11
mas_viper is on a distinguished road
Hi guys,
I am a newbie in UDF world and I need some help for a simple UDF problem.
I have a 3d turbo setup and i need to have tangential velocity profile in inlet as a function of "r" in cylindrical coordinate. I had no idea about C programing and UDF so I used Fluent sample for inlet boundary and changed it to this:

#include "udf.h"
DEFINE_PROFILE(T_velocity,thread,index)
{
real x[ND_ND];
real y[ND_ND];
real xx;
real yy;
face_t f;

begin_f_loop(f,thread) /* loops over all faces in the thread passed
in the DEFINE macro argument */
{
F_CENTROID(y,f,thread);
yy = y[1];
F_CENTROID(x,f,thread);
xx = x[1];

F_PROFILE(f,thread,index) = 0.00002*(xx*xx+yy*yy)*1000000-0.028*sqrt(xx*xx+yy*yy)*1000+11.565;
}
end_f_loop(f,thread)
}

Clearly it did not work because I did not know what I was doing!!! please helpme to change this UDF to give me velocity in cylindrical coordinate as "0.00002*r^2*1000000-0.028*r*1000+11.565" where "r" is radial distance from 0,0,0
Thank you


mas_viper is offline   Reply With Quote

Old   August 22, 2011, 06:46
Default
  #2
New Member
 
Join Date: Aug 2011
Posts: 5
Rep Power: 11
Erny is on a distinguished road
If I am not mistaken the;-

F_CENTROID(x,f,thread)

Should give you the x,y,z coordinates for the cell such as;-
x[0] = x
x[1] = y
x[2] = z
Erny is offline   Reply With Quote

Old   August 22, 2011, 07:43
Default
  #3
New Member
 
Masoud Hassani
Join Date: Aug 2011
Posts: 3
Rep Power: 11
mas_viper is on a distinguished road
Thank you so much! It is so easy
mas_viper is offline   Reply With Quote

Old   April 18, 2012, 07:55
Default
  #4
New Member
 
Aydın Dönmez
Join Date: Feb 2012
Posts: 4
Rep Power: 11
donmezayd is on a distinguished road
i also have to define a parabolic tangential profile but the velocity values computed by the udf does not match with the real values. help please!

#include "udf.h"
DEFINE_PROFILE(velocity_profile,t,i)
{
real x[ND_ND]; /* this will hold the position vector */
real r,R,omega;
face_t f;
R=0.1;
omega=20;
begin_f_loop(f,t)
{
F_CENTROID(x,f,t);
r=sqrt((x[0]*x[0])+(x[1]*x[1]));

F_PROFILE(f,t,i) = (omega*R*R/r)*(1-exp(-r*r/R*R));
}
end_f_loop(f,t)
}
donmezayd is offline   Reply With Quote

Old   January 4, 2018, 08:54
Default UDF Fluent
  #5
New Member
 
hiba
Join Date: Jan 2018
Posts: 5
Rep Power: 5
hiibaa is on a distinguished road
Hello

I have a problem in my UDF fluent. I need to create a heat flux boundary condition in cylindrical coordinate as a function of "r": flux= 650 000 exp(-96 r) .
Please can you help me . Thank you in advance.

#include "udf.h"

DEFINE_PROFILE(wallheatgenerate, thread, position)
{face_t f;
real x[ND_ND];
real y ;
real z[ND_ND];
real w ;
real r[ND_ND];
begin_f_loop(f, thread)

{

F_CENTROID(z,f,thread);
w = z[0];

F_CENTROID(x,f,thread);
y = x[0];
F_CENTROID(r,f,thread);

r=y*y+w*w
F_PROFILE(f, thread, position) = 650 000 exp(-96 r) .;
}

end_f_loop(f, thread)
}
hiibaa is offline   Reply With Quote

Old   January 5, 2018, 05:49
Default
  #6
Senior Member
 
Join Date: Nov 2013
Posts: 1,677
Rep Power: 22
pakk will become famous soon enough
What is "r"? Should it be the square root of (x^2+y^2)? Or the square root of (x^2+y^2+z^2)?

Furthermore, look at the comment of Erny of August 22, 2011 10:46, above. You are using "F_CENTROID" three times, but one time is enough, you only need to find the location once.

And if you write this:
Code:
650 000 exp(-96 r) .
I understand what you want. But the compiler does not. If you want the program to multiply numbers, you should tell the compiler to multiply numbers. Don't just put a space, the compiler does not understand.

Finally: put a semicolon ( ; ) at the end of each line. Not a dot ( . ) .
pakk is offline   Reply With Quote

Old   January 5, 2018, 06:06
Default
  #7
New Member
 
hiba
Join Date: Jan 2018
Posts: 5
Rep Power: 5
hiibaa is on a distinguished road
Think you pakk for your interest
r=x²+ z²
I'm using "F_CENTROID" once time but i found the same problem.

#include "udf.h"

DEFINE_PROFILE(wallheatgenerate, thread, position)
{face_t f;
real x[ND_ND];
real y ;
real z[ND_ND];
real w ;
real r[ND_ND];
begin_f_loop(f, thread)
{
F_CENTROID(x,f,thread);
y = x[0];
r=y*y+w*w
F_PROFILE(f, thread, position) = 650 000 exp(-96 r);
}
end_f_loop(f, thread)
}
Please help me
hiibaa is offline   Reply With Quote

Old   January 5, 2018, 06:09
Default
  #8
Senior Member
 
Join Date: Nov 2013
Posts: 1,677
Rep Power: 22
pakk will become famous soon enough
Read the rest of my post. I told you everything you need to know to solve your problem.
pakk is offline   Reply With Quote

Old   January 5, 2018, 06:14
Default
  #9
New Member
 
hiba
Join Date: Jan 2018
Posts: 5
Rep Power: 5
hiibaa is on a distinguished road
For this UDF, the same problem

#include "udf.h"
DEFINE_PROFILE(wallheatgenerate, thread, position)
{face_t f;
real x[ND_ND];
real y ;
real z[ND_ND];
real w ;
real r[ND_ND];
begin_f_loop(f, thread)
{
F_CENTROID(x,f,thread);
y = x[0];
r=y*y+w*w
F_PROFILE(f, thread, position) = 650 000* exp(-96* r);
}
end_f_loop(f, thread)
}
hiibaa is offline   Reply With Quote

Old   January 5, 2018, 06:30
Default
  #10
New Member
 
hiba
Join Date: Jan 2018
Posts: 5
Rep Power: 5
hiibaa is on a distinguished road
my problem is to define the radius of the cylinder "r=x²+z²" and to create the function of the flux distribution according to the cylinder radius because in fluent there is that the cartesian coordinates.

Think you for your comments, I well understand the ";" and "*"
hiibaa is offline   Reply With Quote

Old   January 5, 2018, 07:41
Default
  #11
Senior Member
 
Join Date: Nov 2013
Posts: 1,677
Rep Power: 22
pakk will become famous soon enough
Code:
#include "udf.h"
DEFINE_PROFILE(wallheatgenerate, thread, position) 
{face_t f;
real x[ND_ND];
real y ;
real z[ND_ND];
real w ;
real r[ND_ND]; 
begin_f_loop(f, thread)
{ 
F_CENTROID(x,f,thread);
y = x[0];
r=y*y+w*w
F_PROFILE(f, thread, position) = 650 000* exp(-96* r); 
}
end_f_loop(f, thread)
}
1. Why do you define x, y, z, and w? Did you not read the post by Erny from August 22, 2011 10:46? You want to get coordinates. Let's put them in the variable "coordinates":
Code:
real coordinates[ND_ND];
...
F_CENTROID(coordinates,f,thread);
The variable coordinates has three components: one for x, one for y, one for z. You call them by coordinates[0], coordinates[1] and coordinates[2].

2. Why do you still no use a semicolon in your calculation of radius?

3. Why do you not use the square root in your calculation of radius?

4. Why do you write "650 000" with a space in between? The compiler does not understand what you mean by this, it just sees two numbers (650 and 0) directly behind each other.
pakk is offline   Reply With Quote

Old   January 5, 2018, 07:49
Default
  #12
New Member
 
hiba
Join Date: Jan 2018
Posts: 5
Rep Power: 5
hiibaa is on a distinguished road
Thank you very much pakk for your interest and your help. I well understand you.
hiibaa is offline   Reply With Quote

Old   January 11, 2018, 00:53
Default Request for guidance about UDF DEFINE_PROFILE
  #13
New Member
 
Masroor
Join Date: Nov 2015
Posts: 9
Rep Power: 7
Masroor is on a distinguished road
Quote:
Originally Posted by pakk View Post
Read the rest of my post. I told you everything you need to know to solve your problem.
Hi,
Hope you will be fine and healthy while reading this message
I have written a UDF for gas volume fraction at inlet boundary of a 3-D cylinder. When I try to compile the UDF in ansys fluent I receive a message and it fails to be compliled. The message is
"The UDF library you are trying to load (libudf) is not compiled for 3d on the current platform (win64).
The system cannot find the file specified.
C:\Users\Masroor\Desktop\Non-uniform holdup at boundary condition\libudf\win64\3d\libudf.dll"

Then I tried to interpret the UDF and received the following error

"Error: C:\\Users\\Masroor\\Desktop\\Non-uniform holdup at boundary condition\\non-uniform gas holdup at inlet3.c: line 49: parse error.
Error: C:\\Users\\Masroor\\Desktop\\Non-uniform holdup at boundary condition\\non-uniform gas holdup at inlet3.c: line 50: f: undeclared variable
"
I need your expert and valuable suggestions and guidance to overcome that problem. Below this I am pasting the .c code

/******************************************
Customized gas holdup at inlet
*******************************************/
#include "udf.h"

#define VG 0.044 /* constants */
#define D 0.12
#define R 0.06
#define ST 0.0732
#define AVGH 0.184
#define RHOL 998.2
#define RHOG 1.225
#define MUL 0.001003
#define G 9.81

DEFINE_PROFILE(air_vof_profile,t,i)
{
real r, a, rho, m, reyp, Fr, Mo, coeff, wholdup;
real x[ND_ND];
real z;
z = x[2];
/*compute rho*/
rho = RHOL - RHOG;

/*compute Reynold's number*/
reyp = D*VG*rho/MUL;

/*compute Fr number*/
Fr = pow(VG,2)/(G*D);

/*compute Mo number*/
Mo= G*pow(MUL,4)*(rho)/(pow(0.0732,3)*pow(RHOL,2));

/*compute m*/
m = 2.188*(pow(reyp,-0.598))*pow(Fr,0.146)*pow(Mo,-0.004);

/*compute a*/
a = (m+2)/m;

/*compute coeff*/
coeff = 4.32*(pow(reyp,0.2492))/100;

/*compute r*/
r = sqrt((x[0]*x[0])+(x[2]*x[2]));

/*compute wholdup*/
wholdup = 1-coeff*(r/R);
face_t f;
begin_f_loop(f, t)
{
F_CENTROID(x, f, t);
F_PROFILE(f,t,i) = a*(AVGH-wholdup)*(1-(pow((r/R),m)+wholdup;
}
end_f_loop(f,t)
}

Your cooperation will highly be appreciated. Thanking you in advance and looking forward to receive a positive and quick response from your side.
Masroor is offline   Reply With Quote

Old   January 11, 2018, 04:39
Default
  #14
Senior Member
 
Join Date: Nov 2013
Posts: 1,677
Rep Power: 22
pakk will become famous soon enough
Quote:
Originally Posted by Masroor View Post
When I try to compile the UDF in ansys fluent I receive a message and it fails to be compliled. The message is
"The UDF library you are trying to load (libudf) is not compiled for 3d on the current platform (win64).
What you are saying is not true. This is not the message that you get when you try to compile the UDF. This is the message that you get when you try to load the UDF. Read the message, it explicitly says this...

Probably you also got a message when you tried to compile, but it did not come up in a separate screen, but was written to the normal TUI field. Read there...

Quote:
"Error: C:\\Users\\Masroor\\Desktop\\Non-uniform holdup at boundary condition\\non-uniform gas holdup at inlet3.c: line 49: parse error.
Error: C:\\Users\\Masroor\\Desktop\\Non-uniform holdup at boundary condition\\non-uniform gas holdup at inlet3.c: line 50: f: undeclared variable
"
I need your expert and valuable suggestions and guidance to overcome that problem. Below this I am pasting the .c code

/******************************************
Customized gas holdup at inlet
*******************************************/
#include "udf.h"

#define VG 0.044 /* constants */
#define D 0.12
#define R 0.06
#define ST 0.0732
#define AVGH 0.184
#define RHOL 998.2
#define RHOG 1.225
#define MUL 0.001003
#define G 9.81

DEFINE_PROFILE(air_vof_profile,t,i)
{
real r, a, rho, m, reyp, Fr, Mo, coeff, wholdup;
real x[ND_ND];
real z;
z = x[2];
/*compute rho*/
rho = RHOL - RHOG;

/*compute Reynold's number*/
reyp = D*VG*rho/MUL;

/*compute Fr number*/
Fr = pow(VG,2)/(G*D);

/*compute Mo number*/
Mo= G*pow(MUL,4)*(rho)/(pow(0.0732,3)*pow(RHOL,2));

/*compute m*/
m = 2.188*(pow(reyp,-0.598))*pow(Fr,0.146)*pow(Mo,-0.004);

/*compute a*/
a = (m+2)/m;

/*compute coeff*/
coeff = 4.32*(pow(reyp,0.2492))/100;

/*compute r*/
r = sqrt((x[0]*x[0])+(x[2]*x[2]));

/*compute wholdup*/
wholdup = 1-coeff*(r/R);
face_t f;
begin_f_loop(f, t)
{
F_CENTROID(x, f, t);
F_PROFILE(f,t,i) = a*(AVGH-wholdup)*(1-(pow((r/R),m)+wholdup;
}
end_f_loop(f,t)
}

Your cooperation will highly be appreciated. Thanking you in advance and looking forward to receive a positive and quick response from your side.
The errors point to lines 49 and 50, so look there.
These lines are:
Code:
[49] face_t f;
[50] begin_f_loop(f, t)
The error for line 49 means "I have no idea what you want here."
The error for line 50 means "You use "f", but I don't know what "f" is."

You try to define "f" in line 49, so because Fluent does not know what you mean, it can not use "f" in line 50. This suggests that fixing the error for line 49 will also fix the error for line 50. This is usually the case: if you get a series of errors/warnings, focus on the first one.

And the reason that you get errors: in this version of C, you are supposed to declare variables at the beginning of a function, not halfway. So, move your line 49 higher up in your code, to where you declare the rest of your variables (lines 18 to 20).

You might find additional problems because your folder has a space in its name. Better to avoid these. This *should* not be a problem, but the Fluent programmers did not program this properly.
pakk is offline   Reply With Quote

Old   January 11, 2018, 06:05
Default Request for guidance about UDF DEFINE_PROFILE
  #15
New Member
 
Masroor
Join Date: Nov 2015
Posts: 9
Rep Power: 7
Masroor is on a distinguished road
Quote:
Originally Posted by pakk View Post
What you are saying is not true. This is not the message that you get when you try to compile the UDF. This is the message that you get when you try to load the UDF. Read the message, it explicitly says this...

Probably you also got a message when you tried to compile, but it did not come up in a separate screen, but was written to the normal TUI field. Read there...



The errors point to lines 49 and 50, so look there.
These lines are:
Code:
[49] face_t f;
[50] begin_f_loop(f, t)
The error for line 49 means "I have no idea what you want here."
The error for line 50 means "You use "f", but I don't know what "f" is."

You try to define "f" in line 49, so because Fluent does not know what you mean, it can not use "f" in line 50. This suggests that fixing the error for line 49 will also fix the error for line 50. This is usually the case: if you get a series of errors/warnings, focus on the first one.

And the reason that you get errors: in this version of C, you are supposed to declare variables at the beginning of a function, not halfway. So, move your line 49 higher up in your code, to where you declare the rest of your variables (lines 18 to 20).

You might find additional problems because your folder has a space in its name. Better to avoid these. This *should* not be a problem, but the Fluent programmers did not program this properly.
Hi,
Thank you for your quick reply. I resolved that error and got my UDF complied, but this does not give the value which is desirable. There should be a non-uniform gas volume fraction at at inlet, but it gives a constant value throughout the inlet face and that value is -0.1.....
I am confused with loop, if the value is not changing that means loop fails to work in UDF. I am pasting here the revised UDF that was complied but failed to get the result I want.
Your help is needed
Once again thank you

/******************************************
Customized gas holdup at inlet
*******************************************/
#include "udf.h"

#define FLUID_ID 12 /* constants */
#define VG 0.044
#define D 0.12
#define R 0.06
#define ST 0.0732
#define AVGH 0.184
#define RHOL 998.2
#define RHOG 1.225
#define MUL 0.001003
#define G 9.81

DEFINE_PROFILE(air_vof_profile,t,i)
{
face_t f;
real r, a, rho, m, reyp, Fr, Mo, coeff, n, wholdup;
real x[ND_ND];
real X, Z;
X = x[0];
Z = x[2];
/*compute rho*/
rho = (RHOL - RHOG);

/*compute Reynold's number*/
reyp = D*VG*rho/MUL;

/*compute Fr number*/
Fr = (pow(VG,2))/(G*D);

/*compute Mo number*/
Mo= G*(pow(MUL,4))/(rho*(pow(ST,3)));

/*compute m*/
m = 2188*(pow(reyp,-0.598))*(pow(Fr,0.146))*(pow(Mo,-0.004));

/*compute a*/
a = (m+2)/m;

/*compute coeff*/
coeff = 0.0432*(pow(reyp,0.2492));

/*compute r*/
r = sqrt(X*X + Z*Z);

/*compute n*/
n = r/R;
/*compute wholdup*/
wholdup = 1 - (coeff*(pow(n,m)));

begin_f_loop(f, t)
{
F_CENTROID(x,f,t);
F_PROFILE(f,t,i) = a*(AVGH-wholdup)*(1-(pow(n,m))) + wholdup;
}
end_f_loop(f, t)
}
Masroor is offline   Reply With Quote

Old   January 11, 2018, 06:34
Default
  #16
Senior Member
 
Join Date: Nov 2013
Posts: 1,677
Rep Power: 22
pakk will become famous soon enough
It is because your equations are a function of position. So you should recalculate them for every position. Instead, you calculate your equations before you go into the loop...

I think this could work:
Code:
DEFINE_PROFILE(air_vof_profile,t,i)
{
 face_t f;
 real r, a, rho, m, reyp, Fr, Mo, coeff, n, wholdup;
 real x[ND_ND];
 real X, Z;
/*compute rho*/
 rho = (RHOL - RHOG);
 
/*compute Reynold's number*/
 reyp = D*VG*rho/MUL;
 
  /*compute Fr number*/
 Fr = (pow(VG,2))/(G*D);
 
 /*compute Mo number*/
 Mo= G*(pow(MUL,4))/(rho*(pow(ST,3)));
 
 /*compute m*/
 m = 2188*(pow(reyp,-0.598))*(pow(Fr,0.146))*(pow(Mo,-0.004));
 
 /*compute a*/ 
 a = (m+2)/m;
 
 /*compute coeff*/
 coeff = 0.0432*(pow(reyp,0.2492));
 
 begin_f_loop(f, t)
  {
   /*compute r*/
   F_CENTROID(x,f,t);
   X = x[0];
 Z = x[2];
r = sqrt(X*X + Z*Z);
 
  /*compute n*/
 n = r/R;
 /*compute wholdup*/
 wholdup = 1 - (coeff*(pow(n,m)));
 
F_PROFILE(f,t,i) = a*(AVGH-wholdup)*(1-(pow(n,m))) + wholdup;
  } 
 end_f_loop(f, t)
}
pakk is offline   Reply With Quote

Old   January 12, 2018, 02:13
Default Non-uniform gas volume fraction at inlet boundary
  #17
New Member
 
Masroor
Join Date: Nov 2015
Posts: 9
Rep Power: 7
Masroor is on a distinguished road
Hi,
First of all I would thank you for your expert suggestions. I adopted this strategy and got the required profile at inlet. Now I have problem with simulation. I used that UDF for gas vol fraction at inlet which resulted some volume fraction of liquid also at that boundary. Depending upon requirement of simulation, I kept the Velocity of liquid equal to 0, because it is a semi batched column with liquid already patahced in the domain. When I started calculation, I found reversed flow at many faces of outlet. The outlet was set as pressure outlet. After very few time steps, the Fluent exited itself (mean the simulation failed to proceed). I am confused whether the problem is associated with UDF or boundary conditions? Your suggestions are required. Thank you very much in advance
Masroor is offline   Reply With Quote

Old   January 12, 2018, 06:04
Default Request for guidance about UDF DEFINE_PROFILE
  #18
New Member
 
Masroor
Join Date: Nov 2015
Posts: 9
Rep Power: 7
Masroor is on a distinguished road
Quote:
Originally Posted by pakk View Post
It is because your equations are a function of position. So you should recalculate them for every position. Instead, you calculate your equations before you go into the loop...

I think this could work:
Code:
DEFINE_PROFILE(air_vof_profile,t,i)
{
 face_t f;
 real r, a, rho, m, reyp, Fr, Mo, coeff, n, wholdup;
 real x[ND_ND];
 real X, Z;
/*compute rho*/
 rho = (RHOL - RHOG);
 
/*compute Reynold's number*/
 reyp = D*VG*rho/MUL;
 
  /*compute Fr number*/
 Fr = (pow(VG,2))/(G*D);
 
 /*compute Mo number*/
 Mo= G*(pow(MUL,4))/(rho*(pow(ST,3)));
 
 /*compute m*/
 m = 2188*(pow(reyp,-0.598))*(pow(Fr,0.146))*(pow(Mo,-0.004));
 
 /*compute a*/ 
 a = (m+2)/m;
 
 /*compute coeff*/
 coeff = 0.0432*(pow(reyp,0.2492));
 
 begin_f_loop(f, t)
  {
   /*compute r*/
   F_CENTROID(x,f,t);
   X = x[0];
 Z = x[2];
r = sqrt(X*X + Z*Z);
 
  /*compute n*/
 n = r/R;
 /*compute wholdup*/
 wholdup = 1 - (coeff*(pow(n,m)));
 
F_PROFILE(f,t,i) = a*(AVGH-wholdup)*(1-(pow(n,m))) + wholdup;
  } 
 end_f_loop(f, t)
}


Hi, First of all I would thank you for your expert suggestions. I adopted this strategy and got the required profile at inlet. Now I have problem with simulation. I used that UDF for gas vol fraction at inlet which resulted some volume fraction of liquid also at that boundary. Depending upon requirement of simulation, I kept the Velocity of liquid equal to 0, because it is a semi batched column with liquid already patahced in the domain. When I started calculation, I found reversed flow at many faces of outlet. The outlet was set as pressure outlet. After very few time steps, the Fluent exited itself (mean the simulation failed to proceed). I am confused whether the problem is associated with UDF or boundary conditions? Your suggestions are required. Thank you very much in advance
Masroor is offline   Reply With Quote

Old   October 20, 2019, 19:09
Default
  #19
New Member
 
Nourhan Bahgat
Join Date: Aug 2019
Posts: 13
Rep Power: 3
Nourhan Bahgat is on a distinguished road
Please I have an excel sheet for heat flux change with angle around absorber , how write it as a udf code in fluent to use it as a boundary condition for external wall
chandan100 likes this.
Nourhan Bahgat is offline   Reply With Quote

Reply

Tags
cylindrical, inlet, udf

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
cylindrical coordinate vs cartesian coordinate Lam FLUENT 10 May 11, 2013 14:05
cylindrical coordinate -Gambit noussa ANSYS Meshing & Geometry 2 June 12, 2010 10:07
CFD Software with Cylindrical and Spherical Coordinate cfd2010 Main CFD Forum 0 June 9, 2010 22:55
cartesian to cylindrical coordinate UDF Manoj FLUENT 0 December 15, 2005 10:43
Cording Ground.for in Cylindrical coordinate J.H. Lee. Phoenics 2 March 28, 2003 05:28


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