From b7b526e67fad61e147663d7aecba5943be1900b7 Mon Sep 17 00:00:00 2001
From: tobi <tobias.weckenmann@tum.de>
Date: Thu, 6 Feb 2025 12:52:47 +0100
Subject: [PATCH 1/8] Some updates for the docu

---
 .../sizing/propulsion_design/changelog.md     |   5 +-
 .../engineering_principles.md                 |  79 +++---
 .../propulsion_design/getting_started.md      | 248 ++++++++++++++++++
 .../sizing/propulsion_design/index.md         |  14 +-
 .../software_architecture.md                  |   7 +-
 5 files changed, 295 insertions(+), 58 deletions(-)
 create mode 100644 docs/documentation/sizing/propulsion_design/getting_started.md

diff --git a/docs/documentation/sizing/propulsion_design/changelog.md b/docs/documentation/sizing/propulsion_design/changelog.md
index d6f5738..7403ff4 100644
--- a/docs/documentation/sizing/propulsion_design/changelog.md
+++ b/docs/documentation/sizing/propulsion_design/changelog.md
@@ -14,12 +14,11 @@ The following changes are introduced:
 ### Bugfixes
 During the development of this release the following bugs were found and fixed:
 
-- When designing a *rubber* engine, the engine length was scaled incorrectly. The correct formula with ${scale_{engine}}^{0.4} $ is now implemented.
+- When designing a *rubber* engine, the engine length was scaled incorrectly. The correct formula with \f${scale_{engine}}^{0.4} \f$ is now implemented.
 
 ### Changes in the CSR designs
 The implemented changes and bugfixes lead to the following changes in the results of the CSR designs.
-!!! note 
-    Only changes which exceed a 10 % change are listed.
+@note Only changes which exceed a 10 % change are listed.
 
 #### CSR-02
 |Parameter|Changed introduced by|Old Value|New Value|Unit|
diff --git a/docs/documentation/sizing/propulsion_design/engineering_principles.md b/docs/documentation/sizing/propulsion_design/engineering_principles.md
index 0a8220b..4368d58 100644
--- a/docs/documentation/sizing/propulsion_design/engineering_principles.md
+++ b/docs/documentation/sizing/propulsion_design/engineering_principles.md
@@ -2,12 +2,11 @@
 # Engineering principles {#engineeringprinciples}
 
 Designing the propulsion with this tool includes different engineering disciplines. Here a brief explanation (more information in their respective sections):
-
-- [Engine designer](#enginedesigner): calculates the performance of one individual engine based on the required thrust.
-- [Propulsor integrator](#propulsionintegrator): places the engine acc. to the user's settings.
-- [Nacelle designer](#nacelledesigner): calculates the nacelle geometry.
-- [Pylon designer](#pylondesigner): calculates the pylon geometry.
-- [Mass analyzer](#massanalyzer): calculates the mass properties (center of gravity, mass, and inertia) of engine, nacelle, and pylon.
+- [Engine designer](#enginedesigner): Calculates the performance of one individual engine based on the required thrust.
+- [Propulsor integrator](#propulsionintegrator): Places the engine acc. to the user's settings.
+- [Nacelle designer](#nacelledesigner): Calculates the nacelle geometry.
+- [Pylon designer](#pylondesigner): Calculates the pylon geometry.
+- [Mass analyzer](#massanalyzer): Calculates the mass properties (center of gravity, mass, and inertia) of engine, nacelle, and pylon.
 
 For these five disciplines, you can choose different **methods** (or fidelities) of calculating their output. Here is an overview of the current implemented methods (details see sections):
 | Discipline          | Methods                                                           |
@@ -32,49 +31,49 @@ The **engine designer** bases its principle on the common modelling practice usi
 - an _engine deck_ (operating point dependent)
 - a _scale factor_
 
-The _dataset_ (also called _EngineXML_) includes parameter which are independent of the flight condition such as outer engine dimensions.
+The _dataset_ (also called _EngineXML_) includes parameter which are independent of the flight condition such as outer engine dimensions or the mass of the unscaled engine.
+
+The three-dimensional _engine deck_ contain engine performance data for different values of altitude \f$h\f$, Mach number \f$Ma\f$ and low-pressure engine spool speed \f$N1\f$. The most important performance parameter are thrust and fuel/energy flow. In UNICADO, the deck is split into multiple CSV files. The figure shows an example with values for thrust in kilo newton. The first block contains data for \f$N1=1\f$ for \f$Ma=0...0.9\f$ and \f$h=0...14000\f$. The second block below is for \f$N1=0.95\f$.
+![](img/deck_example_thrust.svg)
 
-The three-dimensional _engine deck_ contain engine performance data for different values of altitude $h$, Mach number $Ma$ and low-pressure engine spool speed $N1$. The most important performance parameter are thrust and fuel/energy flow. In UNICADO, the deck is split into multiple CSV files. The figure shows an example with values for thrust in kilo newton. The first block contains data for $N1=1$ for $Ma=0...0.9$ and $h=0...14000$. The second block below is for $N1=0.95$.
-![](figures/deck_example_thrust.svg)
+@note Detailed information on required dataset and deck data will be updated in near future. 
 
-!!! note 
-    Detailed information on required dataset and deck data will be updated in near future. 
+The _scale factor_ is necessary for the rubber method because we use the concept of a so-called _rubber engine_. That means that (depending on the method, see later) we create or assume an engine deck and provide one _scale factor_ to obtain all engine data acc. to the required thrust the engine shall provide. The figure visualized the concept:
+![](img/scale_factor.svg)
 
-The _scale factor_ is necessary because (as conceptual aircraft designer), we use the concept of a so-called _rubber engine_. That means that (depending on the method, see later) we create or assume an engine deck and provide one _scale factor_ to obtain all engine data acc. to the required thrust the engine shall provide. The figure visualized the concept:
-![](figures/scale_factor.svg)
+@attention &rarr; **As mentioned and highlighted in the figure**, there is ONE _scale factor_ **BUT** multiple exponents which differ depending on which property you want to use. E.g. for the diameter, the exponent is \f$0.5\f$ and for the mass its \f$0.4\f$. **So important to remember** that whenever you want to use engine data, you need to access it via the `engine` library. In the following, a brief explanation of the scaling concept will be given - however details are given in the library documentation.
 
-@attention &rarr; **As mentioned and highlighted in the figure**, there is ONE _scale factor_ **BUT** multiple exponents which differ depending on which property you want to use. E.g. for the diameter, the exponent is $0.5$ and for the mass its $0.4$. **So important to remember** that whenever you want to use engine data, you need to access it via the `engine` library. In the following, a brief explanation of the scaling concept will be given - however details are given in the library documentation.
+So, the scaling is based on continuity principle assuming that the operating of the inner engine is constant (commonly known station numbering; assuming no extra pressure drop).
 
-So, the scaling is based on continuity principle assuming that the operating condition is constant (commonly known station numbering; assuming no pressure drop).
+\f$[ 
+    T = \dot m \cdot (V_9 - V_0) 
+]\f$
 
-$ T = \dot m \cdot (V_9 - V_0) $
+Therefore, thrust \f$T\f$ is proportional to the mass flow \f$\dot m\f$, which is linearly related to the cross-sectional area \f$A\f$ of the engine. 
 
-Therefore, thrust $T$ is proportional to the mass flow $\dot m$, which is related to the cross-sectional area $A$ of the engine. 
+\f$ \dot m = \rho \cdot V \cdot A = \rho \cdot V \cdot \pi \frac{d}{2}^2 \f$
 
-$ \dot m = \rho \cdot V \cdot A = \rho \cdot V \cdot \pi \frac{d}{2}^2 $
+Because area \f$A\f$ is proportional to the square of the diameter \f$d\f$ , it follows that the diameter should be proportional to the square root of the scale factor. 
 
-Because area $A$ is proportional to the square of the diameter $d$ , it follows that the diameter should be proportional to the square root of the scale factor. 
+\f$ d_{new} = d_{ref} \cdot ( \frac{T_{new}}{T_{ref}} )^{0.5} \f$
 
-$ d_{new} = d_{ref} \cdot ( \frac{T_{new}}{T_{ref}} )^{0.5} $
+An exemplary simplified calculation (data from the V2527-A5): the current engine provides \f$127.27~kN\f$ as sea level static thrust, but for the design only \f$100~kN\f$ are needed. The scaling factor would be \f$0.7857\f$. Assuming an initial diameter \f$2~m\f$, the new diameter would be \f$1.773~m\f$ with the scaling factor of \f$(0.7857)^{0.5} = 0.8864\f$. 
 
-An exemplary simplified calculation (data from the V2527-A5): the current engine provides $127.27~kN$ as sea level static thrust, but for the design only $100~kN$ are needed. The scaling factor would be $0.7857$. Assuming an initial diameter $2~m$, the new diameter would be $1.773~m$ with the scaling factor of $(0.7857)^{0.5} = 0.8864$. 
+The general scaling is therefore a linear scaling of the thrust. The fuel flow is scaled in the same way leading to a scaling approach with constant TSFC. 
 
-So, again, always access the engine data via the `engine` library to ensure that you have the correctly scaled data 🙂
+So, again, the engine data is always accessed via the `engine` library to ensure that you have the correctly scaled data for every value. This is valid for both the non operating condition dependant variables and the values that are directly read from the deck -csv values. 
 
-!!! note
-    Actually, the sea level static thrust is not at $N1=1$ if you compare the dataset for this engine (for 110.31kN around $N1=0.95$). So the scaling factor will be slightly lower.
+@note Actually, the sea level static thrust is not at \f$N1=1\f$ if you compare the dataset for this engine (for 110.31kN around \f$N1=0.95\f$). So the scaling factor will be slightly lower.
 
 ### Methods description
 The **engine designer** includes different methods which create/use this deck in various ways.
-
-- *empirical*: the initial deck is calculated based on emipirical equations
-- *rubber*: (most common approach) based on an existing deck (usually created with GasTurb), the deck is "rubberized"
+- *empirical*: the initial deck is calculated based on empirical equations.
+- *rubber*: (most common approach) based on an existing deck (usually created with GasTurb), the deck is "rubberized".
 - *propulsionsystem*: with the help of the library `propulsionsystem`, different architecture can be defined and a deck created (for more information see documentation of the library)
 
-!!! note
-    *empirical* and *propulsionsystem* is in preparation - not implemented yet!
+@note *empirical* and *propulsionsystem* is in preparation - not implemented yet!
 
-For all these methods, the approach of using the _scale factor_ is the same (see explaination [here](#generalprinciples)). A deck is either first created or assumed and then data is drawn with the `engine` library with the scaling approach. 
+For all these methods, the approach of using the _scale factor_ is the same (see explanation [here](#generalprinciples)). A deck is either first created or assumed and then data is drawn with the `engine` library with the scaling approach. 
 
 ## Propulsion integrator {#propulsionintegrator}
 Additionally to calculating the engine performance parameter, the engine has to be placed on the aircraft. The **propulsion integrator** uses the user settings from the aircraft exchange file - the following needs to be defined:
@@ -101,7 +100,7 @@ This method includes multiple empirical functions for different propulsion integ
 
 For detailed information, it is referred to the thesis.
 
-!!! note the implementation include currently Turbofan Kerosene only
+@note the implementation include currently Turbofan Kerosene only
 
 ## Nacelle designer {#nacelledesigner}
 After the integration, the nacelle geometry is defined (however its actually independent of the position, so the order could be changed). 
@@ -109,7 +108,6 @@ After the integration, the nacelle geometry is defined (however its actually ind
 ### Methods description 
 
 For the **nacelle designer**, only one method is implemented:
-
  - *default* uses the `aircraftGeometry2` library 
  
 The library uses the `.dat` file defined in the _configXML_ to extrude a polygon in different sections. These sections including the origin, width, height and its profile are saved in the _acXML_. With that, every other tool can "rebuild" the geometry using the same library.
@@ -118,8 +116,7 @@ In the current implemented method, there is no differentiation between short and
 
 Keep in mind that the library defines a surface without a thickness. For more information, it is referred to the library. 
 
-!!!note
-    The implementation include currently Turbofan Kerosene only
+@note the implementation include currently Turbofan Kerosene only
 
 ## Pylon designer {#pylondesigner}
 The pylon is the structural component to connect the engine to the aircraft. 
@@ -127,24 +124,21 @@ The pylon is the structural component to connect the engine to the aircraft.
 ### Methods description
 
 For the **pylon designer**, only one method is implemented:
-
  - *default* uses the `aircraftGeometry2` library 
  
-In the current method, the mounting is attached to the beginning to the nacelle to the leading edge of the wing. The length is the engine length which is extruded to the wing. the profile is, likewise for the nacelle, defined in the _configXML_.
+In the current method, the mounting is attached to the beginning to the nacelle to the leading edge of the wing. The length is the engine length which is extruded to the wing. The profile is, likewise for the nacelle, defined in the _configXML_.
 
-![Engine Mount](figures/engine_mount.svg)
+![Engine Mount](img/engine_mount.svg)
 
 
-!!!note 
-    the implementation include currently Turbofan Kerosene only
+@note the implementation include currently Turbofan Kerosene only
 
 ## Mass analyzer {#massanalyzer}
-Lastly, the mass properties for engine, nacelle and pylon are calculated separate for center of gravity, mass and inertia. 
+Lastly, the mass properties for engine, nacelle and pylon are calculated separately for center of gravity, mass and inertia. 
 
 ### Methods description
 
 Here, only one method is implemented:
-
  - *default* using: 
     - for engine
         - CG: calculating local CG assuming a circular cylinder
@@ -155,6 +149,5 @@ Here, only one method is implemented:
         - mass: empirical estimation
         - inertia: wrt. CG with `aircraftGeometry2`lib
 
-!!!note 
-    the implementation include currently Turbofan Kerosene only
+@note the implementation include currently Turbofan Kerosene only
 
diff --git a/docs/documentation/sizing/propulsion_design/getting_started.md b/docs/documentation/sizing/propulsion_design/getting_started.md
new file mode 100644
index 0000000..64f7b18
--- /dev/null
+++ b/docs/documentation/sizing/propulsion_design/getting_started.md
@@ -0,0 +1,248 @@
+# Getting started {#getting-started}
+This guide will show you the basic usage of **propulsion_design**. Following steps are necessary (if you are new to UNICADO check out the [settings and outputs](#settingsandoutputs) first!)
+
+## Step-by-step
+
+It is assumed that you have the `UNICADO Package` installed including the executables and the engine database. In case you are a developer, you need to build the tool first (see [build instructions on UNICADO website](https://unicado.pages.rwth-aachen.de/unicado.gitlab.io/developer/build/cpp/)).
+
+1. Create a dummy `aircraft_exchange_file` (minimal required input see [here](#acXML))
+2. Fill out the configuration file - change at least:
+    - in `control_settings` 
+        - `aircraft_exchange_file_name` and `aircraft_exchange_file_directory` to your respective settings
+        - `console_output` at least to `mode_1`
+        - `plot_output` to false (or define `inkscape_path` and `gnuplot_path`)
+    - in `program_settings`
+        - `path_engine_database` to your respective settings
+        - `propulsion/nacelle/profile` and `pylon/profile` to `propulsion_design/test/stubs` directory
+3. Open terminal and run **propulsion_design**
+
+Following will happen:
+- you see output in the console window
+- a HTML report is created in the directory of `aircraft_exchange_file_directory`
+- results are saved in the `/aircraft_exchange_file/component_design/propulsion`
+
+@note The dummy does not include geometry data for e.g. fuselage or wing. Therefore the positioning of the engine will not work and warnings are expected in the output.
+
+## Settings and outputs {#settingsandoutputs}
+Generally, we use 2 files to set or configure in UNICADO:
+- the aircraft exchange file (or _acXML_) includes
+    - data related inputs (e.g. thrust-to-weight, offtakes or type of engine)
+    - data related outputs (e.g. engine position)
+- the configuration file `propulsion_design_conf.xml` (also _configXML_) includes
+    - control settings (e.g. enable/disable generating plots)
+    - program settings (e.g. set technology factors or methods)
+
+### Aircraft exchange file
+@note _acXML_ is an exchange file - we agreed on that only data will be saved as output which is needed by another tool!
+
+**Inputs**: 
+Following is needed from the _acXML_:
+1) the total thrust-to-weight-ratio as well as the MTOM, 
+2) the thrust share of the individual engine,
+2) the average system off-takes of the engines,
+3) the user settings of the propulsion architecture.
+
+Naturally, the propulsion need an assumption for thrust or power to be designed. In the first iteration in UNICADO, the requirement is set via the tool _initialSizing_. It is then updated in _constraint_analysis_ in every loop to assure that the thrust that is fitted onto the aircraft assures enough thrust in all required flight stages. For this, **propulsion_design** currently assumes:
+
+The sea level static thrust \f$ T_0 \f$ is given by:
+
+\f$
+T_0 = \frac{T}{W} \cdot MTOM
+\f$
+
+Where:
+- \f$ T_0 \f$ is the sea level static thrust.
+- \f$ \frac{T}{W} \f$  is the thrust-to-weight ratio (specified as `/aircraft_exchange_file/sizing_point/thrust_to_weight`).
+- \f$ MTOM \f$ is the maximum takeoff mass (specified as `/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_takeoff_mass`).
+
+@note This might change with new propulsion architectures!
+
+Not only the ratio of thrust to weight is read, but also the average system off-takes. In the current design of UNICADO, engine provide power for the systems and therefore the thrust specific energy/fuel consumption will increase. To include that, the nodes `average_bleed_air_demand` and `average_bleed_air_demand` in `/aircraft_exchange_file/component_design/systems/specific/`are read to show the influence of these offtakes on the bucket curve (is set to default values if not existing).
+
+Additionally, user settings need to be defined. In the node `/aircraft_exchange_file/requirements_and_specifications/design_specification`, both `energy_carriers` and `propulsion` need to be filled out (for more information on the variables, please read the description in the _acXML_).
+
+```plaintext
+Energy Carriers
+|- Energy Carrier (ID=0)
+|  |- Type
+Propulsion
+|- Propulsor (ID=0)
+|  |- Powertrain
+|  |- Type
+|  |- Position
+|  |  |- Parent Component
+|  |  |- X
+|  |  |- Y
+|  |  |- Z
+|  |- Energy Carrier ID
+|  |- Thrust Share
+```
+Let's assume you want to design an aircraft with 5 engine - 2 on each side of the wing and one in the empennage. Additionally, you want to use 3 energy carrier: hydrogen, kerosene and battery-electric.
+For that, you need to define 3 energy carriers with each a type with \f$ID=[0,1,2]\f$. Then you create 5 propulsor nodes with \f$ID=[0,...,4]\f$ and assign them each an a powertrain, type, ..., and thrust share. E.g. Engine 0 shall be a kerosene-powered turbofan in the empennage with a thrust share of \f$10\%\f$. Then it has the position with `parent_component=empennage`, `x=front`, `y=mid`, `z=in`. If the type of the energy carrier with ID=0 is set to kerosene, you need to assign `energy_carrier_id=0`. Also `powertrain=turbo`, `type=fan`, and `thrust_share=0.1`. Then Engine 1 could be a hydrogen-powered turboprop located under the left front inner wing with a thrust share of \f$25\%\f$. Then it has the position with `parent_component=wing`, `x=front`, `y=left`, `z=under`. If the type of the energy carrier with ID=1 is set to hydrogen, you need to assign `energy_carrier_id=1`. Also `powertrain=turbo`, `type=prop`, and `thrust_share=0.25`. The same procedure needs to be done for the other 3 engine.
+
+**Outputs**: The results are saved in the _acXML_ node `/aircraft_exchange_file/component_design/propulsion`. 
+
+```plaintext
+Propulsion
+|- Position
+|- Mass Properties
+|- Specific
+|  |- Propulsion (ID=0)
+|  |  |- Nacelle (ID=0)
+|  |  |  |- Origin
+|  |  |  |- Normal
+|  |  |  |- Mass Properties
+|  |  |  |- Sections
+|  |  |  |  |- Section (ID=0)
+|  |  |  |  |  |- Origin
+|  |  |  |  |  |- Width
+|  |  |  |  |  |- Height
+|  |  |  |  |  |- Profile
+|  |  |- Pylon
+|  |  |  |- Position
+|  |  |  |- Normal
+|  |  |  |- Mass Properties
+|  |  |  |- Sections
+|  |  |  |  |- Section (ID=0)
+|  |  |  |  |  |- Origin
+|  |  |  |  |  |- Chord Length
+|  |  |  |  |  |- Geometric Twist
+|  |  |  |  |  |- Profile
+|  |  |- Engine
+|  |  |  |- Engine Model
+|  |  |  |- Position
+|  |  |  |- Mass Properties
+|  |  |  |- Scale Factor
+|  |  |  |- Bucket Point
+|  |  |  |  |- Thrust
+|  |  |  |  |- TSFC
+
+```
+To shorten the visualization, the nodes `mass`, `inertia` and `center_of_gravity`in `mass_properties` are excluded. For more information, please read their description.
+
+### Configuration file
+
+The control settings are standardized in UNICADO and will not be described in detail here. The program settings are structured like this (descriptions are in the `propulsion_design_conf.xml`):
+```plaintext
+Program Settings
+|- Method
+|  |- Engine Designer
+|  |- Nacelle Designer
+|  |- Pylon Designer
+|  |- Propulsion Integrator
+|  |- Mass Analyzer
+|- Path Engine Database
+|- Technology Factors
+|  |- Engine Mass
+|  |- Nacelle Mass
+|  |- Pylon Mass
+|  |- Engine Efficiency
+|- Propulsion (ID=Default)
+|  |- Engine
+|  |  |- Empirical
+|  |  |  |- BPR
+|  |  |- Rubber
+|  |  |- GasTurb
+|  |- Nacelle
+|  |  |- Profile
+|  |- Pylon
+|  |  |- Profile
+|  |- Integration
+```
+You can choose the method for each discipline, the path for your engine data base, and different technology factors. To be highlighted, is the `Propulsion ID=Default` node. This is a default for all engines defined in the _acXML_ (see next paragraph). E.g. if you define 3 engines for an aircraft, both will use the same assumptions in the default setting. In case you want that the 3. engine is been calculated with e.g. another method, you can create a new `propulsion` node and assign the same `ID` value as set for the _acXML_ `ID`. 
+
+## Minimal required aircraft exchange file input {#acXML}
+
+```xml
+<aircraft_exchange_file>
+    <requirements_and_specifications>
+        <general description="General aircraft information">
+            <type description="Aircraft type">
+                <value>Test</value>
+            </type>
+            <model description="Model - Version">
+                <value>Test</value>
+            </model>
+        </general>
+        <design_specification description="Design specification">
+            <configuration description="Configuration information">
+                <configuration_type description="aircraft configuration: tube_and_wing / blended_wing_body">
+                    <value>tube_and_wing</value>
+                </configuration_type>
+            </configuration>
+            <energy_carriers description="Energy carriers information">
+                <energy_carrier ID="0" description="One specific energy carrier">
+                    <type description="Energy type: kerosene / liquid_hydrogen / battery / saf (for multifuel engine create new ID)">
+                        <value>kerosene</value>
+                    </type>
+                    <density description="Energy carrier density">
+                        <value>790</value>
+                        <unit>kg/m^3</unit>
+                        <lower_boundary>50</lower_boundary>
+                        <upper_boundary>1000</upper_boundary>
+                    </density>
+                </energy_carrier>
+            </energy_carriers>
+            <propulsion description="Propulsion information">
+                <propulsor ID="0" description="Information for specific propulsor">
+                    <powertrain description="Way the power is generated from the source: turbo, electric, fuel_cell">
+                        <value>turbo</value>
+                    </powertrain>
+                    <type description="Type of main thrust generator: fan or prop">
+                        <value>fan</value>
+                    </type>
+                    <position description="propulsor position (arrangement order acc to ID order)">
+                        <parent_component description="position on component: wing, fuselage, empennage">
+                            <value>wing</value>
+                        </parent_component>
+                        <x description="x-position (aircraft coordinate system): front or back">
+                            <value>front</value>
+                        </x>
+                        <y description="y position (aircraft coordinate system): left or right">
+                            <value>right</value>
+                        </y>
+                        <z description="z position (aircraft coordinate system): over, mid, under, in">
+                            <value>under</value>
+                        </z>
+                    </position>
+                    <energy_carrier_ID description="see energy carrier specification node">
+                        <value>0</value>
+                        <unit>1</unit>
+                        <lower_boundary>0</lower_boundary>
+                        <upper_boundary>5</upper_boundary>
+                    </energy_carrier_ID>
+                    <thrust_share description="Share of this thrust in relation to required aircraft thrust">
+                        <value>1</value>
+                        <unit>0</unit>
+                        <lower_boundary>0.0</lower_boundary>
+                        <upper_boundary>1.0</upper_boundary>
+                    </thrust_share>
+                </propulsor>
+            </propulsion>
+        </design_specification>
+    </requirements_and_specifications>
+    <sizing_point>
+        <thrust_to_weight description="Total thrust (kN) divided by maximum aircraft weight (kN)" tool_level="1">
+            <value>0.33</value>
+            <unit>1</unit>
+            <lower_boundary>0</lower_boundary>
+            <upper_boundary>1</upper_boundary>
+        </thrust_to_weight>
+    </sizing_point>
+    <analysis>
+        <masses_cg_inertia description="masses, cgs, inertias." tool_level="0">
+            <maximum_takeoff_mass description="MTOM">
+                <mass_properties description="maximum takeoff mass properties">
+                    <mass description="mass">
+                        <value>77000</value>
+                        <unit>kg</unit>
+                        <lower_boundary>0</lower_boundary>
+                        <upper_boundary>inf</upper_boundary>
+                    </mass>
+                </mass_properties>
+            </maximum_takeoff_mass>
+        </masses_cg_inertia>
+    </analysis>
+</aircraft_exchange_file>
+```
+The nodes `requirements_and_specifications\general` and `design_specification\configuration` are not needed by **propulsion_design**. However, the library _moduleBasics_ requires them.
\ No newline at end of file
diff --git a/docs/documentation/sizing/propulsion_design/index.md b/docs/documentation/sizing/propulsion_design/index.md
index 9caaff8..113b211 100644
--- a/docs/documentation/sizing/propulsion_design/index.md
+++ b/docs/documentation/sizing/propulsion_design/index.md
@@ -1,14 +1,13 @@
 # Introduction {#mainpage}
-The tool _propulsion_design_ is one of the core design tools in UNICADO. The overall goal is the design the propulsion based on... 
-
+The tool _propulsion_design_ is one of the core design tools in UNICADO. The overall goal is the design the propulsion system based on... 
 - the architecture (e.g. 2 turbofan at rear fuselage, 4 fuel cell prop engine over the front wing) set by the user and,
-- the total required thrust and system off-takes.
-This tool is exciting!🔥 because the propulsion is THE critical component providing the thrust or power, enabling to propel the aircraft forward and move through the skies.🌍
+- the total required thrust and system off-takes calculated within the aircraft design loop.
+This tool is exciting!🔥 because the propulsion is one of the critical components in the aircraft design loop. It provides the thrust or power, enabling powered flight of the aircraft letting it move through the skies.🌍
 
-To give you a general taste, here are a few illustrations of possible concepts.
-![](figures/different_engines.svg)
+There are different propulsion architectures for the aircraft conceptual design process. To give you a general taste, here are a few illustrations of possible concepts.
+![](img/different_engines.svg)
 
-The [getting started](getting_started.md) gives you a first insight in how to execute the tool and how it generally works. To understand how the tools works in detail, the documentation is split into a [engineering principles](engineering_principles.md) and a [software architecture](software_architecture.md) section. 
+The [getting started](getting_started.md) gives you a first insight in how to execute the tool and how it generally works. To understand how the tools works in more detail, the documentation is split into a [engineering principles](engineering_principles.md) and a [software architecture](software_architecture.md) section. 
 
 Prior to that, let's summarize what the tool can currently do and what is planned (terms like _method_ or _strategy_ will be explained in the sections):
 
@@ -22,4 +21,3 @@ Prior to that, let's summarize what the tool can currently do and what is planne
 (*) order: engine designer/ nacelle designer/ pylon designer/ propulsion integrator/ mass analyzer
 
 So let's get started!
-
diff --git a/docs/documentation/sizing/propulsion_design/software_architecture.md b/docs/documentation/sizing/propulsion_design/software_architecture.md
index 294c85b..3fed44e 100644
--- a/docs/documentation/sizing/propulsion_design/software_architecture.md
+++ b/docs/documentation/sizing/propulsion_design/software_architecture.md
@@ -2,7 +2,7 @@
 
 ## 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](figures/class_diagram.png) or the source code):
+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](img/class_diagram.png) 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
@@ -21,9 +21,8 @@ The software architecture is structured into various modules and packages, each
 
 Some additional words on the **propulsionStrategy**:
 
-As you might also see in the [class diagram](figures/class_diagram.png), the core of it is the functor `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"
+As you might also see in the [class diagram](img/class_diagram.png), the core of it is the functor `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)
 
@@ -32,4 +31,4 @@ So, if you want to use different combinations in UNICADO, you need to make sure
 ## Class Diagram {#classdiagram}
 Here is an overview how the module is structured:
 
-![](figures/class_diagram.png){html: width=1000}
+![](img/class_diagram.png){html: width=1000}
-- 
GitLab


From 8c57d83cc9651bf609a68c939ef8b4faebc3a394 Mon Sep 17 00:00:00 2001
From: tobi <tobias.weckenmann@tum.de>
Date: Thu, 6 Feb 2025 15:26:33 +0100
Subject: [PATCH 2/8] nnta ks

---
 .../sizing/propulsion_design/engineering_principles.md      | 6 +++---
 .../sizing/propulsion_design/getting_started.md             | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/docs/documentation/sizing/propulsion_design/engineering_principles.md b/docs/documentation/sizing/propulsion_design/engineering_principles.md
index 4368d58..7d710eb 100644
--- a/docs/documentation/sizing/propulsion_design/engineering_principles.md
+++ b/docs/documentation/sizing/propulsion_design/engineering_principles.md
@@ -1,7 +1,7 @@
 
 # Engineering principles {#engineeringprinciples}
 
-Designing the propulsion with this tool includes different engineering disciplines. Here a brief explanation (more information in their respective sections):
+Designing the propulsion with this tool includes different engineering disciplines. Here is a brief explanation (more information in their respective sections):
 - [Engine designer](#enginedesigner): Calculates the performance of one individual engine based on the required thrust.
 - [Propulsor integrator](#propulsionintegrator): Places the engine acc. to the user's settings.
 - [Nacelle designer](#nacelledesigner): Calculates the nacelle geometry.
@@ -61,7 +61,7 @@ An exemplary simplified calculation (data from the V2527-A5): the current engine
 
 The general scaling is therefore a linear scaling of the thrust. The fuel flow is scaled in the same way leading to a scaling approach with constant TSFC. 
 
-So, again, the engine data is always accessed via the `engine` library to ensure that you have the correctly scaled data for every value. This is valid for both the non operating condition dependant variables and the values that are directly read from the deck -csv values. 
+So, again, the engine data is always accessed via the `engine` library to ensure that you have the correctly scaled data for every value. This is valid for both the non operating condition dependent variables and the values that are directly read from the deck values. 
 
 @note Actually, the sea level static thrust is not at \f$N1=1\f$ if you compare the dataset for this engine (for 110.31kN around \f$N1=0.95\f$). So the scaling factor will be slightly lower.
 
@@ -73,7 +73,7 @@ The **engine designer** includes different methods which create/use this deck in
 
 @note *empirical* and *propulsionsystem* is in preparation - not implemented yet!
 
-For all these methods, the approach of using the _scale factor_ is the same (see explanation [here](#generalprinciples)). A deck is either first created or assumed and then data is drawn with the `engine` library with the scaling approach. 
+For these methods, the approach of using the _scale factor_ is the same (see explanation [here](#generalprinciples)). A deck is either first created or assumed and then data is drawn with the `engine` library with the scaling approach.
 
 ## Propulsion integrator {#propulsionintegrator}
 Additionally to calculating the engine performance parameter, the engine has to be placed on the aircraft. The **propulsion integrator** uses the user settings from the aircraft exchange file - the following needs to be defined:
diff --git a/docs/documentation/sizing/propulsion_design/getting_started.md b/docs/documentation/sizing/propulsion_design/getting_started.md
index 64f7b18..85c94f5 100644
--- a/docs/documentation/sizing/propulsion_design/getting_started.md
+++ b/docs/documentation/sizing/propulsion_design/getting_started.md
@@ -42,7 +42,7 @@ Following is needed from the _acXML_:
 2) the average system off-takes of the engines,
 3) the user settings of the propulsion architecture.
 
-Naturally, the propulsion need an assumption for thrust or power to be designed. In the first iteration in UNICADO, the requirement is set via the tool _initialSizing_. It is then updated in _constraint_analysis_ in every loop to assure that the thrust that is fitted onto the aircraft assures enough thrust in all required flight stages. For this, **propulsion_design** currently assumes:
+Naturally, the propulsion needs an assumption for thrust or power to be designed. In the first iteration in UNICADO, the requirement is set via the tool _initialSizing_. It is then updated in _constraint_analysis_ in every loop to assure that the thrust that is fitted onto the aircraft assures enough thrust in all required flight stages. For this, **propulsion_design** currently assumes:
 
 The sea level static thrust \f$ T_0 \f$ is given by:
 
-- 
GitLab


From 309ee37d57d2eb44e8d8e083c1b34a8488dd1e1e Mon Sep 17 00:00:00 2001
From: tobi <tobias.weckenmann@tum.de>
Date: Thu, 6 Feb 2025 16:09:37 +0100
Subject: [PATCH 3/8] leer

---
 .../engineering_principles.md                 | 68 +++++++++++--------
 .../propulsion_design/getting-started.md      | 19 +++---
 2 files changed, 49 insertions(+), 38 deletions(-)

diff --git a/docs/documentation/sizing/propulsion_design/engineering_principles.md b/docs/documentation/sizing/propulsion_design/engineering_principles.md
index 7d710eb..a337633 100644
--- a/docs/documentation/sizing/propulsion_design/engineering_principles.md
+++ b/docs/documentation/sizing/propulsion_design/engineering_principles.md
@@ -8,14 +8,17 @@ Designing the propulsion with this tool includes different engineering disciplin
 - [Pylon designer](#pylondesigner): Calculates the pylon geometry.
 - [Mass analyzer](#massanalyzer): Calculates the mass properties (center of gravity, mass, and inertia) of engine, nacelle, and pylon.
 
-For these five disciplines, you can choose different **methods** (or fidelities) of calculating their output. Here is an overview of the current implemented methods (details see sections):
-| Discipline          | Methods                                                           |
-|---------------------|-------------------------------------------------------------------|
-|Engine designer      | *Rubber* (*Empirical* and *PropulsionSystem* are in preparation)  |
-|Propulsor integrator | *Default*                                                         |
-|Nacelle designer     | *Default*                                                         |
-|Pylon designer       | *Default*                                                         |
-|Mass analyzer        | *Default*                                                         |
+For these five disciplines, you can choose different methods (or fidelities) of calculating their output. Here is an overview of the currently implemented methods (details in the sections):
+
+| Discipline              | Methods                                                           |
+|-------------------------|-------------------------------------------------------------------|
+| **Engine designer**      | *Rubber* (*Empirical* and *PropulsionSystem* are in preparation)  |
+| **Propulsor integrator** | *Default*                                                         |
+| **Nacelle designer**     | *Default*                                                         |
+| **Pylon designer**       | *Default*                                                         |
+| **Mass analyzer**        | *Default*                                                         |
+
+
 
 If you want to learn more about how to configure methods or generally the settings and outputs, go to the [getting started](getting_started.md).
 
@@ -33,7 +36,9 @@ The **engine designer** bases its principle on the common modelling practice usi
 
 The _dataset_ (also called _EngineXML_) includes parameter which are independent of the flight condition such as outer engine dimensions or the mass of the unscaled engine.
 
-The three-dimensional _engine deck_ contain engine performance data for different values of altitude \f$h\f$, Mach number \f$Ma\f$ and low-pressure engine spool speed \f$N1\f$. The most important performance parameter are thrust and fuel/energy flow. In UNICADO, the deck is split into multiple CSV files. The figure shows an example with values for thrust in kilo newton. The first block contains data for \f$N1=1\f$ for \f$Ma=0...0.9\f$ and \f$h=0...14000\f$. The second block below is for \f$N1=0.95\f$.
+The three-dimensional \textit{engine deck} contains engine performance data for different values of altitude \( h \), Mach number \( M_a \), and low-pressure engine spool speed \( N_1 \).
+ The most important performance parameter are thrust and fuel/energy flow. In UNICADO, the deck is split into multiple CSV files. The figure shows an example with values for thrust in kilo newtons. The first block contains data for \( N_1 = 1 \) for \( M_a = 0 \ldots 0.9 \) and \( h = 0 \ldots 14000 \). The second block below is for \( N_1 = 0.95 \).
+
 ![](img/deck_example_thrust.svg)
 
 @note Detailed information on required dataset and deck data will be updated in near future. 
@@ -41,29 +46,34 @@ The three-dimensional _engine deck_ contain engine performance data for differen
 The _scale factor_ is necessary for the rubber method because we use the concept of a so-called _rubber engine_. That means that (depending on the method, see later) we create or assume an engine deck and provide one _scale factor_ to obtain all engine data acc. to the required thrust the engine shall provide. The figure visualized the concept:
 ![](img/scale_factor.svg)
 
-@attention &rarr; **As mentioned and highlighted in the figure**, there is ONE _scale factor_ **BUT** multiple exponents which differ depending on which property you want to use. E.g. for the diameter, the exponent is \f$0.5\f$ and for the mass its \f$0.4\f$. **So important to remember** that whenever you want to use engine data, you need to access it via the `engine` library. In the following, a brief explanation of the scaling concept will be given - however details are given in the library documentation.
+@attention &rarr; **As mentioned and highlighted in the figure**, there is ONE _scale factor_ **BUT** multiple exponents which differ depending on which property you want to use. E.g., for the diameter, the exponent is \( 0.5 \) and for the mass, its exponent is \( 0.4 \).
+ **So important to remember** that whenever you want to use engine data, you need to access it via the `engine` library. In the following, a brief explanation of the scaling concept will be given - however details are given in the library documentation.
 
 So, the scaling is based on continuity principle assuming that the operating of the inner engine is constant (commonly known station numbering; assuming no extra pressure drop).
 
-\f$[ 
-    T = \dot m \cdot (V_9 - V_0) 
-]\f$
+$T = \dot{m} \cdot (V_9 - V_0)$
 
-Therefore, thrust \f$T\f$ is proportional to the mass flow \f$\dot m\f$, which is linearly related to the cross-sectional area \f$A\f$ of the engine. 
+Therefore, thrust $T$ is proportional to the mass flow $\dot{m}$, which is linearly related to the cross-sectional area $A$ of the engine.
 
-\f$ \dot m = \rho \cdot V \cdot A = \rho \cdot V \cdot \pi \frac{d}{2}^2 \f$
+\[
+\dot{m} = \rho \cdot V \cdot A = \rho \cdot V \cdot \pi \frac{d}{2}^2
+\]
 
-Because area \f$A\f$ is proportional to the square of the diameter \f$d\f$ , it follows that the diameter should be proportional to the square root of the scale factor. 
+Because area $A$ is proportional to the square of the diameter $d$, it follows that the diameter should be proportional to the square root of the scale factor.  
 
-\f$ d_{new} = d_{ref} \cdot ( \frac{T_{new}}{T_{ref}} )^{0.5} \f$
+\[
+d_{\text{new}} = d_{\text{ref}} \cdot \left( \frac{T_{\text{new}}}{T_{\text{ref}}} \right)^{0.5}
+\]
+
+An exemplary simplified calculation (data from the V2527-A5): the current engine provides $127.27~\text{kN}$ as sea level static thrust, but for the design only $100~\text{kN}$ are needed. The scaling factor would be $0.7857$. Assuming an initial diameter $2~\text{m}$, the new diameter would be $1.773~\text{m}$ with the scaling factor of $(0.7857)^{0.5} = 0.8864$.
 
-An exemplary simplified calculation (data from the V2527-A5): the current engine provides \f$127.27~kN\f$ as sea level static thrust, but for the design only \f$100~kN\f$ are needed. The scaling factor would be \f$0.7857\f$. Assuming an initial diameter \f$2~m\f$, the new diameter would be \f$1.773~m\f$ with the scaling factor of \f$(0.7857)^{0.5} = 0.8864\f$. 
 
 The general scaling is therefore a linear scaling of the thrust. The fuel flow is scaled in the same way leading to a scaling approach with constant TSFC. 
 
 So, again, the engine data is always accessed via the `engine` library to ensure that you have the correctly scaled data for every value. This is valid for both the non operating condition dependent variables and the values that are directly read from the deck values. 
 
-@note Actually, the sea level static thrust is not at \f$N1=1\f$ if you compare the dataset for this engine (for 110.31kN around \f$N1=0.95\f$). So the scaling factor will be slightly lower.
+\textbf{Note:} Actually, the sea level static thrust is not at $N1=1$ if you compare the dataset for this engine (for $110.31~\text{kN}$ around $N1=0.95$). So the scaling factor will be slightly lower.
+
 
 ### Methods description
 The **engine designer** includes different methods which create/use this deck in various ways.
@@ -88,15 +98,17 @@ Here, currently only one method is implemented:
  - *default* is based on a thesis of RWTH Aachen \cite{Ata10}
 
 This method includes multiple empirical functions for different propulsion integration. These are the options that are currently implemented:
-| Parent    | Lateral | Longitudinal | Vertical |
-|-----------|---------|--------------|----------|
-| Wing      | Right   | Front        | Under    |
-| Wing      | Left    | Front        | Under    |
-| Wing      | Right   | Front        | Over     |
-| Wing      | Left    | Front        | Over     |
-| Fuselage  | Right   | Rear         | Mid      |
-| Fuselage  | Left    | Rear         | Mid      |
-| Empennage | Mid     | Front        | In       |
+
+| Parent     | Lateral | Longitudinal | Vertical |
+|------------|---------|--------------|----------|
+| Wing       | Right   | Front        | Under    |
+| Wing       | Left    | Front        | Under    |
+| Wing       | Right   | Front        | Over     |
+| Wing       | Left    | Front        | Over     |
+| Fuselage   | Right   | Rear         | Mid      |
+| Fuselage   | Left    | Rear         | Mid      |
+| Empennage  | Mid     | Front        | In       |
+
 
 For detailed information, it is referred to the thesis.
 
diff --git a/docs/documentation/sizing/propulsion_design/getting-started.md b/docs/documentation/sizing/propulsion_design/getting-started.md
index fafd391..7ee24ca 100644
--- a/docs/documentation/sizing/propulsion_design/getting-started.md
+++ b/docs/documentation/sizing/propulsion_design/getting-started.md
@@ -17,7 +17,6 @@ It is assumed that you have the `UNICADO Package` installed including the execut
 3. Open terminal and run **propulsion_design**
 
 Following will happen:
-
 - you see output in the console window
 - a HTML report is created in the directory of `aircraft_exchange_file_directory` (no plots of engine if they are turned off)
 - results are saved in the `/aircraft_exchange_file/component_design/propulsion`
@@ -29,7 +28,7 @@ Following will happen:
 Generally, we use 2 files to set or configure in UNICADO:
 
 - the aircraft exchange file (or _acXML_) includes
-    - data related inputs (e.g. thrust, offtakes or type of engine)
+    - data related inputs (e.g. thrust-to-weight ratio, MTOM, average bleed and shaft offtakes or type of engine)
     - data related outputs (e.g. engine position)
 - the configuration file `propulsion_design_conf.xml` (also _configXML_) includes
     - control settings (e.g. enable/disable generating plots)
@@ -42,11 +41,11 @@ Generally, we use 2 files to set or configure in UNICADO:
 **Inputs**: 
 Following is needed from the _acXML_:
 
-1) the total required thrust, 
-2) the system off-takes,
-3) the user settings of the propulsion architecture
+1) the total required thrust using the thrust-to-weight ratio and MTOM,
+2) the average system off-takes for the bucket-curve,
+3) the user settings of the propulsion architecture.
 
-Naturally, the propulsion need an assumption for thrust or power to be designed. Currently, in UNICADO, the requirement is set via the tool _initialSizing_. Here, initial estimation based on the TLARs are calculated like the thrust-to-weight via an design chart or the maximum take-off mass based on regressions. For this, **propulsion_design** currently assumes:
+The propulsion design tool is based on the overall thrust or power the propulsion needs to be designed for. The thrust_share input divides the overall thrust to the single propulsors. In the first run of the UNICADO workflow, the tool _initialSizing_ estimates the thrust-to-weight-ratio for this. Afterwards, the tool _constraint_analysis_ updates the thrust to weight ratio by calculation the performance values using actual aircraft data. This assures the total thrust is sufficient to certification boundary conditions. With the thrust-to-weight ratio, which is calculated for the sea level static thrust, the propulsors are designed.
 
 The sea level static thrust $T_0$ is given by:
 
@@ -61,7 +60,7 @@ Where:
 !!! note
     This might change with new propulsion architectures!
 
-Not only the thrust is important, but also the system off-takes. Current engine provide power to the systems and therefore, the thrust specific consumption can increase. To include that, the nodes `average_bleed_air_demand` and `average_bleed_air_demand` in `/aircraft_exchange_file/component_design/systems/specific/`are necessary (is set to default values if not existing).
+The most important parameter is the thrust-to-weight-ratio. Another input are the average system off-takes. Current engined provide power to different systems and therefore, the thrust specific consumption will increase. To include that, the nodes `average_bleed_air_demand` and `average_bleed_air_demand` in `/aircraft_exchange_file/component_design/systems/specific/` are read (is set to default values if not existing).
 
 Additionally, the user settings need to be defined. In the node `/aircraft_exchange_file/requirements_and_specifications/design_specification`, both `energy_carriers` and `propulsion` need to be filled out (for more information on the variables, please read the description in the _acXML_).
 
@@ -82,8 +81,8 @@ Propulsion
 |  |- Energy Carrier ID
 |  |- Thrust Share
 ```
-Let's assume you want to design an aircraft with 5 engine - 2 on each side of the wing and one in the empennage. Additionally, you want to use 3 energy carrier: hydrogen, kerosene and battery-electric.
-For that, you need to define 3 energy carriers with each a type and a density with $ID=[0,1,2]$. Then you create 5 propulsor nodes with $ID=[0,...,4]$ and assign them each an a powertrain, type, ..., and thrust share. E.g. Engine 0 shall be a kerosene-powered turbofan in the empennage with a thrust share of $10\%$. Then it has the position with `parent_component=empennage`, `x=front`, `y=mid`, `z=in`. If the type of the energy carrier with ID=0 is set to kerosene, you need to assign `energy_carrier_id=0`. Also `powertrain=turbo`, `type=fan`, and `thrust_share=0.1`. Then Engine 1 could be a hydrogen-powered turboprop located under the left front inner wing with a thrust share of $25\%$. Then it has the position with `parent_component=wing`, `x=front`, `y=left`, `z=under`. If the type of the energy carrier with ID=1 is set to hydrogen, you need to assign `energy_carrier_id=1`. Also `powertrain=turbo`, `type=prop`, and `thrust_share=0.25`. The same procedure needs to be done for the other 3 engine.
+Let's assume you want to design an aircraft with 5 engine - 2 on each side of the wing and one in the empennage. Additionally, you want to use 3 energy carriers: hydrogen, kerosene and battery-electric.
+For that, you need to define 3 energy carriers with each a type and a density with $ID=[0,1,2]$. Then you create 5 propulsor nodes with $ID=[0,...,4]$ and assign them each a powertrain, type, ..., and thrust share. E.g. Engine 0 shall be a kerosene-powered turbofan in the empennage with a thrust share of $10\%$. Then it has the position with `parent_component=empennage`, `x=front`, `y=mid`, `z=in`. If the type of the energy carrier with ID=0 is set to kerosene, you need to assign `energy_carrier_id=0`. Also `powertrain=turbo`, `type=fan`, and `thrust_share=0.1`. Then Engine 1 could be a hydrogen-powered turboprop located under the left front inner wing with a thrust share of $25\%$. Then it has the position with `parent_component=wing`, `x=front`, `y=left`, `z=under`. If the type of the energy carrier with ID=1 is set to hydrogen, you need to assign `energy_carrier_id=1`. Also `powertrain=turbo`, `type=prop`, and `thrust_share=0.25`. The same procedure needs to be done for the other 3 engines.
 
 **Outputs**: The results are saved in the _acXML_ node `/aircraft_exchange_file/component_design/propulsion`. 
 
@@ -154,7 +153,7 @@ Program Settings
 |  |  |- Profile
 |  |- Integration
 ```
-You can choose the method for each discipline, the path for your engine data base, and different technology factors. To be highlighted, is the `Propulsion ID=Default` node. This is a default for all engines defined in the _acXML_ (see next paragraph). E.g. if you define 3 engines for an aircraft, both will use the same assumptions in the default setting. In case you want that the 3. engine is been calculated with e.g. another method, you can create a new `propulsion` node and assign the same `ID` value as set for the _acXML_ `ID`. 
+You can choose the method for each discipline, the path for your engine data base, and different technology factors. To be highlighted, is the `Propulsion ID=Default` node. This is a default for all engines defined in the _acXML_ (see next paragraph). E.g. if you define 3 engines for an aircraft, all will use the same assumptions in the default setting. In case you want that the 3. engine is been calculated with e.g. another method, you can create a new `propulsion` node and assign the same `ID` value as set for the _acXML_ `ID`. 
 
 ## Minimal required aircraft exchange file input {#acXML}
 
-- 
GitLab


From d944a20fbc2b0e2117c7f8979d7e9e4dcdbd05a3 Mon Sep 17 00:00:00 2001
From: tobi <tobias.weckenmann@tum.de>
Date: Thu, 6 Feb 2025 16:11:11 +0100
Subject: [PATCH 4/8] no m

---
 .../propulsion_design/getting_started.md      | 248 ------------------
 .../software_architecture.md                  |   2 +-
 2 files changed, 1 insertion(+), 249 deletions(-)
 delete mode 100644 docs/documentation/sizing/propulsion_design/getting_started.md

diff --git a/docs/documentation/sizing/propulsion_design/getting_started.md b/docs/documentation/sizing/propulsion_design/getting_started.md
deleted file mode 100644
index 85c94f5..0000000
--- a/docs/documentation/sizing/propulsion_design/getting_started.md
+++ /dev/null
@@ -1,248 +0,0 @@
-# Getting started {#getting-started}
-This guide will show you the basic usage of **propulsion_design**. Following steps are necessary (if you are new to UNICADO check out the [settings and outputs](#settingsandoutputs) first!)
-
-## Step-by-step
-
-It is assumed that you have the `UNICADO Package` installed including the executables and the engine database. In case you are a developer, you need to build the tool first (see [build instructions on UNICADO website](https://unicado.pages.rwth-aachen.de/unicado.gitlab.io/developer/build/cpp/)).
-
-1. Create a dummy `aircraft_exchange_file` (minimal required input see [here](#acXML))
-2. Fill out the configuration file - change at least:
-    - in `control_settings` 
-        - `aircraft_exchange_file_name` and `aircraft_exchange_file_directory` to your respective settings
-        - `console_output` at least to `mode_1`
-        - `plot_output` to false (or define `inkscape_path` and `gnuplot_path`)
-    - in `program_settings`
-        - `path_engine_database` to your respective settings
-        - `propulsion/nacelle/profile` and `pylon/profile` to `propulsion_design/test/stubs` directory
-3. Open terminal and run **propulsion_design**
-
-Following will happen:
-- you see output in the console window
-- a HTML report is created in the directory of `aircraft_exchange_file_directory`
-- results are saved in the `/aircraft_exchange_file/component_design/propulsion`
-
-@note The dummy does not include geometry data for e.g. fuselage or wing. Therefore the positioning of the engine will not work and warnings are expected in the output.
-
-## Settings and outputs {#settingsandoutputs}
-Generally, we use 2 files to set or configure in UNICADO:
-- the aircraft exchange file (or _acXML_) includes
-    - data related inputs (e.g. thrust-to-weight, offtakes or type of engine)
-    - data related outputs (e.g. engine position)
-- the configuration file `propulsion_design_conf.xml` (also _configXML_) includes
-    - control settings (e.g. enable/disable generating plots)
-    - program settings (e.g. set technology factors or methods)
-
-### Aircraft exchange file
-@note _acXML_ is an exchange file - we agreed on that only data will be saved as output which is needed by another tool!
-
-**Inputs**: 
-Following is needed from the _acXML_:
-1) the total thrust-to-weight-ratio as well as the MTOM, 
-2) the thrust share of the individual engine,
-2) the average system off-takes of the engines,
-3) the user settings of the propulsion architecture.
-
-Naturally, the propulsion needs an assumption for thrust or power to be designed. In the first iteration in UNICADO, the requirement is set via the tool _initialSizing_. It is then updated in _constraint_analysis_ in every loop to assure that the thrust that is fitted onto the aircraft assures enough thrust in all required flight stages. For this, **propulsion_design** currently assumes:
-
-The sea level static thrust \f$ T_0 \f$ is given by:
-
-\f$
-T_0 = \frac{T}{W} \cdot MTOM
-\f$
-
-Where:
-- \f$ T_0 \f$ is the sea level static thrust.
-- \f$ \frac{T}{W} \f$  is the thrust-to-weight ratio (specified as `/aircraft_exchange_file/sizing_point/thrust_to_weight`).
-- \f$ MTOM \f$ is the maximum takeoff mass (specified as `/aircraft_exchange_file/analysis/masses_cg_inertia/maximum_takeoff_mass`).
-
-@note This might change with new propulsion architectures!
-
-Not only the ratio of thrust to weight is read, but also the average system off-takes. In the current design of UNICADO, engine provide power for the systems and therefore the thrust specific energy/fuel consumption will increase. To include that, the nodes `average_bleed_air_demand` and `average_bleed_air_demand` in `/aircraft_exchange_file/component_design/systems/specific/`are read to show the influence of these offtakes on the bucket curve (is set to default values if not existing).
-
-Additionally, user settings need to be defined. In the node `/aircraft_exchange_file/requirements_and_specifications/design_specification`, both `energy_carriers` and `propulsion` need to be filled out (for more information on the variables, please read the description in the _acXML_).
-
-```plaintext
-Energy Carriers
-|- Energy Carrier (ID=0)
-|  |- Type
-Propulsion
-|- Propulsor (ID=0)
-|  |- Powertrain
-|  |- Type
-|  |- Position
-|  |  |- Parent Component
-|  |  |- X
-|  |  |- Y
-|  |  |- Z
-|  |- Energy Carrier ID
-|  |- Thrust Share
-```
-Let's assume you want to design an aircraft with 5 engine - 2 on each side of the wing and one in the empennage. Additionally, you want to use 3 energy carrier: hydrogen, kerosene and battery-electric.
-For that, you need to define 3 energy carriers with each a type with \f$ID=[0,1,2]\f$. Then you create 5 propulsor nodes with \f$ID=[0,...,4]\f$ and assign them each an a powertrain, type, ..., and thrust share. E.g. Engine 0 shall be a kerosene-powered turbofan in the empennage with a thrust share of \f$10\%\f$. Then it has the position with `parent_component=empennage`, `x=front`, `y=mid`, `z=in`. If the type of the energy carrier with ID=0 is set to kerosene, you need to assign `energy_carrier_id=0`. Also `powertrain=turbo`, `type=fan`, and `thrust_share=0.1`. Then Engine 1 could be a hydrogen-powered turboprop located under the left front inner wing with a thrust share of \f$25\%\f$. Then it has the position with `parent_component=wing`, `x=front`, `y=left`, `z=under`. If the type of the energy carrier with ID=1 is set to hydrogen, you need to assign `energy_carrier_id=1`. Also `powertrain=turbo`, `type=prop`, and `thrust_share=0.25`. The same procedure needs to be done for the other 3 engine.
-
-**Outputs**: The results are saved in the _acXML_ node `/aircraft_exchange_file/component_design/propulsion`. 
-
-```plaintext
-Propulsion
-|- Position
-|- Mass Properties
-|- Specific
-|  |- Propulsion (ID=0)
-|  |  |- Nacelle (ID=0)
-|  |  |  |- Origin
-|  |  |  |- Normal
-|  |  |  |- Mass Properties
-|  |  |  |- Sections
-|  |  |  |  |- Section (ID=0)
-|  |  |  |  |  |- Origin
-|  |  |  |  |  |- Width
-|  |  |  |  |  |- Height
-|  |  |  |  |  |- Profile
-|  |  |- Pylon
-|  |  |  |- Position
-|  |  |  |- Normal
-|  |  |  |- Mass Properties
-|  |  |  |- Sections
-|  |  |  |  |- Section (ID=0)
-|  |  |  |  |  |- Origin
-|  |  |  |  |  |- Chord Length
-|  |  |  |  |  |- Geometric Twist
-|  |  |  |  |  |- Profile
-|  |  |- Engine
-|  |  |  |- Engine Model
-|  |  |  |- Position
-|  |  |  |- Mass Properties
-|  |  |  |- Scale Factor
-|  |  |  |- Bucket Point
-|  |  |  |  |- Thrust
-|  |  |  |  |- TSFC
-
-```
-To shorten the visualization, the nodes `mass`, `inertia` and `center_of_gravity`in `mass_properties` are excluded. For more information, please read their description.
-
-### Configuration file
-
-The control settings are standardized in UNICADO and will not be described in detail here. The program settings are structured like this (descriptions are in the `propulsion_design_conf.xml`):
-```plaintext
-Program Settings
-|- Method
-|  |- Engine Designer
-|  |- Nacelle Designer
-|  |- Pylon Designer
-|  |- Propulsion Integrator
-|  |- Mass Analyzer
-|- Path Engine Database
-|- Technology Factors
-|  |- Engine Mass
-|  |- Nacelle Mass
-|  |- Pylon Mass
-|  |- Engine Efficiency
-|- Propulsion (ID=Default)
-|  |- Engine
-|  |  |- Empirical
-|  |  |  |- BPR
-|  |  |- Rubber
-|  |  |- GasTurb
-|  |- Nacelle
-|  |  |- Profile
-|  |- Pylon
-|  |  |- Profile
-|  |- Integration
-```
-You can choose the method for each discipline, the path for your engine data base, and different technology factors. To be highlighted, is the `Propulsion ID=Default` node. This is a default for all engines defined in the _acXML_ (see next paragraph). E.g. if you define 3 engines for an aircraft, both will use the same assumptions in the default setting. In case you want that the 3. engine is been calculated with e.g. another method, you can create a new `propulsion` node and assign the same `ID` value as set for the _acXML_ `ID`. 
-
-## Minimal required aircraft exchange file input {#acXML}
-
-```xml
-<aircraft_exchange_file>
-    <requirements_and_specifications>
-        <general description="General aircraft information">
-            <type description="Aircraft type">
-                <value>Test</value>
-            </type>
-            <model description="Model - Version">
-                <value>Test</value>
-            </model>
-        </general>
-        <design_specification description="Design specification">
-            <configuration description="Configuration information">
-                <configuration_type description="aircraft configuration: tube_and_wing / blended_wing_body">
-                    <value>tube_and_wing</value>
-                </configuration_type>
-            </configuration>
-            <energy_carriers description="Energy carriers information">
-                <energy_carrier ID="0" description="One specific energy carrier">
-                    <type description="Energy type: kerosene / liquid_hydrogen / battery / saf (for multifuel engine create new ID)">
-                        <value>kerosene</value>
-                    </type>
-                    <density description="Energy carrier density">
-                        <value>790</value>
-                        <unit>kg/m^3</unit>
-                        <lower_boundary>50</lower_boundary>
-                        <upper_boundary>1000</upper_boundary>
-                    </density>
-                </energy_carrier>
-            </energy_carriers>
-            <propulsion description="Propulsion information">
-                <propulsor ID="0" description="Information for specific propulsor">
-                    <powertrain description="Way the power is generated from the source: turbo, electric, fuel_cell">
-                        <value>turbo</value>
-                    </powertrain>
-                    <type description="Type of main thrust generator: fan or prop">
-                        <value>fan</value>
-                    </type>
-                    <position description="propulsor position (arrangement order acc to ID order)">
-                        <parent_component description="position on component: wing, fuselage, empennage">
-                            <value>wing</value>
-                        </parent_component>
-                        <x description="x-position (aircraft coordinate system): front or back">
-                            <value>front</value>
-                        </x>
-                        <y description="y position (aircraft coordinate system): left or right">
-                            <value>right</value>
-                        </y>
-                        <z description="z position (aircraft coordinate system): over, mid, under, in">
-                            <value>under</value>
-                        </z>
-                    </position>
-                    <energy_carrier_ID description="see energy carrier specification node">
-                        <value>0</value>
-                        <unit>1</unit>
-                        <lower_boundary>0</lower_boundary>
-                        <upper_boundary>5</upper_boundary>
-                    </energy_carrier_ID>
-                    <thrust_share description="Share of this thrust in relation to required aircraft thrust">
-                        <value>1</value>
-                        <unit>0</unit>
-                        <lower_boundary>0.0</lower_boundary>
-                        <upper_boundary>1.0</upper_boundary>
-                    </thrust_share>
-                </propulsor>
-            </propulsion>
-        </design_specification>
-    </requirements_and_specifications>
-    <sizing_point>
-        <thrust_to_weight description="Total thrust (kN) divided by maximum aircraft weight (kN)" tool_level="1">
-            <value>0.33</value>
-            <unit>1</unit>
-            <lower_boundary>0</lower_boundary>
-            <upper_boundary>1</upper_boundary>
-        </thrust_to_weight>
-    </sizing_point>
-    <analysis>
-        <masses_cg_inertia description="masses, cgs, inertias." tool_level="0">
-            <maximum_takeoff_mass description="MTOM">
-                <mass_properties description="maximum takeoff mass properties">
-                    <mass description="mass">
-                        <value>77000</value>
-                        <unit>kg</unit>
-                        <lower_boundary>0</lower_boundary>
-                        <upper_boundary>inf</upper_boundary>
-                    </mass>
-                </mass_properties>
-            </maximum_takeoff_mass>
-        </masses_cg_inertia>
-    </analysis>
-</aircraft_exchange_file>
-```
-The nodes `requirements_and_specifications\general` and `design_specification\configuration` are not needed by **propulsion_design**. However, the library _moduleBasics_ requires them.
\ No newline at end of file
diff --git a/docs/documentation/sizing/propulsion_design/software_architecture.md b/docs/documentation/sizing/propulsion_design/software_architecture.md
index 3fed44e..a5a302e 100644
--- a/docs/documentation/sizing/propulsion_design/software_architecture.md
+++ b/docs/documentation/sizing/propulsion_design/software_architecture.md
@@ -21,7 +21,7 @@ The software architecture is structured into various modules and packages, each
 
 Some additional words on the **propulsionStrategy**:
 
-As you might also see in the [class diagram](img/class_diagram.png), the core of it is the functor `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"
+As you might also see in the [class diagram](img/class_diagram.png), 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)
-- 
GitLab


From 4c163e7d2322ea36140f32a587bf5748015e9851 Mon Sep 17 00:00:00 2001
From: tobi <tobias.weckenmann@tum.de>
Date: Thu, 6 Feb 2025 16:44:15 +0100
Subject: [PATCH 5/8] New

---
 .../engineering_principles.md                 | 97 +++++++++++--------
 1 file changed, 54 insertions(+), 43 deletions(-)

diff --git a/docs/documentation/sizing/propulsion_design/engineering_principles.md b/docs/documentation/sizing/propulsion_design/engineering_principles.md
index a337633..98be9fd 100644
--- a/docs/documentation/sizing/propulsion_design/engineering_principles.md
+++ b/docs/documentation/sizing/propulsion_design/engineering_principles.md
@@ -1,14 +1,15 @@
 
 # Engineering principles {#engineeringprinciples}
 
-Designing the propulsion with this tool includes different engineering disciplines. Here is a brief explanation (more information in their respective sections):
-- [Engine designer](#enginedesigner): Calculates the performance of one individual engine based on the required thrust.
-- [Propulsor integrator](#propulsionintegrator): Places the engine acc. to the user's settings.
-- [Nacelle designer](#nacelledesigner): Calculates the nacelle geometry.
-- [Pylon designer](#pylondesigner): Calculates the pylon geometry.
-- [Mass analyzer](#massanalyzer): Calculates the mass properties (center of gravity, mass, and inertia) of engine, nacelle, and pylon.
+Designing the propulsion with this tool includes different steps shown below (with more information in their respective sections):
 
-For these five disciplines, you can choose different methods (or fidelities) of calculating their output. Here is an overview of the currently implemented methods (details in the sections):
+* [Engine designer](#enginedesigner): Calculates the performance of one individual engine based on the required thrust.
+* [Propulsor integrator](#propulsionintegrator): Places the engine acc. to the user's settings.
+* [Nacelle designer](#nacelledesigner): Calculates the nacelle geometry.
+* [Pylon designer](#pylondesigner): Calculates the pylon geometry.
+* [Mass analyzer](#massanalyzer): Calculates the mass properties (center of gravity, mass, and inertia) of engine, nacelle, and pylon.
+
+For these five disciplines, you can choose different methods of calculating their output. The following methods are integrated (details in the sections):
 
 | Discipline              | Methods                                                           |
 |-------------------------|-------------------------------------------------------------------|
@@ -20,36 +21,39 @@ For these five disciplines, you can choose different methods (or fidelities) of
 
 
 
-If you want to learn more about how to configure methods or generally the settings and outputs, go to the [getting started](getting_started.md).
-
-@important These disciplines are executed sequentially for EACH engine. That means that the engines are not aware of each other within the designing and analyzing. More information, see the [software architecture](software_architecture.md) section.
+If you want to learn more about how to configure methods or generally the settings and outputs, go to the [getting started](getting-started.md).
 
+!!! important
+    These disciplines are executed sequentially for EACH engine. That means that the engines are not aware of each other while designing and analyzing. More information, see the [software architecture](software_architecture.md) section.
 
 ## Engine designer {#enginedesigner}
+This section describes the principles of the engine designer.
 
 ### General principles {#generalprinciples}
 
-The **engine designer** bases its principle on the common modelling practice using 
-- an _engine dataset_ (operating point **in**dependent)
-- an _engine deck_ (operating point dependent)
-- a _scale factor_
+In the engine design a dataset needs to be written into the projects directory. The following data is needed:
+
+* An engine dataset (operating point independent)
+* An engine deck (operating point dependent)
+* A scale factor
 
-The _dataset_ (also called _EngineXML_) includes parameter which are independent of the flight condition such as outer engine dimensions or the mass of the unscaled engine.
 
-The three-dimensional \textit{engine deck} contains engine performance data for different values of altitude \( h \), Mach number \( M_a \), and low-pressure engine spool speed \( N_1 \).
- The most important performance parameter are thrust and fuel/energy flow. In UNICADO, the deck is split into multiple CSV files. The figure shows an example with values for thrust in kilo newtons. The first block contains data for \( N_1 = 1 \) for \( M_a = 0 \ldots 0.9 \) and \( h = 0 \ldots 14000 \). The second block below is for \( N_1 = 0.95 \).
+The _dataset_ (also called _engine_xml_) includes parameter which are independent of the flight condition such as outer engine dimensions or the mass of the unscaled engine.
 
-![](img/deck_example_thrust.svg)
+The three-dimensional \( \text{\textit{engine deck}} \) contains engine performance data for different values of altitude \( h \), Mach number \( M_a \), and low-pressure engine spool speed \( N_1 \).
+ The most important performance parameter are thrust and fuel/energy flow. In UNICADO, the deck is split into multiple csv files. The figure shows an example with values for thrust in kilo newtons. The first block contains data for \( N_1 = 1 \) for \( M_a = 0 \ldots 0.9 \) and \( h = 0 \ldots 14000 \). The second block below is for \( N_1 = 0.95 \).
 
-@note Detailed information on required dataset and deck data will be updated in near future. 
+![](figures/deck_example_thrust.svg)
 
-The _scale factor_ is necessary for the rubber method because we use the concept of a so-called _rubber engine_. That means that (depending on the method, see later) we create or assume an engine deck and provide one _scale factor_ to obtain all engine data acc. to the required thrust the engine shall provide. The figure visualized the concept:
-![](img/scale_factor.svg)
 
-@attention &rarr; **As mentioned and highlighted in the figure**, there is ONE _scale factor_ **BUT** multiple exponents which differ depending on which property you want to use. E.g., for the diameter, the exponent is \( 0.5 \) and for the mass, its exponent is \( 0.4 \).
- **So important to remember** that whenever you want to use engine data, you need to access it via the `engine` library. In the following, a brief explanation of the scaling concept will be given - however details are given in the library documentation.
+The _scale factor_ is necessary for the rubber method as it uses the concept of a so-called _rubber engine_. That means that (depending on the method, see later) we create or assume an engine deck and provide a _scale factor_ to scale all engine data acc. to the required thrust the engine shall provide. The figure visualized the concept:
+![](figures/scale_factor.svg)
 
-So, the scaling is based on continuity principle assuming that the operating of the inner engine is constant (commonly known station numbering; assuming no extra pressure drop).
+!!! attention
+    **As mentioned and highlighted in the figure**, there is ONE _scale factor_ **BUT** the scaling of the base values is not always linear.
+    **So important to remember** that whenever you want to use engine data, you need to access it via the `engine` library. In the following, a brief explanation of the scaling concept will be given - however details are given in the library documentation.
+
+The scaling is based on continuity principle assuming that the engine characteristics are constant.
 
 $T = \dot{m} \cdot (V_9 - V_0)$
 
@@ -68,25 +72,29 @@ d_{\text{new}} = d_{\text{ref}} \cdot \left( \frac{T_{\text{new}}}{T_{\text{ref}
 An exemplary simplified calculation (data from the V2527-A5): the current engine provides $127.27~\text{kN}$ as sea level static thrust, but for the design only $100~\text{kN}$ are needed. The scaling factor would be $0.7857$. Assuming an initial diameter $2~\text{m}$, the new diameter would be $1.773~\text{m}$ with the scaling factor of $(0.7857)^{0.5} = 0.8864$.
 
 
-The general scaling is therefore a linear scaling of the thrust. The fuel flow is scaled in the same way leading to a scaling approach with constant TSFC. 
+The general scaling is therefore a linear scaling of the thrust. The fuel flow is scaled in the same way leading to a scaling with constant TSFC. 
 
-So, again, the engine data is always accessed via the `engine` library to ensure that you have the correctly scaled data for every value. This is valid for both the non operating condition dependent variables and the values that are directly read from the deck values. 
+The engine data is always accessed via the `engine` library to ensure that you have the correctly scaled data for every value. This is valid for both the non operating condition dependent variables and the values that are directly read from the deck values. 
 
-\textbf{Note:} Actually, the sea level static thrust is not at $N1=1$ if you compare the dataset for this engine (for $110.31~\text{kN}$ around $N1=0.95$). So the scaling factor will be slightly lower.
+!!! Note
+    Actually, the sea level static thrust is not at $N1=1$ if you compare the dataset for this engine (for $110.31~\text{kN}$ around $N1=0.95$). So the scaling factor is slightly lower.
 
 
 ### Methods description
 The **engine designer** includes different methods which create/use this deck in various ways.
-- *empirical*: the initial deck is calculated based on empirical equations.
-- *rubber*: (most common approach) based on an existing deck (usually created with GasTurb), the deck is "rubberized".
-- *propulsionsystem*: with the help of the library `propulsionsystem`, different architecture can be defined and a deck created (for more information see documentation of the library)
 
-@note *empirical* and *propulsionsystem* is in preparation - not implemented yet!
+* *empirical*: the initial deck is calculated based on empirical equations.
+* *rubber*: (most common approach) based on an existing deck (usually created with GasTurb), the deck is "rubberized".
+* *propulsionsystem*: with the help of the library `propulsionsystem`, different architecture can be defined and a deck created (for more information see documentation of the library)
+
+!!! note
+    *empirical* and *propulsionsystem* is in preparation - not implemented yet!
 
-For these methods, the approach of using the _scale factor_ is the same (see explanation [here](#generalprinciples)). A deck is either first created or assumed and then data is drawn with the `engine` library with the scaling approach.
+For these methods, the approach of using the _scale factor_ is the same (see explanation [here](#generalprinciples)). A deck is either first created or an existing dataset is taken and then data is provided using the `engine` library with the scaling approach.
 
 ## Propulsion integrator {#propulsionintegrator}
 Additionally to calculating the engine performance parameter, the engine has to be placed on the aircraft. The **propulsion integrator** uses the user settings from the aircraft exchange file - the following needs to be defined:
+
 - parent component: wing, fuselage, empennage
 - x-position (aircraft coordinate system): front or rear
 - y position (aircraft coordinate system): left or right
@@ -95,6 +103,7 @@ Additionally to calculating the engine performance parameter, the engine has to
 ### Methods description
 
 Here, currently only one method is implemented:
+
  - *default* is based on a thesis of RWTH Aachen \cite{Ata10}
 
 This method includes multiple empirical functions for different propulsion integration. These are the options that are currently implemented:
@@ -112,23 +121,26 @@ This method includes multiple empirical functions for different propulsion integ
 
 For detailed information, it is referred to the thesis.
 
-@note the implementation include currently Turbofan Kerosene only
+!!! note 
+    The implementation include currently Turbofan Kerosene only
 
 ## Nacelle designer {#nacelledesigner}
-After the integration, the nacelle geometry is defined (however its actually independent of the position, so the order could be changed). 
+After the integration, the nacelle geometry is defined.
 
 ### Methods description 
 
 For the **nacelle designer**, only one method is implemented:
- - *default* uses the `aircraftGeometry2` library 
+
+ - *default* uses the `aircraftGeometry2` library.
  
 The library uses the `.dat` file defined in the _configXML_ to extrude a polygon in different sections. These sections including the origin, width, height and its profile are saved in the _acXML_. With that, every other tool can "rebuild" the geometry using the same library.
 
-In the current implemented method, there is no differentiation between short and long ducted nacelle. It is a polygon with 3 segments (1. and 3. segments is 25% of engine length). The diameter for the 1. and 3. segment is chosen as the maximum between fan diameter, engine width or height. The 2. segments is 25% larger.
+There is no differentiation between short and long ducted nacelle. It is a polygon with 3 segments (1. and 3. segments is 25% of engine length). The diameter for the 1. and 3. segment is chosen as the maximum between fan diameter, engine width or height. The 2. segments is 25% larger.
 
 Keep in mind that the library defines a surface without a thickness. For more information, it is referred to the library. 
 
-@note the implementation include currently Turbofan Kerosene only
+!!! note 
+    Currently, only a kerosene turbofan engine is included.
 
 ## Pylon designer {#pylondesigner}
 The pylon is the structural component to connect the engine to the aircraft. 
@@ -136,14 +148,11 @@ The pylon is the structural component to connect the engine to the aircraft.
 ### Methods description
 
 For the **pylon designer**, only one method is implemented:
- - *default* uses the `aircraftGeometry2` library 
+ - *default* uses the `aircraftGeometry2` library.
  
 In the current method, the mounting is attached to the beginning to the nacelle to the leading edge of the wing. The length is the engine length which is extruded to the wing. The profile is, likewise for the nacelle, defined in the _configXML_.
 
-![Engine Mount](img/engine_mount.svg)
-
-
-@note the implementation include currently Turbofan Kerosene only
+![Engine Mount](figures/engine_mount.svg)
 
 ## Mass analyzer {#massanalyzer}
 Lastly, the mass properties for engine, nacelle and pylon are calculated separately for center of gravity, mass and inertia. 
@@ -151,6 +160,7 @@ Lastly, the mass properties for engine, nacelle and pylon are calculated separat
 ### Methods description
 
 Here, only one method is implemented:
+
  - *default* using: 
     - for engine
         - CG: calculating local CG assuming a circular cylinder
@@ -161,5 +171,6 @@ Here, only one method is implemented:
         - mass: empirical estimation
         - inertia: wrt. CG with `aircraftGeometry2`lib
 
-@note the implementation include currently Turbofan Kerosene only
+!!! note 
+    Currently, only a kerosene turbofan engine is included.
 
-- 
GitLab


From d580bd4da3a404496e38954f1a3fae614c53672e Mon Sep 17 00:00:00 2001
From: tobi <tobias.weckenmann@tum.de>
Date: Thu, 6 Feb 2025 17:41:45 +0100
Subject: [PATCH 6/8]  UNICADO

---
 docs/documentation/sizing/propulsion_design/index.md   | 10 ++++++++--
 .../sizing/propulsion_design/software_architecture.md  |  7 ++++---
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/docs/documentation/sizing/propulsion_design/index.md b/docs/documentation/sizing/propulsion_design/index.md
index 113b211..85a53e5 100644
--- a/docs/documentation/sizing/propulsion_design/index.md
+++ b/docs/documentation/sizing/propulsion_design/index.md
@@ -5,7 +5,7 @@ The tool _propulsion_design_ is one of the core design tools in UNICADO. The ove
 This tool is exciting!🔥 because the propulsion is one of the critical components in the aircraft design loop. It provides the thrust or power, enabling powered flight of the aircraft letting it move through the skies.🌍
 
 There are different propulsion architectures for the aircraft conceptual design process. To give you a general taste, here are a few illustrations of possible concepts.
-![](img/different_engines.svg)
+![](figures/different_engines.svg)
 
 The [getting started](getting_started.md) gives you a first insight in how to execute the tool and how it generally works. To understand how the tools works in more detail, the documentation is split into a [engineering principles](engineering_principles.md) and a [software architecture](software_architecture.md) section. 
 
@@ -18,6 +18,12 @@ Prior to that, let's summarize what the tool can currently do and what is planne
 |kerosene-powered turboprop    |  |strategy integrated, but methods missing |
 |hydrogen-powered turboprop    |  |strategy integrated, but methods missing |
 
-(*) order: engine designer/ nacelle designer/ pylon designer/ propulsion integrator/ mass analyzer
+Order: 
+
+    1. engine designer 
+    2. nacelle designer 
+    3. pylon designer 
+    4. propulsion integrator
+    5.S mass analyzer
 
 So let's get started!
diff --git a/docs/documentation/sizing/propulsion_design/software_architecture.md b/docs/documentation/sizing/propulsion_design/software_architecture.md
index a5a302e..7cad889 100644
--- a/docs/documentation/sizing/propulsion_design/software_architecture.md
+++ b/docs/documentation/sizing/propulsion_design/software_architecture.md
@@ -2,7 +2,7 @@
 
 ## 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](img/class_diagram.png) or the source code):
+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](figure/class_diagram.png) 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
@@ -21,7 +21,8 @@ The software architecture is structured into various modules and packages, each
 
 Some additional words on the **propulsionStrategy**:
 
-As you might also see in the [class diagram](img/class_diagram.png), 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"
+As you might also see in the [class diagram](figure/class_diagram.png), 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)
@@ -31,4 +32,4 @@ So, if you want to use different combinations in UNICADO, you need to make sure
 ## Class Diagram {#classdiagram}
 Here is an overview how the module is structured:
 
-![](img/class_diagram.png){html: width=1000}
+![](figure/class_diagram.png){html: width=1000}
-- 
GitLab


From e810a5ebffe0c00584fbd1b5959dd019b3fa7695 Mon Sep 17 00:00:00 2001
From: tobi <tobias.weckenmann@tum.de>
Date: Thu, 6 Feb 2025 17:44:09 +0100
Subject: [PATCH 7/8]  UNICADO

---
 .../sizing/propulsion_design/software_architecture.md           | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/documentation/sizing/propulsion_design/software_architecture.md b/docs/documentation/sizing/propulsion_design/software_architecture.md
index 7cad889..7995d60 100644
--- a/docs/documentation/sizing/propulsion_design/software_architecture.md
+++ b/docs/documentation/sizing/propulsion_design/software_architecture.md
@@ -32,4 +32,4 @@ So, if you want to use different combinations in UNICADO, you need to make sure
 ## Class Diagram {#classdiagram}
 Here is an overview how the module is structured:
 
-![](figure/class_diagram.png){html: width=1000}
+![](figures/class_diagram.png){html: width=1000}
-- 
GitLab


From c2fd4589ddfa3c9d7755e9f74fc083a81a5489ff Mon Sep 17 00:00:00 2001
From: tobi <tobias.weckenmann@tum.de>
Date: Fri, 7 Feb 2025 12:49:58 +0100
Subject: [PATCH 8/8] Adds docu for engine and bugfixes for prop

---
 docs/documentation/libraries/engine/index.md  |   2 +
 docs/documentation/libraries/index.md         | 199 ------------------
 .../engineering_principles.md                 |   1 +
 .../sizing/propulsion_design/index.md         |   2 +-
 mkdocs.yml                                    |  10 +
 5 files changed, 14 insertions(+), 200 deletions(-)
 create mode 100644 docs/documentation/libraries/engine/index.md
 delete mode 100644 docs/documentation/libraries/index.md

diff --git a/docs/documentation/libraries/engine/index.md b/docs/documentation/libraries/engine/index.md
new file mode 100644
index 0000000..d8eed57
--- /dev/null
+++ b/docs/documentation/libraries/engine/index.md
@@ -0,0 +1,2 @@
+# Introduction {#mainpage}
+PENIS
\ No newline at end of file
diff --git a/docs/documentation/libraries/index.md b/docs/documentation/libraries/index.md
deleted file mode 100644
index 2abddf2..0000000
--- a/docs/documentation/libraries/index.md
+++ /dev/null
@@ -1,199 +0,0 @@
----
-title: Libraries
-summary: Overview of the libraries respository
-authors:
-    - Sebastian Oberschwendtner
-    - Kristina Mazur
-date: 2024-11-28
-glightbox: false
----
-
-As mentioned in the [build instructions](../get-involved/build/general.md), we have some external dependencies to:
-
-- :simple-cplusplus: [Eigen3 :octicons-link-external-16:](https://eigen.tuxfamily.org/index.php?title=Main_Page){:target="_blank"}
-- :simple-cplusplus: [Boost :octicons-link-external-16:](https://www.boost.org/){:target="_blank"}
-- :simple-cplusplus: [CGAL :octicons-link-external-16:](https://www.cgal.org/){:target="_blank"}
-- :simple-python: [pipenv :octicons-link-external-16:](https://pipenv.pypa.io/en/latest/){:target="_blank"} (not really a library, more a environment manager tool)
-
-
-!!! note
-    Currently, only `aircraftGeometry2` is documented.
-
-## aerodynamics
-![Icon](site:assets/images/documentation/aerodynamics.svg){.overview-img  align=left}
-This library helps with interacting with polar data.
-It has helper functions to extract and interpolate data of provided airfoil polars.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|2.1.0|:simple-cplusplus: |GPLv3|-|-|
-
----
-
-## aircraftGeometry2
-![Icon](site:assets/images/documentation/aircraft-geometry.svg){.overview-img  align=left}
-This library is based on the older [aircraftGeometry](#aircraftgeometry) library and extends it to be more modular.
-The modularity and flexibility is achieved by using the high performance [Computational Geometry Algorithms Library](https://www.cgal.org/) also known as **CGAL**.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|2.1.0|:simple-cplusplus: |GPLv3|[Link](libraries/aircraftGeometry2/index.md)| [Eigen3](https://eigen.tuxfamily.org/index.php?title=Main_Page), [CGAL](https://www.cgal.org/)|
-
----
-
-## airfoils
-![Icon](site:assets/images/documentation/airfoil.svg){.overview-img  align=left}
-The **airfoils** libary provides a database for different airfoils.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|1.0.0|:simple-cplusplus: |GPLv3|-|-|
-
----
-
-## aixml
-![Icon](site:assets/images/documentation/aixml.svg){.overview-img  align=left}
-The **aixml** library is the central library which handles the XML files and data access.
-It uses a simple XML library, namely *tinyxml*, to read and parse the XML files.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|2.1.0|:simple-cplusplus: |GPLv3|-|-|
-
----
-
-## atmosphere
-![Icon](site:assets/images/documentation/atmosphere.svg){.overview-img  align=left}
-The **atmosphere** library provides helper functions to calculate atmospheric properties according to the International Standard Atmosphere (*ISA*).
-You can set different atmospheric conditions (e.g. *ISA+25*) and calculate the physical properties of the air at different altitudes.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|2.1.0|:simple-cplusplus: |GPLv3|-||
-
----
-
-## blackboxTest
-![Icon](site:assets/images/documentation/blackbox.svg){.overview-img  align=left}
-The **blackboxTest** library provides an interface to run a complete module with different test cases and then checks whether a specific result is calculated or set compared to expected values defined in a `blackBoxTestCases.xml`. The tests are realized with the help of the _googleTest_ framework .
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|2.1.0|:simple-cplusplus: |GPLv3|-|[googleTest](https://google.github.io/googletest/)|
-
----
-
-## engine
-![Icon](site:assets/images/documentation/engine.svg){.overview-img  align=left}
-This library helps with interacting with engine data.
-It has helper functions to extract and interpolate data of provided engine data decks.
-The engine decks can originate from different softwaretools as long as they provide the same file format.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|2.1.0|:simple-cplusplus: |GPLv3|-|-|
-
----
-
-## extern
-UNICADO currently uses two external libaries as submodules:
-
-- `doxygen-awesome-css` for documentation formation [(see here)](https://github.com/jothepro/doxygen-awesome-css.git)
-- `pybind11` to use C++ libraries in the python tools [(see here)](https://github.com/pybind/pybind11.git)
-
----
-
-## liftingLineInterface
-![Icon](site:assets/images/documentation/lifting-line.svg){.overview-img  align=left}
-This library helps with interacting with results provided by the tools **Lifting Line** from DLR.
-It has helper functions to extract and interpolate data of the results from the tool.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|2.1.0|:simple-cplusplus: |GPLv3|-|-|
-
----
-
-## moduleBasics
-![Icon](site:assets/images/documentation/module-basics.svg){.overview-img  align=left}
-This library 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.
-The library gives a template how modules should be structured and gives helpers which can be used to select and implement the different fidelity methods.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|2.1.0|:simple-cplusplus: |GPLv3|-|-|
-
----
-
-## pymodulepackage
-![Icon](site:assets/images/documentation/pymodulepackage.svg){.overview-img  align=left}
-This library provides standardized UNICADO data preprocessing, run, and postprocessing functions for Python modules.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|1.0.0|:simple-python: |GPLv3|-|-|
-
----
-
-## runtimeInfo
-![Icon](site:assets/images/documentation/runtime-info.svg){.overview-img  align=left}
-This library handles the user interface during the modules execution.
-In provides custom output streams, which automatically handle the log files and error outputs according to the configuration files.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|2.1.0|:simple-cplusplus: |GPLv3|-|-|
-
----
-
-## standardFiles
-![Icon](site:assets/images/documentation/standard-files.svg){.overview-img  align=left}
-This library provides file interfaces and interacts with the operating system.
-It can handle process execution with a simple interface.
-The library can handle *UNIX* and *Windows* systems alike.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|2.1.0|:simple-cplusplus: |GPLv3|-|-|
-
-!!! warning
-    Some functions of this library are a bit outdated! When using this library, please look first at the wonderful [STL :octicons-link-external-16:](https://en.cppreference.com/w/) whether the function you are seeking is already there.
-
----
-
-## svl
-![Icon](site:assets/images/documentation/svl.svg){.overview-img  align=left}
-The `simple vector library` by Andrew Willmott provides vector and matrix classes.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|2.1.0|:simple-cplusplus: | |[Link](https://www.cs.cmu.edu/~ajw/doc/svl.html)|-|
-
-!!! note
-    This will soon be replaced by `Eigen`.
-
----
-
-## unitConversion
-![Icon](site:assets/images/documentation/unit-conversion.svg){.overview-img  align=left}
-The **unitConversion** groups the most commonly used unit in aerospace and let's you convert values from one unit to another.
-In addition, it defines some common **constants** which are useful for calculations.
-{.overview-item}
-
-|Module Version|Language|License|Documentation|Dependencies|
-|:---:|:---:|:---:|---|---|
-|2.1.0|:simple-cplusplus: |GPLv3|-|-|
diff --git a/docs/documentation/sizing/propulsion_design/engineering_principles.md b/docs/documentation/sizing/propulsion_design/engineering_principles.md
index 98be9fd..3ee23c7 100644
--- a/docs/documentation/sizing/propulsion_design/engineering_principles.md
+++ b/docs/documentation/sizing/propulsion_design/engineering_principles.md
@@ -148,6 +148,7 @@ The pylon is the structural component to connect the engine to the aircraft.
 ### Methods description
 
 For the **pylon designer**, only one method is implemented:
+
  - *default* uses the `aircraftGeometry2` library.
  
 In the current method, the mounting is attached to the beginning to the nacelle to the leading edge of the wing. The length is the engine length which is extruded to the wing. The profile is, likewise for the nacelle, defined in the _configXML_.
diff --git a/docs/documentation/sizing/propulsion_design/index.md b/docs/documentation/sizing/propulsion_design/index.md
index 85a53e5..a568bb8 100644
--- a/docs/documentation/sizing/propulsion_design/index.md
+++ b/docs/documentation/sizing/propulsion_design/index.md
@@ -24,6 +24,6 @@ Order:
     2. nacelle designer 
     3. pylon designer 
     4. propulsion integrator
-    5.S mass analyzer
+    5. mass analyzer
 
 So let's get started!
diff --git a/mkdocs.yml b/mkdocs.yml
index 36be4cf..daa9401 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -158,6 +158,14 @@ plugins:
             FILE_PATTERNS: "*.cpp *.h"
             RECURSIVE: True
             EXTRACT_ALL: YES
+        engine:
+          src-dirs: ../aircraft-design/libs/engine/
+          full-doc: true
+          output: docs/engine
+          doxy-cfg:
+            FILE_PATTERNS: "*.cpp *.h"
+            RECURSIVE: True
+            EXTRACT_ALL: YES
 
   - glightbox                             # Plugin for lightbox-style image and content viewing.
 
@@ -325,6 +333,8 @@ nav:                                      # Customizes the main navigation struc
             - aircraftGeometry2/namespaces.md
             - aircraftGeometry2/files.md
             - aircraftGeometry2/functions.md
+        - engine:
+          - Introduction: documentation/libraries/engine/index.md 
     - Utilities: documentation/additional_software.md
     - Workflow: 'workflow.md' # Link to the workflow page.
   - Get Involved:
-- 
GitLab