Skip to content
60 changes: 36 additions & 24 deletions aviary/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,51 +11,42 @@
# TODO: don't rename things here, do it in the entire codebase
# TODO: when documenting methods and classes, make sure to include documentation (printing of docstrings) for everything that's imported in this API
# TODO: remove overload prototype
# TODO: import examples once we settle on those
# TODO: import this in all user-facing files
# TODO: import and use the aviary api in all user-facing files rather than individual imports


###################
# General Imports #
###################

from aviary.variable_info.variables import Aircraft, Mission, Dynamic, Settings
from aviary.variable_info.options import get_option_defaults, is_option
from aviary.variable_info.options import is_option
from aviary.utils.develop_metadata import add_meta_data, update_meta_data
from aviary.variable_info.variable_meta_data import CoreMetaData
from aviary.variable_info.functions import (
add_aviary_input,
add_aviary_output,
add_aviary_option,
get_units,
override_aviary_vars,
setup_model_options,
setup_trajectory_params,
)
from aviary.utils.merge_hierarchies import merge_hierarchies
from aviary.utils.merge_variable_metadata import merge_meta_data
from aviary.utils.named_values import NamedValues, get_keys, get_items, get_values
from aviary.utils.named_values import NamedValues
from aviary.utils.aviary_values import AviaryValues
from aviary.utils.csv_data_file import read_data_file, write_data_file
from aviary.utils.data_interpolator_builder import build_data_interpolator
from aviary.variable_info.enums import (

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Enums might be useful in here because users import them for their phase_info.

@jkirk5 jkirk5 Apr 29, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They are still there! See the next added line (import *) - I assumed users will want ALL enums, and automatically add them as we create more, although if that is not true we can revert (if some are intended to be developer only)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, they are! yeah, we probably want them all.

AlphaModes,
EquationsOfMotion,
FlapType,
GASPEngineType,
LegacyCode,
ProblemType,
SpeedType,
Verbosity,
)
from aviary.variable_info.enums import *
from aviary.models.missions.two_dof_default import phase_info as default_2DOF_phase_info
from aviary.models.missions.energy_state_default import (
phase_info as default_energy_state_phase_info,
)
from aviary.interface.run_aviary import run_aviary
from aviary.core.aviary_problem import AviaryProblem, reload_aviary_problem

# Converters
from aviary.utils.engine_deck_conversion import convert_engine_deck
from aviary.utils.fortran_to_aviary import fortran_to_aviary
from aviary.utils.aero_table_conversion import convert_aero_table

from aviary.utils.functions import (
get_path,
set_aviary_initial_values,
Expand All @@ -69,8 +60,6 @@
GRAV_ENGLISH_LBM,
GRAV_METRIC_FLOPS,
GRAV_METRIC_GASP,
MU_LANDING,
MU_TAKEOFF,
PSLS_PSF,
RADIUS_EARTH_METRIC,
RHO_SEA_LEVEL_ENGLISH,
Expand All @@ -79,23 +68,31 @@
)
from aviary.subsystems.test.subsystem_tester import (
TestSubsystemBuilder,
skipIfMissingDependencies,
)
from aviary.subsystems.propulsion.utils import build_engine_deck

###################
# Level 3 Imports #
###################
# Model Setup
from aviary.variable_info.functions import (
override_aviary_vars,
setup_model_options,
setup_trajectory_params,
)

# Miscellaneous
from aviary.subsystems.premission import CorePreMission
from aviary.subsystems.subsystem_builder import SubsystemBuilder
from aviary.utils.process_input_decks import create_vehicle

# Preprocessors
from aviary.utils.preprocessors import (
preprocess_crewpayload,
preprocess_options,
preprocess_crewpayload,
preprocess_fuel_capacities,
preprocess_propulsion,
)
from aviary.utils.process_input_decks import create_vehicle

# ODEs
# TODO: check and see if this works with both sides, or just GASP
Expand All @@ -112,13 +109,12 @@
)
from aviary.mission.two_dof.ode.two_dof_ode import TwoDOFODE
from aviary.mission.two_dof.ode.accel_ode import AccelODE as TwoDOFAccelerationODE
from aviary.mission.two_dof.ode.breguet_cruise_ode import BreguetCruiseODE
from aviary.mission.two_dof.ode.breguet_cruise_ode import BreguetCruiseODE, ElectricBreguetCruiseODE
from aviary.mission.two_dof.ode.flight_ode import FlightODE as TwoDOFFlightODE
from aviary.mission.two_dof.ode.takeoff_ode import TakeOffODE as TwoDOFTakeOffODE
from aviary.mission.two_dof.ode.landing_ode import LandingSegment as TwoDOFSimplifiedLanding
from aviary.mission.two_dof.ode.taxi_ode import TaxiSegment as AnalyticTaxi


# Phase builders
from aviary.mission.phase_builder import PhaseBuilder

Expand Down Expand Up @@ -160,6 +156,10 @@
from aviary.mission.two_dof.phases.accel_phase import AccelPhase as TwoDOFAccelerationPhase
from aviary.mission.two_dof.phases.flight_phase import FlightPhase as TwoDOFFlightPhase
from aviary.mission.two_dof.phases.takeoff_phase import TakeoffPhase as TwoDOFTakeoffPhase
from aviary.mission.two_dof.phases.breguet_cruise_phase import (
BreguetCruisePhase,
ElectricCruisePhase,
)

# Trajectory builders
from aviary.mission.energy_state.phases.detailed_landing_phases import (
Expand All @@ -183,12 +183,21 @@
# Atmosphere
from aviary.subsystems.atmosphere.atmosphere import Atmosphere

# Energy
from aviary.subsystems.energy.battery_builder import BatteryBuilder

# Geometry
from aviary.subsystems.geometry.geometry_builder import GeometryBuilder, CoreGeometryBuilder

# Mass
from aviary.subsystems.mass.mass_builder import MassBuilder, CoreMassBuilder

# Performance
from aviary.subsystems.performance.performance_builder import (
PerformanceBuilder,
CorePerformanceBuilder,
)

# Propulsion
from aviary.subsystems.propulsion.engine_deck import EngineDeck
from aviary.subsystems.propulsion.engine_model import EngineModel
Expand All @@ -198,3 +207,6 @@
CorePropulsionBuilder,
)
from aviary.subsystems.propulsion.turboprop_model import TurbopropModel
from aviary.subsystems.propulsion.gearbox.gearbox_builder import GearboxBuilder
from aviary.subsystems.propulsion.motor.motor_builder import MotorBuilder
from aviary.subsystems.propulsion.propeller.propeller_builder import PropellerBuilder
6 changes: 3 additions & 3 deletions aviary/core/aviary_problem.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
from aviary.utils.named_values import NamedValues
from aviary.variable_info.enums import EquationsOfMotion, LegacyCode, ProblemType, Verbosity
from aviary.variable_info.functions import setup_model_options
from aviary.variable_info.variable_meta_data import _MetaData as BaseMetaData
from aviary.variable_info.variable_meta_data import CoreMetaData
from aviary.variable_info.variables import Aircraft, Dynamic, Mission, Settings

FLOPS = LegacyCode.FLOPS
Expand Down Expand Up @@ -77,7 +77,7 @@ def __init__(
self,
problem_type: ProblemType = None,
verbosity=None,
meta_data=BaseMetaData.copy(),
meta_data=CoreMetaData.copy(),
**kwargs,
):
# Modify OpenMDAO's default_reports for this session.
Expand Down Expand Up @@ -2127,7 +2127,7 @@ def _read_sizing_json(json_filename, meta_data, verbosity=Verbosity.BRIEF):


def reload_aviary_problem(
filename, phase_info=None, metadata=BaseMetaData.copy(), verbosity=Verbosity.QUIET
filename, phase_info=None, metadata=CoreMetaData.copy(), verbosity=Verbosity.QUIET
):
"""
Loads a previously sized Aviary model and returns an AviaryProblem for that model.
Expand Down
8 changes: 4 additions & 4 deletions aviary/docs/examples_unreviewed/deconstructed_example.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@
"from aviary.utils.aviary_values import AviaryValues\n",
"from aviary.variable_info.enums import Verbosity\n",
"from aviary.variable_info.functions import setup_model_options, setup_trajectory_params\n",
"from aviary.variable_info.variable_meta_data import _MetaData as BaseMetaData\n",
"from aviary.variable_info.variable_meta_data import CoreMetaData\n",
"from aviary.variable_info.variables import Aircraft, Dynamic, Mission\n",
"\n",
"\n",
Expand Down Expand Up @@ -211,7 +211,7 @@
" 'mass': mass,\n",
" 'aerodynamics': aerodynamics,\n",
"}\n",
"prob.meta_data = BaseMetaData.copy()\n",
"prob.meta_data = CoreMetaData.copy()\n",
"\n",
"prob.model.add_subsystem(\n",
" 'pre_mission',\n",
Expand Down Expand Up @@ -990,7 +990,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"display_name": "aviary",
"language": "python",
"name": "python3"
},
Expand All @@ -1004,7 +1004,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.3"
"version": "3.13.12"
}
},
"nbformat": 4,
Expand Down
9 changes: 3 additions & 6 deletions aviary/docs/user_guide/fundamentals/data_files.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -151,8 +151,7 @@
"# print out comments\n",
"print(read_comments)\n",
"# print out variable name, units, and values\n",
"items = av.get_items(read_data)\n",
"for item in items:\n",
"for item in read_data.items():\n",
" print(f'{item[0]}, units: {item[1][1]}')\n",
" print(item[1][0])"
]
Expand Down Expand Up @@ -181,8 +180,7 @@
"# print out comments\n",
"print(read_comments)\n",
"# print out variable name, units, and values\n",
"items = av.get_items(read_data)\n",
"for item in items:\n",
"for item in read_data.items():\n",
" print(f'{item[0]}, units: {item[1][1]}')\n",
" print(item[1][0])"
]
Expand Down Expand Up @@ -233,8 +231,7 @@
"# print out comments\n",
"print(read_comments)\n",
"# print out variable name, units, and values\n",
"items = av.get_items(read_data)\n",
"for item in items:\n",
"for item in read_data.items():\n",
" print(f'{item[0]}, units: {item[1][1]}')\n",
" print(item[1][0])"
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -341,8 +341,6 @@
" transcription=transcription_descent,\n",
")\n",
"\n",
"av.preprocess_crewpayload(aviary_inputs)\n",
"\n",
"# Upstream pre-mission analysis for aero\n",
"prob.model.add_subsystem(\n",
" 'pre_mission',\n",
Expand Down Expand Up @@ -557,7 +555,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"display_name": "aviary",
"language": "python",
"name": "python3"
},
Expand All @@ -571,7 +569,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.3"
"version": "3.13.12"
}
},
"nbformat": 4,
Expand Down
6 changes: 3 additions & 3 deletions aviary/interface/test/test_shape_by_conn.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,21 +27,21 @@ class Wing(Aircraft.Wing):
CG1 = 'aircraft:wing:cg1'
CG2 = 'aircraft:wing:cg2'

ExtendedMetaData = CoreMetaData
ExtendedMetaData = deepcopy(CoreMetaData)
add_meta_data(
ExtendedAircraft.Wing.CG1,
units='ft',
desc='CG of the wing.',
default_value=1.0,
meta_data=CoreMetaData,
meta_data=ExtendedMetaData,
)

add_meta_data(
ExtendedAircraft.Wing.CG2,
units='ft',
desc='CG of the wing.',
default_value=1.0,
meta_data=CoreMetaData,
meta_data=ExtendedMetaData,
)

class SBC(om.ExplicitComponent):
Expand Down
4 changes: 2 additions & 2 deletions aviary/mission/base_ode.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from aviary.subsystems.atmosphere.atmosphere import Atmosphere
from aviary.utils.aviary_values import AviaryValues
from aviary.utils.functions import promote_aircraft_and_mission_vars
from aviary.variable_info.variable_meta_data import _MetaData
from aviary.variable_info.variable_meta_data import CoreMetaData


#
Expand Down Expand Up @@ -46,7 +46,7 @@ def initialize(self):
)
self.options.declare(
'meta_data',
default=_MetaData,
default=CoreMetaData,
desc='metadata associated with the variables to be passed into the ODE',
)

Expand Down
4 changes: 2 additions & 2 deletions aviary/mission/energy_state/phases/detailed_landing_phases.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
from aviary.utils.aviary_values import AviaryValues
from aviary.variable_info.enums import LegacyCode
from aviary.variable_info.functions import setup_trajectory_params
from aviary.variable_info.variable_meta_data import _MetaData as BaseMetaData
from aviary.variable_info.variable_meta_data import CoreMetaData
from aviary.variable_info.variables import Dynamic, Mission


Expand Down Expand Up @@ -1474,7 +1474,7 @@ def build_trajectory(
# We need to create parameters for just the inputs we have.
# They mostly come from the low-speed aero subsystem.

aero = CoreAerodynamicsBuilder('aerodynamics', BaseMetaData, LegacyCode('FLOPS'))
aero = CoreAerodynamicsBuilder('aerodynamics', CoreMetaData, LegacyCode('FLOPS'))

subsystem_options = {'method': 'low_speed'}

Expand Down
4 changes: 2 additions & 2 deletions aviary/mission/energy_state/phases/detailed_takeoff_phases.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
from aviary.utils.aviary_values import AviaryValues
from aviary.variable_info.enums import LegacyCode
from aviary.variable_info.functions import setup_trajectory_params
from aviary.variable_info.variable_meta_data import _MetaData as BaseMetaData
from aviary.variable_info.variable_meta_data import CoreMetaData
from aviary.variable_info.variables import Dynamic, Mission


Expand Down Expand Up @@ -2994,7 +2994,7 @@ def build_trajectory(
# We need to create parameters for just the inputs we have.
# They mostly come from the low-speed aero subsystem.

aero = CoreAerodynamicsBuilder('aerodynamics', BaseMetaData, LegacyCode('FLOPS'))
aero = CoreAerodynamicsBuilder('aerodynamics', CoreMetaData, LegacyCode('FLOPS'))

subsystem_options = {'method': 'low_speed'}

Expand Down
4 changes: 2 additions & 2 deletions aviary/mission/flight_phase_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from aviary.utils.aviary_options_dict import AviaryOptionsDictionary
from aviary.utils.aviary_values import AviaryValues
from aviary.variable_info.enums import EquationsOfMotion, ThrottleAllocation, Transcription
from aviary.variable_info.variable_meta_data import _MetaData
from aviary.variable_info.variable_meta_data import CoreMetaData
from aviary.variable_info.variables import Aircraft, Dynamic

# energy-state and Solved2DOF use this builder
Expand Down Expand Up @@ -176,7 +176,7 @@ class FlightPhaseBase(PhaseBuilder):
default_ode_class = EnergyStateODE
default_options_class = FlightPhaseOptions

default_meta_data = _MetaData
default_meta_data = CoreMetaData

def build_phase(
self,
Expand Down
Loading
Loading