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

no m

parent 309ee37d
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 #1607968 waiting for manual action
# 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
......@@ -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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment