Standardize required altitude rate naming
Desired capability or behavior.
Summary of Issue
In some places in Aviary, we have multiple names for effectively the same thing: required_altitude_rate and roc_at_toc.
Pick one name -- probably the former as verbosity is helpful -- and use it everywhere.
Issue Type
- [ ] Bug
- [ ] Enhancement
- [x] Code Cleanup
- [ ] Docs
- [ ] Miscellaneous
Is your feature request related to a problem? Please describe.
Thinking more about this now, this is slightly more complex than just renaming. I'll put my thoughts here.
GASP- and FLOPS-based missions handle rate of climb at top of climb differently. Aviary currently has no constraint on the GASP side but it exists in the input decks. FLOPS-based has required_altitude_rate come in at the phase_info level. This is valid for any phase and is enforced as a path constraint across the whole phase, not just climb.
We might as well rework this so that:
- the required altitude rate is available to be enforced anywhere, not just a phase called
climb - it's handled in the same way for all types of missions with a constraint at the
add_design_variables()method level frommethods_for_level2.py - to do this, we'd need to compute
ALTITUDE_RATE_MAXas part of the GASP equations of motion, which is not currently the case
Associated Bug Report
No response
To calculate ALTITUDE_RATE_MAX we need supporting information:
Dynamic.Mission.THRUST_MAX_TOTAL,Dynamic.Mission.VELOCITY=TASDynamic.Mission.VELOCITY_RATE=TAS_rateDynamic.Mission.MASS,Dynamic.Mission.DRAG.
Functions are already defined in FLOPS for calculating SpecificEnergyRate() and AltitudeRate()
These functions should be moved out of the flops_based folder and into a generic ODE folder.
Reusing these functions means changes will be made to ODE rather than EOMs
GASP based EOMs do not currently use THRUST_MAX_TOTAL. However, this value is calculated in PropulsionSum() which is fed to PropulsionMission() which is instantiated by PropulsionBuilderBase(). Thus, THRUST_MAX_TOTAL should be available to Climb_EOM, Descent_EOM, and Flight_Path_EOM. Other EOMs don't have any access to THRUST_MAX_TOTAL including: Accel, Ascent, Groundroll, and Rotation.
GASP based EOMs use the term TAS instead of Dynamic.Mission.VELOCITY and TAS_rate instead of Dynamic.Mission.VELOCITY_RATE. We should consider consolidating these terms.
Some of GASP EOMs have TAS_rate set to zero (target_tas_rate=0) but this should not be a problem. However, we should make sure not to simplify the equations in case TAS is not set to zero at a later time. These include Climb and Descent. All other EOMs calculate TAS_rate: accel, ascent, flight_path, ground_roll, rotation,