Source code for fastga_he.models.environmental_impacts.lca_fuselage_weight_per_fu

# This file is part of FAST-OAD_CS23-HE : A framework for rapid Overall Aircraft Design of Hybrid
# Electric Aircraft.
# Copyright (C) 2022 ISAE-SUPAERO

import numpy as np
import openmdao.api as om


[docs] class LCAFuselageWeightPerFU(om.ExplicitComponent):
[docs] def initialize(self): self.options.declare( name="airframe_material", default="aluminium", desc="Material used for the airframe which include wing, fuselage, HTP and VTP. LG will" " always be in aluminium and flight controls in steel", allow_none=False, values=["aluminium", "composite"], )
[docs] def setup(self): self.add_input("data:weight:airframe:fuselage:mass", val=np.nan, units="kg") self.add_input("data:environmental_impact:aircraft_per_fu", val=np.nan) if self.options["airframe_material"] == "aluminium": self.add_input( "data:environmental_impact:buy_to_fly:metallic", val=1.0, desc="Ratio of the amount of material purchased to to what is really put into the " "manufactured parts. Typical value for metallic material is between 5 and 10", ) else: self.add_input( "data:environmental_impact:buy_to_fly:composite", val=1.0, desc="Ratio of the amount of material purchased to to what is really put into the " "manufactured parts. Typical value for composite material is between 1 and 2", ) self.add_output("data:weight:airframe:fuselage:mass_per_fu", val=1e-6, units="kg") self.declare_partials(of="*", wrt="*", method="exact")
[docs] def compute(self, inputs, outputs, discrete_inputs=None, discrete_outputs=None): if self.options["airframe_material"] == "aluminium": buy_to_fly = inputs["data:environmental_impact:buy_to_fly:metallic"] else: buy_to_fly = inputs["data:environmental_impact:buy_to_fly:composite"] outputs["data:weight:airframe:fuselage:mass_per_fu"] = ( inputs["data:weight:airframe:fuselage:mass"] * inputs["data:environmental_impact:aircraft_per_fu"] * buy_to_fly )
[docs] def compute_partials(self, inputs, partials, discrete_inputs=None): if self.options["airframe_material"] == "aluminium": buy_to_fly = inputs["data:environmental_impact:buy_to_fly:metallic"] partials[ "data:weight:airframe:fuselage:mass_per_fu", "data:environmental_impact:buy_to_fly:metallic", ] = ( inputs["data:weight:airframe:fuselage:mass"] * inputs["data:environmental_impact:aircraft_per_fu"] ) else: buy_to_fly = inputs["data:environmental_impact:buy_to_fly:composite"] partials[ "data:weight:airframe:fuselage:mass_per_fu", "data:environmental_impact:buy_to_fly:composite", ] = ( inputs["data:weight:airframe:fuselage:mass"] * inputs["data:environmental_impact:aircraft_per_fu"] ) partials[ "data:weight:airframe:fuselage:mass_per_fu", "data:weight:airframe:fuselage:mass" ] = inputs["data:environmental_impact:aircraft_per_fu"] * buy_to_fly partials[ "data:weight:airframe:fuselage:mass_per_fu", "data:environmental_impact:aircraft_per_fu" ] = inputs["data:weight:airframe:fuselage:mass"] * buy_to_fly