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

Fluent UDF Mesh Motion Issue: Blade Pitch w/ Respect to Azimuth Angle

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

Like Tree1Likes
  • 1 Post By recmvp

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   July 30, 2023, 16:50
Default Fluent UDF Mesh Motion Issue: Blade Pitch w/ Respect to Azimuth Angle
  #1
New Member
 
Greg
Join Date: Jul 2023
Posts: 1
Rep Power: 0
recmvp is on a distinguished road
Hello all,

I'm trying to write a UDF to orient the blade angle of each VAWT blade based on its azimuth angle around the central axis. The code snippets that are included do not let me apply the UDF to the mesh motion of the blade fluid zone (cell zone conditions -> fluid -> blade1_fluid_zone -> mesh motion). I have included an image of the mesh setup. I have tried both DEFINE_CG_MOTION and DEFINE_GRID_MOTION with no success at this point.

I have run this simulation in the past with mesh motion working, but have never used a UDF to implement the blade rotation. What has worked in the past for me is having the fluid zone, which encompasses the 4 blades fluid zones as well, rotate at the prescribed VAWT RPM. For fixed blade operation this is fine. I have also been able to rotate the individual blades, allowing for the constant angle of attacks for 90 degrees of azimuth angle rotation. Now I am struggling to implement a udf that will set the angle of the blade's fluid zone based on its azimuth angle.

Please let me know if you need any more additional information. UDF's are a rather new tool to me, but I will try my best to understand and learn from any suggestions you have.

I have also included a video of the 90 degrees of VAWT rotation that had the blades orienting themselves. This is what I am trying to do for 360+ degrees of rotation.


Here is the code for the grid motion function

#include "udf.h"

DEFINE_GRID_MOTION(test_blade_rotation, domain, dt, time, dtime)
{
real angle;
real pi = 3.14159265358979323846;
real azimuth_angle;
real central_axis_angle;
real blade_angle_offset = 10.0; // Adjust this value as per your turbine configuration
real xc, yc, r, theta;

/* Get the current simulation time */
real current_time = time + dtime;

/* Get the azimuth angle relative to the turbine central axis */
central_axis_angle = 360.0 * current_time; // Adjust if the central axis rotates with time

Thread *t;
face_t f;
Node *v;

/* Loop over all cell zones representing individual blades */
thread_loop_c(t, domain)
{
/* Calculate the azimuth angle of the cell zone relative to the turbine central axis */
azimuth_angle = central_axis_angle + THREAD_ID(t) * 90.0;

if (azimuth_angle >= 360.0)
azimuth_angle -= 360.0;

/* Calculate the blade angle for each cell zone */
angle = azimuth_angle + blade_angle_offset;

/* Ensure that the blade angle is within [0, 360) degrees */
if (angle >= 360.0)
angle -= 360.0;

/* Loop over all faces in the current cell zone */
begin_f_loop(f, t)
{
f_node_loop(f, t, v)
{
xc = NODE_X(v);
yc = NODE_Y(v);

/* Calculate the distance from the central axis */
r = sqrt(xc * xc + yc * yc);

/* Calculate the angle (theta) of the node relative to the central axis */
theta = atan2(yc, xc) * 180.0 / pi;

/* Calculate the local blade angle for the node */
real local_blade_angle = angle + theta;

/* Ensure that the local blade angle is within [0, 360) degrees */
if (local_blade_angle >= 360.0)
local_blade_angle -= 360.0;

/* Rotate the node position based on the local blade angle */
real new_x = r * cos(local_blade_angle * pi / 180.0);
real new_y = r * sin(local_blade_angle * pi / 180.0);

/* Update the node position */
NODE_X(v) = new_x;
NODE_Y(v) = new_y;
}
}
end_f_loop(f, t)
}
}

Here is my less developed, more just a last-ditch effort CG motion

#include "udf.h"

DEFINE_CG_MOTION(rotating_blades, dt, vel, omega, time, dtime)
{
real theta; // Blade angle relative to the global central axis
real omega_blade; // Blade angular velocity
real theta_global; // Global central axis angle
real theta_local; // Blade angle relative to its local axis

Thread *t;
cell_t c;

// Specify the global central axis angle (e.g., based on the wind direction)
theta_global = 10.0; // Modify this value as needed

// Specify the blade angular velocity (e.g., based on wind speed and turbine design)
omega_blade = 157.08; // Modify this value as needed

// Loop over all cell threads (assuming blades are in separate threads)
thread_loop_c (t, dt)
{
// Get the thread-specific blade angle relative to the global central axis
theta = theta_global + omega_blade * time;

// Loop over all cells in the current thread
begin_c_loop(c, t)
{
// Calculate the blade angle relative to the local axis for the current cell
// Assuming the local axis of the blade is aligned with the z-axis (adjust as needed)
theta_local = theta - C_Y(c) * RAD_TO_DEG; // Assuming blade orientation along the Y-coordinate

// Rotate the cell around its local axis based on the calculated angle
C_ROT(c, C_R(c), C_P(c), C_Y(c), theta_local);
}
end_c_loop(c, t)
}
}
Attached Images
File Type: jpg PC_VAWT_turbulence_animation.jpg (49.5 KB, 6 views)
File Type: jpg VAWT_Mesh_Setup.jpg (125.8 KB, 6 views)
File Type: png blade1_cell_zone_boundary_conditions.png (31.3 KB, 5 views)
H1273865629 likes this.
recmvp is offline   Reply With Quote

Reply

Tags
mesh motion, pitching airfoil, 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
Fluent 2023 TUI Adaptive Mesh Refinement Commands sabrinam97 FLUENT 0 May 29, 2023 11:56
defining a blade with mesh motion in cfx nhlstd CFX 2 December 4, 2019 02:17
Mesh motion UDF for Fluent? snesmaeili Fluent UDF and Scheme Programming 0 December 26, 2016 10:58
The fluent stopped and errors with "Emergency: received SIGHUP signal" yuyuxuan FLUENT 0 December 3, 2013 23:56
Moving Mesh Velocity Issue: Mesh velocity does not equal displacement Doginal CFX 2 September 8, 2011 13:02


All times are GMT -4. The time now is 02:13.