Skip to content
Snippets Groups Projects
Commit 309ee37d authored by Tobias Weckenmann's avatar Tobias Weckenmann
Browse files

leer

parent 8c57d83c
No related branches found
No related tags found
3 merge requests!76Draft: Updated Python code example,!73Initial open source version,!36Some updates for the docu
Pipeline #1607966 waiting for manual action
...@@ -8,14 +8,17 @@ Designing the propulsion with this tool includes different engineering disciplin ...@@ -8,14 +8,17 @@ Designing the propulsion with this tool includes different engineering disciplin
- [Pylon designer](#pylondesigner): Calculates the pylon 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. - [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): 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 |
|---------------------|-------------------------------------------------------------------| | Discipline | Methods |
|Engine designer | *Rubber* (*Empirical* and *PropulsionSystem* are in preparation) | |-------------------------|-------------------------------------------------------------------|
|Propulsor integrator | *Default* | | **Engine designer** | *Rubber* (*Empirical* and *PropulsionSystem* are in preparation) |
|Nacelle designer | *Default* | | **Propulsor integrator** | *Default* |
|Pylon designer | *Default* | | **Nacelle designer** | *Default* |
|Mass analyzer | *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). 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 ...@@ -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 _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) ![](img/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.
...@@ -41,29 +46,34 @@ The three-dimensional _engine deck_ contain engine performance data for differen ...@@ -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: 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) ![](img/scale_factor.svg)
@attention → **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 → **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). 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)$
T = \dot m \cdot (V_9 - V_0)
]\f$
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. 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. 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 ### Methods description
The **engine designer** includes different methods which create/use this deck in various ways. 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: ...@@ -88,15 +98,17 @@ Here, currently only one method is implemented:
- *default* is based on a thesis of RWTH Aachen \cite{Ata10} - *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: This method includes multiple empirical functions for different propulsion integration. These are the options that are currently implemented:
| Parent | Lateral | Longitudinal | Vertical |
|-----------|---------|--------------|----------| | Parent | Lateral | Longitudinal | Vertical |
| Wing | Right | Front | Under | |------------|---------|--------------|----------|
| Wing | Left | Front | Under | | Wing | Right | Front | Under |
| Wing | Right | Front | Over | | Wing | Left | Front | Under |
| Wing | Left | Front | Over | | Wing | Right | Front | Over |
| Fuselage | Right | Rear | Mid | | Wing | Left | Front | Over |
| Fuselage | Left | Rear | Mid | | Fuselage | Right | Rear | Mid |
| Empennage | Mid | Front | In | | Fuselage | Left | Rear | Mid |
| Empennage | Mid | Front | In |
For detailed information, it is referred to the thesis. For detailed information, it is referred to the thesis.
......
...@@ -17,7 +17,6 @@ It is assumed that you have the `UNICADO Package` installed including the execut ...@@ -17,7 +17,6 @@ It is assumed that you have the `UNICADO Package` installed including the execut
3. Open terminal and run **propulsion_design** 3. Open terminal and run **propulsion_design**
Following will happen: Following will happen:
- you see output in the console window - 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) - 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` - results are saved in the `/aircraft_exchange_file/component_design/propulsion`
...@@ -29,7 +28,7 @@ Following will happen: ...@@ -29,7 +28,7 @@ Following will happen:
Generally, we use 2 files to set or configure in UNICADO: Generally, we use 2 files to set or configure in UNICADO:
- the aircraft exchange file (or _acXML_) includes - 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) - data related outputs (e.g. engine position)
- the configuration file `propulsion_design_conf.xml` (also _configXML_) includes - the configuration file `propulsion_design_conf.xml` (also _configXML_) includes
- control settings (e.g. enable/disable generating plots) - control settings (e.g. enable/disable generating plots)
...@@ -42,11 +41,11 @@ Generally, we use 2 files to set or configure in UNICADO: ...@@ -42,11 +41,11 @@ Generally, we use 2 files to set or configure in UNICADO:
**Inputs**: **Inputs**:
Following is needed from the _acXML_: Following is needed from the _acXML_:
1) the total required thrust, 1) the total required thrust using the thrust-to-weight ratio and MTOM,
2) the system off-takes, 2) the average system off-takes for the bucket-curve,
3) the user settings of the propulsion architecture 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: The sea level static thrust $T_0$ is given by:
...@@ -61,7 +60,7 @@ Where: ...@@ -61,7 +60,7 @@ Where:
!!! note !!! note
This might change with new propulsion architectures! 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_). 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 ...@@ -82,8 +81,8 @@ Propulsion
| |- Energy Carrier ID | |- Energy Carrier ID
| |- Thrust Share | |- 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. 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 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. 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`. **Outputs**: The results are saved in the _acXML_ node `/aircraft_exchange_file/component_design/propulsion`.
...@@ -154,7 +153,7 @@ Program Settings ...@@ -154,7 +153,7 @@ Program Settings
| | |- Profile | | |- Profile
| |- Integration | |- 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} ## Minimal required aircraft exchange file input {#acXML}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment