Source code for RCAIDE.Library.Plots.Aerodynamics.plot_lift_distribution
# RCAIDE/Library/Plots/Aerodynamics/plot_lift_distribution.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
from RCAIDE.Library.Plots.Common import set_axes, plot_style
import matplotlib.pyplot as plt
import numpy as np
# ----------------------------------------------------------------------------------------------------------------------
# PLOTS
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def plot_lift_distribution(results,
save_figure = False,
save_filename = "Lift_Distribution",
file_type = ".png",
width = 11, height = 7):
"""
Generate plots of spanwise lift distribution for lifting surfaces.
Parameters
----------
results : Data
Mission results data structure containing:
- results.segments.conditions.aerodynamics.coefficients.lift with fields:
- inviscid_wings_sectional : array
Sectional lift coefficients at control points
save_figure : bool, optional
Save figure to file if True, default False
save_filename : str, optional
Base name for saved figure files, default "Lift_Distribution"
file_type : str, optional
File extension for saved figure, default ".png"
width : float, optional
Figure width in inches, default 11
height : float, optional
Figure height in inches, default 7
Returns
-------
fig : matplotlib.figure.Figure
Figure showing spanwise lift distribution
Notes
-----
Creates figures showing:
- Sectional lift coefficient (CLy) vs spanwise location
- Separate plot for each timestep in each segment
- Different wings distinguished by line colors:
- Blue: Main wings
- Red: Horizontal tails
- Black: Other surfaces
**Definitions**
'Sectional Lift Coefficient'
Non-dimensional lift force per unit span
'Control Points'
Points where circulation/lift is evaluated
See Also
--------
RCAIDE.Library.Plots.Common.set_axes : Standardized axis formatting
RCAIDE.Library.Plots.Common.plot_style : RCAIDE plot styling
"""
# 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)
VD = results.segments[0].analyses.aerodynamics.vehicle.vortex_distribution
n_w = VD.n_w
b_sw = np.concatenate(([0],np.cumsum(VD.n_sw)))
img_idx = 1
seg_idx = 1
for segment in results.segments.values():
num_ctrl_pts = len(segment.conditions.frames.inertial.time)
for ti in range(num_ctrl_pts):
cl_y = segment.conditions.aerodynamics.coefficients.lift.induced.spanwise[ti]
line = ['-b','-b','-r','-r','-k']
fig = plt.figure(save_filename + '_' + str(img_idx))
fig.set_size_inches(8,8)
fig.set_size_inches(width,height)
axes = plt.subplot(1,1,1)
for i in range(n_w):
y_pts = VD.Y_SW[b_sw[i]:b_sw[i+1]]
z_pts = cl_y[b_sw[i]:b_sw[i+1]]
axes.plot(y_pts, z_pts, line[i] )
axes.set_xlabel("Spanwise Location (m)")
axes.set_title('$C_{Ly}$')
if save_figure:
plt.savefig( save_filename + '_' + str(img_idx) + file_type)
img_idx += 1
seg_idx +=1
return fig