Aviary
Aviary copied to clipboard
Fixes to allow use of external engine models & multiple engines using L2 interface
NOTE: This PR builds on #260 and requires that PR to be merged first
Summary
The old engine_builder parameter in methods for L2 was storing engines provided there with the external subsystems to allow for methods such as get_controls(), get_parameters(), etc. to be called. This broke with recent propulsion changes, and did not support multiple engine types. This PR makes the following changes:
- Engine model list was moved from undocumented
engine_modelsvariable in AviaryValues to an attribute in propulsion builder - This allows the
engine_buildersparameter inAviaryProblemto now correctly adds engine models to the propulsion subsystem - In turn this enables the propulsion subsystem builder to collect method calls such as
get_controls()for all provided engines - The default subsystems created in default phase info files was removed (as we now needs engine information to build propulsion subsystem). New helper functions were created to help set up tests
- All tests were updated with interface changes
Known issues, out of scope for now:
- The method of collecting all the parameters, controls, bus vars, etc. can break in edge cases of multiengine, where if two engines offer the same variable but with different values or options, only one will be kept
- build_engine_deck() only creates a single engine deck object from the provided options - in the future this should support building multiple engines if provided options are vectorized