Source code for RCAIDE.Library.Plots.Aerodynamics.plot_rotor_performance
# RCAIDE/Library/Plots/Aerodynamics/plot_rotor_performance.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
import pandas as pd
from RCAIDE.Framework.Core import Units
from RCAIDE.Library.Plots.Common import set_axes, plot_style
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
# ----------------------------------------------------------------------------------------------------------------------
# PLOTS
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def plot_rotor_performance(rotor,
outputs,
title = None,
show_figure = True,
save_figure = False,
show_legend = True,
line_colors = ['black', 'blue'],
save_filename='Rotor_Performance',
file_type = ".png",
width = 11, height = 7):
"""
Generate plots summarizing rotor aerodynamic performance distributions.
Parameters
----------
rotor : Data
Rotor data structure containing outputs with fields:
- disc_radial_distribution : array
Radial positions on disc [m]
- disc_axial_velocity : array
Total axial velocity [m/s]
- disc_tangential_velocity : array
Total tangential velocity [m/s]
- disc_axial_induced_velocity : array
Induced axial velocity [m/s]
- disc_tangential_induced_velocity : array
Induced tangential velocity [m/s]
- disc_thrust_distribution : array
Local thrust distribution [N]
- disc_torque_distribution : array
Local torque distribution [N-m]
title : str, optional
Custom plot title, default None
show_figure : bool, optional
Display figure if True, default True
save_figure : bool, optional
Save figure to file if True, default False
save_filename : str, optional
Name for saved figure file, default 'Rotor_Performance'
file_type : str, optional
File extension for saved figure, default ".png"
Returns
-------
fig : matplotlib.figure.Figure
Figure containing four subplots:
- Velocity distributions
- Induced velocity distributions
- Thrust distribution
- Torque distribution
Notes
-----
Each subplot includes:
- Appropriate axis labels
- Legend identifying components
- Consistent line styling
**Definitions**
'Total Velocity'
Sum of freestream and induced velocities
'Induced Velocity'
Additional velocity induced by rotor
'Thrust Distribution'
Local thrust force per unit radius
'Torque Distribution'
Local torque per unit radius
See Also
--------
plot_rotor_disc_performance : Detailed disc visualization
"""
# unpack
r_distribution = outputs.disc_radial_distribution[0, :, 0]
# get plotting style
ps = plot_style()
parameters = {'axes.labelsize': ps.axis_font_size,
'xtick.labelsize': ps.axis_font_size,
'ytick.labelsize': ps.axis_font_size,
'axes.titlesize': ps.title_font_size}
plt.rcParams.update(parameters)
fig = plt.figure(save_filename)
fig.set_size_inches(width,height)
axis_1 = plt.subplot(2,2,1)
axis_2 = plt.subplot(2,2,2)
axis_3 = plt.subplot(2,2,3)
axis_4 = plt.subplot(2,2,4)
axis_1.plot(r_distribution, outputs.disc_axial_velocity[0, :, 0] , color = line_colors[0], label = 'Axial')
axis_1.plot(r_distribution, outputs.disc_tangential_velocity[0, :, 0], color = line_colors[1], label = 'Tangential')
axis_2.plot(r_distribution, outputs.disc_axial_induced_velocity[0, :, 0], color = line_colors[0], label = 'Axial')
axis_2.plot(r_distribution, outputs.disc_tangential_induced_velocity[0, :, 0], color = line_colors[1], label = 'Tangential')
axis_3.plot(r_distribution, outputs.disc_thrust_distribution[0, :, 0], color = line_colors[0], label = 'Thrust')
axis_4.plot(r_distribution, outputs.disc_torque_distribution[0, :, 0], color = line_colors[0], label = 'Torque')
axis_1.set_xlabel(r'Radial Station')
axis_1.set_ylabel(r'Velocity')
axis_2.set_xlabel(r'Radial Station')
axis_2.set_ylabel(r'Induced Velocity')
axis_3.set_xlabel(r'Radial Station')
axis_3.set_ylabel(r'Thrust, N')
axis_4.set_xlabel(r'Radial Station')
axis_4.set_ylabel(r'Torque, N-m')
set_axes(axis_1)
set_axes(axis_2)
set_axes(axis_3)
set_axes(axis_4)
if show_legend:
axis_1.legend()
axis_2.legend()
axis_3.legend()
axis_4.legend()
# set title of plot
title_text = 'Rotor Performance'
fig.suptitle(title_text)
if save_figure:
plt.savefig(save_filename + file_type)
return fig