Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
d557225
refactor: add legacy variable-name compatibility map
suhaslord Aug 22, 2026
ee9f8c9
test: define MAX_MACH namespace migration contract
suhaslord Aug 22, 2026
3e72163
tools: add deterministic MAX_MACH migration engine
suhaslord Aug 22, 2026
c59acec
ci: apply repo-wide MAX_MACH migration
suhaslord Aug 22, 2026
bed9411
refactor: migrate MAX_MACH to aircraft design namespace
github-actions[bot] Aug 22, 2026
d2a1c13
ci: remove one-shot MAX_MACH migration workflow
suhaslord Aug 22, 2026
191bd0d
ci: stage MAX_MACH metadata relocation
suhaslord Aug 22, 2026
af62777
refactor: colocate MAX_MACH aircraft design metadata
github-actions[bot] Aug 22, 2026
288a51f
ci: remove one-shot metadata relocation workflow
suhaslord Aug 22, 2026
c4e6173
tools: make MAX_MACH migration reproducible and idempotent
suhaslord Aug 22, 2026
9e83699
ci: verify MAX_MACH migration idempotence
suhaslord Aug 22, 2026
f7e6341
style: format MAX_MACH migration contract test
suhaslord Aug 22, 2026
0186e43
style: format MAX_MACH migration tool
suhaslord Aug 22, 2026
5d2335f
ci: apply MAX_MACH migration corrections
suhaslord Aug 22, 2026
867ad65
ci: run MAX_MACH repair on pull request updates
suhaslord Aug 22, 2026
e95be85
ci: make MAX_MACH fixture repair order-aware
suhaslord Aug 22, 2026
dd8419b
ci: keep MAX_MACH repair commit workflow-free
suhaslord Aug 22, 2026
24b3620
fix: preserve MAX_MACH hierarchy invariants
github-actions[bot] Aug 22, 2026
ce99ed9
ci: remove completed MAX_MACH repair helper
suhaslord Aug 22, 2026
8757817
style: format MAX_MACH migration tool
suhaslord Aug 22, 2026
de83803
Fix MAX_MACH migration idempotence
cursoragent Aug 22, 2026
5b42a83
Apply ruff formatting to migrate_max_mach_namespace.py
cursoragent Aug 22, 2026
4be6d5b
Fix ruff-format: keep short metadata_block call on one line
cursoragent Aug 22, 2026
3b7d30e
ci: empty retrigger for OpenMDAO/Aviary#1277
suhaslord Aug 22, 2026
ade8cac
ci: remove retrigger marker
suhaslord Aug 22, 2026
fb0463e
test: increase max_iter for test_bench_Solved2DOF_landing to harden a…
cursoragent Aug 22, 2026
b5bf852
Merge branch 'main' into refactor/aircraft-design-max-mach
jkirk5 Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .github/workflows/verify-max-mach-migration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Verify MAX_MACH migration idempotence

on:
push:
branches:
- refactor/aircraft-design-max-mach

permissions:
contents: read

jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Re-run migration and audit
run: |
python tools/migrate_max_mach_namespace.py --write --check
git diff --exit-code
- name: Verify Python syntax
run: python -m compileall -q aviary tools/migrate_max_mach_namespace.py
2 changes: 1 addition & 1 deletion aviary/docs/examples_unreviewed/modified_aircraft.csv
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ aircraft:wing:ultimate_load_factor,3.75,unitless
aircraft:wing:var_sweep_mass_penalty,0.0,unitless
aircraft:wing:wetted_area_scaler,1.0,unitless
aircraft:wing:wetted_area,2396.56,ft**2
mission:constraints:max_mach,0.785,unitless
aircraft:design:max_mach,0.785,unitless
aircraft:design:cruise_altitude,35000,ft
aircraft:design:gross_mass,175400.0,lbm
aircraft:design:range,3500,NM
Expand Down
4 changes: 2 additions & 2 deletions aviary/docs/user_guide/fundamentals/aircraft_definition.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"glue_variable(get_variable_name(Aircraft.Fuselage.LENGTH), md_code=True)\n",
"glue_variable(get_variable_name(Aircraft.Wing.AREA), md_code=True)\n",
"\n",
"glue_variable(get_variable_name(Mission.Constraints.MAX_MACH), md_code=True)\n",
"glue_variable(get_variable_name(Aircraft.Design.MAX_MACH), md_code=True)\n",
"glue_variable(get_variable_name(Aircraft.Design.GROSS_MASS), md_code=True)\n",
"glue_variable(get_variable_name(Aircraft.Design.RANGE), md_code=True)\n",
"\n",
Expand Down Expand Up @@ -65,7 +65,7 @@
"```\n",
"...\n",
"```text\n",
"{glue:md}mission:constraints:max_mach, 0.785, unitless\n",
"{glue:md}aircraft:design:max_mach, 0.785, unitless\n",
"{glue:md}aircraft:design:gross_mass, 130000, lbm\n",
"{glue:md}aircraft:design:range, 1906, NM\n",
"```\n",
Expand Down
2 changes: 1 addition & 1 deletion aviary/interface/test/sizing_results_for_test.json
Original file line number Diff line number Diff line change
Expand Up @@ -975,7 +975,7 @@
"<class 'float'>"
],
[
"mission:constraints:max_mach",
"aircraft:design:max_mach",
0.785,
"unitless",
"<class 'float'>"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ aircraft:wing:ultimate_load_factor,3.75,unitless
aircraft:wing:var_sweep_mass_penalty,0,unitless
aircraft:wing:wetted_area,2210.280228,ft**2
aircraft:wing:wetted_area_scaler,1,unitless
mission:constraints:max_mach,0.785,unitless
aircraft:design:max_mach,0.785,unitless
aircraft:design:gross_mass,130000,lbm
aircraft:design:range,3500,NM
mission:landing:airport_altitude,0,ft
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ aircraft:wing:thickness_to_chord_reference,0.0,unitless
aircraft:wing:ultimate_load_factor,3.75,unitless
aircraft:wing:var_sweep_mass_penalty,0.0,unitless
aircraft:wing:wetted_area_scaler,0.61,unitless
mission:constraints:max_mach,0.9,unitless
aircraft:design:max_mach,0.9,unitless
aircraft:design:gross_mass,600000.0,lbm
aircraft:design:range,7500.0,NM
mission:landing:drag_coefficient_min,0.0,unitless
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ aircraft:wing:thickness_to_chord_distribution,0.15,0.1132,0.0928,0.0822,0.0764,0
aircraft:wing:ultimate_load_factor,3.75,unitless
aircraft:wing:var_sweep_mass_penalty,0.0,unitless
aircraft:wing:wetted_area_scaler,1.0,unitless
mission:constraints:max_mach,0.85,unitless
aircraft:design:max_mach,0.85,unitless
aircraft:design:gross_mass,874099,lbm
aircraft:design:range,7750,NM
mission:landing:initial_velocity,140,ft/s
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ aircraft:wing:thickness_to_chord_reference,0.11,unitless
aircraft:wing:ultimate_load_factor,3.75,unitless
aircraft:wing:var_sweep_mass_penalty,0.0,unitless
aircraft:wing:wetted_area_scaler,1.0,unitless
mission:constraints:max_mach,0.85,unitless
aircraft:design:max_mach,0.85,unitless
aircraft:design:gross_mass,874099,lbm
aircraft:design:range,7750,NM
mission:landing:initial_velocity,140,ft/s
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ aircraft:wing:ultimate_load_factor,3.75,unitless
aircraft:wing:var_sweep_mass_penalty,0.0,unitless
aircraft:wing:wetted_area,2396.56,ft**2
aircraft:wing:wetted_area_scaler,1.0,unitless
mission:constraints:max_mach,0.785,unitless
aircraft:design:max_mach,0.785,unitless
mission:landing:lift_coefficient_max,3.0,unitless
mission:takeoff:fuel_mass,577.0,lbm
mission:takeoff:lift_coefficient_max,2.0,unitless
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ aircraft:wing:ultimate_load_factor,3.75,unitless
aircraft:wing:var_sweep_mass_penalty,0.0,unitless
aircraft:wing:wetted_area,2423.02,ft**2
aircraft:wing:wetted_area_scaler,1.0,unitless
mission:constraints:max_mach,0.82,unitless
aircraft:design:max_mach,0.82,unitless
mission:landing:lift_coefficient_max,3.0,unitless
mission:takeoff:fuel_mass,659.0,lbm
mission:takeoff:lift_coefficient_max,2.0,unitless
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ aircraft:wing:ultimate_load_factor,3.75,unitless
aircraft:wing:var_sweep_mass_penalty,0.0,unitless
aircraft:wing:wetted_area,2423.02,ft**2
aircraft:wing:wetted_area_scaler,1.0,unitless
mission:constraints:max_mach,0.82,unitless
aircraft:design:max_mach,0.82,unitless
mission:landing:lift_coefficient_max,3.0,unitless
mission:takeoff:fuel_mass,659.0,lbm
mission:takeoff:lift_coefficient_max,2.0,unitless
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ aircraft:wing:ultimate_load_factor,3.75,unitless
aircraft:wing:var_sweep_mass_penalty,0.0,unitless
aircraft:wing:wetted_area,2423.02,ft**2
aircraft:wing:wetted_area_scaler,1.0,unitless
mission:constraints:max_mach,0.82,unitless
aircraft:design:max_mach,0.82,unitless
mission:landing:lift_coefficient_max,3.0,unitless
mission:takeoff:fuel_mass,577.0,lbm
mission:takeoff:lift_coefficient_max,2.0,unitless
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ aircraft:wing:ultimate_load_factor,3.75,unitless
aircraft:hydraulics:system_pressure,5000,psi

# Design mission
mission:constraints:max_mach,0.785,unitless
aircraft:design:max_mach,0.785,unitless
aircraft:design:gross_mass,130000,lbm
aircraft:design:range,1906,NM
aircraft:design:cruise_mach,0.72,unitless
Expand Down
6 changes: 3 additions & 3 deletions aviary/subsystems/aerodynamics/flops_based/premission_aero.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def __init__(self, **kwargs):

def initialize(self):
add_aviary_option(self, Aircraft.Wing.AIRFOIL_TECHNOLOGY)
add_aviary_option(self, Mission.Constraints.MAX_MACH)
add_aviary_option(self, Aircraft.Design.MAX_MACH)

def setup(self):
# Aircraft design inputs
Expand All @@ -45,7 +45,7 @@ def setup_partials(self):

def compute(self, inputs, outputs):
AITEK = self.options[Aircraft.Wing.AIRFOIL_TECHNOLOGY]
VMAX = self.options[Mission.Constraints.MAX_MACH]
VMAX = self.options[Aircraft.Design.MAX_MACH]

AR, CAM, SW25, TC = inputs.values()

Expand Down Expand Up @@ -87,7 +87,7 @@ def compute(self, inputs, outputs):

def compute_partials(self, inputs, partials):
AITEK = self.options[Aircraft.Wing.AIRFOIL_TECHNOLOGY]
VMAX = self.options[Mission.Constraints.MAX_MACH]
VMAX = self.options[Aircraft.Design.MAX_MACH]

AR, CAM, SW25, TC = inputs.values()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def test_derivs_supersonic1(self):

options = {}
options[Aircraft.Wing.AIRFOIL_TECHNOLOGY] = 1.0
options[Mission.Constraints.MAX_MACH] = 1.2
options[Aircraft.Design.MAX_MACH] = 1.2

model.add_subsystem(
'design',
Expand Down Expand Up @@ -49,7 +49,7 @@ def test_derivs_subsonic1(self):

options = {}
options[Aircraft.Wing.AIRFOIL_TECHNOLOGY] = 1.0
options[Mission.Constraints.MAX_MACH] = 0.9
options[Aircraft.Design.MAX_MACH] = 0.9

model.add_subsystem(
'design',
Expand Down Expand Up @@ -80,7 +80,7 @@ def test_derivs_supersonic2(self):

options = {}
options[Aircraft.Wing.AIRFOIL_TECHNOLOGY] = 1.0
options[Mission.Constraints.MAX_MACH] = 1.2
options[Aircraft.Design.MAX_MACH] = 1.2

model.add_subsystem(
'design',
Expand Down Expand Up @@ -111,7 +111,7 @@ def test_derivs_subsonic2(self):

options = {}
options[Aircraft.Wing.AIRFOIL_TECHNOLOGY] = 1.0
options[Mission.Constraints.MAX_MACH] = 0.9
options[Aircraft.Design.MAX_MACH] = 0.9

model.add_subsystem(
'design',
Expand Down
6 changes: 3 additions & 3 deletions aviary/subsystems/mass/flops_based/air_conditioning.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class TransportAirCondMass(om.ExplicitComponent):

def initialize(self):
add_aviary_option(self, Aircraft.CrewPayload.Design.NUM_PASSENGERS)
add_aviary_option(self, Mission.Constraints.MAX_MACH)
add_aviary_option(self, Aircraft.Design.MAX_MACH)

def setup(self):
add_aviary_input(self, Aircraft.AirConditioning.MASS_SCALER, units='unitless')
Expand All @@ -34,7 +34,7 @@ def compute(self, inputs, outputs, discrete_inputs=None, discrete_outputs=None):
avionics_wt = inputs[Aircraft.Avionics.MASS] * GRAV_ENGLISH_LBM
height = inputs[Aircraft.Fuselage.MAX_HEIGHT]
planform = inputs[Aircraft.Fuselage.PLANFORM_AREA]
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]

outputs[Aircraft.AirConditioning.MASS] = (
((3.2 * (planform * height) ** 0.6 + 9 * pax**0.83) * max_mach + 0.075 * avionics_wt)
Expand All @@ -49,7 +49,7 @@ def compute_partials(self, inputs, J):
avionics_wt = inputs[Aircraft.Avionics.MASS] * GRAV_ENGLISH_LBM
height = inputs[Aircraft.Fuselage.MAX_HEIGHT]
planform = inputs[Aircraft.Fuselage.PLANFORM_AREA]
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]

planform_exp = planform**0.6
height_exp = height**0.6
Expand Down
6 changes: 3 additions & 3 deletions aviary/subsystems/mass/flops_based/fuel_system.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class TransportFuelSystemMass(om.ExplicitComponent):

def initialize(self):
add_aviary_option(self, Aircraft.Propulsion.TOTAL_NUM_ENGINES)
add_aviary_option(self, Mission.Constraints.MAX_MACH)
add_aviary_option(self, Aircraft.Design.MAX_MACH)

def setup(self):
add_aviary_input(self, Aircraft.Fuel.FUEL_SYSTEM_MASS_SCALER, units='unitless')
Expand All @@ -31,7 +31,7 @@ def compute(self, inputs, outputs):
capacity = inputs[Aircraft.Fuel.MAX_CAPACITY_MASS]
num_eng = self.options[Aircraft.Propulsion.TOTAL_NUM_ENGINES]
num_eng_fact = distributed_engine_count_factor(num_eng)
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]

outputs[Aircraft.Fuel.FUEL_SYSTEM_MASS] = (
1.07 * capacity**0.58 * num_eng_fact**0.43 * max_mach**0.34 * scaler
Expand All @@ -42,7 +42,7 @@ def compute_partials(self, inputs, J):
capacity = inputs[Aircraft.Fuel.MAX_CAPACITY_MASS]
num_eng = self.options[Aircraft.Propulsion.TOTAL_NUM_ENGINES]
num_eng_fact = distributed_engine_count_factor(num_eng)
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]

J[Aircraft.Fuel.FUEL_SYSTEM_MASS, Aircraft.Fuel.FUEL_SYSTEM_MASS_SCALER] = (
1.07 * capacity**0.58 * num_eng_fact**0.43 * max_mach**0.34 / GRAV_ENGLISH_LBM
Expand Down
6 changes: 3 additions & 3 deletions aviary/subsystems/mass/flops_based/hydraulics.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class TransportHydraulicsGroupMass(om.ExplicitComponent):
def initialize(self):
add_aviary_option(self, Aircraft.Propulsion.TOTAL_NUM_FUSELAGE_ENGINES)
add_aviary_option(self, Aircraft.Propulsion.TOTAL_NUM_WING_ENGINES)
add_aviary_option(self, Mission.Constraints.MAX_MACH)
add_aviary_option(self, Aircraft.Design.MAX_MACH)

def setup(self):
add_aviary_input(self, Aircraft.Fuselage.PLANFORM_AREA, units='ft**2')
Expand All @@ -43,7 +43,7 @@ def compute(self, inputs, outputs, discrete_inputs=None, discrete_outputs=None):
scaler = inputs[Aircraft.Hydraulics.MASS_SCALER]
area = inputs[Aircraft.Wing.AREA]
var_sweep = inputs[Aircraft.Wing.VAR_SWEEP_MASS_PENALTY]
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]

if sys_press <= 0:
# No hydraulic system (e.g. small electric UAVs): nothing to size.
Expand Down Expand Up @@ -72,7 +72,7 @@ def compute_partials(self, inputs, J):
scaler = inputs[Aircraft.Hydraulics.MASS_SCALER]
area = inputs[Aircraft.Wing.AREA]
var_sweep = inputs[Aircraft.Wing.VAR_SWEEP_MASS_PENALTY]
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]

term1 = planform + 0.27 * area
term2 = 1.0 + 0.03 * num_wing_eng_fact + 0.05 * num_fuse_eng_fact
Expand Down
6 changes: 3 additions & 3 deletions aviary/subsystems/mass/flops_based/instruments.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def initialize(self):
add_aviary_option(self, Aircraft.CrewPayload.NUM_FLIGHT_CREW)
add_aviary_option(self, Aircraft.Propulsion.TOTAL_NUM_FUSELAGE_ENGINES)
add_aviary_option(self, Aircraft.Propulsion.TOTAL_NUM_WING_ENGINES)
add_aviary_option(self, Mission.Constraints.MAX_MACH)
add_aviary_option(self, Aircraft.Design.MAX_MACH)

def setup(self):
add_aviary_input(self, Aircraft.Fuselage.PLANFORM_AREA, units='ft**2')
Expand All @@ -37,7 +37,7 @@ def compute(self, inputs, outputs):
num_fuse_eng_fact = distributed_engine_count_factor(num_fuse_eng)

fuse_area = inputs[Aircraft.Fuselage.PLANFORM_AREA]
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]
mass_scaler = inputs[Aircraft.Instruments.MASS_SCALER]

instrument_weight = (
Expand All @@ -57,7 +57,7 @@ def compute_partials(self, inputs, J):
num_fuse_eng_fact = distributed_engine_count_factor(num_fuse_eng)

fuse_area = inputs[Aircraft.Fuselage.PLANFORM_AREA]
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]
mass_scaler = inputs[Aircraft.Instruments.MASS_SCALER]

fact = 10.0 + 2.5 * num_crew + num_wing_eng_fact + 1.5 * num_fuse_eng_fact
Expand Down
6 changes: 3 additions & 3 deletions aviary/subsystems/mass/flops_based/passenger_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def initialize(self):
add_aviary_option(self, Aircraft.CrewPayload.Design.NUM_BUSINESS_CLASS)
add_aviary_option(self, Aircraft.CrewPayload.Design.NUM_FIRST_CLASS)
add_aviary_option(self, Aircraft.CrewPayload.Design.NUM_ECONOMY_CLASS)
add_aviary_option(self, Mission.Constraints.MAX_MACH)
add_aviary_option(self, Aircraft.Design.MAX_MACH)

def setup(self):
add_aviary_input(self, Aircraft.CrewPayload.PASSENGER_SERVICE_MASS_SCALER, units='unitless')
Expand All @@ -38,7 +38,7 @@ def compute(self, inputs, outputs, discrete_inputs=None, discrete_outputs=None):
economy_class_count = self.options[Aircraft.CrewPayload.Design.NUM_ECONOMY_CLASS]

design_range = inputs[Aircraft.Design.RANGE]
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]

passenger_service_mass_scaler = inputs[Aircraft.CrewPayload.PASSENGER_SERVICE_MASS_SCALER]

Expand All @@ -57,7 +57,7 @@ def compute_partials(self, inputs, J, discrete_inputs=None):
economy_class_count = self.options[Aircraft.CrewPayload.Design.NUM_ECONOMY_CLASS]

design_range = inputs[Aircraft.Design.RANGE]
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]

passenger_service_mass_scaler = inputs[Aircraft.CrewPayload.PASSENGER_SERVICE_MASS_SCALER]

Expand Down
6 changes: 3 additions & 3 deletions aviary/subsystems/mass/flops_based/starter.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class TransportStarterMass(om.ExplicitComponent):
def initialize(self):
add_aviary_option(self, Aircraft.Engine.NUM_ENGINES)
add_aviary_option(self, Aircraft.Propulsion.TOTAL_NUM_ENGINES)
add_aviary_option(self, Mission.Constraints.MAX_MACH)
add_aviary_option(self, Aircraft.Design.MAX_MACH)

def setup(self):
num_engine_type = len(self.options[Aircraft.Engine.NUM_ENGINES])
Expand All @@ -39,7 +39,7 @@ def setup_partials(self):
def compute(self, inputs, outputs):
total_engines = self.options[Aircraft.Propulsion.TOTAL_NUM_ENGINES]
num_engines = self.options[Aircraft.Engine.NUM_ENGINES]
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]

