The `_engine_` library serves as the core analysis tool for engine data within UNICADO. It provides access to all possible engine data for every tool in UNICADO. The data can be fixed for an engine or at a given operating point. The data output depends on various factors such as the scale factor and power and bleed offtakes from the engine. The primary objective is to establish a **single source of truth** for engine data retrieval.
## Role in `propulsionDesign`
Within the `propulsionDesign` module:
## Role in `propulsion_design`
Within the `propulsion_design` module:
- Engines for the aircraft are selected, and their respective files are copied to the engine directory.
- The **scale factor** is calculated, determining how the engine's thrust is adjusted to meet aircraft requirements (refer to the `propulsionDesign` documentation).
- The **scale factor** is calculated, determining how the engine's thrust is adjusted to meet aircraft requirements (refer to the `propulsion_design` documentation).
The `engine` library applies this scale factor, ensuring that aircraft parameters can be accessed without further manual adjustments.
...
...
@@ -18,7 +18,7 @@ The engine data is stored in:
-**Altitude**
-**Engine power setting**
> **Note:** The data in these files is **raw and unscaled**. The only modification made in `propulsionDesign` is to the fuel flow CSV file, reflecting user-defined efficiency improvements.
> **Note:** The data in these files is **raw and unscaled**. The only modification made in `propulsion_design` is to the fuel flow CSV file, reflecting user-defined efficiency improvements.
## Functionality of the `engine` Library
The library is responsible for:
...
...
@@ -30,7 +30,7 @@ The library is responsible for:
### Factors Affecting Engine Performance
The `engine` library incorporates the following factors, either by default or as optional parameters:
-**Scale factor** from `propulsionDesign`
-**Scale factor** from `propulsion_design`
-**Temperature variations** (non-ISA standard conditions)
> <path_engine_database>...</path_engine_database> <!-- Path to the database with existing engine decks -->
> <technology_factors> <!-- Improve or decrease performance -->
> <engine_mass>...</engine_mass>
> <nacelle_mass>...</nacelle_mass>
> <pylon_mass>...</pylon_mass>
> <engine_efficiency>...</engine_efficiency>
> </technology_factors>
> <repositioning>...</repositioning> <!-- Shifting the engine center position -->
>
> <propulsion ID="..."> <!-- ID specific settings -->
> <Empirical_Settings>...</Empirical_Settings>
> <Rubber_Method_Settings>
> <engine_model_name>...</engine_model_name>
> </Rubber_Method_Settings>
> <nacelle_geometry>...</nacelle_geometry>
> <pylon_geometry>...</pylon_geometry>
> </propulsion>
> </program_settings>
> ```
With the settings the propulsion design calculation can be started.
The main steps of the methodology are shown in the following figure:

...
...
@@ -15,10 +63,50 @@ With this the engines are designed one by one with the following approach:
The outputs are the engine xml file and the different deck values as csv files. They are saved in thr projects directory. Further output is saved in the aircraft xml because other tools of the UNICADO tool chain need it. An example of this output is shown below.
{html: width=1200}
> The following settings define propulsion-specific parameters in the `aircraftXML` file:
>
> ```xml
> <propulsion ID="0"> <!-- Define the propulsion system -->
> <model>...</model> <!-- Name of the engine -->
> <position> <!-- Position in global coordinates -->
> <scale_factor>...</scale_factor> <!-- Scale factor for this engine -->
> <bucket_point> <!-- Performance adjustments -->
> <thrust>...</thrust>
> <tsfc>...</tsfc> <!-- Thrust specific fuel consumption -->
> </bucket_point>
> <pylon>...</pylon> <!-- Pylon specific data -->
> <nacelle>...</nacelle> <!-- Nacelle details -->
> </propulsion>
> ```
Readout of the engine data can and should only be done using the engine library!
The engine data is provided in two formats. The engine xml file and the csv files that contain the engine deck.
The engine xml has values that are constant for a given engine:
> The following structure defines the engine design conditions in the `EngineDataFile`:
>
> ```xml
> <EngineDataFile>
> <EngineDesignCondition Desc="Flight Condition for creating the bucket curve">
> <flightAltitude Desc="Flight altitude for bucket curve" Unit="ft">35000</flightAltitude>
> <flightMachNumber Desc="Mach number for bucket curve" Unit="-">0.78</flightMachNumber>
> <thrust Desc="Thrust at design point, ISA (value from source)" Unit="kN">19</thrust>
> <SLST Desc="Sea level static thrust measured at SL, Mach 0, ISA (value from source)" Unit="kN">120.43</SLST>
> <MCT Desc="Maximum continuous thrust measured at SL, Mach 0, ISA (value from source)" Unit="kN">117.18</MCT>
> </EngineDesignCondition>
> </EngineDataFile>
> ```
The csv files contain engine data that depends on the operating point. The operating point is defined as
- Flight Mach number
...
...
@@ -30,4 +118,17 @@ An example is shown in the following figure.

The data is readout by the engine library which has an efficient parser for the deck values using a linear interpolation between two existing deck values. Penalties, like shaft power offtake or bleed air offtake, are applied using the engine library. The scale factor is applied according to the exact scaling mechanism for the value needed.
The description of the engine library can be found [here](../../../libraries/engine/).
The detailed description of the engine library can be found [here](../../../libraries/engine/).
## Scaling Principle
The underlying principle is the scaling of the mass flow with constant velocities. The following scaling is done using the scale factor (SF):