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

rotating and pitching UDF - need someone to double-check this

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

Like Tree1Likes
  • 1 Post By classified

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   March 8, 2014, 12:00
Cool rotating and pitching UDF - need someone to double-check this
  #1
New Member
 
sam daysley
Join Date: Feb 2013
Posts: 28
Rep Power: 13
daysley is on a distinguished road
Hi everyone,

I'm looking to simulate a turbine (see attached pic) with airfoils that rotate about an axis and change angle of attack at the same time (in a sinusoidal sense). Currently i have three zones, the large stationary zone, the rotating turbine zone and then the airfoil zones. i thought if i set the turbine zone rotating at x rad/s and then set up a udf motion for the airfoil zone relative to the turbine zone it would allow me to change the angle of attack whilst rotating? however this doenst happen, so i wanted to know whether im using the correct udf macro? should i be using DEFINE_CG_MOTION() i.e. dynamic zone? or is my code wrong?

here is what i have as my code:

Code:
 
#include "udf.h"
 
DEFINE_ZONE_MOTION(sine_motion,omega,axis,origin,velocity,time,dtime)
{
    real posx, posy, rad, angle, angvel, pi;
    
    
    rad = 0.4572;
    pi = 3.141592654;
    angvel = 10;

        angle = angvel * time * (180 / pi );
        *omega = cos(10 * time);
        posx = rad * cos(angle); 

/*where posx and posy are the position of the airfoils rotational origin as the turbine rotates*/

        posy = rad * sin(angle);
    
        origin = (posx, posy, 0);
        

    return;
}
what i aim for this to do is "flap" the airfoil about its quarter chord, whilst rotating around a fixed global axis. so i thought the "origin = (posx, posy, 0);" would allow the rotation origin to change as the mesh rotated but it doesnt?


thanks in advance for the help
Attached Images
File Type: jpg Capture.JPG (87.5 KB, 242 views)
daysley is offline   Reply With Quote

Old   March 17, 2014, 08:43
Arrow Re: Rotating and Pitching UDF
  #2
New Member
 
Mahdi Torabi Asr
Join Date: Dec 2013
Posts: 10
Rep Power: 12
mahditorabiasr is on a distinguished road
Here It is a UDF for simultaneous Rotating and Pitching.
be noticed that the UDF should be set for the blades (considering initial angular its position)
and the "Releative specification" option should be set to the rotor's rotating frame.



#include "udf.h"

DEFINE_ZONE_MOTION(pitching_blade,omega,axis,origi n,velocity,time,dtime)
{
real theta0, thetap1, omegac, omegar, radius, pi;

pi = 3.141592654;
omegar = 10;
/* pitching velocity of blade [radians/s] */
omegac = 5;
/* angular velocity of rotor [radians/s] */
theta0 = pi/2.; /* initial angular position of blade origin [radians] */
radius = .5; /* radius of rotor [m] */
thetap1 = omegac*(time+dtime); /* angular change from initial position at t+dt */
*omega = omegar; /*
pitching velocity of blade */

/* time-varying origin of the local rotor zone coordinates in meters */
origin[0] =
radius*cos(theta0+thetap1);
origin[1] =
radius*sin(theta0+thetap1);
origin[2] = 0.0;
}



In your case *omega variable should represent the sinusoidal time function.
mahditorabiasr is offline   Reply With Quote

Old   April 7, 2014, 18:16
Default
  #3
New Member
 
sam daysley
Join Date: Feb 2013
Posts: 28
Rep Power: 13
daysley is on a distinguished road
Thank you mahditorabiasr

I will try this method now so thanks in advance
daysley is offline   Reply With Quote

Old   April 8, 2014, 01:06
Default
  #4
New Member
 
Mahdi Torabi Asr
Join Date: Dec 2013
Posts: 10
Rep Power: 12
mahditorabiasr is on a distinguished road
Welcome daysley,
please let me know if I can be of any further help.
mahditorabiasr is offline   Reply With Quote

Old   April 12, 2014, 14:18
Default
  #5
New Member
 
sam daysley
Join Date: Feb 2013
Posts: 28
Rep Power: 13
daysley is on a distinguished road
Quote:
Originally Posted by mahditorabiasr View Post
Welcome daysley,
please let me know if I can be of any further help.
Hi Mahditorabiasr

I've been playing around with the udf you wrote but i'm having some problems when running it in Ansys. as the turbine rotor rotates, the blades rotate away from their position in the mesh as though the changing origin is incorrectly changing? I don't suppose you have any idea why it would do this do you? everything seems right in the code and the motion is set relative to the rotating zone?

does it have anything to do with the line:

Code:
thetap1 = omegac * (time + dtime)
i dont understand why it is time +dtime?

thanks in advance i've attached my altered code all i have changed is the Pi function and radius etc.

Code:
#include "udf.h"

DEFINE_ZONE_MOTION(pitching_blade,omega,axis,origi n,velocity,time,dtime)
{
real theta0, thetap1, omegac, omegar, radius, pi;

omegar = sin(time) /* arbitrary sine function*/
omegac = 10.94 ; /* pitching velocity of blade [radians/s] */
theta0 = M_PI/2.; /* initial angular position of blade origin [radians] */
radius = .4572; /* radius of rotor */
thetap1 = omegac*(time+dtime); /* angular change from initial position at t+dt */
*omega = omegar; /* pitching velocity of blade */

/* time-varying origin of the local rotor zone coordinates in meters */
origin[0] = radius*cos(theta0+thetap1);
origin[1] = radius*sin(theta0+thetap1);
origin[2] = 0.0;
}
daysley is offline   Reply With Quote

Old   April 15, 2014, 12:58
Default
  #6
New Member
 
Mahdi Torabi Asr
Join Date: Dec 2013
Posts: 10
Rep Power: 12
mahditorabiasr is on a distinguished road
Quote:
Originally Posted by daysley View Post
Hi Mahditorabiasr

I've been playing around with the udf you wrote but i'm having some problems when running it in Ansys. as the turbine rotor rotates, the blades rotate away from their position in the mesh as though the changing origin is incorrectly changing? I don't suppose you have any idea why it would do this do you? everything seems right in the code and the motion is set relative to the rotating zone?

does it have anything to do with the line:

Code:
thetap1 = omegac * (time + dtime)
i dont understand why it is time +dtime?

thanks in advance i've attached my altered code all i have changed is the Pi function and radius etc.

Code:
#include "udf.h"

DEFINE_ZONE_MOTION(pitching_blade,omega,axis,origi n,velocity,time,dtime)
{
real theta0, thetap1, omegac, omegar, radius, pi;

omegar = sin(time) /* arbitrary sine function*/
omegac = 10.94 ; /* pitching velocity of blade [radians/s] */
theta0 = M_PI/2.; /* initial angular position of blade origin [radians] */
radius = .4572; /* radius of rotor */
thetap1 = omegac*(time+dtime); /* angular change from initial position at t+dt */
*omega = omegar; /* pitching velocity of blade */

/* time-varying origin of the local rotor zone coordinates in meters */
origin[0] = radius*cos(theta0+thetap1);
origin[1] = radius*sin(theta0+thetap1);
origin[2] = 0.0;
}
Dear Daysle,
Sorry for late reply.

let me ask whether you have defined separated UDFs or not?
Be sure that you have a UDF for each blade including initial angular position for each ("theta0").
In addition any little difference from the real values in your initial mesh can lead to incorrect position.

Answering your question, "thetap1" returns the angular position in next time step("dtime" is equal to time step which you have set in Fluent).
Code:
thetap1 = omegac*(time+dtime)
mahditorabiasr is offline   Reply With Quote

Old   January 9, 2015, 22:44
Default
  #7
New Member
 
Join Date: Jan 2015
Posts: 2
Rep Power: 0
airbus is on a distinguished road
Hello everyone
I'm working on incompressible unsteady force measurement of two-dimensional naca0012 under pitch-up, hold and pitch-down motion at a constant velocity about 50 m/s

Recently I examined the model in static mode at various AOA in Fluent , but i've a problem for write a correct""UDF"" for Dynamic mode test

I'll so grateful to help me for doing this part
Thank you
airbus is offline   Reply With Quote

Old   November 1, 2016, 05:42
Smile
  #8
New Member
 
david glynn
Join Date: Aug 2015
Posts: 10
Rep Power: 11
davd4696@gmail.com is on a distinguished road
Hi folks, I know this is a relatively old thread but I also want to run a model with pitch controlled blades and this was the only thread I could find in relation to it, I am not very firmilar with C programming language so I wanted to use the UDf you have written (below) to form the basis of my own. however when I copy and paste the udf into NOtepad++ and save as .c and try intrepret it in fluent 14.5 I get the following error message
Error: C:\\Users\\User\\Desktop\\UDF\\pitching_blade.c: line 8: parse error.
Could comeone explain with this error is relation to, I believe it is to do with defining the constant but I am not sure thanks.


#include "udf.h"

DEFINE_ZONE_MOTION(pitching_blade,omega,axis,origi n,velocity,time,dtime)
{
real theta0, thetap1, omegac, omegar, radius, pi;

omegar = sin(time) /* arbitrary sine function*/
omegac = 10.94; /* pitching velocity of blade [radians/s] */
theta0 = M_PI/2.0; /* initial angular position of blade origin [radians] */
radius = 0.4572; /* radius of rotor */
thetap1 = omegac*(time+dtime); /* angular change from initial position at t+dt */
*omega = omegar; /* pitching velocity of blade */

/* time-varying origin of the local rotor zone coordinates in meters */
origin[0] = radius*cos(theta0+thetap1);
origin[1] = radius*sin(theta0+thetap1);
origin[2] = 0.0;
}
davd4696@gmail.com is offline   Reply With Quote

Old   November 20, 2016, 05:33
Default
  #9
New Member
 
Join Date: Nov 2015
Posts: 3
Rep Power: 10
RAJU REDDY is on a distinguished road
Quote:
Originally Posted by davd4696@gmail.com View Post
Hi folks, I know this is a relatively old thread but I also want to run a model with pitch controlled blades and this was the only thread I could find in relation to it, I am not very firmilar with C programming language so I wanted to use the UDf you have written (below) to form the basis of my own. however when I copy and paste the udf into NOtepad++ and save as .c and try intrepret it in fluent 14.5 I get the following error message
Error: C:\\Users\\User\\Desktop\\UDF\\pitching_blade.c: line 8: parse error.
Could comeone explain with this error is relation to, I believe it is to do with defining the constant but I am not sure thanks.


#include "udf.h"

DEFINE_ZONE_MOTION(pitching_blade,omega,axis,origi n,velocity,time,dtime)
{
real theta0, thetap1, omegac, omegar, radius, pi;

omegar = sin(time) /* arbitrary sine function*/
omegac = 10.94; /* pitching velocity of blade [radians/s] */
theta0 = M_PI/2.0; /* initial angular position of blade origin [radians] */
radius = 0.4572; /* radius of rotor */
thetap1 = omegac*(time+dtime); /* angular change from initial position at t+dt */
*omega = omegar; /* pitching velocity of blade */

/* time-varying origin of the local rotor zone coordinates in meters */
origin[0] = radius*cos(theta0+thetap1);
origin[1] = radius*sin(theta0+thetap1);
origin[2] = 0.0;
}
Hii!! Glynn,
Define 'pi' value first and don't include dtime in thetap1 and define the axis of rotation as
N3V_D(axis,=,radius*cos(theta0+thetap1),radius*sin (theta0+thetap1),1.0);
I hope this will solve your problem.If you need anything more just let me know.Thank you
Try this code:
DEFINE_ZONE_MOTION(pitching_blade,omega,axis,origi n,velocity,time,dtime)
{
real theta0, thetap1, omegac, omegar, radius, pi;
pi=3.14
omegar = sin(time) /* arbitrary sine function*/
omegac = 10.94; /* pitching velocity of blade [radians/s] */
theta0 = pi/2.0; /* initial angular position of blade origin [radians] */
radius = 0.4572; /* radius of rotor */
thetap1 = omegac*(time);
/* time-varying origin of the local rotor zone coordinates in meters */
origin[0] = radius*cos(theta0+thetap1);
origin[1] = radius*sin(theta0+thetap1);
origin[2] = 0.0;
N3V_D(axis,=,radius*cos(theta0+thetap1),radius*sin (theta0+thetap1),1.0);
*omega = omegar; /* pitching velocity of blade */
}
RAJU REDDY is offline   Reply With Quote

Old   November 23, 2016, 02:45
Default Rgarding rolling motion of tank
  #10
New Member
 
classified
Join Date: Oct 2016
Posts: 10
Rep Power: 10
classified is on a distinguished road
Hi...
I am working on a problem which involves a half filled tank and which is under rolling motion. I had set a VOF model for 2 phases ( Water and air).
For applying rolling motion I wrote a udf as follows:
************************************************** ***************
#include "udf.h"
#include "dynamesh_tools.h"
DEFINE_ZONE_MOTION (oscillation, omega, axis, origin, velocity, time, dtime)
{
*omega=(0.3323*cos(3.81*time)); //here 3.81 is frequency of rotation
return;
}
************************************************** **************
After that this i interpreted this udf in ansys fluent
Then I choosed for cell zone condition on fluent window and surface body under zone selection box. then to this "surface body" zone i ticked on mesh motion and hooked the above udf.
but the results are not satisfactory...
PLEASE TELL ME WHETHER MY APPROACH IS RIGHT?
OR IF WRONG THE HOW CAN I GIVE ROLLING MOTION TO TANK..
I AM A NEW USER SO HAVING A BIT OF KNOWLEDGE.


Thanks in advance



edit : I am verifying the result with pressure measurement at a point and comparing with available literature. For measuring pressure I had used 'point' under 'surface'
Attached Images
File Type: png Screenshot (2).png (16.0 KB, 83 views)
Aldaffry likes this.
classified is offline   Reply With Quote

Old   November 10, 2018, 06:12
Question Blade motion on Cycloidal path
  #11
New Member
 
Farhan Khan Niazi
Join Date: Nov 2018
Posts: 1
Rep Power: 0
Farhan Khan is on a distinguished road
Hi,
Can anybody please help me ?
I am writing a udf for individual blade motion on sine wave like path. I have tried different udfs posted on cfdonline but none of them work. For all, the error remains same; which is; the blades moves away from rotor while turbine rotates.
Please help me in this.
Farhan Khan is offline   Reply With Quote

Old   September 11, 2022, 07:30
Smile UDF for rotation and pitch angle
  #12
New Member
 
John Wick
Join Date: Aug 2022
Posts: 2
Rep Power: 0
JW0202 is on a distinguished road
Quote:
Originally Posted by davd4696@gmail.com View Post
Hi folks, I know this is a relatively old thread but I also want to run a model with pitch controlled blades and this was the only thread I could find in relation to it, I am not very firmilar with C programming language so I wanted to use the UDf you have written (below) to form the basis of my own. however when I copy and paste the udf into NOtepad++ and save as .c and try intrepret it in fluent 14.5 I get the following error message
Error: C:\\Users\\User\\Desktop\\UDF\\pitching_blade.c: line 8: parse error.
Could comeone explain with this error is relation to, I believe it is to do with defining the constant but I am not sure thanks.


#include "udf.h"

