Source code for RCAIDE.Library.Plots.Aerodynamics.plot_rotor_disc_performance

# RCAIDE/Library/Plots/Aerodynamics/plot_rotor_disc_performance.py
# 
# 
# Created:  Jul 2023, M. Clarke 

# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ----------------------------------------------------------------------------------------------------------------------  
from RCAIDE.Framework.Core import Units

# python imports   
import matplotlib.pyplot as plt 
import numpy as np

# ----------------------------------------------------------------------------------------------------------------------
#  PLOTS
# ----------------------------------------------------------------------------------------------------------------------      
[docs] def plot_rotor_disc_performance(prop, outputs, i=0, title=None, save_figure=False): """ Generate plots of rotor disc aerodynamic performance distributions. Parameters ---------- prop : Data Rotor properties data structure outputs : Data Rotor analysis outputs containing: - disc_azimuthal_distribution : array Azimuthal angles around disc [rad] - disc_radial_distribution : array Radial positions on disc [m] - disc_thrust_distribution : array Local thrust distribution - disc_torque_distribution : array Local torque distribution - disc_effective_angle_of_attack : array Local effective angle of attack [rad] - disc_axial_induced_velocity : array Local axial induced velocity [m/s] - disc_tangential_induced_velocity : array Local tangential induced velocity [m/s] i : int, optional Time index for plotting, default 0 title : str, optional Custom plot title, default None save_figure : bool, optional Save figure to file if True, default False Returns ------- fig : matplotlib.figure.Figure Figure containing five polar subplots: - Thrust distribution - Torque distribution - Local blade angle - Axial velocity - Tangential velocity Notes ----- All plots use: - Polar coordinates (azimuth, radius) - Jet colormap for contours - Consistent number of contour levels - Colorbar showing scale **Definitions** 'Thrust Distribution' Local thrust force per unit area 'Torque Distribution' Local torque per unit area 'Effective Angle' Local blade angle relative to inflow 'Induced Velocity' Flow velocity induced by rotor """ # Now plotting: psi = outputs.disc_azimuthal_distribution[i,:,:] r = outputs.disc_radial_distribution[i,:,:] psi = np.append(psi,np.atleast_2d(np.ones_like(psi[:,0])).T*2*np.pi,axis=1) r = np.append(r,np.atleast_2d(r[:,0]).T,axis=1) T = outputs.disc_thrust_distribution[i] Q = outputs.disc_torque_distribution[i] alf = (outputs.disc_effective_angle_of_attack[i])/Units.deg va = outputs.disc_axial_induced_velocity[i] vt = outputs.disc_tangential_induced_velocity[i] T = np.append(T,np.atleast_2d(T[:,0]).T,axis=1) Q = np.append(Q,np.atleast_2d(Q[:,0]).T,axis=1) alf = np.append(alf,np.atleast_2d(alf[:,0]).T,axis=1) va = np.append(va, np.atleast_2d(va[:,0]).T, axis=1) vt = np.append(vt, np.atleast_2d(vt[:,0]).T, axis=1) lev = 101 cm = 'jet' # plot the grid point velocities fig = plt.figure(figsize=(12,8)) ax0 = fig.add_subplot(231, polar=True) p0 = ax0.contourf(psi, r, T,lev,cmap=cm) ax0.set_title('Thrust Distribution',pad=15) ax0.set_rorigin(0) ax0.set_yticklabels([]) plt.colorbar(p0, ax=ax0) ax1 = fig.add_subplot(232, polar=True) p1 = ax1.contourf(psi, r, Q,lev,cmap=cm) ax1.set_title('Torque Distribution',pad=15) ax1.set_rorigin(0) ax1.set_yticklabels([]) plt.colorbar(p1, ax=ax1) ax2 = fig.add_subplot(233, polar=True) p2 = ax2.contourf(psi, r, alf,lev,cmap=cm) ax2.set_title('Local Blade Angle (deg)',pad=15) ax2.set_rorigin(0) ax2.set_yticklabels([]) plt.colorbar(p2, ax=ax2) ax3 = fig.add_subplot(234, polar=True) p3 = ax3.contourf(psi, r, va,lev,cmap=cm) ax3.set_title('Axial Velocity',pad=15) ax3.set_rorigin(0) ax3.set_yticklabels([]) plt.colorbar(p3, ax=ax3) ax4 = fig.add_subplot(235, polar=True) p4 = ax4.contourf(psi, r, vt,lev,cmap=cm) ax4.set_title('Tangential Velocity',pad=15) ax4.set_rorigin(0) ax4.set_yticklabels([]) plt.colorbar(p4, ax=ax4) return fig