Source code for fastga_he.models.propulsion.components.loads.pmsm.components.sizing_resistance

# 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 SizingMotorPhaseResistance(om.ExplicitComponent): """Computation of the phase resistance of a cylindrical PMSM."""
[docs] def initialize(self): # Reference motor : EMRAX 268 self.options.declare( name="motor_id", default=None, desc="Identifier of the motor", allow_none=False ) self.options.declare( "resistance_ref", default=22.9, desc="Phase resistance of the reference motor in [mOhm]" )
[docs] def setup(self): motor_id = self.options["motor_id"] self.add_input( name="data:propulsion:he_power_train:PMSM:" + motor_id + ":scaling:phase_resistance", val=np.nan, ) self.add_output( name="data:propulsion:he_power_train:PMSM:" + motor_id + ":phase_resistance", val=self.options["resistance_ref"], units="ohm", ) self.declare_partials( of="data:propulsion:he_power_train:PMSM:" + motor_id + ":phase_resistance", wrt="data:propulsion:he_power_train:PMSM:" + motor_id + ":scaling:phase_resistance", method="exact", )
[docs] def compute(self, inputs, outputs, discrete_inputs=None, discrete_outputs=None): motor_id = self.options["motor_id"] resistance_scaling = inputs[ "data:propulsion:he_power_train:PMSM:" + motor_id + ":scaling:phase_resistance" ] resistance_ref = self.options["resistance_ref"] outputs["data:propulsion:he_power_train:PMSM:" + motor_id + ":phase_resistance"] = ( resistance_ref * 1e-3 * resistance_scaling )
[docs] def compute_partials(self, inputs, partials, discrete_inputs=None): motor_id = self.options["motor_id"] resistance_ref = self.options["resistance_ref"] partials[ "data:propulsion:he_power_train:PMSM:" + motor_id + ":phase_resistance", "data:propulsion:he_power_train:PMSM:" + motor_id + ":scaling:phase_resistance", ] = resistance_ref * 1e-3