From 401610f576c04a773b40caaecaa9965e61ba9bd5 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Fri, 24 Jan 2025 11:51:17 -0800 Subject: [PATCH 01/10] work in progress: convert add_input/add_output to add_aviary_input/add_aviary_input --- .../aerodynamics/flops_based/buffet_lift.py | 4 +- .../flops_based/compressibility_drag.py | 4 +- .../aerodynamics/flops_based/drag.py | 21 +++-------- .../aerodynamics/flops_based/induced_drag.py | 15 ++------ .../aerodynamics/flops_based/lift.py | 26 +++---------- .../flops_based/lift_dependent_drag.py | 15 ++------ .../aerodynamics/flops_based/skin_friction.py | 9 ++--- .../flops_based/solved_alpha_group.py | 1 - .../flops_based/tabular_aero_group.py | 12 ++---- .../gasp_based/flaps_model/Cl_max.py | 37 +++---------------- .../gasp_based/gasp_aero_coeffs.py | 2 - aviary/variable_info/variable_meta_data.py | 14 ++++++- 12 files changed, 45 insertions(+), 115 deletions(-) diff --git a/aviary/subsystems/aerodynamics/flops_based/buffet_lift.py b/aviary/subsystems/aerodynamics/flops_based/buffet_lift.py index f97334ab5..cad07fdaf 100644 --- a/aviary/subsystems/aerodynamics/flops_based/buffet_lift.py +++ b/aviary/subsystems/aerodynamics/flops_based/buffet_lift.py @@ -22,9 +22,7 @@ def setup(self): nn = self.options["num_nodes"] # Simulation inputs - self.add_input( - Dynamic.Atmosphere.MACH, shape=(nn), units='unitless', desc="Mach number" - ) + add_aviary_input(self, Dynamic.Atmosphere.MACH, val=np.ones(nn)) # Aero design inputs add_aviary_input(self, Mission.Design.MACH, 0.0) diff --git a/aviary/subsystems/aerodynamics/flops_based/compressibility_drag.py b/aviary/subsystems/aerodynamics/flops_based/compressibility_drag.py index f6bcfb66e..91ee02ae1 100644 --- a/aviary/subsystems/aerodynamics/flops_based/compressibility_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/compressibility_drag.py @@ -20,9 +20,7 @@ def setup(self): nn = self.options["num_nodes"] # Simulation inputs - self.add_input( - Dynamic.Atmosphere.MACH, shape=(nn), units='unitless', desc="Mach number" - ) + add_aviary_input(self, Dynamic.Atmosphere.MACH, val=np.ones(nn)) # Aero design inputs add_aviary_input(self, Mission.Design.MACH, 0.0) diff --git a/aviary/subsystems/aerodynamics/flops_based/drag.py b/aviary/subsystems/aerodynamics/flops_based/drag.py index 7e188bafe..7a37f9944 100644 --- a/aviary/subsystems/aerodynamics/flops_based/drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/drag.py @@ -1,7 +1,7 @@ import numpy as np import openmdao.api as om -from aviary.variable_info.functions import add_aviary_input +from aviary.variable_info.functions import add_aviary_input, add_aviary_output from aviary.variable_info.variable_meta_data import _MetaData as _meta_data from aviary.variable_info.variables import Aircraft, Dynamic @@ -23,12 +23,7 @@ def setup(self): add_aviary_input(self, Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, val=1.) add_aviary_input(self, Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, val=1.) - self.add_input( - Dynamic.Atmosphere.MACH, - val=np.ones(nn), - units='unitless', - desc='ratio of local fluid speed to local speed of sound', - ) + add_aviary_input(self, Dynamic.Atmosphere.MACH, val=np.ones(nn)) self.add_input( 'CD_prescaled', val=np.ones(nn), units='unitless', @@ -103,20 +98,14 @@ def setup(self): add_aviary_input(self, Aircraft.Wing.AREA, val=1., units='m**2') - self.add_input( - Dynamic.Atmosphere.DYNAMIC_PRESSURE, - val=np.ones(nn), - units='N/m**2', - desc='pressure caused by fluid motion', - ) + add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, val=np.ones(nn), + units='N/m**2') self.add_input( 'CD', val=np.ones(nn), units='unitless', desc='total drag coefficient') - self.add_output( - Dynamic.Vehicle.DRAG, val=np.ones(nn), units='N', desc='total drag' - ) + add_aviary_output(self, Dynamic.Vehicle.DRAG, val=np.ones(nn), units='N') def setup_partials(self): nn = self.options['num_nodes'] diff --git a/aviary/subsystems/aerodynamics/flops_based/induced_drag.py b/aviary/subsystems/aerodynamics/flops_based/induced_drag.py index 33bc9f033..2dae8a077 100644 --- a/aviary/subsystems/aerodynamics/flops_based/induced_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/induced_drag.py @@ -25,18 +25,9 @@ def setup(self): nn = self.options["num_nodes"] # Simulation inputs - self.add_input( - Dynamic.Atmosphere.MACH, shape=(nn), units='unitless', desc="Mach number" - ) - self.add_input( - Dynamic.Vehicle.LIFT, shape=(nn), units="lbf", desc="Lift magnitude" - ) - self.add_input( - Dynamic.Atmosphere.STATIC_PRESSURE, - np.ones(nn), - units='lbf/ft**2', - desc='Static pressure at each evaulation point.', - ) + add_aviary_input(self, Dynamic.Atmosphere.MACH, val=np.ones(nn)) + add_aviary_input(self, Dynamic.Vehicle.LIFT, shape=(nn)) + add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, val=np.ones(nn)) # Aero design inputs add_aviary_input(self, Aircraft.Wing.AREA, 0.0) diff --git a/aviary/subsystems/aerodynamics/flops_based/lift.py b/aviary/subsystems/aerodynamics/flops_based/lift.py index 0e1e59985..6dd7127ba 100644 --- a/aviary/subsystems/aerodynamics/flops_based/lift.py +++ b/aviary/subsystems/aerodynamics/flops_based/lift.py @@ -2,7 +2,7 @@ import openmdao.api as om import aviary.constants as constants -from aviary.variable_info.functions import add_aviary_input +from aviary.variable_info.functions import add_aviary_input, add_aviary_output from aviary.variable_info.variables import Aircraft, Dynamic grav_metric = constants.GRAV_METRIC_FLOPS @@ -21,19 +21,13 @@ def setup(self): add_aviary_input(self, Aircraft.Wing.AREA, val=1., units='m**2') - self.add_input( - Dynamic.Atmosphere.DYNAMIC_PRESSURE, - val=np.ones(nn), - units='N/m**2', - desc='pressure caused by fluid motion', - ) + add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, val=np.ones(nn), units='N/m**2') self.add_input( name='cl', val=np.ones(nn), desc='current coefficient of lift', units='unitless') - self.add_output(name=Dynamic.Vehicle.LIFT, - val=np.ones(nn), desc='Lift', units='N') + add_aviary_output(self, Dynamic.Vehicle.LIFT, val=np.ones(nn), units='N') def setup_partials(self): nn = self.options['num_nodes'] @@ -80,23 +74,15 @@ def setup(self): add_aviary_input(self, varname=Aircraft.Wing.AREA, val=1.0, units='m**2') - self.add_input( - name=Dynamic.Vehicle.MASS, val=np.ones(nn), desc='current aircraft mass', - units='kg') + add_aviary_input(self, Dynamic.Vehicle.MASS, np.ones(nn), units='kg') - self.add_input( - Dynamic.Atmosphere.DYNAMIC_PRESSURE, - val=np.ones(nn), - units='N/m**2', - desc='pressure caused by fluid motion', - ) + add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, val=np.ones(nn), units='N/m**2') self.add_output( name='cl', val=np.ones(nn), desc='current coefficient of lift', units='unitless') - self.add_output(name=Dynamic.Vehicle.LIFT, - val=np.ones(nn), desc='Lift', units='N') + add_aviary_output(self, Dynamic.Vehicle.LIFT, val=np.ones(nn), units='N') def setup_partials(self): nn = self.options['num_nodes'] diff --git a/aviary/subsystems/aerodynamics/flops_based/lift_dependent_drag.py b/aviary/subsystems/aerodynamics/flops_based/lift_dependent_drag.py index 96c592634..4f2415d96 100644 --- a/aviary/subsystems/aerodynamics/flops_based/lift_dependent_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/lift_dependent_drag.py @@ -22,18 +22,9 @@ def setup(self): nn = self.options["num_nodes"] # Simulation inputs - self.add_input( - Dynamic.Atmosphere.MACH, shape=(nn), units='unitless', desc="Mach number" - ) - self.add_input( - Dynamic.Vehicle.LIFT, shape=(nn), units="lbf", desc="Lift magnitude" - ) - self.add_input( - Dynamic.Atmosphere.STATIC_PRESSURE, - np.ones(nn), - units='lbf/ft**2', - desc='Static pressure at each evaulation point.', - ) + add_aviary_input(self, Dynamic.Atmosphere.MACH, val=np.ones(nn)) + add_aviary_input(self, Dynamic.Vehicle.LIFT, shape=(nn)) + add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, val=np.ones(nn)) # Aero design inputs add_aviary_input(self, Mission.Design.LIFT_COEFFICIENT, 0.0) diff --git a/aviary/subsystems/aerodynamics/flops_based/skin_friction.py b/aviary/subsystems/aerodynamics/flops_based/skin_friction.py index 1e98773ae..65ce644c8 100644 --- a/aviary/subsystems/aerodynamics/flops_based/skin_friction.py +++ b/aviary/subsystems/aerodynamics/flops_based/skin_friction.py @@ -1,7 +1,7 @@ import numpy as np import openmdao.api as om -from aviary.variable_info.functions import add_aviary_option +from aviary.variable_info.functions import add_aviary_input, add_aviary_option from aviary.variable_info.variables import Aircraft, Dynamic @@ -49,10 +49,9 @@ def setup(self): self.nc = nc = 2 + num_tails + num_fuselages + int(sum(num_engines)) # Simulation inputs - self.add_input(Dynamic.Atmosphere.TEMPERATURE, np.ones(nn), units='degR') - self.add_input(Dynamic.Atmosphere.STATIC_PRESSURE, - np.ones(nn), units='lbf/ft**2') - self.add_input(Dynamic.Atmosphere.MACH, np.ones(nn), units='unitless') + add_aviary_input(self, Dynamic.Atmosphere.TEMPERATURE, np.ones(nn)) + add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, np.ones(nn)) + add_aviary_input(self, Dynamic.Atmosphere.MACH, np.ones(nn)) # Aero subsystem inputs self.add_input('characteristic_lengths', np.ones(nc), units='ft') diff --git a/aviary/subsystems/aerodynamics/flops_based/solved_alpha_group.py b/aviary/subsystems/aerodynamics/flops_based/solved_alpha_group.py index 2e3e058d0..8403a8f6a 100644 --- a/aviary/subsystems/aerodynamics/flops_based/solved_alpha_group.py +++ b/aviary/subsystems/aerodynamics/flops_based/solved_alpha_group.py @@ -82,7 +82,6 @@ def setup(self): Dynamic.Mission.ALTITUDE, Dynamic.Atmosphere.MACH, Aircraft.Wing.AREA, - Dynamic.Atmosphere.MACH, Dynamic.Atmosphere.DYNAMIC_PRESSURE, ] + extra_promotes, diff --git a/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py b/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py index a168b6042..c7fb5b1da 100644 --- a/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py +++ b/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py @@ -9,6 +9,7 @@ from aviary.utils.data_interpolator_builder import build_data_interpolator from aviary.utils.functions import get_path from aviary.utils.named_values import NamedValues +from aviary.variable_info.functions import add_aviary_input, add_aviary_output from aviary.variable_info.variables import Aircraft, Dynamic @@ -183,15 +184,10 @@ def initialize(self): def setup(self): nn = self.options['num_nodes'] - self.add_input(Dynamic.Mission.VELOCITY, val=np.ones(nn), units='m/s') - self.add_input(Dynamic.Atmosphere.DENSITY, val=np.ones(nn), units='kg/m**3') + add_aviary_input(self, Dynamic.Mission.VELOCITY, val=np.ones(nn), units='m/s') + add_aviary_input(self, Dynamic.Atmosphere.DENSITY, val=np.ones(nn), units='kg/m**3') - self.add_output( - Dynamic.Atmosphere.DYNAMIC_PRESSURE, - val=np.ones(nn), - units='N/m**2', - desc='pressure caused by fluid motion', - ) + add_aviary_output(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, val=np.ones(nn), units='N/m**2') def setup_partials(self): nn = self.options['num_nodes'] diff --git a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py index 81e8b1f38..2d2d7b57f 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py +++ b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py @@ -1,6 +1,6 @@ import openmdao.api as om -from aviary.variable_info.functions import add_aviary_input +from aviary.variable_info.functions import add_aviary_input, add_aviary_output from aviary.variable_info.variables import Aircraft, Dynamic @@ -20,12 +20,7 @@ def setup(self): units='unitless', desc="VLAM8: sensitivity of flap clean wing maximum lift coefficient to wing sweep angle", ) - self.add_input( - Dynamic.Atmosphere.SPEED_OF_SOUND, - val=1118.21948771, - units="ft/s", - desc="SA: speed of sound at sea level", - ) + add_aviary_input(self, Dynamic.Atmosphere.SPEED_OF_SOUND, val=1118.21948771) # from component 3 outputs add_aviary_input(self, Aircraft.Wing.FLAP_LIFT_INCREMENT_OPTIMUM, val=1.5) @@ -88,12 +83,7 @@ def setup(self): add_aviary_input(self, Aircraft.Wing.LOADING, val=128) - self.add_input( - Dynamic.Atmosphere.STATIC_PRESSURE, - val=(14.696 * 144), - units="lbf/ft**2", - desc="P0: static pressure", - ) + add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, val=(14.696 * 144)) add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD, val=12.61) @@ -129,18 +119,8 @@ def setup(self): units='unitless', desc="DELCLF: fuselage lift increment", ) - self.add_input( - Dynamic.Atmosphere.KINEMATIC_VISCOSITY, - val=0.15723e-03, - units="ft**2/s", - desc="XKV: kinematic viscosity", - ) - self.add_input( - Dynamic.Atmosphere.TEMPERATURE, - val=518.67, - units="degR", - desc="T0: static temperature of air cross wing", - ) + add_aviary_input(self, Dynamic.Atmosphere.KINEMATIC_VISCOSITY, val=0.15723e-03, desc="XKV: kinematic viscosity") + add_aviary_input(self, Dynamic.Atmosphere.TEMPERATURE, val=518.67, desc="T0: static temperature of air cross wing") # outputs @@ -150,12 +130,7 @@ def setup(self): desc="CLMAX: maximum lift coefficient", units="unitless", ) - self.add_output( - Dynamic.Atmosphere.MACH, - val=0.17522, - units='unitless', - desc="SMN: mach number", - ) + add_aviary_output(self, Dynamic.Atmosphere.MACH, val=0.17522, desc="SMN: mach number") self.add_output( "reynolds", val=157.1111, units='unitless', desc="RNW: reynolds number" ) diff --git a/aviary/subsystems/aerodynamics/gasp_based/gasp_aero_coeffs.py b/aviary/subsystems/aerodynamics/gasp_based/gasp_aero_coeffs.py index 0d015677e..4e4540696 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/gasp_aero_coeffs.py +++ b/aviary/subsystems/aerodynamics/gasp_based/gasp_aero_coeffs.py @@ -26,7 +26,6 @@ def setup(self): add_aviary_input(self, Aircraft.Nacelle.AVG_LENGTH) add_aviary_output(self, Aircraft.Wing.FORM_FACTOR, 1.23456) - # add_aviary_output(self, Aircraft.Winglet.FORM_FACTOR) add_aviary_output(self, Aircraft.VerticalTail.FORM_FACTOR, 1.23456) add_aviary_output(self, Aircraft.HorizontalTail.FORM_FACTOR, 1.23456) add_aviary_output(self, Aircraft.Strut.FUSELAGE_INTERFERENCE_FACTOR, 1.23456) @@ -73,7 +72,6 @@ def compute(self, inputs, outputs): ckn = 1.5*(1.+.35/(xln/dbarn)) outputs[Aircraft.Wing.FORM_FACTOR] = ckw - # outputs[Aircraft.Winglet.FORM_FACTOR] = ckwglt outputs[Aircraft.VerticalTail.FORM_FACTOR] = ckvt outputs[Aircraft.HorizontalTail.FORM_FACTOR] = ckht outputs[Aircraft.Strut.FUSELAGE_INTERFERENCE_FACTOR] = ckstrt diff --git a/aviary/variable_info/variable_meta_data.py b/aviary/variable_info/variable_meta_data.py index b29b7e9a0..5077b211b 100644 --- a/aviary/variable_info/variable_meta_data.py +++ b/aviary/variable_info/variable_meta_data.py @@ -3097,6 +3097,7 @@ }, units='ft**2', desc='fuselage cross sectional area', + default_value=0.0, ) add_meta_data( @@ -6232,6 +6233,7 @@ historical_name={"GASP": None, "FLOPS": None, "LEAPS1": None}, units='lbm/ft**3', desc="Atmospheric density at the vehicle's current altitude", + default_value=0.0, ) add_meta_data( @@ -6240,6 +6242,7 @@ historical_name={"GASP": None, "FLOPS": None, "LEAPS1": None}, units='lbf/ft**2', desc="Atmospheric dynamic pressure at the vehicle's current flight condition", + default_value=0.0, ) add_meta_data( @@ -6256,6 +6259,7 @@ historical_name={"GASP": None, "FLOPS": None, "LEAPS1": None}, units='unitless', desc='Current Mach number of the vehicle', + default_value=0.0, ) add_meta_data( @@ -6280,6 +6284,7 @@ historical_name={"GASP": None, "FLOPS": None, "LEAPS1": None}, units='lbf/ft**2', desc="Atmospheric static pressure at the vehicle's current flight condition", + default_value=0.0, ) add_meta_data( @@ -6304,6 +6309,7 @@ historical_name={"GASP": None, "FLOPS": None, "LEAPS1": None}, units='ft', desc='Current altitude of the vehicle', + default_value=0.0, ) add_meta_data( @@ -6388,6 +6394,7 @@ historical_name={"GASP": None, "FLOPS": None, "LEAPS1": None}, units='ft/s', desc='Current velocity of the vehicle along its body axis', + default_value=0.0, ) add_meta_data( @@ -6437,6 +6444,7 @@ historical_name={"GASP": None, "FLOPS": None, "LEAPS1": None}, units='lbf', desc='Current total lift produced by the vehicle', + default_value=0.0, ) add_meta_data( @@ -6445,6 +6453,7 @@ historical_name={"GASP": None, "FLOPS": None, "LEAPS1": None}, units='lbm', desc='Current total mass of the vehicle', + default_value=0.0, ) add_meta_data( @@ -6836,7 +6845,7 @@ units='unitless', desc='Fixed design lift coefficient. If input, overrides design lift ' 'coefficient computed by EDET.', - default_value=None, + default_value=0.0, ) add_meta_data( @@ -6871,6 +6880,7 @@ }, units='unitless', desc='aircraft design Mach number', + default_value=0.0, ) add_meta_data( @@ -7729,4 +7739,4 @@ # the original _MetaData in the core of Aviary could get altered in # undesirable ways. By importing this copy to the API the user modifies a # new MetaData designed just for their purposes. -CoreMetaData = deepcopy(_MetaData) +CoreMetaData = deepcopy(_MetaData) \ No newline at end of file From eb3b301df336453ff2b6251d12cab94902c4cb22 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Fri, 24 Jan 2025 11:51:41 -0800 Subject: [PATCH 02/10] work in progress: convert add_input/add_output to add_aviary_input/add_aviary_input --- aviary/subsystems/aerodynamics/aero_common.py | 23 ++++--------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/aviary/subsystems/aerodynamics/aero_common.py b/aviary/subsystems/aerodynamics/aero_common.py index de4750977..7cc5c8595 100644 --- a/aviary/subsystems/aerodynamics/aero_common.py +++ b/aviary/subsystems/aerodynamics/aero_common.py @@ -1,6 +1,6 @@ import numpy as np import openmdao.api as om - +from aviary.variable_info.functions import add_aviary_input, add_aviary_output from aviary.variable_info.variables import Dynamic @@ -19,26 +19,11 @@ def initialize(self): def setup(self): nn = self.options['num_nodes'] - self.add_input( - Dynamic.Atmosphere.STATIC_PRESSURE, - np.ones(nn), - units='lbf/ft**2', - desc='Static pressure at each evaulation point.', - ) + add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, np.ones(nn)) - self.add_input( - Dynamic.Atmosphere.MACH, - np.ones(nn), - units='unitless', - desc='Mach at each evaulation point.', - ) + add_aviary_input(self, Dynamic.Atmosphere.MACH, np.ones(nn)) - self.add_output( - Dynamic.Atmosphere.DYNAMIC_PRESSURE, - val=np.ones(nn), - units='lbf/ft**2', - desc='pressure caused by fluid motion', - ) + add_aviary_output(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, np.ones(nn)) def setup_partials(self): nn = self.options['num_nodes'] From 16263342b95b4c2c3bd81443c045cd8bb10342c9 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Fri, 24 Jan 2025 13:00:07 -0800 Subject: [PATCH 03/10] work in progress. done with aero_common.py --- aviary/subsystems/aerodynamics/aero_common.py | 6 +++--- aviary/subsystems/aerodynamics/flops_based/buffet_lift.py | 2 +- .../aerodynamics/flops_based/compressibility_drag.py | 2 +- aviary/subsystems/aerodynamics/flops_based/drag.py | 2 +- aviary/subsystems/aerodynamics/flops_based/induced_drag.py | 4 ++-- aviary/subsystems/aerodynamics/flops_based/lift.py | 4 ++-- .../aerodynamics/flops_based/lift_dependent_drag.py | 4 ++-- aviary/subsystems/aerodynamics/flops_based/skin_friction.py | 4 ++-- .../aerodynamics/flops_based/tabular_aero_group.py | 2 +- .../flops_based/test/test_tabular_aero_group.py | 6 ++++++ .../aerodynamics/gasp_based/flaps_model/Cl_max.py | 4 ++-- 11 files changed, 23 insertions(+), 17 deletions(-) diff --git a/aviary/subsystems/aerodynamics/aero_common.py b/aviary/subsystems/aerodynamics/aero_common.py index 7cc5c8595..fecc6e559 100644 --- a/aviary/subsystems/aerodynamics/aero_common.py +++ b/aviary/subsystems/aerodynamics/aero_common.py @@ -19,11 +19,11 @@ def initialize(self): def setup(self): nn = self.options['num_nodes'] - add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, np.ones(nn)) + add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, shape=nn) - add_aviary_input(self, Dynamic.Atmosphere.MACH, np.ones(nn)) + add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) - add_aviary_output(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, np.ones(nn)) + add_aviary_output(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=nn) def setup_partials(self): nn = self.options['num_nodes'] diff --git a/aviary/subsystems/aerodynamics/flops_based/buffet_lift.py b/aviary/subsystems/aerodynamics/flops_based/buffet_lift.py index cad07fdaf..a7578faad 100644 --- a/aviary/subsystems/aerodynamics/flops_based/buffet_lift.py +++ b/aviary/subsystems/aerodynamics/flops_based/buffet_lift.py @@ -22,7 +22,7 @@ def setup(self): nn = self.options["num_nodes"] # Simulation inputs - add_aviary_input(self, Dynamic.Atmosphere.MACH, val=np.ones(nn)) + add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) # Aero design inputs add_aviary_input(self, Mission.Design.MACH, 0.0) diff --git a/aviary/subsystems/aerodynamics/flops_based/compressibility_drag.py b/aviary/subsystems/aerodynamics/flops_based/compressibility_drag.py index 91ee02ae1..6028307f9 100644 --- a/aviary/subsystems/aerodynamics/flops_based/compressibility_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/compressibility_drag.py @@ -20,7 +20,7 @@ def setup(self): nn = self.options["num_nodes"] # Simulation inputs - add_aviary_input(self, Dynamic.Atmosphere.MACH, val=np.ones(nn)) + add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) # Aero design inputs add_aviary_input(self, Mission.Design.MACH, 0.0) diff --git a/aviary/subsystems/aerodynamics/flops_based/drag.py b/aviary/subsystems/aerodynamics/flops_based/drag.py index 7a37f9944..9e95771d3 100644 --- a/aviary/subsystems/aerodynamics/flops_based/drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/drag.py @@ -23,7 +23,7 @@ def setup(self): add_aviary_input(self, Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, val=1.) add_aviary_input(self, Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, val=1.) - add_aviary_input(self, Dynamic.Atmosphere.MACH, val=np.ones(nn)) + add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) self.add_input( 'CD_prescaled', val=np.ones(nn), units='unitless', diff --git a/aviary/subsystems/aerodynamics/flops_based/induced_drag.py b/aviary/subsystems/aerodynamics/flops_based/induced_drag.py index 2dae8a077..c311ef5a9 100644 --- a/aviary/subsystems/aerodynamics/flops_based/induced_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/induced_drag.py @@ -25,9 +25,9 @@ def setup(self): nn = self.options["num_nodes"] # Simulation inputs - add_aviary_input(self, Dynamic.Atmosphere.MACH, val=np.ones(nn)) + add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) add_aviary_input(self, Dynamic.Vehicle.LIFT, shape=(nn)) - add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, val=np.ones(nn)) + add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, shape=nn) # Aero design inputs add_aviary_input(self, Aircraft.Wing.AREA, 0.0) diff --git a/aviary/subsystems/aerodynamics/flops_based/lift.py b/aviary/subsystems/aerodynamics/flops_based/lift.py index 6dd7127ba..4ce3a8370 100644 --- a/aviary/subsystems/aerodynamics/flops_based/lift.py +++ b/aviary/subsystems/aerodynamics/flops_based/lift.py @@ -21,7 +21,7 @@ def setup(self): add_aviary_input(self, Aircraft.Wing.AREA, val=1., units='m**2') - add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, val=np.ones(nn), units='N/m**2') + add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=nn, units='N/m**2') self.add_input( name='cl', val=np.ones(nn), desc='current coefficient of lift', @@ -76,7 +76,7 @@ def setup(self): add_aviary_input(self, Dynamic.Vehicle.MASS, np.ones(nn), units='kg') - add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, val=np.ones(nn), units='N/m**2') + add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=nn, units='N/m**2') self.add_output( name='cl', val=np.ones(nn), desc='current coefficient of lift', diff --git a/aviary/subsystems/aerodynamics/flops_based/lift_dependent_drag.py b/aviary/subsystems/aerodynamics/flops_based/lift_dependent_drag.py index 4f2415d96..a656bb409 100644 --- a/aviary/subsystems/aerodynamics/flops_based/lift_dependent_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/lift_dependent_drag.py @@ -22,9 +22,9 @@ def setup(self): nn = self.options["num_nodes"] # Simulation inputs - add_aviary_input(self, Dynamic.Atmosphere.MACH, val=np.ones(nn)) + add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) add_aviary_input(self, Dynamic.Vehicle.LIFT, shape=(nn)) - add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, val=np.ones(nn)) + add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, shape=nn) # Aero design inputs add_aviary_input(self, Mission.Design.LIFT_COEFFICIENT, 0.0) diff --git a/aviary/subsystems/aerodynamics/flops_based/skin_friction.py b/aviary/subsystems/aerodynamics/flops_based/skin_friction.py index 65ce644c8..6e094f120 100644 --- a/aviary/subsystems/aerodynamics/flops_based/skin_friction.py +++ b/aviary/subsystems/aerodynamics/flops_based/skin_friction.py @@ -50,8 +50,8 @@ def setup(self): # Simulation inputs add_aviary_input(self, Dynamic.Atmosphere.TEMPERATURE, np.ones(nn)) - add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, np.ones(nn)) - add_aviary_input(self, Dynamic.Atmosphere.MACH, np.ones(nn)) + add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, shape=nn) + add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) # Aero subsystem inputs self.add_input('characteristic_lengths', np.ones(nc), units='ft') diff --git a/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py b/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py index c7fb5b1da..ed062ef8c 100644 --- a/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py +++ b/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py @@ -187,7 +187,7 @@ def setup(self): add_aviary_input(self, Dynamic.Mission.VELOCITY, val=np.ones(nn), units='m/s') add_aviary_input(self, Dynamic.Atmosphere.DENSITY, val=np.ones(nn), units='kg/m**3') - add_aviary_output(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, val=np.ones(nn), units='N/m**2') + add_aviary_output(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=nn, units='N/m**2') def setup_partials(self): nn = self.options['num_nodes'] diff --git a/aviary/subsystems/aerodynamics/flops_based/test/test_tabular_aero_group.py b/aviary/subsystems/aerodynamics/flops_based/test/test_tabular_aero_group.py index 0b02ff6ee..fcc39d625 100644 --- a/aviary/subsystems/aerodynamics/flops_based/test/test_tabular_aero_group.py +++ b/aviary/subsystems/aerodynamics/flops_based/test/test_tabular_aero_group.py @@ -53,6 +53,8 @@ def setUp(self): setup_model_options(self.prob, aviary_options) + self.prob.model.set_input_defaults(Dynamic.Atmosphere.MACH, val=0.3876, units='unitless') + self.prob.setup(check=False, force_alloc_complex=True) def test_case(self): @@ -168,6 +170,8 @@ def setUp(self): setup_model_options(self.prob, aviary_options) + self.prob.model.set_input_defaults(Dynamic.Atmosphere.MACH, val=0.3876, units='unitless') + self.prob.setup(check=False, force_alloc_complex=True) def test_case(self): @@ -290,6 +294,8 @@ def test_case(self, case_name): setup_model_options(prob, flops_inputs) + prob.model.set_input_defaults(Dynamic.Atmosphere.MACH, val=0.3876, units='unitless') + prob.setup(check=False, force_alloc_complex=True) for (key, (val, units)) in dynamic_inputs: diff --git a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py index 2d2d7b57f..2fd689b4c 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py +++ b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py @@ -83,7 +83,7 @@ def setup(self): add_aviary_input(self, Aircraft.Wing.LOADING, val=128) - add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, val=(14.696 * 144)) + add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE) add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD, val=12.61) @@ -130,7 +130,7 @@ def setup(self): desc="CLMAX: maximum lift coefficient", units="unitless", ) - add_aviary_output(self, Dynamic.Atmosphere.MACH, val=0.17522, desc="SMN: mach number") + add_aviary_output(self, Dynamic.Atmosphere.MACH, desc="SMN: mach number") self.add_output( "reynolds", val=157.1111, units='unitless', desc="RNW: reynolds number" ) From ffb3e339adacd94f0bf7950d413291a7003abee0 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Fri, 24 Jan 2025 13:58:17 -0800 Subject: [PATCH 04/10] work in progress. --- .../aerodynamics/flops_based/buffet_lift.py | 10 ++-- .../flops_based/compressibility_drag.py | 22 ++++---- .../aerodynamics/flops_based/design.py | 12 ++--- .../aerodynamics/flops_based/drag.py | 9 ++-- .../aerodynamics/flops_based/drag_polar.py | 42 +++++++-------- .../aerodynamics/flops_based/ground_effect.py | 10 ++-- .../aerodynamics/flops_based/induced_drag.py | 10 ++-- .../aerodynamics/flops_based/lift.py | 4 +- .../flops_based/lift_dependent_drag.py | 14 ++--- .../aerodynamics/flops_based/mux_component.py | 52 +++++++++---------- .../flops_based/tabular_aero_group.py | 4 +- .../gasp_based/flaps_model/Cl_max.py | 4 +- .../flaps_model/basic_calculations.py | 9 ++-- .../test/test_basic_calculations.py | 1 + 14 files changed, 100 insertions(+), 103 deletions(-) diff --git a/aviary/subsystems/aerodynamics/flops_based/buffet_lift.py b/aviary/subsystems/aerodynamics/flops_based/buffet_lift.py index a7578faad..f67c3c81e 100644 --- a/aviary/subsystems/aerodynamics/flops_based/buffet_lift.py +++ b/aviary/subsystems/aerodynamics/flops_based/buffet_lift.py @@ -25,13 +25,13 @@ def setup(self): add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) # Aero design inputs - add_aviary_input(self, Mission.Design.MACH, 0.0) + add_aviary_input(self, Mission.Design.MACH) # Aircraft design inputs - add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO, 0.0) - add_aviary_input(self, Aircraft.Wing.MAX_CAMBER_AT_70_SEMISPAN, 0.0) - add_aviary_input(self, Aircraft.Wing.SWEEP, 0.0) - add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD, 0.0) + add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO) + add_aviary_input(self, Aircraft.Wing.MAX_CAMBER_AT_70_SEMISPAN) + add_aviary_input(self, Aircraft.Wing.SWEEP) + add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD) # Declare outputs self.add_output("DELCLB", shape=(nn), units='unitless', diff --git a/aviary/subsystems/aerodynamics/flops_based/compressibility_drag.py b/aviary/subsystems/aerodynamics/flops_based/compressibility_drag.py index 6028307f9..68cc75ede 100644 --- a/aviary/subsystems/aerodynamics/flops_based/compressibility_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/compressibility_drag.py @@ -23,19 +23,19 @@ def setup(self): add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) # Aero design inputs - add_aviary_input(self, Mission.Design.MACH, 0.0) + add_aviary_input(self, Mission.Design.MACH) # Aircraft design inputs - add_aviary_input(self, Aircraft.Design.BASE_AREA, 0.0) - add_aviary_input(self, Aircraft.Wing.AREA, 0.0) - add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO, 0.0) - add_aviary_input(self, Aircraft.Wing.MAX_CAMBER_AT_70_SEMISPAN, 0.0) - add_aviary_input(self, Aircraft.Wing.SWEEP, 0.0) - add_aviary_input(self, Aircraft.Wing.TAPER_RATIO, 0.0) - add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD, 0.0) - add_aviary_input(self, Aircraft.Fuselage.CROSS_SECTION, 0.0) - add_aviary_input(self, Aircraft.Fuselage.DIAMETER_TO_WING_SPAN, 0.0) - add_aviary_input(self, Aircraft.Fuselage.LENGTH_TO_DIAMETER, 0.0) + add_aviary_input(self, Aircraft.Design.BASE_AREA) + add_aviary_input(self, Aircraft.Wing.AREA) + add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO) + add_aviary_input(self, Aircraft.Wing.MAX_CAMBER_AT_70_SEMISPAN) + add_aviary_input(self, Aircraft.Wing.SWEEP) + add_aviary_input(self, Aircraft.Wing.TAPER_RATIO) + add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD) + add_aviary_input(self, Aircraft.Fuselage.CROSS_SECTION) + add_aviary_input(self, Aircraft.Fuselage.DIAMETER_TO_WING_SPAN) + add_aviary_input(self, Aircraft.Fuselage.LENGTH_TO_DIAMETER) # Outputs self.add_output('compress_drag_coeff', shape=(nn, ), units='unitless', diff --git a/aviary/subsystems/aerodynamics/flops_based/design.py b/aviary/subsystems/aerodynamics/flops_based/design.py index 37d0f14e9..effd25ede 100644 --- a/aviary/subsystems/aerodynamics/flops_based/design.py +++ b/aviary/subsystems/aerodynamics/flops_based/design.py @@ -30,14 +30,14 @@ def initialize(self): def setup(self): # Aircraft design inputs - add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO, 0.0) - add_aviary_input(self, Aircraft.Wing.MAX_CAMBER_AT_70_SEMISPAN, 0.0) - add_aviary_input(self, Aircraft.Wing.SWEEP, 0.0) - add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD, 0.0) + add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO) + add_aviary_input(self, Aircraft.Wing.MAX_CAMBER_AT_70_SEMISPAN) + add_aviary_input(self, Aircraft.Wing.SWEEP) + add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD) # Declare outputs - add_aviary_output(self, Mission.Design.MACH, 0.0) - add_aviary_output(self, Mission.Design.LIFT_COEFFICIENT, 0.0) + add_aviary_output(self, Mission.Design.MACH) + add_aviary_output(self, Mission.Design.LIFT_COEFFICIENT) def setup_partials(self): self.declare_partials(of='*', wrt='*') diff --git a/aviary/subsystems/aerodynamics/flops_based/drag.py b/aviary/subsystems/aerodynamics/flops_based/drag.py index 9e95771d3..7e7124412 100644 --- a/aviary/subsystems/aerodynamics/flops_based/drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/drag.py @@ -20,8 +20,8 @@ def initialize(self): def setup(self): nn = self.options['num_nodes'] - add_aviary_input(self, Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, val=1.) - add_aviary_input(self, Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, val=1.) + add_aviary_input(self, Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR) + add_aviary_input(self, Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR) add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) @@ -98,14 +98,13 @@ def setup(self): add_aviary_input(self, Aircraft.Wing.AREA, val=1., units='m**2') - add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, val=np.ones(nn), - units='N/m**2') + add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=(nn), units='N/m**2') self.add_input( 'CD', val=np.ones(nn), units='unitless', desc='total drag coefficient') - add_aviary_output(self, Dynamic.Vehicle.DRAG, val=np.ones(nn), units='N') + add_aviary_output(self, Dynamic.Vehicle.DRAG, shape=nn, units='N') def setup_partials(self): nn = self.options['num_nodes'] diff --git a/aviary/subsystems/aerodynamics/flops_based/drag_polar.py b/aviary/subsystems/aerodynamics/flops_based/drag_polar.py index 6b968ca5e..0ae7fda05 100644 --- a/aviary/subsystems/aerodynamics/flops_based/drag_polar.py +++ b/aviary/subsystems/aerodynamics/flops_based/drag_polar.py @@ -25,27 +25,27 @@ def initialize(self): def setup(self): num_engine_type = len(self.options[Aircraft.Engine.NUM_ENGINES]) - add_aviary_input(self, Aircraft.Canard.WETTED_AREA, 0.0) - add_aviary_input(self, Aircraft.Fuselage.WETTED_AREA, 0.0) - add_aviary_input(self, Aircraft.HorizontalTail.WETTED_AREA, 0.0) - add_aviary_input(self, Aircraft.Nacelle.WETTED_AREA, np.zeros(num_engine_type)) - add_aviary_input(self, Aircraft.VerticalTail.WETTED_AREA, 0.0) - add_aviary_input(self, Aircraft.Wing.WETTED_AREA, 0.0) - - add_aviary_input(self, Aircraft.Canard.FINENESS, 0.0) - add_aviary_input(self, Aircraft.Fuselage.FINENESS, 0.0) - add_aviary_input(self, Aircraft.HorizontalTail.FINENESS, 0.0) - add_aviary_input(self, Aircraft.Nacelle.FINENESS, np.zeros(num_engine_type)) - add_aviary_input(self, Aircraft.VerticalTail.FINENESS, 0.0) - add_aviary_input(self, Aircraft.Wing.FINENESS, 0.0) - - add_aviary_input(self, Aircraft.Canard.CHARACTERISTIC_LENGTH, 0.0) - add_aviary_input(self, Aircraft.Fuselage.CHARACTERISTIC_LENGTH, 0.0) - add_aviary_input(self, Aircraft.HorizontalTail.CHARACTERISTIC_LENGTH, 0.0) + add_aviary_input(self, Aircraft.Canard.WETTED_AREA) + add_aviary_input(self, Aircraft.Fuselage.WETTED_AREA) + add_aviary_input(self, Aircraft.HorizontalTail.WETTED_AREA) + add_aviary_input(self, Aircraft.Nacelle.WETTED_AREA, shape=num_engine_type) + add_aviary_input(self, Aircraft.VerticalTail.WETTED_AREA) + add_aviary_input(self, Aircraft.Wing.WETTED_AREA) + + add_aviary_input(self, Aircraft.Canard.FINENESS) + add_aviary_input(self, Aircraft.Fuselage.FINENESS) + add_aviary_input(self, Aircraft.HorizontalTail.FINENESS) + add_aviary_input(self, Aircraft.Nacelle.FINENESS, shape=num_engine_type) + add_aviary_input(self, Aircraft.VerticalTail.FINENESS) + add_aviary_input(self, Aircraft.Wing.FINENESS) + + add_aviary_input(self, Aircraft.Canard.CHARACTERISTIC_LENGTH) + add_aviary_input(self, Aircraft.Fuselage.CHARACTERISTIC_LENGTH) + add_aviary_input(self, Aircraft.HorizontalTail.CHARACTERISTIC_LENGTH) add_aviary_input(self, Aircraft.Nacelle.CHARACTERISTIC_LENGTH, np.zeros(num_engine_type)) - add_aviary_input(self, Aircraft.VerticalTail.CHARACTERISTIC_LENGTH, 0.0) - add_aviary_input(self, Aircraft.Wing.CHARACTERISTIC_LENGTH, 0.0) + add_aviary_input(self, Aircraft.VerticalTail.CHARACTERISTIC_LENGTH) + add_aviary_input(self, Aircraft.Wing.CHARACTERISTIC_LENGTH) - add_aviary_input(self, Mission.Design.MACH, 0.0) - add_aviary_input(self, Mission.Design.LIFT_COEFFICIENT, 0.0) + add_aviary_input(self, Mission.Design.MACH) + add_aviary_input(self, Mission.Design.LIFT_COEFFICIENT) diff --git a/aviary/subsystems/aerodynamics/flops_based/ground_effect.py b/aviary/subsystems/aerodynamics/flops_based/ground_effect.py index 3130ed5da..1272f8749 100644 --- a/aviary/subsystems/aerodynamics/flops_based/ground_effect.py +++ b/aviary/subsystems/aerodynamics/flops_based/ground_effect.py @@ -40,10 +40,10 @@ def setup(self): self.add_input('angle_of_attack', val=np.zeros(nn), units='rad') - add_aviary_input(self, Dynamic.Mission.ALTITUDE, np.zeros(nn), units='m') + add_aviary_input(self, Dynamic.Mission.ALTITUDE, shape=(nn), units='m') add_aviary_input( - self, Dynamic.Mission.FLIGHT_PATH_ANGLE, val=np.zeros(nn), units='rad' + self, Dynamic.Mission.FLIGHT_PATH_ANGLE, shape=(nn), units='rad' ) self.add_input( @@ -61,9 +61,9 @@ def setup(self): desc='coefficient of drag without ground effect', units='unitless' ) - add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO, val=1.) - add_aviary_input(self, Aircraft.Wing.HEIGHT, val=1., units='m') - add_aviary_input(self, Aircraft.Wing.SPAN, val=1., units='m') + add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO) + add_aviary_input(self, Aircraft.Wing.HEIGHT, units='m') + add_aviary_input(self, Aircraft.Wing.SPAN, units='m') self.add_output( 'lift_coefficient', val=np.ones(nn), diff --git a/aviary/subsystems/aerodynamics/flops_based/induced_drag.py b/aviary/subsystems/aerodynamics/flops_based/induced_drag.py index c311ef5a9..3a4a0a4e5 100644 --- a/aviary/subsystems/aerodynamics/flops_based/induced_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/induced_drag.py @@ -30,11 +30,11 @@ def setup(self): add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, shape=nn) # Aero design inputs - add_aviary_input(self, Aircraft.Wing.AREA, 0.0) - add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO, 0.0) - add_aviary_input(self, Aircraft.Wing.SPAN_EFFICIENCY_FACTOR, 0.0) - add_aviary_input(self, Aircraft.Wing.SWEEP, 0.0) - add_aviary_input(self, Aircraft.Wing.TAPER_RATIO, 0.0) + add_aviary_input(self, Aircraft.Wing.AREA) + add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO) + add_aviary_input(self, Aircraft.Wing.SPAN_EFFICIENCY_FACTOR) + add_aviary_input(self, Aircraft.Wing.SWEEP) + add_aviary_input(self, Aircraft.Wing.TAPER_RATIO) # Declare outputs self.add_output( diff --git a/aviary/subsystems/aerodynamics/flops_based/lift.py b/aviary/subsystems/aerodynamics/flops_based/lift.py index 4ce3a8370..d2e60f1fd 100644 --- a/aviary/subsystems/aerodynamics/flops_based/lift.py +++ b/aviary/subsystems/aerodynamics/flops_based/lift.py @@ -74,7 +74,7 @@ def setup(self): add_aviary_input(self, varname=Aircraft.Wing.AREA, val=1.0, units='m**2') - add_aviary_input(self, Dynamic.Vehicle.MASS, np.ones(nn), units='kg') + add_aviary_input(self, Dynamic.Vehicle.MASS, shape=(nn), units='kg') add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=nn, units='N/m**2') @@ -82,7 +82,7 @@ def setup(self): name='cl', val=np.ones(nn), desc='current coefficient of lift', units='unitless') - add_aviary_output(self, Dynamic.Vehicle.LIFT, val=np.ones(nn), units='N') + add_aviary_output(self, Dynamic.Vehicle.LIFT, shape=nn, units='N') def setup_partials(self): nn = self.options['num_nodes'] diff --git a/aviary/subsystems/aerodynamics/flops_based/lift_dependent_drag.py b/aviary/subsystems/aerodynamics/flops_based/lift_dependent_drag.py index a656bb409..c0a4dd65f 100644 --- a/aviary/subsystems/aerodynamics/flops_based/lift_dependent_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/lift_dependent_drag.py @@ -27,15 +27,15 @@ def setup(self): add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE, shape=nn) # Aero design inputs - add_aviary_input(self, Mission.Design.LIFT_COEFFICIENT, 0.0) - add_aviary_input(self, Mission.Design.MACH, 0.0) + add_aviary_input(self, Mission.Design.LIFT_COEFFICIENT) + add_aviary_input(self, Mission.Design.MACH) # Aircraft design inputs - add_aviary_input(self, Aircraft.Wing.AREA, 0.0) - add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO, 0.0) - add_aviary_input(self, Aircraft.Wing.MAX_CAMBER_AT_70_SEMISPAN, 0.0) - add_aviary_input(self, Aircraft.Wing.SWEEP, 0.0) - add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD, 0.0) + add_aviary_input(self, Aircraft.Wing.AREA) + add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO) + add_aviary_input(self, Aircraft.Wing.MAX_CAMBER_AT_70_SEMISPAN) + add_aviary_input(self, Aircraft.Wing.SWEEP) + add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD) # Declare outputs self.add_output("CD", shape=(nn), units='unitless', diff --git a/aviary/subsystems/aerodynamics/flops_based/mux_component.py b/aviary/subsystems/aerodynamics/flops_based/mux_component.py index a1560a477..f05206cca 100644 --- a/aviary/subsystems/aerodynamics/flops_based/mux_component.py +++ b/aviary/subsystems/aerodynamics/flops_based/mux_component.py @@ -30,39 +30,39 @@ def setup(self): nc = 2 # Wing (Always 1) - add_aviary_input(self, Aircraft.Wing.WETTED_AREA, 1.0) - add_aviary_input(self, Aircraft.Wing.FINENESS, 1.0) - add_aviary_input(self, Aircraft.Wing.CHARACTERISTIC_LENGTH, 1.0) - add_aviary_input(self, Aircraft.Wing.LAMINAR_FLOW_UPPER, 0.0) - add_aviary_input(self, Aircraft.Wing.LAMINAR_FLOW_LOWER, 0.0) + add_aviary_input(self, Aircraft.Wing.WETTED_AREA) + add_aviary_input(self, Aircraft.Wing.FINENESS) + add_aviary_input(self, Aircraft.Wing.CHARACTERISTIC_LENGTH) + add_aviary_input(self, Aircraft.Wing.LAMINAR_FLOW_UPPER) + add_aviary_input(self, Aircraft.Wing.LAMINAR_FLOW_LOWER) # Horizontal Tail (Always 1) - add_aviary_input(self, Aircraft.HorizontalTail.WETTED_AREA, 1.0) - add_aviary_input(self, Aircraft.HorizontalTail.FINENESS, 1.0) - add_aviary_input(self, Aircraft.HorizontalTail.CHARACTERISTIC_LENGTH, 1.0) - add_aviary_input(self, Aircraft.HorizontalTail.LAMINAR_FLOW_UPPER, 0.0) - add_aviary_input(self, Aircraft.HorizontalTail.LAMINAR_FLOW_LOWER, 0.0) + add_aviary_input(self, Aircraft.HorizontalTail.WETTED_AREA) + add_aviary_input(self, Aircraft.HorizontalTail.FINENESS) + add_aviary_input(self, Aircraft.HorizontalTail.CHARACTERISTIC_LENGTH) + add_aviary_input(self, Aircraft.HorizontalTail.LAMINAR_FLOW_UPPER) + add_aviary_input(self, Aircraft.HorizontalTail.LAMINAR_FLOW_LOWER) num = self.options[Aircraft.VerticalTail.NUM_TAILS] self.num_tails = num if num > 0: - add_aviary_input(self, Aircraft.VerticalTail.WETTED_AREA, 1.0) - add_aviary_input(self, Aircraft.VerticalTail.FINENESS, 1.0) - add_aviary_input(self, Aircraft.VerticalTail.CHARACTERISTIC_LENGTH, 1.0) - add_aviary_input(self, Aircraft.VerticalTail.LAMINAR_FLOW_UPPER, 0.0) - add_aviary_input(self, Aircraft.VerticalTail.LAMINAR_FLOW_LOWER, 0.0) + add_aviary_input(self, Aircraft.VerticalTail.WETTED_AREA) + add_aviary_input(self, Aircraft.VerticalTail.FINENESS) + add_aviary_input(self, Aircraft.VerticalTail.CHARACTERISTIC_LENGTH) + add_aviary_input(self, Aircraft.VerticalTail.LAMINAR_FLOW_UPPER) + add_aviary_input(self, Aircraft.VerticalTail.LAMINAR_FLOW_LOWER) nc += num # Fuselage num = self.options[Aircraft.Fuselage.NUM_FUSELAGES] self.num_fuselages = num if num > 0: - add_aviary_input(self, Aircraft.Fuselage.WETTED_AREA, 1.0) - add_aviary_input(self, Aircraft.Fuselage.FINENESS, 1.0) - add_aviary_input(self, Aircraft.Fuselage.CHARACTERISTIC_LENGTH, 1.0) - add_aviary_input(self, Aircraft.Fuselage.LAMINAR_FLOW_UPPER, 0.0) - add_aviary_input(self, Aircraft.Fuselage.LAMINAR_FLOW_LOWER, 0.0) + add_aviary_input(self, Aircraft.Fuselage.WETTED_AREA) + add_aviary_input(self, Aircraft.Fuselage.FINENESS) + add_aviary_input(self, Aircraft.Fuselage.CHARACTERISTIC_LENGTH) + add_aviary_input(self, Aircraft.Fuselage.LAMINAR_FLOW_UPPER) + add_aviary_input(self, Aircraft.Fuselage.LAMINAR_FLOW_LOWER) nc += num num_engines = self.options[Aircraft.Engine.NUM_ENGINES] @@ -70,16 +70,14 @@ def setup(self): self.num_nacelles = int(sum(num_engines)) if self.num_nacelles > 0: - add_aviary_input(self, Aircraft.Nacelle.WETTED_AREA, - np.zeros(num_engine_models)) - add_aviary_input(self, Aircraft.Nacelle.FINENESS, - np.zeros(num_engine_models)) + add_aviary_input(self, Aircraft.Nacelle.WETTED_AREA, shape=num_engine_models) + add_aviary_input(self, Aircraft.Nacelle.FINENESS, shape=num_engine_models) add_aviary_input(self, Aircraft.Nacelle.CHARACTERISTIC_LENGTH, - np.zeros(num_engine_models)) + shape=num_engine_models) add_aviary_input(self, Aircraft.Nacelle.LAMINAR_FLOW_UPPER, - np.zeros(num_engine_models)) + shape=num_engine_models) add_aviary_input(self, Aircraft.Nacelle.LAMINAR_FLOW_LOWER, - np.zeros(num_engine_models)) + shape=num_engine_models) nc += self.num_nacelles self.add_output( diff --git a/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py b/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py index ed062ef8c..88b2c0ae1 100644 --- a/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py +++ b/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py @@ -184,8 +184,8 @@ def initialize(self): def setup(self): nn = self.options['num_nodes'] - add_aviary_input(self, Dynamic.Mission.VELOCITY, val=np.ones(nn), units='m/s') - add_aviary_input(self, Dynamic.Atmosphere.DENSITY, val=np.ones(nn), units='kg/m**3') + add_aviary_input(self, Dynamic.Mission.VELOCITY, shape=(nn), units='m/s') + add_aviary_input(self, Dynamic.Atmosphere.DENSITY, shape=(nn), units='kg/m**3') add_aviary_output(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=nn, units='N/m**2') diff --git a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py index 2fd689b4c..097b7849a 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py +++ b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py @@ -119,8 +119,8 @@ def setup(self): units='unitless', desc="DELCLF: fuselage lift increment", ) - add_aviary_input(self, Dynamic.Atmosphere.KINEMATIC_VISCOSITY, val=0.15723e-03, desc="XKV: kinematic viscosity") - add_aviary_input(self, Dynamic.Atmosphere.TEMPERATURE, val=518.67, desc="T0: static temperature of air cross wing") + add_aviary_input(self, Dynamic.Atmosphere.KINEMATIC_VISCOSITY, desc="XKV: kinematic viscosity") + add_aviary_input(self, Dynamic.Atmosphere.TEMPERATURE, desc="T0: static temperature of air cross wing") # outputs diff --git a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/basic_calculations.py b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/basic_calculations.py index 48494ba6f..cc8b54fd8 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/basic_calculations.py +++ b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/basic_calculations.py @@ -36,11 +36,10 @@ def setup(self): units="deg", desc="DFLPTO | DFLPLD: takeoff or landing flap deflection", ) - add_aviary_input(self, Aircraft.Wing.OPTIMUM_FLAP_DEFLECTION, val=55.0) - add_aviary_input(self, Aircraft.Wing.ROOT_CHORD, val=16.406626) - add_aviary_input(self, Aircraft.Fuselage.LENGTH, val=129.4) - add_aviary_input(self, Aircraft.Wing.LEADING_EDGE_SWEEP, - val=0.47639, units="rad") + add_aviary_input(self, Aircraft.Wing.OPTIMUM_FLAP_DEFLECTION) + add_aviary_input(self, Aircraft.Wing.ROOT_CHORD) + add_aviary_input(self, Aircraft.Fuselage.LENGTH) + add_aviary_input(self, Aircraft.Wing.LEADING_EDGE_SWEEP) # outputs diff --git a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/test/test_basic_calculations.py b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/test/test_basic_calculations.py index 16a7e427d..6d7e27d8e 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/test/test_basic_calculations.py +++ b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/test/test_basic_calculations.py @@ -38,6 +38,7 @@ def setUp(self): self.prob.set_val(Aircraft.Wing.ROOT_CHORD, 16.41, units="ft") self.prob.set_val(Aircraft.Fuselage.LENGTH, 129.4, units="ft") self.prob.set_val(Aircraft.Wing.LEADING_EDGE_SWEEP, 0.47639, units="rad") + self.prob.set_val(Aircraft.Wing.OPTIMUM_FLAP_DEFLECTION, 55.0, units="deg") def test_case(self): From 5cf258c0d464a0dcf30ec54e38a8a260a4887cd2 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Fri, 24 Jan 2025 16:04:58 -0800 Subject: [PATCH 05/10] work in progress --- .../aerodynamics/gasp_based/gasp_aero_coeffs.py | 12 ++++++------ .../aerodynamics/gasp_based/test/test_table_based.py | 8 +++++++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/aviary/subsystems/aerodynamics/gasp_based/gasp_aero_coeffs.py b/aviary/subsystems/aerodynamics/gasp_based/gasp_aero_coeffs.py index 4e4540696..ded739c99 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/gasp_aero_coeffs.py +++ b/aviary/subsystems/aerodynamics/gasp_based/gasp_aero_coeffs.py @@ -20,16 +20,16 @@ def setup(self): add_aviary_input(self, Aircraft.Wing.SWEEP, units='rad') add_aviary_input(self, Aircraft.VerticalTail.SWEEP, units='rad') add_aviary_input(self, Aircraft.HorizontalTail.SWEEP, units='rad') - add_aviary_input(self, Aircraft.HorizontalTail.VERTICAL_TAIL_FRACTION, 0) + add_aviary_input(self, Aircraft.HorizontalTail.VERTICAL_TAIL_FRACTION) add_aviary_input(self, Mission.Design.MACH) add_aviary_input(self, Aircraft.Nacelle.AVG_DIAMETER) add_aviary_input(self, Aircraft.Nacelle.AVG_LENGTH) - add_aviary_output(self, Aircraft.Wing.FORM_FACTOR, 1.23456) - add_aviary_output(self, Aircraft.VerticalTail.FORM_FACTOR, 1.23456) - add_aviary_output(self, Aircraft.HorizontalTail.FORM_FACTOR, 1.23456) - add_aviary_output(self, Aircraft.Strut.FUSELAGE_INTERFERENCE_FACTOR, 1.23456) - add_aviary_output(self, Aircraft.Nacelle.FORM_FACTOR, 1.23456) + add_aviary_output(self, Aircraft.Wing.FORM_FACTOR) + add_aviary_output(self, Aircraft.VerticalTail.FORM_FACTOR) + add_aviary_output(self, Aircraft.HorizontalTail.FORM_FACTOR) + add_aviary_output(self, Aircraft.Strut.FUSELAGE_INTERFERENCE_FACTOR) + add_aviary_output(self, Aircraft.Nacelle.FORM_FACTOR) def setup_partials(self): self.declare_partials( diff --git a/aviary/subsystems/aerodynamics/gasp_based/test/test_table_based.py b/aviary/subsystems/aerodynamics/gasp_based/test/test_table_based.py index 3d9ad91cb..5236d5758 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/test/test_table_based.py +++ b/aviary/subsystems/aerodynamics/gasp_based/test/test_table_based.py @@ -98,12 +98,14 @@ def test_groundroll(self): flaps_aero_data=self.flaps_data, ground_aero_data=self.ground_data, extrapolate=True) + prob.model.set_input_defaults(Aircraft.Wing.AREA, val=1370.3) prob.setup() prob.set_val("t_curr", [0.0, 1.0, 2.0, 3.0]) prob.set_val(Dynamic.Mission.ALTITUDE, 0) prob.set_val(Dynamic.Atmosphere.MACH, [0.0, 0.009, 0.018, 0.026]) prob.set_val("alpha", 0) + prob.set_val(Mission.Design.GROSS_MASS, 175400.0) # TODO set q if we want to test lift/drag forces prob.set_val("flap_defl", self.flap_defl_to) @@ -134,6 +136,7 @@ def test_takeoff(self): flaps_aero_data=self.flaps_data, ground_aero_data=self.ground_data, extrapolate=True) + prob.model.set_input_defaults(Aircraft.Wing.AREA, val=1370.3) prob.setup() prob.set_val( @@ -150,12 +153,12 @@ def test_takeoff(self): prob.set_val("alpha", [8.94, 8.74, 8.44, 8.24, 6.45, 6.34, 6.76, 7.59]) # TODO set q if we want to test lift/drag forces - prob.set_val(Aircraft.Wing.AREA, 1370) prob.set_val(Aircraft.Wing.SPAN, 117.8) prob.set_val("flap_defl", self.flap_defl_to) prob.set_val("t_init_gear", self.t_init_gear_to) prob.set_val("t_init_flaps", self.t_init_flaps_to) + prob.set_val(Mission.Design.GROSS_MASS, 175400.0) prob.run_model() cl_exp = np.array( @@ -192,6 +195,7 @@ def test_case(self): promotes_inputs=['*'], promotes_outputs=['*'], ) + #prob.model.set_input_defaults(Aircraft.Wing.AREA, val=1370.3) prob.setup(check=False, force_alloc_complex=True) prob.set_val(Mission.Design.GROSS_MASS, 175000, 'lbm') prob.set_val(Aircraft.Wing.AREA, 1000, 'ft**2') @@ -224,7 +228,9 @@ def test_case(self): promotes_inputs=['*'], promotes_outputs=['*'], ) + prob.model.set_input_defaults(Aircraft.Wing.AREA, val=1370.3) prob.setup(check=False, force_alloc_complex=True) + prob.set_val(Mission.Design.GROSS_MASS, 175400.0) partial_data = prob.check_partials(out_stream=None, method="cs") assert_check_partials(partial_data, atol=1e-12, rtol=1e-12) From 6603fc23937566bf048ff7f0bf921c32e6ace973 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Fri, 24 Jan 2025 18:09:04 -0800 Subject: [PATCH 06/10] work in progress. --- .../aerodynamics/gasp_based/common.py | 14 +- .../gasp_based/flaps_model/Cl_max.py | 2 +- .../flaps_model/basic_calculations.py | 20 +- .../gasp_based/flaps_model/meta_model.py | 10 +- .../aerodynamics/gasp_based/gaspaero.py | 196 +++++++----------- .../aerodynamics/gasp_based/interference.py | 2 +- .../aerodynamics/gasp_based/table_based.py | 2 +- aviary/variable_info/variable_meta_data.py | 2 + 8 files changed, 97 insertions(+), 151 deletions(-) diff --git a/aviary/subsystems/aerodynamics/gasp_based/common.py b/aviary/subsystems/aerodynamics/gasp_based/common.py index 9f34627ba..47fcf40d8 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/common.py +++ b/aviary/subsystems/aerodynamics/gasp_based/common.py @@ -1,7 +1,7 @@ import numpy as np import openmdao.api as om -from aviary.variable_info.functions import add_aviary_input +from aviary.variable_info.functions import add_aviary_input, add_aviary_output from aviary.variable_info.variables import Aircraft, Dynamic @@ -26,8 +26,8 @@ def setup(self): add_aviary_input(self, Aircraft.Wing.AREA, val=1370.3) - self.add_output(Dynamic.Vehicle.LIFT, units="lbf", shape=nn, desc="Lift force") - self.add_output(Dynamic.Vehicle.DRAG, units="lbf", shape=nn, desc="Drag force") + add_aviary_output(self, Dynamic.Vehicle.LIFT, units="lbf", shape=nn) + add_aviary_output(self, Dynamic.Vehicle.DRAG, units="lbf", shape=nn) def setup_partials(self): nn = self.options["num_nodes"] @@ -73,13 +73,7 @@ def initialize(self): def setup(self): nn = self.options["num_nodes"] self.add_input("lift_req", 1, units="lbf", shape=nn, desc="Lift force") - self.add_input( - Dynamic.Atmosphere.DYNAMIC_PRESSURE, - 1.0, - units="psf", - shape=nn, - desc="Dynamic pressure", - ) + add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, units="psf", shape=nn) add_aviary_input(self, Aircraft.Wing.AREA, val=1370.3) diff --git a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py index 097b7849a..875455fae 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py +++ b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py @@ -85,7 +85,7 @@ def setup(self): add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE) - add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD, val=12.61) + add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD) add_aviary_input(self, Aircraft.Wing.MAX_LIFT_REF, val=1.15) add_aviary_input(self, Aircraft.Wing.SLAT_LIFT_INCREMENT_OPTIMUM, val=0.93) diff --git a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/basic_calculations.py b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/basic_calculations.py index cc8b54fd8..6fbe95aca 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/basic_calculations.py +++ b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/basic_calculations.py @@ -14,22 +14,22 @@ def setup(self): # inputs - add_aviary_input(self, Aircraft.Wing.SWEEP, val=25.0) - add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO, val=10.13) - add_aviary_input(self, Aircraft.Wing.FLAP_CHORD_RATIO, val=0.3) - add_aviary_input(self, Aircraft.Wing.TAPER_RATIO, val=0.33) - add_aviary_input(self, Aircraft.Wing.CENTER_CHORD, val=17.48974) - add_aviary_input(self, Aircraft.Fuselage.AVG_DIAMETER, val=13.1) - add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD_ROOT, val=0.15) - add_aviary_input(self, Aircraft.Wing.SPAN, val=117.8) - add_aviary_input(self, Aircraft.Wing.SLAT_CHORD_RATIO, val=0.15) + add_aviary_input(self, Aircraft.Wing.SWEEP) + add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO) + add_aviary_input(self, Aircraft.Wing.FLAP_CHORD_RATIO) + add_aviary_input(self, Aircraft.Wing.TAPER_RATIO) + add_aviary_input(self, Aircraft.Wing.CENTER_CHORD) + add_aviary_input(self, Aircraft.Fuselage.AVG_DIAMETER) + add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD_ROOT) + add_aviary_input(self, Aircraft.Wing.SPAN) + add_aviary_input(self, Aircraft.Wing.SLAT_CHORD_RATIO) self.add_input( "slat_defl", val=10.0, units="deg", desc="DELLED: leading edge slat deflection", ) - add_aviary_input(self, Aircraft.Wing.OPTIMUM_SLAT_DEFLECTION, val=20.0) + add_aviary_input(self, Aircraft.Wing.OPTIMUM_SLAT_DEFLECTION) self.add_input( "flap_defl", val=10.0, diff --git a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/meta_model.py b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/meta_model.py index 484fa8d96..07e6e46b2 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/meta_model.py +++ b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/meta_model.py @@ -33,7 +33,7 @@ def setup(self): VDEL1_interp.add_input( Aircraft.Wing.FLAP_CHORD_RATIO, - 0.3, + 0.0, training_data=[0.0, 0.1, 0.2, 0.3, 0.4, 0.5], units="unitless", desc="ratio of flap chord to wing chord", @@ -120,7 +120,7 @@ def setup(self): VDEL3_interp.add_input( Aircraft.Wing.TAPER_RATIO, - 0.33, + 0.0, training_data=[0.0, 0.33, 1.0], units="unitless", desc="taper ratio of wing", @@ -161,7 +161,7 @@ def setup(self): VLAM1_interp.add_input( Aircraft.Wing.ASPECT_RATIO, - 10.13, + 0.0, training_data=[ 0.0, 0.2, @@ -285,7 +285,7 @@ def setup(self): VLAM3_interp.add_input( Aircraft.Wing.ASPECT_RATIO, - 10.13, + 0.0, training_data=[ 0.0, 0.2, @@ -440,7 +440,7 @@ def setup(self): VLAM5_interp.add_input( Aircraft.Wing.FLAP_CHORD_RATIO, - 0.3, + 0.0, training_data=[0.0, 0.1, 0.2, 0.3, 0.4, 0.5], units="unitless", desc="ratio of flap chord to wing chord", diff --git a/aviary/subsystems/aerodynamics/gasp_based/gaspaero.py b/aviary/subsystems/aerodynamics/gasp_based/gaspaero.py index cd45e5a5c..781f9bc94 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/gaspaero.py +++ b/aviary/subsystems/aerodynamics/gasp_based/gaspaero.py @@ -157,27 +157,27 @@ def setup(self): add_aviary_input(self, Aircraft.Wing.AREA, val=1370.3) - add_aviary_input(self, Aircraft.Wing.SPAN, val=0.0) + add_aviary_input(self, Aircraft.Wing.SPAN) - add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD, val=0.0) + add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD) - add_aviary_input(self, Aircraft.Wing.TAPER_RATIO, val=0.33) + add_aviary_input(self, Aircraft.Wing.TAPER_RATIO) - add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD_ROOT, val=0.15) + add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD_ROOT) - add_aviary_input(self, Aircraft.Wing.MOUNTING_TYPE, val=0.0) + add_aviary_input(self, Aircraft.Wing.MOUNTING_TYPE) - add_aviary_input(self, Aircraft.HorizontalTail.VERTICAL_TAIL_FRACTION, val=0.0) + add_aviary_input(self, Aircraft.HorizontalTail.VERTICAL_TAIL_FRACTION) - add_aviary_input(self, Aircraft.HorizontalTail.SPAN, val=0.0) + add_aviary_input(self, Aircraft.HorizontalTail.SPAN) - add_aviary_input(self, Aircraft.VerticalTail.SPAN, val=0.0) + add_aviary_input(self, Aircraft.VerticalTail.SPAN) - add_aviary_input(self, Aircraft.HorizontalTail.AREA, val=0.0) + add_aviary_input(self, Aircraft.HorizontalTail.AREA) - add_aviary_input(self, Aircraft.HorizontalTail.AVERAGE_CHORD, val=0.0) + add_aviary_input(self, Aircraft.HorizontalTail.AVERAGE_CHORD) - add_aviary_input(self, Aircraft.Fuselage.AVG_DIAMETER, val=0.0) + add_aviary_input(self, Aircraft.Fuselage.AVG_DIAMETER) self.add_output( "hbar", @@ -258,31 +258,25 @@ def setup(self): nn = self.options["num_nodes"] # mission inputs - self.add_input( - Dynamic.Atmosphere.MACH, - val=0.0, - units="unitless", - shape=nn, - desc="Mach number", - ) + add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) # stability inputs - add_aviary_input(self, Aircraft.Design.STATIC_MARGIN, val=0.03) + add_aviary_input(self, Aircraft.Design.STATIC_MARGIN) - add_aviary_input(self, Aircraft.Design.CG_DELTA, val=0.25) + add_aviary_input(self, Aircraft.Design.CG_DELTA) # geometry inputs - add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO, val=10.13) + add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO) - add_aviary_input(self, Aircraft.Wing.SWEEP, val=25.0) + add_aviary_input(self, Aircraft.Wing.SWEEP) - add_aviary_input(self, Aircraft.HorizontalTail.VERTICAL_TAIL_FRACTION, val=0.0) + add_aviary_input(self, Aircraft.HorizontalTail.VERTICAL_TAIL_FRACTION) - add_aviary_input(self, Aircraft.HorizontalTail.SWEEP, val=25.0) + add_aviary_input(self, Aircraft.HorizontalTail.SWEEP) - add_aviary_input(self, Aircraft.HorizontalTail.MOMENT_RATIO, val=0.0) + add_aviary_input(self, Aircraft.HorizontalTail.MOMENT_RATIO) # geometry from wing-tail ratios self.add_input( @@ -397,102 +391,78 @@ def setup(self): nn = self.options["num_nodes"] num_engine_type = len(self.options[Aircraft.Engine.NUM_ENGINES]) - self.add_input( - Dynamic.Atmosphere.MACH, - val=0.0, - units="unitless", - shape=nn, - desc="Current Mach number", - ) - self.add_input( - Dynamic.Atmosphere.SPEED_OF_SOUND, - val=1.0, - units="ft/s", - shape=nn, - desc="Speed of sound at current altitude", - ) - self.add_input( - Dynamic.Atmosphere.KINEMATIC_VISCOSITY, - val=1.0, - units="ft**2/s", - shape=nn, - desc="Kinematic viscosity at current altitude", - ) + add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) + add_aviary_input(self, Dynamic.Atmosphere.SPEED_OF_SOUND, shape=nn) + add_aviary_input(self, Dynamic.Atmosphere.KINEMATIC_VISCOSITY, shape=nn) self.add_input("ufac", units="unitless", shape=nn, desc="UFAC") # form factors # user could input these directly or use functions to estimate from geometry - add_aviary_input(self, Aircraft.Wing.FORM_FACTOR, val=1.25) + add_aviary_input(self, Aircraft.Wing.FORM_FACTOR) - add_aviary_input(self, Aircraft.Fuselage.FORM_FACTOR, val=1.25) + add_aviary_input(self, Aircraft.Fuselage.FORM_FACTOR) - add_aviary_input( - self, Aircraft.Nacelle.FORM_FACTOR, val=np.full(num_engine_type, 1.5) - ) + add_aviary_input(self, Aircraft.Nacelle.FORM_FACTOR, shape=num_engine_type) - add_aviary_input(self, Aircraft.VerticalTail.FORM_FACTOR, val=1.25) + add_aviary_input(self, Aircraft.VerticalTail.FORM_FACTOR) - add_aviary_input(self, Aircraft.HorizontalTail.FORM_FACTOR, val=1.25) + add_aviary_input(self, Aircraft.HorizontalTail.FORM_FACTOR) - add_aviary_input(self, Aircraft.Wing.FUSELAGE_INTERFERENCE_FACTOR, val=1.1) + add_aviary_input(self, Aircraft.Wing.FUSELAGE_INTERFERENCE_FACTOR) - add_aviary_input(self, Aircraft.Strut.FUSELAGE_INTERFERENCE_FACTOR, val=0.0) + add_aviary_input(self, Aircraft.Strut.FUSELAGE_INTERFERENCE_FACTOR) # miscellaneous top-level inputs - add_aviary_input(self, Aircraft.Design.DRAG_COEFFICIENT_INCREMENT, val=0.00175) + add_aviary_input(self, Aircraft.Design.DRAG_COEFFICIENT_INCREMENT) - add_aviary_input(self, Aircraft.Fuselage.FLAT_PLATE_AREA_INCREMENT, val=0.25) + add_aviary_input(self, Aircraft.Fuselage.FLAT_PLATE_AREA_INCREMENT) - add_aviary_input(self, Aircraft.Wing.MIN_PRESSURE_LOCATION, val=0.3) + add_aviary_input(self, Aircraft.Wing.MIN_PRESSURE_LOCATION) - add_aviary_input(self, Aircraft.Wing.MAX_THICKNESS_LOCATION, val=0.4) + add_aviary_input(self, Aircraft.Wing.MAX_THICKNESS_LOCATION) # geometric user inputs - add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO, val=10.13) + add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO) - add_aviary_input(self, Aircraft.Wing.SWEEP, val=25.0) + add_aviary_input(self, Aircraft.Wing.SWEEP) - add_aviary_input(self, Aircraft.Wing.TAPER_RATIO, val=0.33) + add_aviary_input(self, Aircraft.Wing.TAPER_RATIO) - add_aviary_input(self, Aircraft.Strut.AREA_RATIO, val=0.0) + add_aviary_input(self, Aircraft.Strut.AREA_RATIO) # geometric data from sizing - add_aviary_input(self, Aircraft.Wing.SPAN, val=0.0) + add_aviary_input(self, Aircraft.Wing.SPAN) - add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD, val=0.0) + add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD) - add_aviary_input(self, Aircraft.HorizontalTail.AVERAGE_CHORD, val=0.0) + add_aviary_input(self, Aircraft.HorizontalTail.AVERAGE_CHORD) - add_aviary_input(self, Aircraft.VerticalTail.AVERAGE_CHORD, val=0.0) + add_aviary_input(self, Aircraft.VerticalTail.AVERAGE_CHORD) - add_aviary_input(self, Aircraft.Fuselage.LENGTH, val=0.0) + add_aviary_input(self, Aircraft.Fuselage.LENGTH) - add_aviary_input( - self, Aircraft.Nacelle.AVG_LENGTH, val=np.zeros(num_engine_type) - ) + add_aviary_input(self, Aircraft.Nacelle.AVG_LENGTH, shape=num_engine_type) - add_aviary_input(self, Aircraft.HorizontalTail.AREA, val=0.0) + add_aviary_input(self, Aircraft.HorizontalTail.AREA) - add_aviary_input(self, Aircraft.Fuselage.WETTED_AREA, val=0.0) + add_aviary_input(self, Aircraft.Fuselage.WETTED_AREA) - add_aviary_input( - self, Aircraft.Nacelle.SURFACE_AREA, val=np.zeros(num_engine_type) - ) + add_aviary_input(self, Aircraft.Nacelle.SURFACE_AREA, shape=num_engine_type) add_aviary_input(self, Aircraft.Wing.AREA, val=1370.3) - add_aviary_input(self, Aircraft.Fuselage.AVG_DIAMETER, val=0.0) + add_aviary_input(self, Aircraft.Fuselage.AVG_DIAMETER) - add_aviary_input(self, Aircraft.VerticalTail.AREA, val=0.0) + add_aviary_input(self, Aircraft.VerticalTail.AREA) - add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD_UNWEIGHTED, val=0.0) + add_aviary_input(self, Aircraft.Wing.THICKNESS_TO_CHORD_UNWEIGHTED) - add_aviary_input(self, Aircraft.Strut.CHORD, val=0.0) + add_aviary_input(self, Aircraft.Strut.CHORD) self.add_input('interference_independent_of_shielded_area') self.add_input('drag_loss_due_to_shielded_wing_area') @@ -864,30 +834,24 @@ def setup(self): nn = self.options["num_nodes"] # mission inputs - self.add_input( - Dynamic.Mission.ALTITUDE, - val=0.0, - units="ft", - shape=nn, - desc="Altitude", - ) + add_aviary_input(self, Dynamic.Mission.ALTITUDE, shape=nn) self.add_input( "CL", val=1.0, units="unitless", shape=nn, desc="Lift coefficient" ) # user inputs - add_aviary_input(self, Mission.Design.GROSS_MASS, val=175400.0) + add_aviary_input(self, Mission.Design.GROSS_MASS) self.add_input("flap_defl", val=10.0, units="deg", desc="Full flap deflection") - add_aviary_input(self, Aircraft.Wing.HEIGHT, val=8.0) + add_aviary_input(self, Aircraft.Wing.HEIGHT) self.add_input( "airport_alt", val=0.0, units="ft", desc="HPORT: Airport altitude" ) - add_aviary_input(self, Aircraft.Wing.FLAP_CHORD_RATIO, val=0.3) + add_aviary_input(self, Aircraft.Wing.FLAP_CHORD_RATIO) # from flaps self.add_input( @@ -917,9 +881,9 @@ def setup(self): # from sizing - add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD, val=0.0) + add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD) - add_aviary_input(self, Aircraft.Wing.SPAN, val=0.0) + add_aviary_input(self, Aircraft.Wing.SPAN) add_aviary_input(self, Aircraft.Wing.AREA, val=1370.3) @@ -1029,25 +993,17 @@ def setup(self): nn = self.options["num_nodes"] # mission inputs - self.add_input( - Dynamic.Atmosphere.MACH, - val=0.0, - units="unitless", - shape=nn, - desc="Mach number", - ) + add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) self.add_input( "CL", val=1.0, units="unitless", shape=nn, desc="Lift coefficient" ) # user inputs - add_aviary_input(self, Aircraft.Design.SUPERCRITICAL_DIVERGENCE_SHIFT, val=0.033) - add_aviary_input(self, Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, val=1.0) - add_aviary_input(self, Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, val=1.0) - add_aviary_input( - self, Aircraft.Design.LIFT_DEPENDENT_DRAG_COEFF_FACTOR, val=1.0 - ) - add_aviary_input(self, Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, val=1.0) + add_aviary_input(self, Aircraft.Design.SUPERCRITICAL_DIVERGENCE_SHIFT) + add_aviary_input(self, Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR) + add_aviary_input(self, Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR) + add_aviary_input(self, Aircraft.Design.LIFT_DEPENDENT_DRAG_COEFF_FACTOR) + add_aviary_input(self, Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR) # from aero setup self.add_input( @@ -1130,13 +1086,7 @@ def setup(self): # mission inputs self.add_input("alpha", val=0.0, units="deg", shape=nn, desc="Angle of attack") - self.add_input( - Dynamic.Mission.ALTITUDE, - val=0.0, - units="ft", - shape=nn, - desc="Altitude", - ) + add_aviary_input(self, Dynamic.Mission.ALTITUDE, shape=nn) self.add_input( "lift_curve_slope", units="unitless", shape=nn, desc="Lift-curve slope" ) @@ -1144,13 +1094,13 @@ def setup(self): # user inputs - add_aviary_input(self, Aircraft.Wing.ZERO_LIFT_ANGLE, val=-1.2) + add_aviary_input(self, Aircraft.Wing.ZERO_LIFT_ANGLE) - add_aviary_input(self, Aircraft.Wing.SWEEP, val=25.0) + add_aviary_input(self, Aircraft.Wing.SWEEP) - add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO, val=10.13) + add_aviary_input(self, Aircraft.Wing.ASPECT_RATIO) - add_aviary_input(self, Aircraft.Wing.HEIGHT, val=8.0) + add_aviary_input(self, Aircraft.Wing.HEIGHT) self.add_input( "airport_alt", val=0.0, units="ft", desc="HPORT: Airport altitude" @@ -1158,9 +1108,9 @@ def setup(self): self.add_input("flap_defl", val=10.0, units="deg", desc="Full flap deflection") - add_aviary_input(self, Aircraft.Wing.FLAP_CHORD_RATIO, val=0.3) + add_aviary_input(self, Aircraft.Wing.FLAP_CHORD_RATIO) - add_aviary_input(self, Aircraft.Wing.TAPER_RATIO, val=0.33) + add_aviary_input(self, Aircraft.Wing.TAPER_RATIO) # from flaps self.add_input( @@ -1177,9 +1127,9 @@ def setup(self): # from sizing - add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD, val=0.0) + add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD) - add_aviary_input(self, Aircraft.Wing.SPAN, val=0.0) + add_aviary_input(self, Aircraft.Wing.SPAN) self.add_output( "CL_base", units="unitless", shape=nn, desc="Base lift coefficient" @@ -1309,9 +1259,9 @@ def setup(self): ) self.add_input("lift_ratio", units="unitless", shape=nn, desc="Lift ratio") - add_aviary_input(self, Aircraft.Wing.ZERO_LIFT_ANGLE, val=-1.2) + add_aviary_input(self, Aircraft.Wing.ZERO_LIFT_ANGLE) - add_aviary_input(self, Mission.Design.LIFT_COEFFICIENT_MAX_FLAPS_UP, val=0.0) + add_aviary_input(self, Mission.Design.LIFT_COEFFICIENT_MAX_FLAPS_UP) self.add_output("alpha_stall", shape=nn, desc="Stall angle of attack") self.add_output( diff --git a/aviary/subsystems/aerodynamics/gasp_based/interference.py b/aviary/subsystems/aerodynamics/gasp_based/interference.py index 4169849f5..2db9dfc4f 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/interference.py +++ b/aviary/subsystems/aerodynamics/gasp_based/interference.py @@ -305,7 +305,7 @@ def initialize(self): def setup(self): nn = self.options["num_nodes"] - add_aviary_input(self, Aircraft.Wing.FORM_FACTOR, 1.25) + add_aviary_input(self, Aircraft.Wing.FORM_FACTOR) add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD) add_aviary_input(self, Dynamic.Atmosphere.MACH, shape=nn) add_aviary_input(self, Dynamic.Atmosphere.TEMPERATURE, shape=nn) diff --git a/aviary/subsystems/aerodynamics/gasp_based/table_based.py b/aviary/subsystems/aerodynamics/gasp_based/table_based.py index 5c0d33a5c..4620d0ad8 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/table_based.py +++ b/aviary/subsystems/aerodynamics/gasp_based/table_based.py @@ -343,7 +343,7 @@ def initialize(self): def setup(self): nn = self.options["num_nodes"] - add_aviary_input(self, Mission.Design.GROSS_MASS, val=175400.0) + add_aviary_input(self, Mission.Design.GROSS_MASS) add_aviary_input(self, Aircraft.Wing.AREA, val=1370.3) diff --git a/aviary/variable_info/variable_meta_data.py b/aviary/variable_info/variable_meta_data.py index 5077b211b..6108b5d35 100644 --- a/aviary/variable_info/variable_meta_data.py +++ b/aviary/variable_info/variable_meta_data.py @@ -6251,6 +6251,7 @@ historical_name={"GASP": 'XKV', "FLOPS": None, "LEAPS1": None}, units='ft**2/s', desc="Atmospheric kinematic viscosity at the vehicle's current flight condition", + default_value=0.0, ) add_meta_data( @@ -6276,6 +6277,7 @@ historical_name={"GASP": None, "FLOPS": None, "LEAPS1": None}, units='ft/s', desc="Atmospheric speed of sound at vehicle's current flight condition", + default_value=0.0, ) add_meta_data( From b1713fdbe31f51e1ae36931004a82b795eee6d6d Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Fri, 24 Jan 2025 18:28:41 -0800 Subject: [PATCH 07/10] work in progress --- .../aerodynamics/gasp_based/flaps_model/Cl_max.py | 10 +++++----- .../gasp_based/flaps_model/L_and_D_increments.py | 4 ++-- .../gasp_based/flaps_model/basic_calculations.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py index 875455fae..1f1d03686 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py +++ b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py @@ -20,10 +20,10 @@ def setup(self): units='unitless', desc="VLAM8: sensitivity of flap clean wing maximum lift coefficient to wing sweep angle", ) - add_aviary_input(self, Dynamic.Atmosphere.SPEED_OF_SOUND, val=1118.21948771) + add_aviary_input(self, Dynamic.Atmosphere.SPEED_OF_SOUND) # from component 3 outputs - add_aviary_input(self, Aircraft.Wing.FLAP_LIFT_INCREMENT_OPTIMUM, val=1.5) + add_aviary_input(self, Aircraft.Wing.FLAP_LIFT_INCREMENT_OPTIMUM) self.add_input( "VLAM1", val=0.97217, @@ -81,14 +81,14 @@ def setup(self): # other inputs - add_aviary_input(self, Aircraft.Wing.LOADING, val=128) + add_aviary_input(self, Aircraft.Wing.LOADING) add_aviary_input(self, Dynamic.Atmosphere.STATIC_PRESSURE) add_aviary_input(self, Aircraft.Wing.AVERAGE_CHORD) - add_aviary_input(self, Aircraft.Wing.MAX_LIFT_REF, val=1.15) - add_aviary_input(self, Aircraft.Wing.SLAT_LIFT_INCREMENT_OPTIMUM, val=0.93) + add_aviary_input(self, Aircraft.Wing.MAX_LIFT_REF) + add_aviary_input(self, Aircraft.Wing.SLAT_LIFT_INCREMENT_OPTIMUM) self.add_input( "VLAM9", val=0.9975, diff --git a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/L_and_D_increments.py b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/L_and_D_increments.py index cdeead0e1..ee60576eb 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/L_and_D_increments.py +++ b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/L_and_D_increments.py @@ -31,7 +31,7 @@ def setup(self): units='unitless', desc="VDEL4: sensitivity of minimum drag coefficient to fuselage width to span ratio", ) - add_aviary_input(self, Aircraft.Wing.FLAP_DRAG_INCREMENT_OPTIMUM, val=0.1) + add_aviary_input(self, Aircraft.Wing.FLAP_DRAG_INCREMENT_OPTIMUM) self.add_input( "VDEL1", val=1.0, @@ -50,7 +50,7 @@ def setup(self): units='unitless', desc="VDEL3: sensitivity of flap minimum drag coefficient to partial flap span", ) - add_aviary_input(self, Aircraft.Wing.FLAP_LIFT_INCREMENT_OPTIMUM, val=1.5) + add_aviary_input(self, Aircraft.Wing.FLAP_LIFT_INCREMENT_OPTIMUM) self.add_input( "VLAM3", val=0.97217, diff --git a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/basic_calculations.py b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/basic_calculations.py index 6fbe95aca..cbad3aa30 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/basic_calculations.py +++ b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/basic_calculations.py @@ -79,7 +79,7 @@ def setup(self): units='unitless', desc="RDELF: ratio of trailing edge flap deflection to optimum deflection angle", ) - add_aviary_output(self, Aircraft.Wing.SLAT_SPAN_RATIO, 0.89759603) + add_aviary_output(self, Aircraft.Wing.SLAT_SPAN_RATIO) self.add_output( "chord_to_body_ratio", val=0.12679, From 7d0c45f44e5607bbc45fc74904f1f06d20979304 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Fri, 24 Jan 2025 20:43:40 -0800 Subject: [PATCH 08/10] finished setting default. --- aviary/subsystems/aerodynamics/gasp_based/common.py | 4 ++-- aviary/subsystems/aerodynamics/gasp_based/gaspaero.py | 6 +++--- aviary/subsystems/aerodynamics/gasp_based/table_based.py | 2 +- .../aerodynamics/gasp_based/test/test_gaspaero.py | 3 +++ 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/aviary/subsystems/aerodynamics/gasp_based/common.py b/aviary/subsystems/aerodynamics/gasp_based/common.py index 47fcf40d8..c9df739c2 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/common.py +++ b/aviary/subsystems/aerodynamics/gasp_based/common.py @@ -24,7 +24,7 @@ def setup(self): desc="Dynamic pressure", ) - add_aviary_input(self, Aircraft.Wing.AREA, val=1370.3) + add_aviary_input(self, Aircraft.Wing.AREA) add_aviary_output(self, Dynamic.Vehicle.LIFT, units="lbf", shape=nn) add_aviary_output(self, Dynamic.Vehicle.DRAG, units="lbf", shape=nn) @@ -75,7 +75,7 @@ def setup(self): self.add_input("lift_req", 1, units="lbf", shape=nn, desc="Lift force") add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, units="psf", shape=nn) - add_aviary_input(self, Aircraft.Wing.AREA, val=1370.3) + add_aviary_input(self, Aircraft.Wing.AREA) self.add_output("CL", shape=nn, units='unitless', desc="Lift coefficient") diff --git a/aviary/subsystems/aerodynamics/gasp_based/gaspaero.py b/aviary/subsystems/aerodynamics/gasp_based/gaspaero.py index 781f9bc94..5777990fe 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/gaspaero.py +++ b/aviary/subsystems/aerodynamics/gasp_based/gaspaero.py @@ -155,7 +155,7 @@ class WingTailRatios(om.ExplicitComponent): def setup(self): - add_aviary_input(self, Aircraft.Wing.AREA, val=1370.3) + add_aviary_input(self, Aircraft.Wing.AREA) add_aviary_input(self, Aircraft.Wing.SPAN) @@ -454,7 +454,7 @@ def setup(self): add_aviary_input(self, Aircraft.Nacelle.SURFACE_AREA, shape=num_engine_type) - add_aviary_input(self, Aircraft.Wing.AREA, val=1370.3) + add_aviary_input(self, Aircraft.Wing.AREA) add_aviary_input(self, Aircraft.Fuselage.AVG_DIAMETER) @@ -885,7 +885,7 @@ def setup(self): add_aviary_input(self, Aircraft.Wing.SPAN) - add_aviary_input(self, Aircraft.Wing.AREA, val=1370.3) + add_aviary_input(self, Aircraft.Wing.AREA) # from aero setup self.add_input( diff --git a/aviary/subsystems/aerodynamics/gasp_based/table_based.py b/aviary/subsystems/aerodynamics/gasp_based/table_based.py index 4620d0ad8..41b4a0e48 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/table_based.py +++ b/aviary/subsystems/aerodynamics/gasp_based/table_based.py @@ -345,7 +345,7 @@ def setup(self): add_aviary_input(self, Mission.Design.GROSS_MASS) - add_aviary_input(self, Aircraft.Wing.AREA, val=1370.3) + add_aviary_input(self, Aircraft.Wing.AREA) # note flap_defl should be a constant (scalar) but interpolation breaks with # mixed scalar/vector inputs so you can just ``prob.set_val("flap_defl", 10)`` diff --git a/aviary/subsystems/aerodynamics/gasp_based/test/test_gaspaero.py b/aviary/subsystems/aerodynamics/gasp_based/test/test_gaspaero.py index ed962e8ed..1db857e06 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/test/test_gaspaero.py +++ b/aviary/subsystems/aerodynamics/gasp_based/test/test_gaspaero.py @@ -33,6 +33,7 @@ def test_cruise(self): CruiseAero(num_nodes=2, input_atmos=True), promotes=["*"], ) + prob.model.set_input_defaults(Aircraft.Wing.AREA, val=1370.3) prob.setup(check=False, force_alloc_complex=True) _init_geom(prob) @@ -74,6 +75,7 @@ def test_ground(self): ), promotes=["*"], ) + prob.model.set_input_defaults(Aircraft.Wing.AREA, val=1370.3) prob.setup(check=False, force_alloc_complex=True) _init_geom(prob) @@ -140,6 +142,7 @@ def test_ground_alpha_out(self): promotes_inputs=["*", "lift_req"], ) + prob.model.set_input_defaults(Aircraft.Wing.AREA, val=1370.3) prob.setup(check=False, force_alloc_complex=True) _init_geom(prob) From 2fe9584e049de9a932096f6b86a16fd53cae595e Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Fri, 24 Jan 2025 21:26:14 -0800 Subject: [PATCH 09/10] autopep8 --- aviary/subsystems/aerodynamics/flops_based/drag.py | 3 ++- aviary/subsystems/aerodynamics/flops_based/lift.py | 6 ++++-- .../aerodynamics/flops_based/tabular_aero_group.py | 3 ++- .../flops_based/test/test_tabular_aero_group.py | 6 +++--- aviary/subsystems/aerodynamics/gasp_based/common.py | 3 ++- .../aerodynamics/gasp_based/flaps_model/Cl_max.py | 6 ++++-- .../aerodynamics/gasp_based/test/test_table_based.py | 1 - 7 files changed, 17 insertions(+), 11 deletions(-) diff --git a/aviary/subsystems/aerodynamics/flops_based/drag.py b/aviary/subsystems/aerodynamics/flops_based/drag.py index 7e7124412..6b45a75d7 100644 --- a/aviary/subsystems/aerodynamics/flops_based/drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/drag.py @@ -98,7 +98,8 @@ def setup(self): add_aviary_input(self, Aircraft.Wing.AREA, val=1., units='m**2') - add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=(nn), units='N/m**2') + add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=(nn), + units='N/m**2') self.add_input( 'CD', val=np.ones(nn), units='unitless', diff --git a/aviary/subsystems/aerodynamics/flops_based/lift.py b/aviary/subsystems/aerodynamics/flops_based/lift.py index d2e60f1fd..0418371f1 100644 --- a/aviary/subsystems/aerodynamics/flops_based/lift.py +++ b/aviary/subsystems/aerodynamics/flops_based/lift.py @@ -21,7 +21,8 @@ def setup(self): add_aviary_input(self, Aircraft.Wing.AREA, val=1., units='m**2') - add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=nn, units='N/m**2') + add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=nn, + units='N/m**2') self.add_input( name='cl', val=np.ones(nn), desc='current coefficient of lift', @@ -76,7 +77,8 @@ def setup(self): add_aviary_input(self, Dynamic.Vehicle.MASS, shape=(nn), units='kg') - add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=nn, units='N/m**2') + add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=nn, + units='N/m**2') self.add_output( name='cl', val=np.ones(nn), desc='current coefficient of lift', diff --git a/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py b/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py index 88b2c0ae1..cd246d0a6 100644 --- a/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py +++ b/aviary/subsystems/aerodynamics/flops_based/tabular_aero_group.py @@ -187,7 +187,8 @@ def setup(self): add_aviary_input(self, Dynamic.Mission.VELOCITY, shape=(nn), units='m/s') add_aviary_input(self, Dynamic.Atmosphere.DENSITY, shape=(nn), units='kg/m**3') - add_aviary_output(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=nn, units='N/m**2') + add_aviary_output(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, shape=nn, + units='N/m**2') def setup_partials(self): nn = self.options['num_nodes'] diff --git a/aviary/subsystems/aerodynamics/flops_based/test/test_tabular_aero_group.py b/aviary/subsystems/aerodynamics/flops_based/test/test_tabular_aero_group.py index fcc39d625..4145d3945 100644 --- a/aviary/subsystems/aerodynamics/flops_based/test/test_tabular_aero_group.py +++ b/aviary/subsystems/aerodynamics/flops_based/test/test_tabular_aero_group.py @@ -53,7 +53,7 @@ def setUp(self): setup_model_options(self.prob, aviary_options) - self.prob.model.set_input_defaults(Dynamic.Atmosphere.MACH, val=0.3876, units='unitless') + self.prob.model.set_input_defaults(Dynamic.Atmosphere.MACH, val=0.3876) self.prob.setup(check=False, force_alloc_complex=True) @@ -170,7 +170,7 @@ def setUp(self): setup_model_options(self.prob, aviary_options) - self.prob.model.set_input_defaults(Dynamic.Atmosphere.MACH, val=0.3876, units='unitless') + self.prob.model.set_input_defaults(Dynamic.Atmosphere.MACH, val=0.3876) self.prob.setup(check=False, force_alloc_complex=True) @@ -294,7 +294,7 @@ def test_case(self, case_name): setup_model_options(prob, flops_inputs) - prob.model.set_input_defaults(Dynamic.Atmosphere.MACH, val=0.3876, units='unitless') + prob.model.set_input_defaults(Dynamic.Atmosphere.MACH, val=0.3876) prob.setup(check=False, force_alloc_complex=True) diff --git a/aviary/subsystems/aerodynamics/gasp_based/common.py b/aviary/subsystems/aerodynamics/gasp_based/common.py index c9df739c2..082edc61a 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/common.py +++ b/aviary/subsystems/aerodynamics/gasp_based/common.py @@ -73,7 +73,8 @@ def initialize(self): def setup(self): nn = self.options["num_nodes"] self.add_input("lift_req", 1, units="lbf", shape=nn, desc="Lift force") - add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, units="psf", shape=nn) + add_aviary_input(self, Dynamic.Atmosphere.DYNAMIC_PRESSURE, units="psf", + shape=nn) add_aviary_input(self, Aircraft.Wing.AREA) diff --git a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py index 1f1d03686..c9e8c3c7c 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py +++ b/aviary/subsystems/aerodynamics/gasp_based/flaps_model/Cl_max.py @@ -119,8 +119,10 @@ def setup(self): units='unitless', desc="DELCLF: fuselage lift increment", ) - add_aviary_input(self, Dynamic.Atmosphere.KINEMATIC_VISCOSITY, desc="XKV: kinematic viscosity") - add_aviary_input(self, Dynamic.Atmosphere.TEMPERATURE, desc="T0: static temperature of air cross wing") + add_aviary_input(self, Dynamic.Atmosphere.KINEMATIC_VISCOSITY, + desc="XKV: kinematic viscosity") + add_aviary_input(self, Dynamic.Atmosphere.TEMPERATURE, + desc="T0: static temperature of air cross wing") # outputs diff --git a/aviary/subsystems/aerodynamics/gasp_based/test/test_table_based.py b/aviary/subsystems/aerodynamics/gasp_based/test/test_table_based.py index 5236d5758..2f2a10e56 100644 --- a/aviary/subsystems/aerodynamics/gasp_based/test/test_table_based.py +++ b/aviary/subsystems/aerodynamics/gasp_based/test/test_table_based.py @@ -195,7 +195,6 @@ def test_case(self): promotes_inputs=['*'], promotes_outputs=['*'], ) - #prob.model.set_input_defaults(Aircraft.Wing.AREA, val=1370.3) prob.setup(check=False, force_alloc_complex=True) prob.set_val(Mission.Design.GROSS_MASS, 175000, 'lbm') prob.set_val(Aircraft.Wing.AREA, 1000, 'ft**2') From c1e9766bbb89ca9819388e47fd8aa224c79a0cf4 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Fri, 24 Jan 2025 21:30:27 -0800 Subject: [PATCH 10/10] autopep8 on variable_meta_data.py --- aviary/variable_info/variable_meta_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aviary/variable_info/variable_meta_data.py b/aviary/variable_info/variable_meta_data.py index 6108b5d35..8d3b2a9ee 100644 --- a/aviary/variable_info/variable_meta_data.py +++ b/aviary/variable_info/variable_meta_data.py @@ -7741,4 +7741,4 @@ # the original _MetaData in the core of Aviary could get altered in # undesirable ways. By importing this copy to the API the user modifies a # new MetaData designed just for their purposes. -CoreMetaData = deepcopy(_MetaData) \ No newline at end of file +CoreMetaData = deepcopy(_MetaData)