d_nacelle = inputs[Aircraft.Nacelle.AVG_DIAMETER]
num_engines_factor = distributed_engine_count_factor(total_engines)
Expand All @@ -57,7 +57,7 @@ def compute(self, inputs, outputs):
def compute_partials(self, inputs, J):
total_engines = self.options[Aircraft.Propulsion.TOTAL_NUM_ENGINES]
num_engines = self.options[Aircraft.Engine.NUM_ENGINES]
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]

d_nacelle = inputs[Aircraft.Nacelle.AVG_DIAMETER]
eng_count_factor = distributed_engine_count_factor(total_engines)
Expand Down
6 changes: 3 additions & 3 deletions aviary/subsystems/mass/flops_based/surface_controls.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class SurfaceControlMass(om.ExplicitComponent):
"""

def initialize(self):
add_aviary_option(self, Mission.Constraints.MAX_MACH)
add_aviary_option(self, Aircraft.Design.MAX_MACH)

def setup(self):
add_aviary_input(self, Aircraft.Wing.SURFACE_CONTROL_MASS_SCALER, units='unitless')
Expand All @@ -31,7 +31,7 @@ def setup(self):

def compute(self, inputs, outputs):
scaler = inputs[Aircraft.Wing.SURFACE_CONTROL_MASS_SCALER]
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]
gross_weight = inputs[Aircraft.Design.GROSS_MASS] * GRAV_ENGLISH_LBM
flap_ratio = inputs[Aircraft.Wing.CONTROL_SURFACE_AREA_RATIO]
wing_area = inputs[Aircraft.Wing.AREA]
Expand All @@ -48,7 +48,7 @@ def compute(self, inputs, outputs):

def compute_partials(self, inputs, J):
scaler = inputs[Aircraft.Wing.SURFACE_CONTROL_MASS_SCALER]
max_mach = self.options[Mission.Constraints.MAX_MACH]
max_mach = self.options[Aircraft.Design.MAX_MACH]
gross_weight = inputs[Aircraft.Design.GROSS_MASS] * GRAV_ENGLISH_LBM
flap_ratio = inputs[Aircraft.Wing.CONTROL_SURFACE_AREA_RATIO]
wing_area = inputs[Aircraft.Wing.AREA]
Expand Down
Loading
Loading