Source code for fastga_he.models.propulsion.assemblers.drag_from_pt_file

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

import numpy as np
import openmdao.api as om
import fastoad.api as oad

from fastga_he.powertrain_builder.powertrain import FASTGAHEPowerTrainConfigurator

from .constants import SUBMODEL_POWER_TRAIN_DRAG

DRAG_FROM_PT_FILE = "fastga_he.submodel.propulsion.drag.from_pt_file"
oad.RegisterSubmodel.active_models[SUBMODEL_POWER_TRAIN_DRAG] = DRAG_FROM_PT_FILE


[docs] @oad.RegisterSubmodel(SUBMODEL_POWER_TRAIN_DRAG, DRAG_FROM_PT_FILE) class PowerTrainDragFromFile(om.ExplicitComponent): """ Computes the profile drag of the power train by summing the contribution of all its components. """ def __init__(self, **kwargs): super().__init__(**kwargs) self.configurator = FASTGAHEPowerTrainConfigurator()
[docs] def initialize(self): self.options.declare( name="power_train_file_path", default=None, desc="Path to the file containing the description of the power", allow_none=False, )
[docs] def setup(self): self.configurator.load(self.options["power_train_file_path"]) drag_names_ls, drag_names_cruise = self.configurator.get_drag_element_lists() self.add_output("data:propulsion:he_power_train:low_speed:CD0", val=0.0) self.add_output("data:propulsion:he_power_train:cruise:CD0", val=0.0) for drag_ls, drag_cruise in zip(drag_names_ls, drag_names_cruise): self.add_input(drag_ls, val=np.nan) self.add_input(drag_cruise, val=np.nan) self.declare_partials( of="data:propulsion:he_power_train:low_speed:CD0", wrt=drag_ls, val=1.0 ) self.declare_partials( of="data:propulsion:he_power_train:cruise:CD0", wrt=drag_cruise, val=1.0 )
[docs] def compute(self, inputs, outputs, discrete_inputs=None, discrete_outputs=None): drag_names_ls, drag_names_cruise = self.configurator.get_drag_element_lists() cd0_ls = 0.0 cd0_cruise = 0.0 for drag_ls, drag_cruise in zip(drag_names_ls, drag_names_cruise): cd0_ls += inputs[drag_ls] cd0_cruise += inputs[drag_cruise] outputs["data:propulsion:he_power_train:low_speed:CD0"] = cd0_ls outputs["data:propulsion:he_power_train:cruise:CD0"] = cd0_cruise