Source code for RCAIDE.Library.Plots.Powertrain.plot_fuel_flow_rates

# RCAIDE/Library/Plots/Performance/plot_fuel_flow_rates.py
# 
# 
# Created:  Jul 2023, M. Clarke

# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ----------------------------------------------------------------------------------------------------------------------  
from RCAIDE.Framework.Core import Units
from RCAIDE.Library.Plots.Common import set_axes, plot_style, segment_colors 
import matplotlib.pyplot as plt
import numpy as np 

# ----------------------------------------------------------------------------------------------------------------------
#  PLOTS
# ----------------------------------------------------------------------------------------------------------------------   
[docs] def plot_fuel_flow_rates(results, save_figure = False, show_legend = True, save_filename = "Fuel_Flow_Rates" , file_type = ".png", width = 11, height = 9): 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) line_colors = segment_colors(len(results.segments)) fig = plt.figure(save_filename) fig.set_size_inches(width,height) # --- Create 3 subplots --- axis_prop = plt.subplot(3,1,1) axis_conv = plt.subplot(3,1,2) axis_fuel = plt.subplot(3,1,3) axis_prop.set_ylabel(r'Fuel Flow Rate (kg/s)') axis_fuel.set_ylabel(r'Fuel Flow Rate (kg/s)') axis_conv.set_ylabel(r'Fuel Flow Rate (kg/s)') axis_prop.set_xlabel(r'Time (min)') axis_fuel.set_xlabel(r'Time (min)') axis_conv.set_xlabel(r'Time (min)') set_axes(axis_prop) set_axes(axis_fuel) set_axes(axis_conv) converter_markers = ['o','s','^','d','v','>','<','p','h','x','+','*'] for i in range(len(results.segments)): time = results.segments[i].conditions.frames.inertial.time[:, 0] / Units.min segment_tag = results.segments[i].tag segment_name = segment_tag.replace('_', ' ') for network in results.segments[i].analyses.vehicle.networks: # ---------------- PROPULSORS ---------------- for j , propulsor in enumerate(network.propulsors): propulsor_flow_rate = results.segments[i].conditions.energy.propulsors[propulsor.tag].fuel_mass_flow_rate[:,0] label = propulsor.tag if i==0 else None axis_prop.plot(time, propulsor_flow_rate, color = line_colors[i], marker = ps.markers[j], linewidth = ps.line_width, label = label) # ---------------- FUEL LINES ---------------- for j , fuel_line in enumerate(network.fuel_lines): fuel_line_flow_rate = results.segments[i].conditions.energy.fuel_lines[fuel_line.tag].fuel_mass_flow_rate label = fuel_line.tag if i==0 else None axis_fuel.plot(time, fuel_line_flow_rate, color = line_colors[i], marker = ps.markers[j], linewidth = ps.line_width, label = label) # ---------------- CONVERTERS ---------------- for converter_group in fuel_line.assigned_converters: for m, converter_tag in enumerate(converter_group): converter_flow_rate = results.segments[i].conditions.energy.converters[converter_tag].fuel_mass_flow_rate[:,0] marker_style = converter_markers[m % len(converter_markers)] label = converter_tag if i==0 and j==0 else None axis_conv.plot(time, converter_flow_rate, color = line_colors[i], marker = marker_style, linewidth = ps.line_width, label = label) if show_legend: axis_prop.legend(fontsize=ps.legend_font_size) axis_fuel.legend(fontsize=ps.legend_font_size) axis_conv.legend(fontsize=ps.legend_font_size) fig.tight_layout() # fig.suptitle('Fuel Flow Rates') if save_figure: plt.savefig(save_filename + file_type) return fig