From c3f793885e2f257dc0a6e0328a1bf01d4b0b0d0a Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Tue, 9 Jun 2026 14:20:35 -0400 Subject: [PATCH 01/18] added a comment --- 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 123ecf3605..cf20d7a39c 100644 --- a/aviary/variable_info/variable_meta_data.py +++ b/aviary/variable_info/variable_meta_data.py @@ -1414,7 +1414,7 @@ desc='A flag used by Jeff V. Bowles to debug GASP code during his 53 years supporting the ' 'development of GASP. This flag is planted here to thank him for his hard work and dedication, ' "Aviary wouldn't be what it is today without his help.", -) +) # Jeff started working as a summer intern in 1970. add_meta_data( Aircraft.Design.INTERFERENCE_DRAG_FACTOR, From d192f000816039c44563fb2aab05f5e5e3b104ae Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Tue, 9 Jun 2026 14:22:14 -0400 Subject: [PATCH 02/18] replaced excrescences_drag by Aircraft.Design.EXCRESCENCE_DRAG_FACTOR. Moved a TODO comment to issue 1184. --- .../aerodynamics/flops_based/skin_friction_drag.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py b/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py index d3eacdb0f9..3391f5e4ab 100644 --- a/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py @@ -39,9 +39,9 @@ def initialize(self): add_aviary_option(self, Aircraft.VerticalTail.NUM_TAILS) add_aviary_option(self, Aircraft.Wing.AIRFOIL_TECHNOLOGY) - # TODO: Bring this into the variable hierarchy. - self.options.declare( - 'excrescences_drag', + add_aviary_option( + self, + Aircraft.Design.EXCRESCENCE_DRAG_FACTOR, default=0.06, desc='Drag contribution of excrescences as a percentage.', ) @@ -177,14 +177,14 @@ def compute(self, inputs, outputs): # Add drag for excrescences. - # TODO - Per component not completely implemented in aviary 1.0 + # See issue #1184 - Per component not completely implemented in aviary 1.0 # Var mission_skin_friction_drag_corrections_count is a vector over components and is added # to the drag. # This may be "dead weight" from FLOPS - D.J. # An additional six percent of the skin friction drag is added to for excrescences # (miscellaneous). - CDF *= 1.0 + self.options['excrescences_drag'] + CDF *= 1.0 + self.options[Aircraft.Design.EXCRESCENCE_DRAG_FACTOR] outputs['skin_friction_drag_coeff'] = CDF @@ -257,7 +257,7 @@ def compute_partials(self, inputs, partials): den = 1.0 / mission_wing_area CDF = np.einsum('j,ij,j->i', wetted_area, cf, form_factor) * den - excr = 1.0 + self.options['excrescences_drag'] + excr = 1.0 + self.options[Aircraft.Design.EXCRESCENCE_DRAG_FACTOR] CDF *= excr DCDF_dwet = excr * np.einsum('ij,j->ij', cf, form_factor) * den DCDF_dcf = excr * wetted_area * form_factor * den From 2ce4519005b31b0719d10e255116ab7ff0a02a1e Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Tue, 9 Jun 2026 14:39:54 -0400 Subject: [PATCH 03/18] minor fix --- .../subsystems/aerodynamics/flops_based/skin_friction_drag.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py b/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py index 3391f5e4ab..0f5ca1e20b 100644 --- a/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py @@ -42,7 +42,7 @@ def initialize(self): add_aviary_option( self, Aircraft.Design.EXCRESCENCE_DRAG_FACTOR, - default=0.06, + val=0.06, desc='Drag contribution of excrescences as a percentage.', ) From 777dcb3ea0aa34d15f77df4e230cb600f3ec787c Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Wed, 10 Jun 2026 20:02:53 -0400 Subject: [PATCH 04/18] convert Aircraft.Design.PERCENT_EXCRESCENCE_DRAG from option to variable. --- .../flops_based/skin_friction_drag.py | 32 ++++++++++++------- .../test/test_computed_aero_group.py | 10 +++--- .../test/test_skinfriction_drag.py | 6 ++-- .../large_single_aisle_1_FLOPS_data.py | 1 + 4 files changed, 31 insertions(+), 18 deletions(-) diff --git a/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py b/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py index 0f5ca1e20b..f09d7efe43 100644 --- a/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py @@ -39,13 +39,6 @@ def initialize(self): add_aviary_option(self, Aircraft.VerticalTail.NUM_TAILS) add_aviary_option(self, Aircraft.Wing.AIRFOIL_TECHNOLOGY) - add_aviary_option( - self, - Aircraft.Design.EXCRESCENCE_DRAG_FACTOR, - val=0.06, - desc='Drag contribution of excrescences as a percentage.', - ) - def setup(self): nn = self.options['num_nodes'] @@ -85,6 +78,11 @@ def setup(self): units=get_units(Aircraft.Wing.LAMINAR_FLOW_LOWER), desc='Vector of component lower-surface laminar-flow fractions.', ) + add_aviary_input( + self, + Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, + desc='Drag contribution of excrescences as a percentage.', + ) # Aircraft design inputs add_aviary_input(self, Aircraft.Wing.AREA, units='ft**2') @@ -102,7 +100,10 @@ def setup_partials(self): nc = self.nc n = nn * nc - self.declare_partials(of='skin_friction_drag_coeff', wrt=[Aircraft.Wing.AREA]) + self.declare_partials( + of='skin_friction_drag_coeff', + wrt=[Aircraft.Wing.AREA, Aircraft.Design.PERCENT_EXCRESCENCE_DRAG], + ) rows = np.repeat(np.arange(nn), nc) cols = np.tile(np.arange(nc), nn) @@ -184,7 +185,10 @@ def compute(self, inputs, outputs): # An additional six percent of the skin friction drag is added to for excrescences # (miscellaneous). - CDF *= 1.0 + self.options[Aircraft.Design.EXCRESCENCE_DRAG_FACTOR] + CDF *= 1.0 + inputs[Aircraft.Design.PERCENT_EXCRESCENCE_DRAG] + import pdb + + pdb.set_trace() outputs['skin_friction_drag_coeff'] = CDF @@ -255,10 +259,10 @@ def compute_partials(self, inputs, partials): dform_dfine[idx_surf] = dFF1 * (2.0 - airfoil) + dFF2 * (airfoil - 1.0) den = 1.0 / mission_wing_area - CDF = np.einsum('j,ij,j->i', wetted_area, cf, form_factor) * den + CDF = CDF0 = np.einsum('j,ij,j->i', wetted_area, cf, form_factor) * den - excr = 1.0 + self.options[Aircraft.Design.EXCRESCENCE_DRAG_FACTOR] - CDF *= excr + excr = 1.0 + inputs[Aircraft.Design.PERCENT_EXCRESCENCE_DRAG] + CDF = CDF * excr DCDF_dwet = excr * np.einsum('ij,j->ij', cf, form_factor) * den DCDF_dcf = excr * wetted_area * form_factor * den DCDF_dform = excr * np.einsum('j,ij->ij', wetted_area, cf) * den @@ -288,6 +292,10 @@ def compute_partials(self, inputs, partials): partials['skin_friction_drag_coeff', Aircraft.Wing.AREA] = DCDF_dmwa.ravel() + partials['skin_friction_drag_coeff', Aircraft.Design.PERCENT_EXCRESCENCE_DRAG] = ( + CDF0.ravel() + ) + def _calc_laminar_flow(lam): return lam * (0.0064164 + lam * (0.48087e-4 - 0.12234e-6 * lam)) diff --git a/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py b/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py index e53a253e50..36c5c677e3 100644 --- a/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py +++ b/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py @@ -15,7 +15,7 @@ from aviary.variable_info.variables import Aircraft, Dynamic, Settings -@use_tempdirs +# @use_tempdirs class MissionDragTest(unittest.TestCase): def test_basic_large_single_aisle_1(self): flops_inputs = get_flops_inputs('LargeSingleAisle1FLOPS') @@ -191,6 +191,7 @@ def test_n3cc_drag(self): flops_inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 1.0) flops_inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) flops_inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) + flops_inputs.set_val(Aircraft.Design.EXCRESCENCE_DRAG_FACTOR, 0.06) key = Aircraft.Propulsion.TOTAL_SCALED_SLS_THRUST flops_inputs.set_val(key, *(flops_outputs.get_item(key))) @@ -347,6 +348,7 @@ def test_large_single_aisle_2_drag(self): flops_inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 1.0) flops_inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) flops_inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) + flops_inputs.set_val(Aircraft.Design.EXCRESCENCE_DRAG_FACTOR, 0.06) key = Aircraft.Propulsion.TOTAL_SCALED_SLS_THRUST flops_inputs.set_val(key, *(flops_outputs.get_item(key))) @@ -502,6 +504,6 @@ def test_large_single_aisle_2_drag(self): if __name__ == '__main__': - unittest.main() - # test = MissionDragTest() - # test.test_large_single_aisle_2_drag() + # unittest.main() + test = MissionDragTest() + test.test_basic_large_single_aisle_1() diff --git a/aviary/subsystems/aerodynamics/flops_based/test/test_skinfriction_drag.py b/aviary/subsystems/aerodynamics/flops_based/test/test_skinfriction_drag.py index 2edca7a13d..a79f2beb6c 100644 --- a/aviary/subsystems/aerodynamics/flops_based/test/test_skinfriction_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/test/test_skinfriction_drag.py @@ -42,7 +42,7 @@ def test_derivs(self): model.add_subsystem( 'CDf', SkinFrictionDrag(num_nodes=nn, **options), - promotes_inputs=[Aircraft.Wing.AREA], + promotes_inputs=[Aircraft.Wing.AREA, Aircraft.Design.PERCENT_EXCRESCENCE_DRAG], promotes_outputs=['skin_friction_drag_coeff'], ) @@ -55,6 +55,7 @@ def test_derivs(self): prob.set_val('CDf.laminar_fractions_upper', lam_up) prob.set_val('CDf.laminar_fractions_lower', lam_low) prob.set_val(Aircraft.Wing.AREA, 198.0) + prob.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) prob.run_model() @@ -125,7 +126,7 @@ def test_derivs_multiengine(self): model.add_subsystem( 'CDf', SkinFrictionDrag(num_nodes=nn, **options), - promotes_inputs=[Aircraft.Wing.AREA], + promotes_inputs=[Aircraft.Wing.AREA, Aircraft.Design.PERCENT_EXCRESCENCE_DRAG], promotes_outputs=['skin_friction_drag_coeff'], ) @@ -138,6 +139,7 @@ def test_derivs_multiengine(self): prob.set_val('CDf.laminar_fractions_upper', lam_up) prob.set_val('CDf.laminar_fractions_lower', lam_low) prob.set_val(Aircraft.Wing.AREA, 198.0) + prob.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) prob.run_model() diff --git a/aviary/validation_cases/validation_data/test_data/large_single_aisle_1_FLOPS_data.py b/aviary/validation_cases/validation_data/test_data/large_single_aisle_1_FLOPS_data.py index cbe38703a0..716f2ac2b0 100644 --- a/aviary/validation_cases/validation_data/test_data/large_single_aisle_1_FLOPS_data.py +++ b/aviary/validation_cases/validation_data/test_data/large_single_aisle_1_FLOPS_data.py @@ -20,6 +20,7 @@ inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 0.930890028006548) +inputs.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) # Air Conditioning # --------------------------- From 9edf6f8531877406cf4eefe7e2912558463e9f49 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Wed, 10 Jun 2026 20:07:30 -0400 Subject: [PATCH 05/18] minor update --- .../subsystems/aerodynamics/flops_based/skin_friction_drag.py | 3 --- .../aerodynamics/flops_based/test/test_computed_aero_group.py | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py b/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py index f09d7efe43..78b80919fe 100644 --- a/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py @@ -186,9 +186,6 @@ def compute(self, inputs, outputs): # An additional six percent of the skin friction drag is added to for excrescences # (miscellaneous). CDF *= 1.0 + inputs[Aircraft.Design.PERCENT_EXCRESCENCE_DRAG] - import pdb - - pdb.set_trace() outputs['skin_friction_drag_coeff'] = CDF diff --git a/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py b/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py index 36c5c677e3..f979aada58 100644 --- a/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py +++ b/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py @@ -15,7 +15,7 @@ from aviary.variable_info.variables import Aircraft, Dynamic, Settings -# @use_tempdirs +@use_tempdirs class MissionDragTest(unittest.TestCase): def test_basic_large_single_aisle_1(self): flops_inputs = get_flops_inputs('LargeSingleAisle1FLOPS') From 083ddcabcdc1533537045a775fd199e4b06ebb51 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Wed, 10 Jun 2026 20:42:39 -0400 Subject: [PATCH 06/18] promote Aircraft.Design.PERCENT_EXCRESCENCE_DRAG in ComputedAeroGroup --- .../subsystems/aerodynamics/flops_based/computed_aero_group.py | 1 + 1 file changed, 1 insertion(+) diff --git a/aviary/subsystems/aerodynamics/flops_based/computed_aero_group.py b/aviary/subsystems/aerodynamics/flops_based/computed_aero_group.py index 11bd311453..594902954b 100644 --- a/aviary/subsystems/aerodynamics/flops_based/computed_aero_group.py +++ b/aviary/subsystems/aerodynamics/flops_based/computed_aero_group.py @@ -144,6 +144,7 @@ def setup(self): 'laminar_fractions_upper', 'laminar_fractions_lower', Aircraft.Wing.AREA, + Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, ], ) From 58753b89a117f0dea7df3611ad2e1ae8d1b877fc Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Wed, 10 Jun 2026 20:59:37 -0400 Subject: [PATCH 07/18] added Aircraft.Design.PERCENT_EXCRESCENCE_DRAG to test datasets --- .../validation_data/test_data/bwb300_baseline_FLOPS_data.py | 1 + .../validation_data/test_data/bwb_simple_FLOPS_data.py | 1 + .../validation_data/test_data/large_single_aisle_2_FLOPS_data.py | 1 + .../test_data/large_single_aisle_2_altwt_FLOPS_data.py | 1 + .../test_data/large_single_aisle_2_detailwing_FLOPS_data.py | 1 + .../validation_data/test_data/multi_engine_single_aisle_data.py | 1 + 6 files changed, 6 insertions(+) diff --git a/aviary/validation_cases/validation_data/test_data/bwb300_baseline_FLOPS_data.py b/aviary/validation_cases/validation_data/test_data/bwb300_baseline_FLOPS_data.py index 5c9d30cb35..744cfa967c 100644 --- a/aviary/validation_cases/validation_data/test_data/bwb300_baseline_FLOPS_data.py +++ b/aviary/validation_cases/validation_data/test_data/bwb300_baseline_FLOPS_data.py @@ -21,6 +21,7 @@ inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) # FCDSUB inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) # FCDSUP inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 1.0) # FCDO +inputs.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) inputs.set_val(Aircraft.Design.TYPE, AircraftTypes.BLENDED_WING_BODY) inputs.set_val(Aircraft.Fuselage.SIMPLE_LAYOUT, False) inputs.set_val(Aircraft.BWB.DETAILED_WING_PROVIDED, True) diff --git a/aviary/validation_cases/validation_data/test_data/bwb_simple_FLOPS_data.py b/aviary/validation_cases/validation_data/test_data/bwb_simple_FLOPS_data.py index 7f58c12915..47a7904cb8 100644 --- a/aviary/validation_cases/validation_data/test_data/bwb_simple_FLOPS_data.py +++ b/aviary/validation_cases/validation_data/test_data/bwb_simple_FLOPS_data.py @@ -19,6 +19,7 @@ inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) # FCDSUB inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) # FCDSUP inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 1.0) # FCDO +inputs.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) inputs.set_val(Aircraft.Design.TYPE, AircraftTypes.BLENDED_WING_BODY) inputs.set_val(Aircraft.Fuselage.SIMPLE_LAYOUT, True) inputs.set_val(Aircraft.BWB.DETAILED_WING_PROVIDED, False) diff --git a/aviary/validation_cases/validation_data/test_data/large_single_aisle_2_FLOPS_data.py b/aviary/validation_cases/validation_data/test_data/large_single_aisle_2_FLOPS_data.py index 6cb6000868..da9ecdeffc 100644 --- a/aviary/validation_cases/validation_data/test_data/large_single_aisle_2_FLOPS_data.py +++ b/aviary/validation_cases/validation_data/test_data/large_single_aisle_2_FLOPS_data.py @@ -25,6 +25,7 @@ inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 0.945) +inputs.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) # Air Conditioning # --------------------------- diff --git a/aviary/validation_cases/validation_data/test_data/large_single_aisle_2_altwt_FLOPS_data.py b/aviary/validation_cases/validation_data/test_data/large_single_aisle_2_altwt_FLOPS_data.py index bfbe4a56ff..62d77d6d24 100644 --- a/aviary/validation_cases/validation_data/test_data/large_single_aisle_2_altwt_FLOPS_data.py +++ b/aviary/validation_cases/validation_data/test_data/large_single_aisle_2_altwt_FLOPS_data.py @@ -24,6 +24,7 @@ inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 0.945) +inputs.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) # Air Conditioning # --------------------------- diff --git a/aviary/validation_cases/validation_data/test_data/large_single_aisle_2_detailwing_FLOPS_data.py b/aviary/validation_cases/validation_data/test_data/large_single_aisle_2_detailwing_FLOPS_data.py index 2718a9a12a..c9abb29c6a 100644 --- a/aviary/validation_cases/validation_data/test_data/large_single_aisle_2_detailwing_FLOPS_data.py +++ b/aviary/validation_cases/validation_data/test_data/large_single_aisle_2_detailwing_FLOPS_data.py @@ -20,6 +20,7 @@ inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 0.945) +inputs.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) # Air Conditioning # --------------------------- diff --git a/aviary/validation_cases/validation_data/test_data/multi_engine_single_aisle_data.py b/aviary/validation_cases/validation_data/test_data/multi_engine_single_aisle_data.py index 148911fdc3..e5560627b3 100644 --- a/aviary/validation_cases/validation_data/test_data/multi_engine_single_aisle_data.py +++ b/aviary/validation_cases/validation_data/test_data/multi_engine_single_aisle_data.py @@ -20,6 +20,7 @@ inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 0.945) +inputs.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) # Air Conditioning # --------------------------- From 5aed495628275e03430635164c8b2a7fabba6e2c Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Thu, 11 Jun 2026 11:16:01 -0400 Subject: [PATCH 08/18] added aircraft:design:percent_excrescence_drag to csv files --- .../advanced_single_aisle/advanced_single_aisle_FLOPS.csv | 1 + .../aircraft/large_single_aisle_1/large_single_aisle_1_FLOPS.csv | 1 + .../aircraft/large_single_aisle_2/large_single_aisle_2_FLOPS.csv | 1 + .../large_single_aisle_2/large_single_aisle_2_altwt_FLOPS.csv | 1 + .../large_single_aisle_2_detailwing_FLOPS.csv | 1 + .../validation_data/test_models/aircraft_for_bench_FwFm.csv | 1 + .../test_models/aircraft_for_bench_FwFm_with_electric.csv | 1 + 7 files changed, 7 insertions(+) diff --git a/aviary/models/aircraft/advanced_single_aisle/advanced_single_aisle_FLOPS.csv b/aviary/models/aircraft/advanced_single_aisle/advanced_single_aisle_FLOPS.csv index 4b21937a10..dafc30142e 100644 --- a/aviary/models/aircraft/advanced_single_aisle/advanced_single_aisle_FLOPS.csv +++ b/aviary/models/aircraft/advanced_single_aisle/advanced_single_aisle_FLOPS.csv @@ -29,6 +29,7 @@ aircraft:design:base_area,0,ft**2 aircraft:design:empty_mass_margin_scaler,0.01498,unitless aircraft:design:landing_to_takeoff_mass_ratio,0.84,unitless aircraft:design:lift_dependent_drag_coeff_factor,0.93,unitless +aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:subsonic_drag_coeff_factor,0.95,unitless aircraft:design:supersonic_drag_coeff_factor,1,unitless aircraft:design:touchdown_mass_max,108976.4,lbm diff --git a/aviary/models/aircraft/large_single_aisle_1/large_single_aisle_1_FLOPS.csv b/aviary/models/aircraft/large_single_aisle_1/large_single_aisle_1_FLOPS.csv index 45957b320d..c8b75c549d 100644 --- a/aviary/models/aircraft/large_single_aisle_1/large_single_aisle_1_FLOPS.csv +++ b/aviary/models/aircraft/large_single_aisle_1/large_single_aisle_1_FLOPS.csv @@ -30,6 +30,7 @@ aircraft:design:cruise_mach,0.785,unitless aircraft:design:empty_mass_margin_scaler,0.0,unitless aircraft:design:gross_mass,181200.0,lbm aircraft:design:lift_dependent_drag_coeff_factor,0.909839381134961,unitless +aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:range,3500.0,NM aircraft:design:subsonic_drag_coeff_factor,1.0,unitless aircraft:design:supersonic_drag_coeff_factor,1.0,unitless diff --git a/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_FLOPS.csv b/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_FLOPS.csv index b3af09831f..b2c44d76c2 100644 --- a/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_FLOPS.csv +++ b/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_FLOPS.csv @@ -32,6 +32,7 @@ aircraft:design:empty_mass_margin_scaler,0.00514,unitless aircraft:design:gross_mass,174200.0,lbm aircraft:design:landing_to_takeoff_mass_ratio,0.84,unitless aircraft:design:lift_dependent_drag_coeff_factor,1.0,unitless +aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:range,2960.0,NM aircraft:design:subsonic_drag_coeff_factor,1.0,unitless aircraft:design:supersonic_drag_coeff_factor,1.0,unitless diff --git a/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_altwt_FLOPS.csv b/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_altwt_FLOPS.csv index 27f2df764b..2c1b5bdce5 100644 --- a/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_altwt_FLOPS.csv +++ b/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_altwt_FLOPS.csv @@ -32,6 +32,7 @@ aircraft:design:empty_mass_margin_scaler,0.00514,unitless aircraft:design:gross_mass,174200.0,lbm aircraft:design:landing_to_takeoff_mass_ratio,0.84,unitless aircraft:design:lift_dependent_drag_coeff_factor,1.0,unitless +aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:range,2960.0,NM aircraft:design:subsonic_drag_coeff_factor,1.0,unitless aircraft:design:supersonic_drag_coeff_factor,1.0,unitless diff --git a/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_detailwing_FLOPS.csv b/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_detailwing_FLOPS.csv index 941921d5df..73a0a390df 100644 --- a/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_detailwing_FLOPS.csv +++ b/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_detailwing_FLOPS.csv @@ -28,6 +28,7 @@ aircraft:design:empty_mass_margin_scaler,0.00514,unitless aircraft:design:gross_mass,174200.0,lbm aircraft:design:landing_to_takeoff_mass_ratio,0.84,unitless aircraft:design:lift_dependent_drag_coeff_factor,1.0,unitless +aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:range,2960.0,NM aircraft:design:subsonic_drag_coeff_factor,1.0,unitless aircraft:design:supersonic_drag_coeff_factor,1.0,unitless diff --git a/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm.csv b/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm.csv index 48c39c4ef9..6245299488 100644 --- a/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm.csv +++ b/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm.csv @@ -23,6 +23,7 @@ aircraft:crew_and_payload:wing_cargo,0.0,lbm aircraft:design:base_area,0.0,ft**2 aircraft:design:empty_mass_margin_scaler,0.0,unitless aircraft:design:lift_dependent_drag_coeff_factor,0.909839381134961,unitless +aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:touchdown_mass_max,152800.0,lbm mission:reserve_fuel_additional,3000.,lbm mission:reserve_fuel_margin,0,unitless diff --git a/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm_with_electric.csv b/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm_with_electric.csv index 0c1321ec0e..722bfafe03 100644 --- a/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm_with_electric.csv +++ b/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm_with_electric.csv @@ -23,6 +23,7 @@ aircraft:crew_and_payload:wing_cargo,0.0,lbm aircraft:design:base_area,0.0,ft**2 aircraft:design:empty_mass_margin_scaler,0.0,unitless aircraft:design:lift_dependent_drag_coeff_factor,0.909839381134961,unitless +aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:touchdown_mass_max,152800.0,lbm mission:reserve_fuel_additional,3000.,lbm aircraft:design:subsonic_drag_coeff_factor,1.0,unitless From 40e7b87c3fc474e365e36f54cc6ebe7223230171 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Thu, 11 Jun 2026 11:35:14 -0400 Subject: [PATCH 09/18] minor update --- .../flops_based/test/test_computed_aero_group.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py b/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py index f979aada58..01b4df5ed2 100644 --- a/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py +++ b/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py @@ -191,7 +191,7 @@ def test_n3cc_drag(self): flops_inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 1.0) flops_inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) flops_inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) - flops_inputs.set_val(Aircraft.Design.EXCRESCENCE_DRAG_FACTOR, 0.06) + flops_inputs.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) key = Aircraft.Propulsion.TOTAL_SCALED_SLS_THRUST flops_inputs.set_val(key, *(flops_outputs.get_item(key))) @@ -348,7 +348,7 @@ def test_large_single_aisle_2_drag(self): flops_inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 1.0) flops_inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) flops_inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) - flops_inputs.set_val(Aircraft.Design.EXCRESCENCE_DRAG_FACTOR, 0.06) + flops_inputs.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) key = Aircraft.Propulsion.TOTAL_SCALED_SLS_THRUST flops_inputs.set_val(key, *(flops_outputs.get_item(key))) @@ -504,6 +504,6 @@ def test_large_single_aisle_2_drag(self): if __name__ == '__main__': - # unittest.main() - test = MissionDragTest() - test.test_basic_large_single_aisle_1() + unittest.main() + # test = MissionDragTest() + # test.test_basic_large_single_aisle_1() From 9c8dcd63e224ab83bf795b4939b5e76c4fde2480 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Thu, 11 Jun 2026 12:31:01 -0400 Subject: [PATCH 10/18] update test json file --- aviary/interface/test/sizing_results_for_test.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/aviary/interface/test/sizing_results_for_test.json b/aviary/interface/test/sizing_results_for_test.json index 60e1ee042f..4ba152fb6d 100644 --- a/aviary/interface/test/sizing_results_for_test.json +++ b/aviary/interface/test/sizing_results_for_test.json @@ -203,6 +203,12 @@ "unitless", "" ], + [ + "aircraft:design:percent_excrescence_drag", + 0.06, + "unitless", + "" + ], [ "aircraft:design:touchdown_mass_max", 152800.0, From 351f2f7e229e90dd7766cb1ed753e4871a1bbc28 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Thu, 11 Jun 2026 12:32:17 -0400 Subject: [PATCH 11/18] testing --- aviary/mission/test/test_mission_fuel_burn.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/aviary/mission/test/test_mission_fuel_burn.py b/aviary/mission/test/test_mission_fuel_burn.py index 1e9d683f06..832fa678bb 100644 --- a/aviary/mission/test/test_mission_fuel_burn.py +++ b/aviary/mission/test/test_mission_fuel_burn.py @@ -4,7 +4,7 @@ from openmdao.utils.assert_utils import assert_near_equal from openmdao.utils.testing_utils import use_tempdirs -from aviary.variable_info.variables import Mission +from aviary.variable_info.variables import Aircraft, Mission from aviary.models.missions.energy_state_default import phase_info import aviary.api as av @@ -87,3 +87,10 @@ def test_taxi_in_fuel_burned(self): assert_near_equal(fuel_burned, 13234.43186723, tol) assert_near_equal(block_fuel, 13334.43186723, tol) + + +if __name__ == '__main__': + # unittest.main() + test = FuelBurnTestCases() + test.setUp() + test.test_taxi_in_fuel_burned() From 4208a0cc1c622369ab61f26196256d377d61ffbd Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Thu, 11 Jun 2026 13:11:24 -0400 Subject: [PATCH 12/18] added Aircraft.Design.PERCENT_EXCRESCENCE_DRAG to COMPUTED_CORE_INPUTS --- aviary/subsystems/aerodynamics/aerodynamics_builder.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/aviary/subsystems/aerodynamics/aerodynamics_builder.py b/aviary/subsystems/aerodynamics/aerodynamics_builder.py index 7ffbb265bb..2a560c402f 100644 --- a/aviary/subsystems/aerodynamics/aerodynamics_builder.py +++ b/aviary/subsystems/aerodynamics/aerodynamics_builder.py @@ -796,6 +796,7 @@ def report(self, prob, reports_folder, **kwargs): # Mission.GROSS_MASS, Aircraft.Design.LIFT_COEFFICIENT, Aircraft.Design.MACH, + Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, ] COMPUTED_CORE_INPUTS_BWB = [ @@ -827,6 +828,7 @@ def report(self, prob, reports_folder, **kwargs): # Mission.GROSS_MASS, Aircraft.Design.LIFT_COEFFICIENT, Aircraft.Design.MACH, + Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, ] HORIZONTAL_TAIL_INPUTS = [ From 43396e6d2f3808c0c6173c9b08b4a68ac80ab9c8 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Thu, 11 Jun 2026 13:11:40 -0400 Subject: [PATCH 13/18] add unit test --- aviary/mission/test/test_mission_fuel_burn.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/aviary/mission/test/test_mission_fuel_burn.py b/aviary/mission/test/test_mission_fuel_burn.py index 832fa678bb..ae230f2c42 100644 --- a/aviary/mission/test/test_mission_fuel_burn.py +++ b/aviary/mission/test/test_mission_fuel_burn.py @@ -4,7 +4,7 @@ from openmdao.utils.assert_utils import assert_near_equal from openmdao.utils.testing_utils import use_tempdirs -from aviary.variable_info.variables import Aircraft, Mission +from aviary.variable_info.variables import Mission from aviary.models.missions.energy_state_default import phase_info import aviary.api as av @@ -90,7 +90,4 @@ def test_taxi_in_fuel_burned(self): if __name__ == '__main__': - # unittest.main() - test = FuelBurnTestCases() - test.setUp() - test.test_taxi_in_fuel_burned() + unittest.main() From 622caccffdb1a73b381fb4cb9cf8ad6d10a0112c Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Mon, 15 Jun 2026 12:37:05 -0400 Subject: [PATCH 14/18] preprocess Aircraft.Design.PERCENT_EXCRESCENCE_DRAG for FLOPS and GASP inputs. --- aviary/utils/preprocessors.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/aviary/utils/preprocessors.py b/aviary/utils/preprocessors.py index 8ce1b69b5d..c1325a8a30 100644 --- a/aviary/utils/preprocessors.py +++ b/aviary/utils/preprocessors.py @@ -47,6 +47,13 @@ def preprocess_options( verbosity = meta_data[Settings.VERBOSITY]['default_value'] aviary_options.set_val(Settings.VERBOSITY, verbosity) + if Settings.AERODYNAMICS_METHOD in aviary_options: + aero_method = aviary_options.get_val(Settings.AERODYNAMICS_METHOD) + else: + raise UserWarning( + 'AERODYNAMICS_METHOD not specified. Cannot preprocess fuel aerodynamic inputs.' + ) + preprocess_crewpayload(aviary_options, meta_data, verbosity) preprocess_fuel_capacities(aviary_options, verbosity) @@ -82,6 +89,17 @@ def preprocess_options( f'Aircraft.Wing.THICKNESS_TO_CHORD ({tc}).' ) + try: + excrescences_drag = aviary_options.get_val( + Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 'unitless' + ) + except KeyError: + if aero_method == LegacyCode.FLOPS: + excrescences_drag = 0.06 + else: + excrescences_drag = 0.075 + aviary_options.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, excrescences_drag) + def preprocess_crewpayload(aviary_options: AviaryValues, meta_data=CoreMetaData, verbosity=None): """ From 39e6457a3402d641b710da77de8309a0b9b9cbf3 Mon Sep 17 00:00:00 2001 From: Xun Jiang Date: Mon, 15 Jun 2026 14:37:50 -0400 Subject: [PATCH 15/18] added Settings.AERODYNAMICS_METHOD to FLOPS based bench test data --- .../validation_data/test_data/bwb_detailed_FLOPS_data.py | 1 + .../validation_data/test_data/bwb_simple_FLOPS_data.py | 1 + .../validation_data/test_data/large_single_aisle_1_FLOPS_data.py | 1 + 3 files changed, 3 insertions(+) diff --git a/aviary/validation_cases/validation_data/test_data/bwb_detailed_FLOPS_data.py b/aviary/validation_cases/validation_data/test_data/bwb_detailed_FLOPS_data.py index 6ce0ee3249..3c666a316b 100644 --- a/aviary/validation_cases/validation_data/test_data/bwb_detailed_FLOPS_data.py +++ b/aviary/validation_cases/validation_data/test_data/bwb_detailed_FLOPS_data.py @@ -290,6 +290,7 @@ # --------------------------- inputs.set_val(Settings.EQUATIONS_OF_MOTION, EquationsOfMotion.ENERGY_STATE) inputs.set_val(Settings.MASS_METHOD, LegacyCode.FLOPS) +inputs.set_val(Settings.AERODYNAMICS_METHOD, LegacyCode.FLOPS) # --------------------------- # OUTPUTS diff --git a/aviary/validation_cases/validation_data/test_data/bwb_simple_FLOPS_data.py b/aviary/validation_cases/validation_data/test_data/bwb_simple_FLOPS_data.py index 47a7904cb8..4a5e73b7ce 100644 --- a/aviary/validation_cases/validation_data/test_data/bwb_simple_FLOPS_data.py +++ b/aviary/validation_cases/validation_data/test_data/bwb_simple_FLOPS_data.py @@ -240,6 +240,7 @@ # --------------------------- inputs.set_val(Settings.EQUATIONS_OF_MOTION, EquationsOfMotion.ENERGY_STATE) inputs.set_val(Settings.MASS_METHOD, LegacyCode.FLOPS) +inputs.set_val(Settings.AERODYNAMICS_METHOD, LegacyCode.FLOPS) # --------------------------- # OUTPUTS diff --git a/aviary/validation_cases/validation_data/test_data/large_single_aisle_1_FLOPS_data.py b/aviary/validation_cases/validation_data/test_data/large_single_aisle_1_FLOPS_data.py index 716f2ac2b0..4a2d50347e 100644 --- a/aviary/validation_cases/validation_data/test_data/large_single_aisle_1_FLOPS_data.py +++ b/aviary/validation_cases/validation_data/test_data/large_single_aisle_1_FLOPS_data.py @@ -249,6 +249,7 @@ # --------------------------- inputs.set_val(Settings.EQUATIONS_OF_MOTION, EquationsOfMotion.ENERGY_STATE) inputs.set_val(Settings.MASS_METHOD, LegacyCode.FLOPS) +inputs.set_val(Settings.AERODYNAMICS_METHOD, LegacyCode.FLOPS) # --------------------------- # OUTPUTS From a38f54867fa535cf537aede52d05ef79f1c63ccc Mon Sep 17 00:00:00 2001 From: jkirk5 Date: Mon, 15 Jun 2026 17:42:29 -0400 Subject: [PATCH 16/18] added EDET-only excrescence drag percent default --- aviary/interface/test/sizing_results_for_test.json | 12 ++++++------ .../advanced_single_aisle_FLOPS.csv | 1 - .../large_single_aisle_1_FLOPS.csv | 1 - .../large_single_aisle_2_FLOPS.csv | 1 - .../large_single_aisle_2_altwt_FLOPS.csv | 1 - .../large_single_aisle_2_detailwing_FLOPS.csv | 1 - .../aerodynamics/flops_based/skin_friction_drag.py | 2 +- .../flops_based/test/test_computed_aero_group.py | 2 -- .../flops_based/test/test_skinfriction_drag.py | 6 ++++-- aviary/subsystems/mass/mass_builder.py | 2 +- aviary/utils/preprocessors.py | 9 +++++++++ .../test_data/bwb_detailed_FLOPS_data.py | 1 + .../test_data/bwb_simple_FLOPS_data.py | 1 + .../test_data/large_single_aisle_1_FLOPS_data.py | 1 + .../test_models/aircraft_for_bench_FwFm.csv | 1 - .../aircraft_for_bench_FwFm_with_electric.csv | 1 - aviary/variable_info/variable_meta_data.py | 2 +- 17 files changed, 25 insertions(+), 20 deletions(-) diff --git a/aviary/interface/test/sizing_results_for_test.json b/aviary/interface/test/sizing_results_for_test.json index 4ba152fb6d..1fb3c4c252 100644 --- a/aviary/interface/test/sizing_results_for_test.json +++ b/aviary/interface/test/sizing_results_for_test.json @@ -203,12 +203,6 @@ "unitless", "" ], - [ - "aircraft:design:percent_excrescence_drag", - 0.06, - "unitless", - "" - ], [ "aircraft:design:touchdown_mass_max", 152800.0, @@ -1124,6 +1118,12 @@ "unitless", "" ], + [ + "aircraft:design:percent_excrescence_drag", + 0.06, + "unitless", + "" + ], [ "mission:gross_mass", 175400.0, diff --git a/aviary/models/aircraft/advanced_single_aisle/advanced_single_aisle_FLOPS.csv b/aviary/models/aircraft/advanced_single_aisle/advanced_single_aisle_FLOPS.csv index dafc30142e..4b21937a10 100644 --- a/aviary/models/aircraft/advanced_single_aisle/advanced_single_aisle_FLOPS.csv +++ b/aviary/models/aircraft/advanced_single_aisle/advanced_single_aisle_FLOPS.csv @@ -29,7 +29,6 @@ aircraft:design:base_area,0,ft**2 aircraft:design:empty_mass_margin_scaler,0.01498,unitless aircraft:design:landing_to_takeoff_mass_ratio,0.84,unitless aircraft:design:lift_dependent_drag_coeff_factor,0.93,unitless -aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:subsonic_drag_coeff_factor,0.95,unitless aircraft:design:supersonic_drag_coeff_factor,1,unitless aircraft:design:touchdown_mass_max,108976.4,lbm diff --git a/aviary/models/aircraft/large_single_aisle_1/large_single_aisle_1_FLOPS.csv b/aviary/models/aircraft/large_single_aisle_1/large_single_aisle_1_FLOPS.csv index c8b75c549d..45957b320d 100644 --- a/aviary/models/aircraft/large_single_aisle_1/large_single_aisle_1_FLOPS.csv +++ b/aviary/models/aircraft/large_single_aisle_1/large_single_aisle_1_FLOPS.csv @@ -30,7 +30,6 @@ aircraft:design:cruise_mach,0.785,unitless aircraft:design:empty_mass_margin_scaler,0.0,unitless aircraft:design:gross_mass,181200.0,lbm aircraft:design:lift_dependent_drag_coeff_factor,0.909839381134961,unitless -aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:range,3500.0,NM aircraft:design:subsonic_drag_coeff_factor,1.0,unitless aircraft:design:supersonic_drag_coeff_factor,1.0,unitless diff --git a/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_FLOPS.csv b/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_FLOPS.csv index b2c44d76c2..b3af09831f 100644 --- a/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_FLOPS.csv +++ b/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_FLOPS.csv @@ -32,7 +32,6 @@ aircraft:design:empty_mass_margin_scaler,0.00514,unitless aircraft:design:gross_mass,174200.0,lbm aircraft:design:landing_to_takeoff_mass_ratio,0.84,unitless aircraft:design:lift_dependent_drag_coeff_factor,1.0,unitless -aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:range,2960.0,NM aircraft:design:subsonic_drag_coeff_factor,1.0,unitless aircraft:design:supersonic_drag_coeff_factor,1.0,unitless diff --git a/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_altwt_FLOPS.csv b/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_altwt_FLOPS.csv index 2c1b5bdce5..27f2df764b 100644 --- a/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_altwt_FLOPS.csv +++ b/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_altwt_FLOPS.csv @@ -32,7 +32,6 @@ aircraft:design:empty_mass_margin_scaler,0.00514,unitless aircraft:design:gross_mass,174200.0,lbm aircraft:design:landing_to_takeoff_mass_ratio,0.84,unitless aircraft:design:lift_dependent_drag_coeff_factor,1.0,unitless -aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:range,2960.0,NM aircraft:design:subsonic_drag_coeff_factor,1.0,unitless aircraft:design:supersonic_drag_coeff_factor,1.0,unitless diff --git a/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_detailwing_FLOPS.csv b/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_detailwing_FLOPS.csv index 73a0a390df..941921d5df 100644 --- a/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_detailwing_FLOPS.csv +++ b/aviary/models/aircraft/large_single_aisle_2/large_single_aisle_2_detailwing_FLOPS.csv @@ -28,7 +28,6 @@ aircraft:design:empty_mass_margin_scaler,0.00514,unitless aircraft:design:gross_mass,174200.0,lbm aircraft:design:landing_to_takeoff_mass_ratio,0.84,unitless aircraft:design:lift_dependent_drag_coeff_factor,1.0,unitless -aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:range,2960.0,NM aircraft:design:subsonic_drag_coeff_factor,1.0,unitless aircraft:design:supersonic_drag_coeff_factor,1.0,unitless diff --git a/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py b/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py index 78b80919fe..06c792b0bc 100644 --- a/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/skin_friction_drag.py @@ -183,7 +183,7 @@ def compute(self, inputs, outputs): # to the drag. # This may be "dead weight" from FLOPS - D.J. - # An additional six percent of the skin friction drag is added to for excrescences + # An additional percentage of the skin friction drag is added to for excrescences # (miscellaneous). CDF *= 1.0 + inputs[Aircraft.Design.PERCENT_EXCRESCENCE_DRAG] diff --git a/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py b/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py index 01b4df5ed2..7930ff0b9c 100644 --- a/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py +++ b/aviary/subsystems/aerodynamics/flops_based/test/test_computed_aero_group.py @@ -191,7 +191,6 @@ def test_n3cc_drag(self): flops_inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 1.0) flops_inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) flops_inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) - flops_inputs.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) key = Aircraft.Propulsion.TOTAL_SCALED_SLS_THRUST flops_inputs.set_val(key, *(flops_outputs.get_item(key))) @@ -348,7 +347,6 @@ def test_large_single_aisle_2_drag(self): flops_inputs.set_val(Aircraft.Design.ZERO_LIFT_DRAG_COEFF_FACTOR, 1.0) flops_inputs.set_val(Aircraft.Design.SUBSONIC_DRAG_COEFF_FACTOR, 1.0) flops_inputs.set_val(Aircraft.Design.SUPERSONIC_DRAG_COEFF_FACTOR, 1.0) - flops_inputs.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) key = Aircraft.Propulsion.TOTAL_SCALED_SLS_THRUST flops_inputs.set_val(key, *(flops_outputs.get_item(key))) diff --git a/aviary/subsystems/aerodynamics/flops_based/test/test_skinfriction_drag.py b/aviary/subsystems/aerodynamics/flops_based/test/test_skinfriction_drag.py index a79f2beb6c..115e8ff853 100644 --- a/aviary/subsystems/aerodynamics/flops_based/test/test_skinfriction_drag.py +++ b/aviary/subsystems/aerodynamics/flops_based/test/test_skinfriction_drag.py @@ -11,7 +11,7 @@ @use_tempdirs class SkinFrictionDragTest(unittest.TestCase): - def test_derivs(self): + def test_case(self): nn = 2 fine = np.array([0.13, 0.125, 0.1195, 10.0392, 1.5491, 1.5491]) @@ -55,6 +55,7 @@ def test_derivs(self): prob.set_val('CDf.laminar_fractions_upper', lam_up) prob.set_val('CDf.laminar_fractions_lower', lam_low) prob.set_val(Aircraft.Wing.AREA, 198.0) + # this must be hardcoded because the FLOPS EDET default is normally applied by the preprocessor prob.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) prob.run_model() @@ -66,7 +67,7 @@ def test_derivs(self): assert_near_equal(prob.get_val('skin_friction_drag_coeff'), [14.91229, 15.01284], 1e-6) - def test_derivs_multiengine(self): + def test_case_multiengine(self): nn = 2 fine = np.array([0.13, 0.125, 0.1195, 10.0392, 1.5491, 1.5491, 1.125, 1.125, 1.125, 1.125]) @@ -139,6 +140,7 @@ def test_derivs_multiengine(self): prob.set_val('CDf.laminar_fractions_upper', lam_up) prob.set_val('CDf.laminar_fractions_lower', lam_low) prob.set_val(Aircraft.Wing.AREA, 198.0) + # this must be hardcoded because the FLOPS EDET default is normally applied by the preprocessor prob.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) prob.run_model() diff --git a/aviary/subsystems/mass/mass_builder.py b/aviary/subsystems/mass/mass_builder.py index c067839070..a61b43b2a8 100644 --- a/aviary/subsystems/mass/mass_builder.py +++ b/aviary/subsystems/mass/mass_builder.py @@ -163,7 +163,7 @@ def report(self, prob, reports_folder, **kwargs): # OTHER STRUCTURES (NOT IN GROUP) # val, units = find_variable_in_problem(Aircraft.Nacelle.MASS, prob, self.meta_data) - f.write(f'|Nacelles|{np.dot(val, num_engines)[0]}||\n') + f.write(f'|Nacelles|{np.dot(val, num_engines)}||\n') for i, engine in enumerate(engine_models): if isinstance(val, (np.ndarray, list, tuple)): val = val[i] diff --git a/aviary/utils/preprocessors.py b/aviary/utils/preprocessors.py index 8ce1b69b5d..be1bb45619 100644 --- a/aviary/utils/preprocessors.py +++ b/aviary/utils/preprocessors.py @@ -82,6 +82,15 @@ def preprocess_options( f'Aircraft.Wing.THICKNESS_TO_CHORD ({tc}).' ) + # In FLOPS, excrescence drag percentage is not able to be set via the input file + # Therefore, it appears to have been hardcoded into the method + # Here we set the default value to that fixed value + if ( + aviary_options.get_val(Settings.AERODYNAMICS_METHOD) is LegacyCode.FLOPS + and Aircraft.Design.PERCENT_EXCRESCENCE_DRAG not in aviary_options + ): + aviary_options.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) + def preprocess_crewpayload(aviary_options: AviaryValues, meta_data=CoreMetaData, verbosity=None): """ diff --git a/aviary/validation_cases/validation_data/test_data/bwb_detailed_FLOPS_data.py b/aviary/validation_cases/validation_data/test_data/bwb_detailed_FLOPS_data.py index 6ce0ee3249..3c666a316b 100644 --- a/aviary/validation_cases/validation_data/test_data/bwb_detailed_FLOPS_data.py +++ b/aviary/validation_cases/validation_data/test_data/bwb_detailed_FLOPS_data.py @@ -290,6 +290,7 @@ # --------------------------- inputs.set_val(Settings.EQUATIONS_OF_MOTION, EquationsOfMotion.ENERGY_STATE) inputs.set_val(Settings.MASS_METHOD, LegacyCode.FLOPS) +inputs.set_val(Settings.AERODYNAMICS_METHOD, LegacyCode.FLOPS) # --------------------------- # OUTPUTS diff --git a/aviary/validation_cases/validation_data/test_data/bwb_simple_FLOPS_data.py b/aviary/validation_cases/validation_data/test_data/bwb_simple_FLOPS_data.py index 47a7904cb8..4a5e73b7ce 100644 --- a/aviary/validation_cases/validation_data/test_data/bwb_simple_FLOPS_data.py +++ b/aviary/validation_cases/validation_data/test_data/bwb_simple_FLOPS_data.py @@ -240,6 +240,7 @@ # --------------------------- inputs.set_val(Settings.EQUATIONS_OF_MOTION, EquationsOfMotion.ENERGY_STATE) inputs.set_val(Settings.MASS_METHOD, LegacyCode.FLOPS) +inputs.set_val(Settings.AERODYNAMICS_METHOD, LegacyCode.FLOPS) # --------------------------- # OUTPUTS diff --git a/aviary/validation_cases/validation_data/test_data/large_single_aisle_1_FLOPS_data.py b/aviary/validation_cases/validation_data/test_data/large_single_aisle_1_FLOPS_data.py index 716f2ac2b0..4a2d50347e 100644 --- a/aviary/validation_cases/validation_data/test_data/large_single_aisle_1_FLOPS_data.py +++ b/aviary/validation_cases/validation_data/test_data/large_single_aisle_1_FLOPS_data.py @@ -249,6 +249,7 @@ # --------------------------- inputs.set_val(Settings.EQUATIONS_OF_MOTION, EquationsOfMotion.ENERGY_STATE) inputs.set_val(Settings.MASS_METHOD, LegacyCode.FLOPS) +inputs.set_val(Settings.AERODYNAMICS_METHOD, LegacyCode.FLOPS) # --------------------------- # OUTPUTS diff --git a/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm.csv b/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm.csv index 6245299488..48c39c4ef9 100644 --- a/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm.csv +++ b/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm.csv @@ -23,7 +23,6 @@ aircraft:crew_and_payload:wing_cargo,0.0,lbm aircraft:design:base_area,0.0,ft**2 aircraft:design:empty_mass_margin_scaler,0.0,unitless aircraft:design:lift_dependent_drag_coeff_factor,0.909839381134961,unitless -aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:touchdown_mass_max,152800.0,lbm mission:reserve_fuel_additional,3000.,lbm mission:reserve_fuel_margin,0,unitless diff --git a/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm_with_electric.csv b/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm_with_electric.csv index 722bfafe03..0c1321ec0e 100644 --- a/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm_with_electric.csv +++ b/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_FwFm_with_electric.csv @@ -23,7 +23,6 @@ aircraft:crew_and_payload:wing_cargo,0.0,lbm aircraft:design:base_area,0.0,ft**2 aircraft:design:empty_mass_margin_scaler,0.0,unitless aircraft:design:lift_dependent_drag_coeff_factor,0.909839381134961,unitless -aircraft:design:percent_excrescence_drag,0.06,unitless aircraft:design:touchdown_mass_max,152800.0,lbm mission:reserve_fuel_additional,3000.,lbm aircraft:design:subsonic_drag_coeff_factor,1.0,unitless diff --git a/aviary/variable_info/variable_meta_data.py b/aviary/variable_info/variable_meta_data.py index 40156051f0..6427c80f37 100644 --- a/aviary/variable_info/variable_meta_data.py +++ b/aviary/variable_info/variable_meta_data.py @@ -1414,7 +1414,7 @@ desc='A flag used by Jeff V. Bowles to debug GASP code during his 53 years supporting the ' 'development of GASP. This flag is planted here to thank him for his hard work and dedication, ' "Aviary wouldn't be what it is today without his help.", -) # Jeff started working as a summer intern in 1970. +) add_meta_data( Aircraft.Design.INTERFERENCE_DRAG_FACTOR, From 133c7e4a4ac565b5a25fb5799b20da7f54c05867 Mon Sep 17 00:00:00 2001 From: jkirk5 Date: Mon, 15 Jun 2026 17:47:18 -0400 Subject: [PATCH 17/18] minor update to preprocessor logic tree --- aviary/utils/preprocessors.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aviary/utils/preprocessors.py b/aviary/utils/preprocessors.py index 02f67c34b8..d45ce2dc53 100644 --- a/aviary/utils/preprocessors.py +++ b/aviary/utils/preprocessors.py @@ -97,7 +97,7 @@ def preprocess_options( aviary_options.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) # In GASP, default excrescence drag is different - if aviary_options.get_val(Settings.AERODYNAMICS_METHOD) is LegacyCode.GASP: + elif aviary_options.get_val(Settings.AERODYNAMICS_METHOD) is LegacyCode.GASP: aviary_options.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.075) From 45e2e4971a549266596be13ca0dfc437814458be Mon Sep 17 00:00:00 2001 From: jkirk5 Date: Tue, 16 Jun 2026 11:17:57 -0400 Subject: [PATCH 18/18] Moved GASP excrescence drag default to the gasp_defaults file (was in preprocessor) --- aviary/models/aircraft/blended_wing_body/generic_BWB_GASP.csv | 1 + .../large_single_aisle_1/large_single_aisle_1_GASP.csv | 1 + .../large_turboprop_freighter_GASP.csv | 1 + .../aircraft/small_single_aisle/small_single_aisle_GASP.csv | 1 + aviary/utils/legacy_code_data/gasp_defaults.py | 1 + aviary/utils/preprocessors.py | 4 ---- aviary/utils/test/data/converter_test_BWB_GASP.csv | 1 + aviary/utils/test/data/converter_test_configuration_GASP.csv | 1 + .../test/data/converter_test_large_single_aisle_1_GASP.csv | 1 + .../test/data/converter_test_small_single_aisle_GASP.csv | 1 + .../validation_data/test_models/aircraft_for_bench_GwGm.csv | 1 + 11 files changed, 10 insertions(+), 4 deletions(-) diff --git a/aviary/models/aircraft/blended_wing_body/generic_BWB_GASP.csv b/aviary/models/aircraft/blended_wing_body/generic_BWB_GASP.csv index bf0b7f23de..bbbc709fc7 100644 --- a/aviary/models/aircraft/blended_wing_body/generic_BWB_GASP.csv +++ b/aviary/models/aircraft/blended_wing_body/generic_BWB_GASP.csv @@ -153,6 +153,7 @@ aircraft:wing:zero_lift_angle,0,deg aircraft:design:cruise_altitude,41000,ft aircraft:design:gross_mass,150000,lbm aircraft:design:mach,0.8,unitless +aircraft:design:percent_excrescence_drag,0.075,unitless aircraft:design:range,3500,NM mission:landing:airport_altitude,0,ft mission:landing:braking_delay,1,s diff --git a/aviary/models/aircraft/large_single_aisle_1/large_single_aisle_1_GASP.csv b/aviary/models/aircraft/large_single_aisle_1/large_single_aisle_1_GASP.csv index 8da1e50884..bc5c8a976b 100644 --- a/aviary/models/aircraft/large_single_aisle_1/large_single_aisle_1_GASP.csv +++ b/aviary/models/aircraft/large_single_aisle_1/large_single_aisle_1_GASP.csv @@ -140,6 +140,7 @@ aircraft:wing:zero_lift_angle,-1.2,deg aircraft:design:cruise_altitude,37500,ft aircraft:design:gross_mass,175400,lbm aircraft:design:mach,0.8,unitless +aircraft:design:percent_excrescence_drag,0.075,unitless aircraft:design:range,3675,NM mission:landing:airport_altitude,0,ft mission:landing:braking_delay,1,s diff --git a/aviary/models/aircraft/large_turboprop_freighter/large_turboprop_freighter_GASP.csv b/aviary/models/aircraft/large_turboprop_freighter/large_turboprop_freighter_GASP.csv index 4d786e6791..29e3d3bc56 100644 --- a/aviary/models/aircraft/large_turboprop_freighter/large_turboprop_freighter_GASP.csv +++ b/aviary/models/aircraft/large_turboprop_freighter/large_turboprop_freighter_GASP.csv @@ -191,6 +191,7 @@ aircraft:furnishings:mass, 0, lbm aircraft:design:cruise_altitude, 21000, ft aircraft:design:gross_mass, 155000, lbm aircraft:design:mach, 0.475, unitless +aircraft:design:percent_excrescence_drag,0.075,unitless aircraft:design:range, 2020, NM # Takeoff and Landing diff --git a/aviary/models/aircraft/small_single_aisle/small_single_aisle_GASP.csv b/aviary/models/aircraft/small_single_aisle/small_single_aisle_GASP.csv index c4892a4d32..2522de0b8c 100644 --- a/aviary/models/aircraft/small_single_aisle/small_single_aisle_GASP.csv +++ b/aviary/models/aircraft/small_single_aisle/small_single_aisle_GASP.csv @@ -139,6 +139,7 @@ aircraft:wing:zero_lift_angle,-1.2,deg aircraft:design:cruise_altitude,37000,ft aircraft:design:gross_mass,124780,lbm aircraft:design:mach,0.78,unitless +aircraft:design:percent_excrescence_drag,0.075,unitless aircraft:design:range,3480,NM mission:landing:airport_altitude,0,ft mission:landing:braking_delay,1,s diff --git a/aviary/utils/legacy_code_data/gasp_defaults.py b/aviary/utils/legacy_code_data/gasp_defaults.py index 8d43848b5a..78ce31e4ca 100644 --- a/aviary/utils/legacy_code_data/gasp_defaults.py +++ b/aviary/utils/legacy_code_data/gasp_defaults.py @@ -137,6 +137,7 @@ 'INGASP.YWFOLD': (0.0, 'ft'), 'INGASP.UM': (0.02, 'unitless'), 'INGASP.MUB': (0.4, 'unitless'), + 'INGASP.PCT_EXCR': (0.075, 'unitless'), } ) diff --git a/aviary/utils/preprocessors.py b/aviary/utils/preprocessors.py index d45ce2dc53..ddd2b7eb65 100644 --- a/aviary/utils/preprocessors.py +++ b/aviary/utils/preprocessors.py @@ -96,10 +96,6 @@ def preprocess_options( if aviary_options.get_val(Settings.AERODYNAMICS_METHOD) is LegacyCode.FLOPS: aviary_options.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.06) - # In GASP, default excrescence drag is different - elif aviary_options.get_val(Settings.AERODYNAMICS_METHOD) is LegacyCode.GASP: - aviary_options.set_val(Aircraft.Design.PERCENT_EXCRESCENCE_DRAG, 0.075) - def preprocess_crewpayload(aviary_options: AviaryValues, meta_data=CoreMetaData, verbosity=None): """ diff --git a/aviary/utils/test/data/converter_test_BWB_GASP.csv b/aviary/utils/test/data/converter_test_BWB_GASP.csv index 12f82b3076..f222959ff4 100644 --- a/aviary/utils/test/data/converter_test_BWB_GASP.csv +++ b/aviary/utils/test/data/converter_test_BWB_GASP.csv @@ -38,6 +38,7 @@ aircraft:design:lift_dependent_drag_coeff_factor,0.85,unitless aircraft:design:mach,0.8,unitless aircraft:design:max_structural_speed,402.5,mi/h aircraft:design:part25_structural_category,3.0,unitless +aircraft:design:percent_excrescence_drag,0.075,unitless aircraft:design:range,3500.0,NM aircraft:design:static_margin,0.05,unitless aircraft:design:structural_mass_increment,0.0,lbm diff --git a/aviary/utils/test/data/converter_test_configuration_GASP.csv b/aviary/utils/test/data/converter_test_configuration_GASP.csv index 03e47699dc..db613e78bf 100644 --- a/aviary/utils/test/data/converter_test_configuration_GASP.csv +++ b/aviary/utils/test/data/converter_test_configuration_GASP.csv @@ -31,6 +31,7 @@ aircraft:design:landing_to_takeoff_mass_ratio,0.9423,unitless aircraft:design:mach,0.8,unitless aircraft:design:max_structural_speed,440.0,mi/h aircraft:design:part25_structural_category,3.0,unitless +aircraft:design:percent_excrescence_drag,0.075,unitless aircraft:design:range,3500.0,NM aircraft:design:static_margin,0.05,unitless aircraft:design:structural_mass_increment,0.0,lbm diff --git a/aviary/utils/test/data/converter_test_large_single_aisle_1_GASP.csv b/aviary/utils/test/data/converter_test_large_single_aisle_1_GASP.csv index edcb4398b9..0741f2aea6 100644 --- a/aviary/utils/test/data/converter_test_large_single_aisle_1_GASP.csv +++ b/aviary/utils/test/data/converter_test_large_single_aisle_1_GASP.csv @@ -31,6 +31,7 @@ aircraft:design:landing_to_takeoff_mass_ratio,0.9423,unitless aircraft:design:mach,0.8,unitless aircraft:design:max_structural_speed,402.5,mi/h aircraft:design:part25_structural_category,3.0,unitless +aircraft:design:percent_excrescence_drag,0.075,unitless aircraft:design:range,3675.0,NM aircraft:design:static_margin,0.03,unitless aircraft:design:structural_mass_increment,0.0,lbm diff --git a/aviary/utils/test/data/converter_test_small_single_aisle_GASP.csv b/aviary/utils/test/data/converter_test_small_single_aisle_GASP.csv index c473483e5e..49bf156e52 100644 --- a/aviary/utils/test/data/converter_test_small_single_aisle_GASP.csv +++ b/aviary/utils/test/data/converter_test_small_single_aisle_GASP.csv @@ -31,6 +31,7 @@ aircraft:design:landing_to_takeoff_mass_ratio,0.9423,unitless aircraft:design:mach,0.78,unitless aircraft:design:max_structural_speed,402.5,mi/h aircraft:design:part25_structural_category,3.0,unitless +aircraft:design:percent_excrescence_drag,0.075,unitless aircraft:design:range,3480.0,NM aircraft:design:static_margin,0.05,unitless aircraft:design:structural_mass_increment,0.0,lbm diff --git a/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_GwGm.csv b/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_GwGm.csv index 1e21f81ee3..e343baa61e 100644 --- a/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_GwGm.csv +++ b/aviary/validation_cases/validation_data/test_models/aircraft_for_bench_GwGm.csv @@ -143,6 +143,7 @@ aircraft:wing:zero_lift_angle,-1.2,deg aircraft:design:cruise_altitude,37500,ft aircraft:design:gross_mass,175400,lbm aircraft:design:mach,0.8,unitless +aircraft:design:percent_excrescence_drag,0.075,unitless aircraft:design:range,3675,NM mission:landing:airport_altitude,0,ft mission:landing:braking_delay,1,s