Source code for RCAIDE.Framework.Analyses.Weights.Weights

# ----------------------------------------------------------------------
#  Imports
# ----------------------------------------------------------------------
import importlib

from RCAIDE.Framework.Core     import Data
from RCAIDE.Framework.Analyses import Analysis  

# ----------------------------------------------------------------------
#  Analysis
# ---------------------------------------------------------------------- 
[docs] class Weights(Analysis): """ This is a class that call the functions that computes the weight of an aircraft depending on its configration Assumptions: None Source: N/A Inputs: None Outputs: None Properties Used: N/A """ def __defaults__(self): """This sets the default values and methods for the weights analysis. Assumptions: None Source: N/A Inputs: None Outputs: None Properties Used: N/A """ self.tag = 'weights' self.method = None self.vehicle = None self.aircraft_type = None self.propulsion_architecture = None self.settings = Data() self.settings.update_mass_properties = True self.settings.update_center_of_gravity = True self.settings.update_moment_of_inertia = True self.print_weight_analysis_report = True
[docs] def evaluate(self): """Evaluate the weight analysis. Assumptions: None Source: N/A Inputs: None Outputs: results """ #unpack vehicle = self.vehicle if self.aircraft_type == None: raise Exception('Specify Aircraft Type. Current options are: "Transport", "BWB", "General_Aviation" and "VTOL" ') try: compute_module = importlib.import_module(f"RCAIDE.Library.Methods.Mass_Properties.Weight_Buildups.{self.propulsion_architecture}.{self.aircraft_type}.{self.method}.compute_operating_empty_weight") if self.print_weight_analysis_report: print("\nPerforming Weights Analysis") print("--------------------------------------------------------") print("Propulsion Architecture:", self.propulsion_architecture) print("Aircraft Type :", self.aircraft_type) print("Method :", self.method) if self.settings.update_mass_properties: print("Aircraft operating empty weight will be overwritten") if self.settings.update_center_of_gravity: print("Aircraft center of gravity location will be overwritten") if self.settings.update_moment_of_inertia: print("Aircraft moment of intertia tensor will be overwritten") except: raise Exception('Aircraft Type or Weight Buildup Method do not exist!') compute_operating_empty_weight = getattr(compute_module, "compute_operating_empty_weight") # Call the function results = compute_operating_empty_weight(vehicle, self.settings) vehicle.mass_properties.weight_breakdown = results # updating empty weight if self.settings.update_mass_properties: vehicle.mass_properties.operating_empty = results.empty.total # done! return results