-
Tobias Weckenmann authoredTobias Weckenmann authored
Software architecture {#softwarearchitecture}
Software Architecture Overview
The software architecture is structured into various modules and packages, each handling specific task. Below is a description of the main components (some classes, interfaces etc. are left out to keep it understandable for now - for more information see the class diagram or the source code):
- classes:
-
propulsionDesign is like the "coordinator" responsible for the overall propulsion system design including initialize, run, update, report and save (inherits from
Module
class from moduleBasics). These include e.g. method selection function for each disciplines -
Propulsion represents a generic propulsion system defining the detailed attributes and functionalities like setter and getter for e.g. dimensions (
template
class parameterized byEnergyCarrier
). -
Turbofan and Turboprop specializes engine type specific attributes and functions like
bypass_ratio()
for a turbofan (inherits fromPropulsion
class)
-
propulsionDesign is like the "coordinator" responsible for the overall propulsion system design including initialize, run, update, report and save (inherits from
- domains:
- report manages the generation of plots and HTML reports from the propulsion_design data
- design includes the strategies for engine designer and propulsion integrator into the aircraft, covering different propulsion types and configurations.
- geometry includes the strategies for nacelle designer and pylon designer.
- mass includes the strategies for mass analyzer
- io manages the in- and outputs for the acXML and engineXML (the XML structure changed in the past and this ensures that it is compatible with all versions)
- packages/libraries:
- moduleBasics provides the basis structure for the modular approach of the UNICADO tools. The tools are intended to follow the Strategy Design Pattern to execute at different fidelity levels (more information see libraries)
- interfaces:
- propulsionStrategy populates the Strategy Design Pattern for propulsion_design including the template and the specification methods.
Some additional words on the propulsionStrategy:
As you might also see in the class diagram, the core of it is the function operator()
for specific engine types to allow the engine
object to be used as functions. This object is, depending on the user settings, based on the propulsion type classes (e.g. Turbofan<Kerosene>
). As also shown in @ref propulsion.md, the type is combined with 3 "building blocks"
- powertrain: Way the power is generated from the source: turbo, electric, fuel_cell
- type: Type of main thrust generator: fan or prop
- energy_carrier: kerosene, liquid_hydrogen, battery (handled over IDs)
So, if you want to use different combinations in UNICADO, you need to make sure that they are properly handled throughout the strategy!
Class Diagram {#classdiagram}
Here is an overview how the module is structured: