Skip to content
Snippets Groups Projects
Commit ea932c19 authored by “KatrinBistreck”'s avatar “KatrinBistreck”
Browse files

Add 4D trajectory description

parent 5272d30f
No related branches found
No related tags found
1 merge request!83Add 4D trajectory description
Pipeline #1666071 waiting for manual action
......@@ -358,7 +358,7 @@ After the initial loop, we expect a robuster behavior which we can use to calcul
## Additional Output
Beside the output written into the [aircraft XML](#acxml), **mission_analysis** generates a few more files you and even other tools can work with
Beside the output written into the [aircraft XML](#acxml), **mission_analysis** generates a few more files you and even other tools can work with.
### Mission Data CSV {#csv_file}
......@@ -396,6 +396,11 @@ Remember that nice graph from this tool's [introduction](index.md)? This is a si
- Glidepath angle [deg]
- Incidence angle (stabilizer) [deg]
The [High Fidelity Method](methods.md/#highfi) will provide in addition:
- Latitude [deg]
- Longitude [deg]
Beside being a neat dataset to show-off, [Ecological Assessment](../ecological_assessment/index.md) can go through it to calculate the ecological impact of an aircraft flying the displayed mission.
......@@ -517,7 +522,7 @@ In the `program_specific` node, you can specify if the specific air range (SAR)
In `general` you can decide how the needed fuel is estimated and you can tell **mission_analysis** in which way it shall behave in different flight segments.
The `mode` node lets you choose the methods that are applied. Using the keyword `low`/`mid` you will trigger the low-fidelity/mid-fidelity version of the [Standard Mission](methods.md) method. It also has three sub-methods to differentiate between `design_mission`, `study_mission` and `requirements_mission` which can be selected in the `mission_type` node. Please mind that the low-fidelity method only accepts the `design_mission`. After the first iteration, the [Weight and Balance tool](../weight_and_balance_analysis/index.md) delivers vectors containing center of gravity positions in addition to the aircraft mass (center of gravity shift due to defueling). To take that into account, you can activate `interpolate_polars`. For kerosene based propulsion, the effects are rather small, but once H2 is involved you should consider using it. Furthermore, the `rate_of_climb_switch` will only affect the [Climb to Ceiling](mission_steps.md/#climb_to_ceiling_subparagraph) step of the `requirements_mission`. With this option, **mission_analysis** calculates the optimum rate of climb towards service ceiling.
The `mode` node lets you choose the methods that are applied. Using the keyword `low`/`mid`/`high` you will trigger the low-fidelity/mid-fidelity/high-fidelity version of the [Standard Mission](methods.md) method. It also has three sub-methods to differentiate between `design_mission`, `study_mission` and `requirements_mission` which can be selected in the `mission_type` node. Please mind that the low-fidelity method only accepts the `design_mission` and the high-fidelity method will NOT except the requirements mission. After the first iteration, the [Weight and Balance tool](../weight_and_balance_analysis/index.md) delivers vectors containing center of gravity positions in addition to the aircraft mass (center of gravity shift due to defueling). To take that into account, you can activate `interpolate_polars`. For kerosene based propulsion, the effects are rather small, but once H2 is involved you should consider using it. Furthermore, the `rate_of_climb_switch` will only affect the [Climb to Ceiling](mission_steps.md/#climb_to_ceiling_subparagraph) step of the `requirements_mission`. With this option, **mission_analysis** calculates the optimum rate of climb towards service ceiling.
Finally, in `precision` you can set the parameters which will define the before mentioned increments of your mission profile.
......@@ -31,26 +31,27 @@ Once your mission is calculated, you can choose from a wide range of profile dat
| Mission method | mission type | Status |
|----------------------------------|---------------------------|----------------------------------------|
| [3D Standard Mission (low-fidelity)](methods.md/#midfi)|`design_mission::breguet`| running :white_check_mark:|
| [3D Standard Mission (low-fidelity)](methods.md/#midfi)|`design_mission::breguet`| running :white_check_mark:|
| [3D Standard Mission (mid-fidelity)](methods.md/#midfi)|`design_mission` | running :white_check_mark:|
| [3D Standard Mission (mid-fidelity)](methods.md/#midfi)|`study_mission` | running :white_check_mark:|
| [3D Standard Mission (mid-fidelity)](methods.md/#midfi)|`requirements_mission` | running :white_check_mark:|
| [4D_trajectory (high-fidelity)](methods.md/#highfi) |None | under development :construction:|
| [4D_trajectory (high-fidelity)](methods.md/#highfi) |`design_mission::orthodrome`| running :white_check_mark:|
| [4D_trajectory (high-fidelity)](methods.md/#highfi) |`study_mission::orthodrome`| running :white_check_mark:|
By now, only a [standard (3D) mission method](methods.md/#midfi) is implemented. Its mid-fidelity version can trigger the three missions mentioned above while the low-fidelity sub-version is only used for the `design_mission`. The later is a Breguet-based estimation of the consumed mission fuel and it is triggered automatically if no initial values where given for the `design_mission`. A 4D trajectory mission is also planned, but it is still in the making.
By now, there is a [standard (3D) mission method](methods.md/#midfi) implemented providing a low-, a mid- and a high-fidelity method. Its mid-fidelity version can trigger the three missions mentioned above while the low-fidelity sub-version is only used for the `design_mission`. The later is a Breguet-based estimation of the consumed mission fuel and it is triggered automatically if no initial values where given for the `design_mission`. A 4D trajectory mission is available for the study and design mission which calculates the mission coordinates for every mission step along an Orthodrome.
<pre class='mermaid'>
graph TD;
A[mission_analysis]-->B[design_mission]
B-->E[low-fidelity]
B-->F[mid-fidelity]
B-->G["(high-fidelity)"]
B-->G[high-fidelity]
A-->C[study_mission]
C-->H[mid-fidelity]
C-->I["(high-fidelity)"]
C-->I[high-fidelity]
A-->D[requirements_mission]
D-->J[mid-fidelity]
D-->K["(high-fidelity)"]
D-->K[high-fidelity]
</pre>
......
......@@ -109,4 +109,41 @@ _FAR_FLAG_ consists of:
## 4D Trajectory (High Fidelity) {#highfi}
Oops, that is not ready yet. An industrious UNICADO coder is probably working on that right now :unicorn:
The high fidelity method works exactly as the [3D Standard Mission](#midfi) ...with one difference: it will additionally calculate the longitude and latitude of the aircraft along an Orthodrome in every mission step. For using this feature, you will need to provide information about the origin and destination airport to define the route you'd like to fly ✈️ How to do this can be checked in [Create Mission XML](../../sizing/create_mission_xml/airports.md). The coordinates will be calculated as follows:
First, the ratio $f$ of the traveled distance $r$ to the total mission distance $d$ is calculated:
$$
f = \frac{r}{d}
$$
This ratio is used to weight the origin ($origin$) and destination ($des$) coordinates. Using the auxiliary variables $A$ and $B$, the current position is determined in Cartesian coordinates $X$, $Y$ and $Z$:
<div class="mathjax-render">
$$
A = \frac{\sin((1 - f) \cdot d)}{\sin(d)}
$$
$$
B = \frac{\sin(f \cdot d)}{\sin(d)}
$$
$$
X = A \cdot \cos(\text{LAT}_{origin}) \cdot \cos(\text{LONG}_{origin}) + B \cdot \cos(\text{LAT}_{des}) \cdot \cos(\text{LONG}_{des})
$$
$$
Y = A \cdot \cos(\text{LAT}_{origin}) \cdot \sin(\text{LONG}_{origin}) + B \cdot \cos(\text{LAT}_{des}) \cdot \sin(\text{LONG}_{des})
$$
$$
Z = A \cdot \sin(\text{LAT}_{origin}) + B \cdot \sin(\text{LAT}_{des})
$$
</div>
Finally, a conversion back to geographic coordinates (latitude $LAT$ and longitude $LONG$) is performed:
$$
\text{LAT} = \text{atan2}\left(Z, \sqrt{X^2 + Y^2}\right)
$$
$$
\text{LONG} = \text{atan2}(Y, X)
$$
You'll find a plot of the resulting trajectory in the HTML report.
# Airports
The module provides the possibility to define an origin and destination airport of a mission. If you use this, the module will read the location of the airports from a database, calculate the shortest distance (Orthodrome) between them and write those information to the [output xml file](getting_started.md#output). This is a nice feature, as it allows [Mission Analysis](../../analysis/mission_analysis/index.md) to calculate the location of the aircraft in every mission step for a special route. While it is not a necessary information in the aircraft design process, for a detailed ecological assessment it is essential to know where exactly the aircraft operates.
To use this feature, you need to enable the switch `airports/enable` within the [Configuration File](getting_started.md#config_file). Then you can define the airports via their ICAO or IATA code. In total, there are more than 2500 airports available in the database. If you're interested to see the list or would like to add your own airport, have a look into the airports.csv located in the `create_mission_xml_lib`-folder next to the executable.
If you provide two existing airport codes, the module will calculate the Orthodrome between the airports via the Haversine formula [@Ple24]:
<div class="mathjax-render">
$$
\chi = \sin^2\left(\frac{\Delta \text{LAT}}{2}\right) + \cos(\text{LAT}_A) \cdot \cos(\text{LAT}_B) \cdot \sin^2\left(\frac{\Delta \text{LONG}}{2}\right)
$$
$$
D = (R + H) \cdot 2 \cdot \text{atan2}\left( \sqrt{\chi}, \sqrt{1 - \chi} \right)
$$
</div>
where:
- $D$: Distance between airports [m]
- $R$: Radius of the Earth [m]
- $H$: Initial flight altitude [m]
- $\text{LAT}$: Latitude in radians
- $\Delta \text{LAT} = \text{LAT}_A - \text{LAT}_B$
- $\text{LONG}$: Longitude in radians
- $\Delta \text{LONG} = \text{LONG}_A - \text{LONG}_B$
- $A$: Departure airport
- $B$: Destination airport
\ No newline at end of file
......@@ -77,8 +77,10 @@ program_settings
│ ├── alternate_distance
│ ├── engine_warmup_time
│ ├── taxiing_procedure
│ ├── origin_airport
│ ├── destination_airport
│ ├── airports
│ │ ├── enable
│ │ ├── origin_airport
│ │ ├── destination_airport
├── study_mission
│ ├── copy_mach_number
│ ├── copy_initial_cruise_altitude
......@@ -96,17 +98,19 @@ program_settings
│ ├── alternate_distance
│ ├── engine_warmup_time
│ ├── taxiing_procedure
│ ├── origin_airport
│ ├── destination_airport
│ ├── airports
│ │ ├── enable
│ │ ├── origin_airport
│ │ ├── destination_airport
```
In this config, you can decide what takeoff and approach procedure you want to use and how the aircraft shall operate at the airport and while cruising. In the `mission_selector`, you can choose if the `mission file` shall be generated for a `design_mission`, `study_mission` or `requirements_mission`. For more details, check the descriptions in `create_mission_xml_conf.xml`.
In this config, you can decide what takeoff and approach procedure you want to use and how the aircraft shall operate at the airport and while cruising. In the `mission_selector`, you can choose if the `mission file` shall be generated for a `design_mission`, `study_mission` or `requirements_mission`. You can also define the origin and destination airport in case you'd like get detailed trajectory information of [Mission Analysis](../../analysis/mission_analysis/index.md). For more details on possible settings, check the descriptions in `create_mission_xml_conf.xml`.
!!!node
`maximum_operating_mach_number` and the nodes starting with `auto` will lead to **mission_analysis** ignoring user input from the aircraft XML. In those cases, the tool will try to find an own optimum.
## Output
## Output {#output}
Like we have already discussed, the output of **create_mission_xml** is the mission_file which generally looks like this:
......@@ -175,6 +179,42 @@ Like we have already discussed, the output of **create_mission_xml** is the miss
<taxiing_procedure description="Taxiing procedure for start and landing.">
<value>propulsion_taxiing</value>
</taxiing_procedure>
<airports>
<origin>
<code description="ICAO or IATA code of origin airport">
<value>HAM</value>
</code>
<longitude description="Longitude of origin airport">
<value>0.1743274648</value>
<unit>rad</unit>
<lower_boundary>-3.15</lower_boundary>
<upper_boundary>3.15</upper_boundary>
</longitude>
<latitude description="Latitude of origin airport">
<value>0.9360268661</value>
<unit>rad</unit>
<lower_boundary>-1.58</lower_boundary>
<upper_boundary>1.58</upper_boundary>
</latitude>
</origin>
<destination>
<code description="ICAO or IATA code of origin airport">
<value>FRA</value>
</code>
<longitude description="Longitude of destination airport">
<value>0.1495826754</value>
<unit>rad</unit>
<lower_boundary>-3.15</lower_boundary>
<upper_boundary>3.15</upper_boundary>
</longitude>
<latitude description="Latitude of destination airport">
<value>0.8732459244</value>
<unit>rad</unit>
<lower_boundary>-1.58</lower_boundary>
<upper_boundary>1.58</upper_boundary>
</latitude>
</destination>
</airports>
<departure description="Departure procedure; Additional nodes neded for mode...
Takeoff: No additional nodes.
climb: End Point Altitude [m] (double).
......@@ -273,16 +313,19 @@ Like we have already discussed, the output of **create_mission_xml** is the miss
</mission>
```
!!!node
!!!note
Bleed air and power offtakes are not displayed here, but every step will include these, too. Offtakes are written and explained by [Systems Design](../systems_design/index.md).
!!!note
The airport information will only be written if you've enabled the aircraft switch in the configuration file!
While the most parameters like `range` and `alternate_distance` are copied directly from [Aircraft Exchange File](#acxml) and [Configuration File](#config_file), the `payload` is derived from the given number of passengers, their luggage and the mass per passenger. Each step (`departure_step`, `cruise_step` or `approach_step`) contains the nodes `configuration`, `mode`, `derate` and `rating`. The `configuration` node will tell [Mission Analysis](../../analysis/mission_analysis/index.md) which polar (generated by [Aerodynamic Assessment](../../analysis/aerodynamic_analysis/index.md)) shall be used. `derate` and `rating` characterize the engine operations and `mode` specifies what shall happen during the segment between two steps (more infos about `modes`, [click here](../../analysis/mission_analysis/mission_steps.md/#step_modes)). Furthermore, `cruise_steps` always include `flight_management_system` and `auto_select_optimum_flight_level` nodes.
While the most parameters like `terminal_operation_time` and `alternate_distance` are copied directly from [Aircraft Exchange File](#acxml) and [Configuration File](#config_file), the `payload` is derived from the given number of passengers, their luggage and the mass per passenger. The `range`is either copied from the [Aircraft Exchange File](#acxml), or calculated as described in [Airports](airports.md). Each step (`departure_step`, `cruise_step` or `approach_step`) contains the nodes `configuration`, `mode`, `derate` and `rating`. The `configuration` node will tell [Mission Analysis](../../analysis/mission_analysis/index.md) which polar (generated by [Aerodynamic Assessment](../../analysis/aerodynamic_analysis/index.md)) shall be used. `derate` and `rating` characterize the engine operations and `mode` specifies what shall happen during the segment between two steps (more infos about `modes`, [click here](../../analysis/mission_analysis/mission_steps.md/#step_modes)). Furthermore, `cruise_steps` always include `flight_management_system` and `auto_select_optimum_flight_level` nodes.
Other entries within these steps can differ depending on which `mode` is used. What input nodes are needed can be found in the descriptions of `departure`, `cruise` and `approach`. As a rule of thumb, the following input nodes can usually be expected:
- `mode` that changes speed: Target speed (Mach or CAS), rate of climb or target speed
- `mode` that changes altitude: Target altitude, rate of climb or target speed
!!!node
!!!note
For an `approach_step`, the rate of climb cannot be determined up-front, because the glide path angle must be kept constant at $3°$ due to regulatory requirements. Therefore, the rate of climb will be derived from the `glide_path` node by [Mission Analysis](../../analysis/mission_analysis/index.md).
......@@ -293,6 +293,7 @@ nav: # Customizes the main navigation struc
- Introduction: documentation/sizing/create_mission_xml/index.md
- Getting Started: documentation/sizing/create_mission_xml/getting_started.md
- Mission Steps: documentation/sizing/create_mission_xml/mission_steps.md
- Airports: documentation/sizing/create_mission_xml/airports.md
- Fuselage Design:
- Introduction: documentation/sizing/fuselage_design/index.md
- Getting Started: documentation/sizing/fuselage_design/getting_started.md
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment