Aviary icon indicating copy to clipboard operation
Aviary copied to clipboard

Fixes to allow use of external engine models & multiple engines using L2 interface

Open jkirk5 opened this issue 1 year ago • 0 comments

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_models variable in AviaryValues to an attribute in propulsion builder
  • This allows the engine_builders parameter in AviaryProblem to 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

jkirk5 avatar May 15 '24 14:05 jkirk5