DEFINE_ZONE_MOTION(pitching_blade,omega,axis,origi n,velocity,time,dtime)
{
real theta0, thetap1, omegac, omegar, radius, pi;

omegar = sin(time) /* arbitrary sine function*/
omegac = 10.94; /* pitching velocity of blade [radians/s] */
theta0 = M_PI/2.0; /* initial angular position of blade origin [radians] */
radius = 0.4572; /* radius of rotor */
thetap1 = omegac*(time+dtime); /* angular change from initial position at t+dt */
*omega = omegar; /* pitching velocity of blade */

/* time-varying origin of the local rotor zone coordinates in meters */
origin[0] = radius*cos(theta0+thetap1);
origin[1] = radius*sin(theta0+thetap1);
origin[2] = 0.0;
}
Dear you need to define value of PI first as 3.14
JW0202 is offline   Reply With Quote

Old   September 11, 2022, 07:38
Default Udf
  #13
New Member
 
John Wick
Join Date: Aug 2022
Posts: 2
Rep Power: 0
JW0202 is on a distinguished road
Quote:
Originally Posted by mahditorabiasr View Post
Here It is a UDF for simultaneous Rotating and Pitching.
be noticed that the UDF should be set for the blades (considering initial angular its position)
and the "Releative specification" option should be set to the rotor's rotating frame.



#include "udf.h"

DEFINE_ZONE_MOTION(pitching_blade,omega,axis,origi n,velocity,time,dtime)
{
real theta0, thetap1, omegac, omegar, radius, pi;

pi = 3.141592654;
omegar = 10;
/* pitching velocity of blade [radians/s] */
omegac = 5;
/* angular velocity of rotor [radians/s] */
theta0 = pi/2.; /* initial angular position of blade origin [radians] */
radius = .5; /* radius of rotor [m] */
thetap1 = omegac*(time+dtime); /* angular change from initial position at t+dt */
*omega = omegar; /*
pitching velocity of blade */

/* time-varying origin of the local rotor zone coordinates in meters */
origin[0] =
radius*cos(theta0+thetap1);
origin[1] =
radius*sin(theta0+thetap1);
origin[2] = 0.0;
}



In your case *omega variable should represent the sinusoidal time function.
Hello all,
I have used same format to simulate pitch movement of blade. My udf is as follows.


#include "udf.h"

DEFINE_ZONE_MOTION(pitching_blade,omega,axis,origi n,velocity,time,dtime)
{
real theta0, thetap1, omegac, radius, pi, tme, ea;

pi = 22/7;
/*omegar = 1; /* pitching velocity of blade [radians/s] */
omegac = 0.3; /* angular velocity of rotor [radians/s] */
theta0 = 0; /* initial angular position of blade origin [radians] */
radius = 0.335; /* radius of rotor [m] */
tme = pi/omegac; /*time to reach or cover 180 degrees of rotation [radian/s]*/
ea = 20*2*pi/180; /*since our function is -20sintheta, so this extreme angles would be twice of that value [radians]*/
thetap1 = omegac*(time+dtime); /* angular change from initial position at t+dt */
*omega = (ea/tme)*((-sin(theta0+thetap1))/(fabs(sin(theta0+thetap1)))); /* pitching velocity of blade */

/* time-varying origin of the local rotor zone coordinates in meters */
origin[0] = radius*cos(theta0+thetap1);
origin[1] = radius*sin(theta0+thetap1);
origin[2] = 0.0;
}

I am getting my movement right but problem is that pitching zone origin is not right. It leaves its position during rotation. Video of simulation is attached. Any help would be appreciated.
Attached Images
File Type: jpg 1.jpg (44.9 KB, 16 views)
File Type: jpg 2.jpg (43.2 KB, 15 views)
JW0202 is offline   Reply With Quote

Old   September 11, 2022, 12:04
Default What does rigid body orientation mean
  #14
New Member
 
radzee
Join Date: Jul 2020
Posts: 8
Rep Power: 6
rdhkpatel is on a distinguished road
how orientation angle is calculated in fluent dynamic meshing setup?
rdhkpatel is offline   Reply With Quote

Reply

Tags
fluent - udf, udf, vawt

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
UDF for pitching and rotating airfoil guidofrate Fluent UDF and Scheme Programming 0 November 20, 2014 09:32
Blade pitching, butterfly valves, moving mesh Andy Fiedler CFX 6 May 28, 2010 09:55


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