Source code for fastga_he.models.aerodynamics.components.flat_plate_friction_drag_coeff

# 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


[docs] class FlatPlateFrictionDragCoefficient(om.ExplicitComponent): """ Computation of the flat plate friction drag coefficient. """
[docs] def initialize(self): self.options.declare("low_speed_aero", default=False, types=bool)
[docs] def setup(self): mach_variable = ( "data:aerodynamics:aircraft:takeoff:mach" if self.options["low_speed_aero"] else "data:TLAR:cruise_mach" ) self.add_input("characteristic_length", val=np.nan, units="m") self.add_input("characteristic_reynolds", val=np.nan) self.add_input(mach_variable, val=np.nan) self.add_output("plate_drag_friction_coeff")
[docs] def setup_partials(self): self.declare_partials("plate_drag_friction_coeff", "*", method="exact")
[docs] def compute(self, inputs, outputs, discrete_inputs=None, discrete_outputs=None): mach_variable = ( "data:aerodynamics:aircraft:takeoff:mach" if self.options["low_speed_aero"] else "data:TLAR:cruise_mach" ) length = inputs["characteristic_length"] mach = inputs[mach_variable] reynolds = inputs["characteristic_reynolds"] outputs["plate_drag_friction_coeff"] = 0.455 / ( (1.0 + 0.144 * mach**2.0) ** 0.65 * np.log10(reynolds * length) ** 2.58 )
[docs] def compute_partials(self, inputs, partials, discrete_inputs=None): mach_variable = ( "data:aerodynamics:aircraft:takeoff:mach" if self.options["low_speed_aero"] else "data:TLAR:cruise_mach" ) length = inputs["characteristic_length"] mach = inputs[mach_variable] reynolds = inputs["characteristic_reynolds"] partials["plate_drag_friction_coeff", mach_variable] = ( -0.085176 * mach / ((1.0 + 0.144 * mach**2.0) ** 1.65 * np.log10(reynolds * length) ** 2.58) ) partials["plate_drag_friction_coeff", "characteristic_length"] = -10.095959 / ( (1.0 + 0.144 * mach**2.0) ** 0.65 * np.log(reynolds * length) ** 3.58 * length ) partials["plate_drag_friction_coeff", "characteristic_reynolds"] = -10.095959 / ( (1.0 + 0.144 * mach**2.0) ** 0.65 * np.log(reynolds * length) ** 3.58 * reynolds )