Repository: fast-aircraft-design/FAST-OAD (language: python)

Issue:
Enhancements in Mission module
Closes #404.

- Documentation has been updated.  Preview [here](https://fast-oad.readthedocs.io/en/mission-fixes/documentation/mission_module/index.html)
  - Description of mission definition and segments has been update
  - A section has been added about extensibility. Description of FlightPoint class has been moved in there.
- `FlightSegment._get_gamma_and_acceleration()` now take a FlightPoint as input, to allow the calculation to depend on more parameters than mass, drag and thrust
- a parameter with a variable as value can now be associated to a unit and a default value that will be used in the OpenMDAO input declaration (and be in generated input data file)
- a target parameter can be declared as relative to the start point of the segment by prefixing the parameter name with `delta_`
- when setting a parameter, a minus sign can be put before a variable name to get the opposite value (can be useful with relative values)
- a parameter can now be set at route or mission level
- dISA can now be set in mission definition file with `isa_offset`
- taxi-out and takeoff are now set in mission definition file:
  - mission starting point (altitude, speed, mass) can now be set using the "start" segment
  - the mass input of the mission can be set using the "mass input" segment. This segment can be anywhere in the mission, though it is expected that fuel consumption in previous segments is mass-independent.
- a mission phase can now contain other phases 
- if a segment parameter (dataclass field) is an array or a list, the associated variable in mission file will be declared with `shape_by_conn=True`


Discussion / hints:
# [Codecov](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design) Report
> Merging [#430](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design) (65186b4) into [master](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/commit/dd7269d052efa7aa828cd16d1bb6264fe4f2ea13?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design) (dd7269d) will **increase** coverage by `0.03%`.
> The diff coverage is `91.20%`.

```diff
@@            Coverage Diff             @@
##           master     #430      +/-   ##
==========================================
+ Coverage   89.47%   89.51%   +0.03%     
==========================================
  Files          73       81       +8     
  Lines        4437     4777     +340     
  Branches      714      787      +73     
==========================================
+ Hits         3970     4276     +306     
- Misses        338      357      +19     
- Partials      129      144      +15     
```


| [Impacted Files](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design) | Coverage Δ | |
|---|---|---|
| [.../models/performances/mission/openmdao/link\_mtow.py](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design#diff-c3JjL2Zhc3RvYWQvbW9kZWxzL3BlcmZvcm1hbmNlcy9taXNzaW9uL29wZW5tZGFvL2xpbmtfbXRvdy5weQ==) | `88.88% <ø> (ø)` | |
| [src/fastoad/model\_base/datacls.py](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design#diff-c3JjL2Zhc3RvYWQvbW9kZWxfYmFzZS9kYXRhY2xzLnB5) | `75.00% <75.00%> (ø)` | |
| [...sion\_definition/mission\_builder/mission\_builder.py](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design#diff-c3JjL2Zhc3RvYWQvbW9kZWxzL3BlcmZvcm1hbmNlcy9taXNzaW9uL21pc3Npb25fZGVmaW5pdGlvbi9taXNzaW9uX2J1aWxkZXIvbWlzc2lvbl9idWlsZGVyLnB5) | `87.36% <87.36%> (ø)` | |
| [...performances/mission/openmdao/mission\_component.py](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design#diff-c3JjL2Zhc3RvYWQvbW9kZWxzL3BlcmZvcm1hbmNlcy9taXNzaW9uL29wZW5tZGFvL21pc3Npb25fY29tcG9uZW50LnB5) | `88.13% <88.13%> (ø)` | |
| [...stoad/models/performances/mission/segments/base.py](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design#diff-c3JjL2Zhc3RvYWQvbW9kZWxzL3BlcmZvcm1hbmNlcy9taXNzaW9uL3NlZ21lbnRzL2Jhc2UucHk=) | `91.66% <88.63%> (-1.63%)` | :arrow_down: |
| [...s/performances/mission/segments/altitude\_change.py](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design#diff-c3JjL2Zhc3RvYWQvbW9kZWxzL3BlcmZvcm1hbmNlcy9taXNzaW9uL3NlZ21lbnRzL2FsdGl0dWRlX2NoYW5nZS5weQ==) | `89.39% <88.88%> (-0.32%)` | :arrow_down: |
| [...oad/models/performances/mission/segments/cruise.py](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design#diff-c3JjL2Zhc3RvYWQvbW9kZWxzL3BlcmZvcm1hbmNlcy9taXNzaW9uL3NlZ21lbnRzL2NydWlzZS5weQ==) | `96.38% <89.47%> (-0.36%)` | :arrow_down: |
| [src/fastoad/openmdao/variables/variable.py](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design#diff-c3JjL2Zhc3RvYWQvb3Blbm1kYW8vdmFyaWFibGVzL3ZhcmlhYmxlLnB5) | `92.48% <90.00%> (+1.42%)` | :arrow_up: |
| [...dels/performances/mission/segments/speed\_change.py](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design#diff-c3JjL2Zhc3RvYWQvbW9kZWxzL3BlcmZvcm1hbmNlcy9taXNzaW9uL3NlZ21lbnRzL3NwZWVkX2NoYW5nZS5weQ==) | `90.00% <90.90%> (+1.11%)` | :arrow_up: |
| [...ion\_definition/mission\_builder/input\_definition.py](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design#diff-c3JjL2Zhc3RvYWQvbW9kZWxzL3BlcmZvcm1hbmNlcy9taXNzaW9uL21pc3Npb25fZGVmaW5pdGlvbi9taXNzaW9uX2J1aWxkZXIvaW5wdXRfZGVmaW5pdGlvbi5weQ==) | `91.66% <91.66%> (ø)` | |
| ... and [20 more](https://codecov.io/gh/fast-aircraft-design/FAST-OAD/pull/430/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design) | |

Help us with your feedback. Take ten seconds to tell us [how you rate us](https://about.codecov.io/nps?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design). Have a feature suggestion? [Share it here.](https://app.codecov.io/gh/feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=fast-aircraft-design)


Fix patch:
diff --git a/docs/documentation/mission_module/mission_file/mission_file.rst b/docs/documentation/mission_module/mission_file/mission_file.rst
index 69f6f1931..2ff590c8a 100644
--- a/docs/documentation/mission_module/mission_file/mission_file.rst
+++ b/docs/documentation/mission_module/mission_file/mission_file.rst
@@ -51,6 +51,29 @@ segments, phases, routes and missions. They are summarized in this table:
         | Generally, it begins when engine starts and ends when engine
         | stops.
 
+.. important::
+
+    Starting with version 1.4.0 of FAST-OAD, any mission has to use a variable for mass input. This
+    variable can be defined using the :ref:`start segment <segment-start>`, if it provides the mass at
+    mission start (typically a ramp-up weight), or using the :ref:`mass_input segment <segment-mass_input>`
+    otherwise (typically a takeoff weight, achieved after the taxi-out).
+
+    In the case no variable is defined for input mass, FAST-OAD will automatically add, at the
+    beginning of the mission, a taxi-out and a very simple takeoff phase
+    (:ref:`transition segment <segment-transition>`) with a
+    :ref:`mass_input segment <segment-mass_input>`. In that case, the input
+    mass is given by the :code:`data:mission:<mission_name>:TOW` variable, which represents the
+    aircraft mass just **after** takeoff.
+
+    This addition of taxi-out, takeoff and mass input allows to keep compatibility with
+    mission definitions for FAST-OAD versions earlier than 1.4.
+
+    (Please note that takeoff weight should be actually considered as
+    the mass just **before** takeoff, but this way of doing is kept for maximum
+    backward-compatibility)
+
+
+
 *************
 File sections
 *************
@@ -208,6 +231,8 @@ Example:
     missions:
       sizing:
         parts:
+          - phase: taxi_out
+          - phase: takeoff
           - route: main_route
           - route: diversion
           - phase: holding
@@ -218,6 +243,8 @@ Example:
               multiplier: 0.03
       operational:
         parts:
+          - phase: taxi_out
+          - phase: takeoff
           - route: main_route
           - phase: landing
           - phase: taxi_in
diff --git a/docs/documentation/mission_module/mission_file/segments.rst b/docs/documentation/mission_module/mission_file/segments.rst
index f3dd8f416..e111e4117 100644
--- a/docs/documentation/mission_module/mission_file/segments.rst
+++ b/docs/documentation/mission_module/mission_file/segments.rst
@@ -40,17 +40,31 @@ Available segments are:
    :local:
    :depth: 1
 
-.. _segment-speed_change:
+.. _segment-start:
 
 
 :code:`start` segment
 =====================
 
+.. versionadded:: 1.4.0
+
 :code:`start` is a special segment to be used at the beginning of the mission definition to
 specify the starting point of the mission, preferably by defining variables so it can be
 controlled from FAST-OAD input file.
 
-Without no :code:`start` specified, the mission is assumed to start at altitude 0, speed 0.
+Without no :code:`start` specified, the mission is assumed to start at altitude 0.0, speed 0.0.
+
+.. note::
+
+    The :code:`start` segment allows to define the aircraft mass at the beginning of the mission.
+    Yet it is possible to define aircraft mass at some intermediate phase (e.g. takeoff) using
+    the `mass_input segment`_.
+
+.. important::
+
+    **In any case, a variable for input mass has to be defined once and
+    only once in the whole mission.**
+
 
 **Example:**
 
@@ -78,13 +92,47 @@ Without no :code:`start` specified, the mission is assumed to start at altitude
           - phase: start_phase
           - ...
 
-.. note::
 
-    The :code:`start` segment allows to define the aircraft mass at the beginning of the mission.
-    Yet it is possible to define aircraft mass at some intermediate phase (e.g. takeoff) using
-    the `mass_input segment`_. In any case, mass has to be defined once and only once in the whole
-    mission.
 
+.. _segment-mass_input:
+
+:code:`mass_input` segment
+==================
+
+.. versionadded:: 1.4.0
+
+The `start segment`_ allows to define aircraft mass at the beginning of the mission, but it
+is sometimes needed to define the aircraft mass at some point in the mission. The typical
+example would be the need to specify a takeoff weight that is expected to be achieved after the
+taxi-out phase.
+
+The :code:`mass_input` segment is designed to address this need. It will ensure this mass is
+achieved at the specify instant in the mission by setting the start mass input accordingly.
+
+**Example:**
+
+.. code:: yaml
+
+    # For setting mass at the end of taxi-out:
+    phases:
+      taxi-out:
+        parts:
+          - segment: taxi
+            ...
+          - segment: mass_input
+            target:
+              mass:
+                value: my:MTOW:variable
+                unit: kg
+
+.. warning::
+
+    Currently, FAST-OAD assumes the fuel consumption before the :code:`mass_input` segment is
+    independent of aircraft mass, which is considered true in a phase such as taxi. Assuming
+    otherwise would require to solve an additional inner loop. Since it does not correspond to
+    any use case we currently know of, it has been decided to stick to the simple case.
+
+.. _segment-speed_change:
 
 :code:`speed_change` segment
 ============================
@@ -233,6 +281,7 @@ Python documentation: :class:`~fastoad.models.performances.mission.segments.crui
         value: 2000
         unit: NM
 
+.. _segment-holding:
 
 :code:`holding` segment
 =======================
@@ -255,6 +304,7 @@ Python documentation: :class:`~fastoad.models.performances.mission.segments.hold
         value: 20                               # 20 minutes holding
         unit: min
 
+.. _segment-taxi:
 
 :code:`taxi` segment
 ====================
@@ -274,6 +324,8 @@ Python documentation: :class:`~fastoad.models.performances.mission.segments.taxi
       time:
         value: 300              # taxi for 300 seconds (5 minutes)
 
+.. _segment-transition:
+
 :code:`transition` segment
 ==========================
 
@@ -343,41 +395,6 @@ Typically, it will be used as last segment to compute a reserve based on the Zer
       altitude: 0.
       mach: 0.
 
-
-:code:`mass_input` segment
-==================
-
-The `start segment` allows to define aircraft mass at the beginning of the mission, but it
-is sometimes needed to define the aircraft mass at some point in the mission. The typical
-example would be the need to specify a takeoff weight that is expected to be achieved after the
-taxi-out phase.
-
-The :code:`mass_input` segment is designed to address this need. It will ensure this mass is
-achieved at the specify instant in the mission by setting the start mass input accordingly.
-
-**Example:**
-
-.. code:: yaml
-
-    # For setting mass at the end of taxi-out:
-    phases:
-      taxi-out:
-        parts:
-          - segment: taxi
-            ...
-          - segment: mass_input
-            target:
-              mass:
-                value: my:MTOW:variable
-                unit: kg
-
-.. warning::
-
-    Currently, FAST-OAD assumes the fuel consumption before the :code:`mass_input` segment is
-    independent of aircraft mass, which is considered true in a phase such as taxi. Assuming
-    otherwise would require to solve an additional inner loop. Since it does not correspond to
-    any use case we currently know of, it has been decided to stick to the simple case.
-
 .. _segment-target:
 
 **************
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 06293d59f..a9f047fec 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -1,160 +1,26 @@
-aenum==3.1.0
-alabaster==0.7.12; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-anyio==3.3.3; python_full_version >= "3.6.2" and python_version >= "3.7"
-appnope==0.1.2; platform_system == "Darwin" and python_version >= "3.7" and sys_platform == "darwin" and python_full_version >= "3.6.2"
-argcomplete==1.12.3; python_version < "3.8.0" and python_version >= "3.7"
-argon2-cffi==21.1.0; python_version >= "3.7"
-astroid==2.8.2; python_version >= "3.6" and python_version < "4.0"
-atomicwrites==1.4.0; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.4.0"
-attrs==21.2.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-babel==2.9.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-backcall==0.2.0; python_full_version >= "3.6.2" and python_version >= "3.7"
-backports.entry-points-selectable==1.1.0; python_version >= "2.7" and python_full_version >= "3.6.1"
-beautifulsoup4==4.11.1; python_full_version >= "3.6.0" and python_version >= "3.7"
-black==21.9b0; python_full_version >= "3.6.2"
-bleach==4.1.0; python_version >= "3.7"
-certifi==2021.10.8; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
-cffi==1.15.0; python_version >= "3.7" and python_full_version >= "3.6.1" and implementation_name == "pypy"
-cfgv==3.3.1; python_full_version >= "3.6.1"
-charset-normalizer==2.0.7; python_full_version >= "3.6.0" and python_version >= "3.7"
-click==8.0.3; python_version >= "3.6"
-colorama==0.4.4; platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.6.2" and sys_platform == "win32" and python_version < "4.0" and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.5.0") and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6") or sys_platform == "win32" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6") and python_full_version >= "3.5.0")
-coverage==5.5; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0" and python_version < "4")
-cycler==0.10.0; python_version >= "3.7"
-debugpy==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-decorator==5.1.0; python_full_version >= "3.6.2" and python_version >= "3.7"
-defusedxml==0.7.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
-deprecated==1.2.13; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
-distlib==0.3.3; python_full_version >= "3.6.1"
-docutils==0.17.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
-ensure==1.0.0
-entrypoints==0.3; python_version >= "3.7" and python_full_version >= "3.6.1"
-fast-oad-cs25==0.1.1; python_version >= "3.7" and python_version < "4.0"
-fast-oad==1.3.0.post0; python_version >= "3.7" and python_version < "4.0"
-fastjsonschema==2.16.2; python_version >= "3.7"
-filelock==3.3.0; python_version >= "3.6" and python_full_version >= "3.6.1"
-flake8==4.0.1; python_version >= "3.6"
-identify==2.3.0; python_full_version >= "3.6.1"
-idna==3.3; python_full_version >= "3.6.2" and python_version >= "3.7"
-imagesize==1.2.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-importlib-metadata==4.2.0; python_version == "3.7" and python_full_version >= "3.6.2" or python_version < "3.10"
-iniconfig==1.1.1; python_version >= "3.6"
-ipopo==1.0.0
-ipykernel==6.4.1; python_version >= "3.7"
-ipysheet==0.5.0; python_version >= "3.6"
-ipython-genutils==0.2.0; python_version >= "3.7"
-ipython==7.28.0; python_full_version >= "3.6.2" and python_version >= "3.7"
-ipywidgets==7.7.2
-isort==5.9.3; python_full_version >= "3.6.1" and python_version < "4.0" and python_version >= "3.6"
-jedi==0.18.0; python_full_version >= "3.6.2" and python_version >= "3.7"
-jinja2==3.0.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-json5==0.9.6; python_version >= "3.7"
-jsonrpclib-pelix==0.4.3.1
-jsonschema==3.2.0
-jupyter-client==7.1.2; python_full_version >= "3.6.1"
-jupyter-core==4.8.1; python_version >= "3.7" and python_full_version >= "3.6.1"
-jupyter-server==1.19.0; python_version >= "3.7"
-jupyterlab-pygments==0.2.2; python_version >= "3.7"
-jupyterlab-server==2.10.3; python_version >= "3.7"
-jupyterlab-widgets==1.1.1; python_version >= "3.6"
-jupyterlab==3.4.7; python_version >= "3.7"
-kiwisolver==1.3.2; python_version >= "3.7"
-latexcodec==2.0.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-lazy-object-proxy==1.6.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.6.0"
-lxml==4.6.5; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
-markupsafe==2.0.1; python_version >= "3.7"
-matplotlib-inline==0.1.3; python_full_version >= "3.6.2" and python_version >= "3.7"
-matplotlib==3.4.0; python_version >= "3.7"
-mccabe==0.6.1; python_version >= "3.6" and python_version < "4.0"
-mistune==2.0.4; python_version >= "3.7"
-mypy-extensions==0.4.3; python_full_version >= "3.6.2"
-nbclassic==0.3.2; python_version >= "3.7"
-nbclient==0.6.3; python_full_version >= "3.7.0" and python_version >= "3.7"
-nbconvert==7.0.0; python_version >= "3.7"
-nbformat==5.6.1; python_full_version >= "3.7.0" and python_version >= "3.7"
-nbstripout==0.5.0; python_version >= "3.5"
-nbval==0.9.6
-nest-asyncio==1.5.5; python_version >= "3.7" and python_full_version >= "3.7.0"
-networkx==2.6.3; python_version >= "3.7" and python_version < "4.0"
-nodeenv==1.6.0; python_full_version >= "3.6.1"
-notebook==6.0.0; python_version >= "3.5"
-numpy==1.21.0; python_version >= "3.7"
-openmdao-extensions==1.1.0; python_version >= "3.7"
-openmdao==3.10.0; python_version >= "3.6"
-packaging==21.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-pandas==1.2.1; python_full_version >= "3.7.1"
-pandocfilters==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-parso==0.8.2; python_full_version >= "3.6.2" and python_version >= "3.7"
-pathspec==0.9.0; python_full_version >= "3.6.2"
-pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.7" and python_full_version >= "3.6.2"
-pickleshare==0.7.5; python_full_version >= "3.6.2" and python_version >= "3.7"
-pillow==8.4.0; python_version >= "3.7"
-platformdirs==2.4.0; python_version >= "3.6" and python_full_version >= "3.6.2" and python_version < "4.0"
-plotly==5.0.0; python_version >= "3.6"
-pluggy==1.0.0; python_version >= "3.6"
-pre-commit==2.15.0; python_full_version >= "3.6.1"
-prometheus-client==0.11.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-prompt-toolkit==3.0.20; python_full_version >= "3.6.2" and python_version >= "3.7"
-ptyprocess==0.7.0; os_name != "nt" and python_version >= "3.7" and sys_platform != "win32" and python_full_version >= "3.6.2"
-py==1.10.0; python_full_version >= "3.6.1" and python_version >= "3.7" and implementation_name == "pypy" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6")
-pybtex-docutils==1.0.1; python_version >= "3.6"
-pybtex==0.24.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6"
-pycodestyle==2.8.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
-pycparser==2.20; python_version >= "3.7" and python_full_version >= "3.6.1" and implementation_name == "pypy"
-pydoe2==1.3.0; python_version >= "3.7" and python_version < "4.0"
-pyflakes==2.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-pygments==2.10.0; python_full_version >= "3.6.2" and python_version >= "3.7" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6")
-pylint==2.11.1; python_version >= "3.6" and python_version < "4.0"
-pyparsing==2.4.7; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.3.0" and python_version >= "3.7" and python_version < "4.0"
-pyrsistent==0.18.0; python_version >= "3.7"
-pytest-cov==3.0.0; python_version >= "3.6"
-pytest==6.2.5; python_version >= "3.6"
-python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7" and python_version < "4.0"
-pytz==2021.3; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.7.1" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7")
-pywin32==302; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.7" and python_full_version >= "3.6.1"
-pywinpty==1.1.4; os_name == "nt" and python_version >= "3.7"
-pyyaml==6.0; python_version >= "3.6" and python_full_version >= "3.6.1" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6")
-pyzmq==22.3.0; python_version >= "3.7" and python_full_version >= "3.6.1"
-regex==2021.10.8; python_full_version >= "3.6.2"
-requests==2.26.0; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.6.0" and python_version >= "3.7" and python_version < "4.0"
-ruamel.yaml.clib==0.2.6; platform_python_implementation == "CPython" and python_version < "3.8" and python_version >= "3.5"
-ruamel.yaml==0.16.0
-scipy==1.5.4; python_version >= "3.6"
-send2trash==1.8.0; python_version >= "3.7"
-six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.7" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6")
-sniffio==1.2.0; python_full_version >= "3.6.2" and python_version >= "3.7"
-snowballstemmer==2.1.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-soupsieve==2.3.2.post1; python_full_version >= "3.6.0" and python_version >= "3.7"
-sphinx-rtd-theme==1.0.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
-sphinx==4.2.0; python_version >= "3.6"
-sphinxcontrib-applehelp==1.0.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-sphinxcontrib-bibtex==2.4.1; python_version >= "3.6"
-sphinxcontrib-devhelp==1.0.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-sphinxcontrib-htmlhelp==2.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-sphinxcontrib-jsmath==1.0.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-sphinxcontrib-qthelp==1.0.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-sphinxcontrib-serializinghtml==1.1.5; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
-stdatm==0.1.0; python_version >= "3.7" and python_version < "4.0"
-tabulate==0.8.9
-tenacity==8.0.1; python_version >= "3.6"
-terminado==0.12.1; python_version >= "3.7"
-tinycss2==1.1.1; python_version >= "3.7"
-tokenize-rt==4.1.0; python_full_version >= "3.6.2"
-toml==0.10.2; python_full_version >= "3.6.1" and python_version >= "3.6" and python_version < "4" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.3.0") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" and python_version >= "3.6") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6")
-tomli-w==1.0.0; python_version >= "3.7"
-tomli==1.2.1; python_version >= "3.7" and python_full_version >= "3.6.2"
-tomlkit==0.5.3; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
-tornado==6.1; python_version >= "3.7" and python_full_version >= "3.6.1"
-traitlets==5.1.0; python_version >= "3.7" and python_full_version >= "3.7.0"
-typed-ast==1.4.3; python_version < "3.8" and python_full_version >= "3.6.2" and implementation_name == "cpython" and python_version >= "3.6"
-typing-extensions==3.10.0.2
-urllib3==1.26.7; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7"
-virtualenv==20.8.1; python_full_version >= "3.6.1"
-wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.7"
-webencodings==0.5.1; python_version >= "3.7"
-websocket-client==1.2.1; python_version >= "3.7"
-widgetsnbextension==3.6.1; python_version >= "3.6"
-wop==2.2.0; python_version >= "3.7"
-wrapt==1.12.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.4.0"
-xdsmjs==1.0.1; python_version >= "3.7"
-zipp==3.6.0; python_version >= "3.7" and python_version < "3.8" and python_full_version >= "3.6.2"
+numpy
+scipy
+pandas
+openmdao
+ipopo
+ipywidgets
+ipysheet
+plotly
+wop
+lxml
+tomlkit
+ruamel.yaml
+jsonschema
+ensure
+tabulate
+aenum
+jupyterlab
+jupyter-client
+notebook
+stdatm
+Deprecated
+click
+importlib-metadata
+sphinx
+sphinx-rtd-theme
+sphinxcontrib-bibtex
diff --git a/src/fastoad/models/performances/mission/mission_definition/mission_builder/input_definition.py b/src/fastoad/models/performances/mission/mission_definition/mission_builder/input_definition.py
index 2b5f3ada3..70d43bb33 100644
--- a/src/fastoad/models/performances/mission/mission_definition/mission_builder/input_definition.py
+++ b/src/fastoad/models/performances/mission/mission_definition/mission_builder/input_definition.py
@@ -192,7 +192,20 @@ def variable_name(self, var_name: Optional[str]):
             if "~" in var_name:
                 # We authorize colons next to "~", but we do as they were not present.
                 var_name = var_name.replace(":~", "~").replace("~:", "~")
-                prefix, suffix = var_name.replace(":~", "~").split("~")
+                parts = var_name.replace(":~", "~").split("~")
+                if len(parts) > 2:
+                    # Hidden feature for now: using a double tilda (~~) will trigger
+                    # a replacement by the mission name only
+                    # (useful for backward compatibility since we need to provide
+                    #  "data:mission:<mission_name>:TOW" as variable
+                    prefix = parts[0]
+                    suffix = parts[-1]
+                    part_identifier = self.part_identifier.split(":")[0]
+                else:
+                    # Standard case with simple tilda
+                    prefix, suffix = var_name.replace(":~", "~").split("~")
+                    part_identifier = self.part_identifier
+
                 if not prefix:
                     # If nothing before "~", a default value is used
                     prefix = "data:mission"
@@ -200,7 +213,7 @@ def variable_name(self, var_name: Optional[str]):
                     # If nothing after "~", the parameter name is used
                     suffix = self.parameter_name
 
-                var_name = ":".join([prefix, self.part_identifier, suffix])
+                var_name = ":".join([prefix, part_identifier, suffix])
 
             self._variable_name = var_name
         else:
diff --git a/src/fastoad/models/performances/mission/mission_definition/mission_builder/mission_builder.py b/src/fastoad/models/performances/mission/mission_definition/mission_builder/mission_builder.py
index 9d10550cb..84cb358bb 100644
--- a/src/fastoad/models/performances/mission/mission_definition/mission_builder/mission_builder.py
+++ b/src/fastoad/models/performances/mission/mission_definition/mission_builder/mission_builder.py
@@ -24,7 +24,11 @@
 from fastoad.openmdao.variables import VariableList
 from .constants import NAME_TAG, SEGMENT_TYPE_TAG, TYPE_TAG
 from .input_definition import InputDefinition
-from .structure_builders import AbstractStructureBuilder, MissionStructureBuilder
+from .structure_builders import (
+    AbstractStructureBuilder,
+    MissionStructureBuilder,
+    PhaseStructureBuilder,
+)
 from ..exceptions import FastMissionFileMissingMissionNameError
 from ..schema import (
     CLIMB_PARTS_TAG,
@@ -88,6 +92,9 @@ def definition(self, mission_definition: Union[str, MissionDefinition]):
                 self._definition, mission_name
             )
 
+            if self.get_input_weight_variable_name(mission_name) is None:
+                self._add_default_taxi_takeoff(mission_name)
+
     @property
     def propulsion(self) -> IPropulsion:
         """Propulsion model for performance computation."""
@@ -115,6 +122,9 @@ def build(self, inputs: Optional[Mapping] = None, mission_name: str = None) -> F
         :param mission_name: mission name (can be omitted if only one mission is defined)
         :return:
         """
+        if self.get_input_weight_variable_name(mission_name) is None:
+            self._add_default_taxi_takeoff(mission_name)
+
         for input_def in self._structure_builders[mission_name].get_input_definitions():
             input_def.set_variable_value(inputs)
         if mission_name is None:
@@ -418,3 +428,60 @@ def _get_input_weight_variable_name_in_structure(
                     return name
 
         return None
+
+    def _add_default_taxi_takeoff(self, mission_name):
+        definition = {
+            "phases": {
+                "taxi_out": {
+                    "parts": [
+                        {
+                            "segment": "start",
+                            "target": {
+                                "altitude": {"value": "~", "unit": "ft", "default": 0.0},
+                                "true_airspeed": {"value": "~", "unit": "m/s", "default": 0.0},
+                            },
+                        },
+                        {
+                            "segment": "taxi",
+                            "time_step": {
+                                "value": "settings:mission~",
+                                "default": 60.0,
+                                "unit": "s",
+                            },
+                            "thrust_rate": "~",
+                            "true_airspeed": {"value": "~", "unit": "m/s", "default": 0.0},
+                            "target": {"time": "~duration"},
+                        },
+                    ],
+                },
+                "takeoff": {
+                    "parts": [
+                        {
+                            "segment": "transition",
+                            "target": {
+                                "delta_altitude": {
+                                    "value": "~safety_altitude",
+                                    "unit": "ft",
+                                    "default": 35.0,
+                                },
+                                "delta_mass": {"value": "-~fuel", "unit": "kg"},
+                                "time": {"value": "~duration", "default": 0.0, "unit": "s"},
+                                "true_airspeed": {"value": "~V2", "unit": "m/s"},
+                            },
+                        },
+                        {
+                            "segment": "mass_input",
+                            "target": {"mass": {"value": "~~:TOW", "unit": "kg"}},
+                        },
+                    ]
+                },
+            }
+        }
+
+        taxi_out = PhaseStructureBuilder(definition, "taxi_out", mission_name)
+        taxi_out_structure = self._structure_builders[mission_name].process_builder(taxi_out)
+        self._structure_builders[mission_name].structure[PARTS_TAG].insert(0, taxi_out_structure)
+
+        takeoff = PhaseStructureBuilder(definition, "takeoff", mission_name)
+        takeoff_structure = self._structure_builders[mission_name].process_builder(takeoff)
+        self._structure_builders[mission_name].structure[PARTS_TAG].insert(1, takeoff_structure)
diff --git a/src/fastoad/models/performances/mission/mission_definition/mission_builder/structure_builders.py b/src/fastoad/models/performances/mission/mission_definition/mission_builder/structure_builders.py
index fc0e506be..5ac181328 100644
--- a/src/fastoad/models/performances/mission/mission_definition/mission_builder/structure_builders.py
+++ b/src/fastoad/models/performances/mission/mission_definition/mission_builder/structure_builders.py
@@ -89,8 +89,8 @@ def __post_init__(self, definition):
     @property
     def structure(self) -> OrderedDict:
         """A dictionary that is ready to be translated to the matching implementation."""
-        for builder, place_holder in self._builders:
-            place_holder.update(builder.structure)
+        for builder, placeholder in self._builders:
+            placeholder.update(builder.structure)
             self._input_definitions += builder.get_input_definitions()
         self._builders = []  # Builders have been used and can be forgotten.
         return self._structure
@@ -101,19 +101,26 @@ def get_input_definitions(self) -> List[InputDefinition]:
             chain(*[builder.get_input_definitions() for builder, _ in self._builders])
         )
 
-    def _insert_builder(self, builder: "AbstractStructureBuilder", place_holder: dict):
+    def process_builder(self, builder: "AbstractStructureBuilder") -> dict:
         """
-        Method to be used when another StructureBuilder object is needed in :meth:`build`.
+        Method to be used when another StructureBuilder object should be inserted in
+        :attr:`structure`.
 
         Not using this method will prevent a correct processing of :attr:`input_definitions`.
 
-        At location where the builder result should be used, an empty dict should be put, and this
-        empty dict should be provided as `place_holder` argument.
+        .. note::
 
-        :param builder:
-        :param place_holder:
+            The returned object is always an empty dict. It is actually a memory reference that
+            will allow to fill this "placeholder" later with the final result of the builder, that
+            cannot be completely known when builder is created from read definition.
+
+        :param builder: the builder object
+        :return: the object that has to be put at location where the builder result should be used
         """
-        self._builders.append((builder, place_holder))
+
+        placeholder = {}
+        self._builders.append((builder, placeholder))
+        return placeholder
 
     @abstractmethod
     def _build(self, definition: dict) -> OrderedDict:
@@ -143,13 +150,18 @@ def qualified_name(self):
         return name
 
     def _parse_inputs(
-        self, structure, input_definitions, parent=None, part_identifier="", segment_class=None
+        self,
+        structure,
+        input_definitions: List[InputDefinition],
+        parent=None,
+        part_identifier="",
+        segment_class=None,
     ):
         """
         Returns the `definition` structure where all inputs (string/numeric values, numeric lists,
         dicts with a "value key"), have been converted to an InputDefinition instance.
 
-        Created InputDefinition instances are stored in self._input_definitions.
+        Created InputDefinition instances are stored in provided input_definitions.
 
         :param structure:
         :param parent:
@@ -291,7 +303,7 @@ def _build(self, definition: dict) -> OrderedDict:
                 raise RuntimeError(f"Unexpected structure in definition of phase {self.name}")
 
             phase_structure[PARTS_TAG][i] = {}
-            self._insert_builder(builder, phase_structure[PARTS_TAG][i])
+            phase_structure[PARTS_TAG][i] = self.process_builder(builder)
 
         return phase_structure
 
@@ -314,8 +326,7 @@ def _build(self, definition: dict) -> OrderedDict:
         builder = SegmentStructureBuilder(
             route_definition[CRUISE_PART_TAG], "cruise", self.qualified_name
         )
-        route_structure[CRUISE_PART_TAG] = {}
-        self._insert_builder(builder, route_structure[CRUISE_PART_TAG])
+        route_structure[CRUISE_PART_TAG] = self.process_builder(builder)
 
         route_structure[DESCENT_PARTS_TAG] = self._get_route_climb_or_descent_structure(
             definition, route_definition[DESCENT_PARTS_TAG]
@@ -328,8 +339,7 @@ def _get_route_climb_or_descent_structure(self, global_definition, parts_definit
         for part_definition in parts_definition:
             phase_name = part_definition["phase"]
             builder = PhaseStructureBuilder(global_definition, phase_name, self.qualified_name)
-            phase_structure = {}
-            self._insert_builder(builder, phase_structure)
+            phase_structure = self.process_builder(builder)
             parts.append(phase_structure)
         return parts
 
@@ -358,8 +368,7 @@ def _build(self, definition: dict) -> OrderedDict:
             else:
                 builder = DefaultStructureBuilder(part_definition, "", self.qualified_name)
 
-            part_structure = {}
-            self._insert_builder(builder, part_structure)
+            part_structure = self.process_builder(builder)
             mission_parts.append(part_structure)
 
         mission_structure[PARTS_TAG] = mission_parts


Test patch:
diff --git a/src/fastoad/models/performances/mission/mission_definition/mission_builder/tests/data/mission.yml b/src/fastoad/models/performances/mission/mission_definition/mission_builder/tests/data/mission.yml
index 92cdbc6fc..a65357d11 100644
--- a/src/fastoad/models/performances/mission/mission_definition/mission_builder/tests/data/mission.yml
+++ b/src/fastoad/models/performances/mission/mission_definition/mission_builder/tests/data/mission.yml
@@ -7,10 +7,13 @@ phases:
           value: some:static:array
         vector_parameter_2: some:dynamic:array
         vector_parameter_3:
-          value: [10.0, 20.0, 30.0]
-        vector_parameter_4: [100.0, 200.0, 300.0]
+          value: [ 10.0, 20.0, 30.0 ]
+        vector_parameter_4: [ 100.0, 200.0, 300.0 ]
         target:
           altitude: 0.0
+      - segment: mass_input # Settings a mass input variable to prevent the "taxi_out-takeoff" autocompletion
+        target:
+          mass: ~
   initial_climb:
     engine_setting: takeoff
     polar:
diff --git a/src/fastoad/models/performances/mission/mission_definition/mission_builder/tests/test_mission_builder.py b/src/fastoad/models/performances/mission/mission_definition/mission_builder/tests/test_mission_builder.py
index 0bcfa3fb5..fe5f5550f 100644
--- a/src/fastoad/models/performances/mission/mission_definition/mission_builder/tests/test_mission_builder.py
+++ b/src/fastoad/models/performances/mission/mission_definition/mission_builder/tests/test_mission_builder.py
@@ -28,8 +28,11 @@
 from fastoad.models.performances.mission.segments.altitude_change import AltitudeChangeSegment
 from fastoad.models.performances.mission.segments.base import AbstractFlightSegment
 from fastoad.models.performances.mission.segments.hold import HoldSegment
+from fastoad.models.performances.mission.segments.mass_input import MassTargetSegment
 from fastoad.models.performances.mission.segments.speed_change import SpeedChangeSegment
+from fastoad.models.performances.mission.segments.start import Start
 from fastoad.models.performances.mission.segments.taxi import TaxiSegment
+from fastoad.models.performances.mission.segments.transition import DummyTransitionSegment
 from fastoad.openmdao.variables import Variable
 from ..input_definition import InputDefinition
 from ..mission_builder import MissionBuilder
@@ -96,12 +99,14 @@ def test_get_input_weight_variable_name():
         propulsion=Mock(IPropulsion),
         reference_area=100.0,
     )
-    assert mission_builder.get_input_weight_variable_name("sizing") is None
     assert (
         mission_builder.get_input_weight_variable_name("operational")
         == "data:mission:operational:taxi_out:TOW"
     )
 
+    # No mass input defined in "sizing", so it is completed by the default taxi_out & takeoff phase
+    assert mission_builder.get_input_weight_variable_name("sizing") == "data:mission:sizing:TOW"
+
 
 def test_inputs():
     mission_builder = MissionBuilder(
@@ -112,26 +117,41 @@ def test_inputs():
     with pytest.raises(FastMissionFileMissingMissionNameError):
         mission_builder.get_input_variables()
 
-    assert set(mission_builder.get_input_variables("sizing")) == {
-        Variable("data:TLAR:cruise_mach", val=np.nan),
-        Variable("data:aerodynamics:aircraft:cruise:CD", val=np.nan, shape_by_conn=True),
-        Variable("data:aerodynamics:aircraft:cruise:CL", val=np.nan, shape_by_conn=True),
-        Variable("data:aerodynamics:aircraft:takeoff:CD", val=np.nan, shape_by_conn=True),
-        Variable("data:aerodynamics:aircraft:takeoff:CL", val=np.nan, shape_by_conn=True),
-        Variable("data:mission:sizing:diversion:descent:final_altitude", val=np.nan, units="m"),
-        Variable("data:mission:sizing:diversion:range", val=np.nan, units="m"),
-        Variable("data:mission:sizing:holding:duration", val=np.nan, units="s"),
-        Variable("data:mission:sizing:main:descent:final_altitude", val=np.nan, units="m"),
-        Variable("data:mission:sizing:main:range", val=np.nan, units="m"),
-        Variable("data:mission:sizing:taxi_in:duration", val=np.nan, units="s"),
-        Variable("data:mission:sizing:taxi_in:thrust_rate", val=np.nan),
-        Variable("data:propulsion:initial_climb:thrust_rate", val=1.0),
-        Variable("data:propulsion:climb:thrust_rate", val=np.nan),
-        Variable("data:propulsion:descent:thrust_rate", val=np.nan),
-        Variable("data:mission:sizing:main:climb:time_step", val=np.nan, units="s"),
-        Variable("settings:mission:sizing:main:initial_climb:time_step", val=np.nan, units="s"),
-        Variable("settings:mission:sizing:diversion:diversion_climb:t_step", val=np.nan, units="s"),
-    }
+    assert sorted(mission_builder.get_input_variables("sizing"), key=lambda v: v.name) == sorted(
+        [
+            Variable("data:mission:sizing:taxi_out:altitude", val=0.0, units="ft"),
+            Variable("data:mission:sizing:taxi_out:true_airspeed", val=0.0, units="m/s"),
+            Variable("data:mission:sizing:taxi_out:duration", val=np.nan, units="s"),
+            Variable("settings:mission:sizing:taxi_out:time_step", val=60.0, units="s"),
+            Variable("data:mission:sizing:taxi_out:thrust_rate", val=np.nan),
+            Variable("data:mission:sizing:takeoff:safety_altitude", val=35.0, units="ft"),
+            Variable("data:mission:sizing:takeoff:fuel", val=np.nan, units="kg"),
+            Variable("data:mission:sizing:takeoff:duration", val=0.0, units="s"),
+            Variable("data:mission:sizing:takeoff:V2", val=np.nan, units="m/s"),
+            Variable("data:mission:sizing:TOW", val=np.nan, units="kg"),
+            Variable("data:TLAR:cruise_mach", val=np.nan),
+            Variable("data:aerodynamics:aircraft:cruise:CD", val=np.nan, shape_by_conn=True),
+            Variable("data:aerodynamics:aircraft:cruise:CL", val=np.nan, shape_by_conn=True),
+            Variable("data:aerodynamics:aircraft:takeoff:CD", val=np.nan, shape_by_conn=True),
+            Variable("data:aerodynamics:aircraft:takeoff:CL", val=np.nan, shape_by_conn=True),
+            Variable("data:mission:sizing:diversion:descent:final_altitude", val=np.nan, units="m"),
+            Variable("data:mission:sizing:diversion:range", val=np.nan, units="m"),
+            Variable("data:mission:sizing:holding:duration", val=np.nan, units="s"),
+            Variable("data:mission:sizing:main:descent:final_altitude", val=np.nan, units="m"),
+            Variable("data:mission:sizing:main:range", val=np.nan, units="m"),
+            Variable("data:mission:sizing:taxi_in:duration", val=np.nan, units="s"),
+            Variable("data:mission:sizing:taxi_in:thrust_rate", val=np.nan),
+            Variable("data:propulsion:initial_climb:thrust_rate", val=1.0),
+            Variable("data:propulsion:climb:thrust_rate", val=np.nan),
+            Variable("data:propulsion:descent:thrust_rate", val=np.nan),
+            Variable("data:mission:sizing:main:climb:time_step", val=np.nan, units="s"),
+            Variable("settings:mission:sizing:main:initial_climb:time_step", val=np.nan, units="s"),
+            Variable(
+                "settings:mission:sizing:diversion:diversion_climb:t_step", val=np.nan, units="s"
+            ),
+        ],
+        key=lambda v: v.name,
+    )
 
     assert set(mission_builder.get_input_variables("operational")) == {
         Variable("data:TLAR:cruise_mach", val=np.nan),
@@ -162,6 +182,7 @@ def test_build():
         mission_definition, propulsion=Mock(IPropulsion), reference_area=100.0
     )
 
+    # Check of "sizing" mission ################################################
     cl = np.linspace(0.0, 1.0, 11)
     cd = 0.5 * cl ** 2
 
@@ -183,15 +204,47 @@ def test_build():
         "data:mission:sizing:taxi_in:duration": 300.0,
         "data:mission:sizing:taxi_in:thrust_rate": 0.5,
     }
+
     mission = mission_builder.build(inputs, mission_name="sizing")
+    # "sizing" mission defines no input mass variable, so it is automatically completed
+    # with default taxi_out and takeoff phases, hence the 2 additional elements
+    # in mission.flight_sequence (total of 6 instead of 4).
+    assert len(mission.flight_sequence) == 6
+    assert mission.flight_sequence[0].name == "sizing:taxi_out"
+    assert mission.flight_sequence[1].name == "sizing:takeoff"
+    assert mission.flight_sequence[2].name == "sizing:main"
+    assert mission.flight_sequence[3].name == "sizing:diversion"
+    assert mission.flight_sequence[4].name == "sizing:holding"
+    assert mission.flight_sequence[5].name == "sizing:taxi_in"
+
+    # Taxi-out phase -----------------------------------------------------------
+    taxi_out_phase = mission.flight_sequence[0]
+    assert isinstance(taxi_out_phase, FlightSequence)
+    assert taxi_out_phase.name == "sizing:taxi_out"
+    assert len(taxi_out_phase.flight_sequence) == 2
+
+    start = taxi_out_phase.flight_sequence[0]
+    assert start.name == "sizing:taxi_out"
+    assert isinstance(start, Start)
+    taxi_out = taxi_out_phase.flight_sequence[1]
+    assert start.name == "sizing:taxi_out"
+    assert isinstance(taxi_out, TaxiSegment)
 
-    assert len(mission.flight_sequence) == 4
-    assert mission.flight_sequence[0].name == "sizing:main"
-    assert mission.flight_sequence[1].name == "sizing:diversion"
-    assert mission.flight_sequence[2].name == "sizing:holding"
-    assert mission.flight_sequence[3].name == "sizing:taxi_in"
+    # Takeoff phase -----------------------------------------------------------
+    takeoff_phase = mission.flight_sequence[1]
+    assert isinstance(takeoff_phase, FlightSequence)
+    assert takeoff_phase.name == "sizing:takeoff"
+    assert len(takeoff_phase.flight_sequence) == 2
 
-    main_route = mission.flight_sequence[0]
+    takeoff = takeoff_phase.flight_sequence[0]
+    assert takeoff.name == "sizing:takeoff"
+    assert isinstance(takeoff, DummyTransitionSegment)
+    mass_input = takeoff_phase.flight_sequence[1]
+    assert mass_input.name == "sizing:takeoff"
+    assert isinstance(mass_input, MassTargetSegment)
+
+    # Main route phase ---------------------------------------------------------
+    main_route = mission.flight_sequence[2]
     assert isinstance(main_route, FlightSequence)
     assert len(main_route.flight_sequence) == 4
     assert main_route.distance_accuracy == 500.0
@@ -225,18 +278,20 @@ def test_build():
     assert_allclose(climb2.polar.definition_cl, cl)
     assert_allclose(climb2.polar.cd(), cd)
 
-    holding_phase = mission.flight_sequence[2]
+    # Holding phase ------------------------------------------------------------
+    holding_phase = mission.flight_sequence[4]
     assert isinstance(holding_phase, FlightSequence)
     assert len(holding_phase.flight_sequence) == 1
     holding = holding_phase.flight_sequence[0]
     assert isinstance(holding, HoldSegment)
 
-    taxi_in_phase = mission.flight_sequence[3]
+    taxi_in_phase = mission.flight_sequence[5]
     assert isinstance(taxi_in_phase, FlightSequence)
     assert len(taxi_in_phase.flight_sequence) == 1
     taxi_in = taxi_in_phase.flight_sequence[0]
     assert isinstance(taxi_in, TaxiSegment)
 
+    # Check of "test" mission ##################################################
     test_inputs = {
         "some:static:array": [1.0, 2.0, 3.0],
         "some:dynamic:array": np.linspace(0.0, 5.0, 6),
@@ -244,7 +299,7 @@ def test_build():
     test_mission = mission_builder.build(test_inputs, mission_name="test")
     assert len(test_mission.flight_sequence) == 1
     assert isinstance(test_mission.flight_sequence[0], FlightSequence)
-    assert len(test_mission.flight_sequence[0].flight_sequence) == 1
+    assert len(test_mission.flight_sequence[0].flight_sequence) == 2
     segment = test_mission.flight_sequence[0].flight_sequence[0]
     assert isinstance(segment, TestSegment)
     assert segment.scalar_parameter == 42.0
@@ -1044,6 +1099,188 @@ def _get_expected_structure():
                 (
                     "parts",
                     [
+                        OrderedDict(
+                            [
+                                (
+                                    "parts",
+                                    [
+                                        {
+                                            "name": "sizing:taxi_out",
+                                            "segment_type": "start",
+                                            "target": {
+                                                "altitude": InputDefinition(
+                                                    parameter_name="altitude",
+                                                    input_value=None,
+                                                    input_unit="ft",
+                                                    default_value=0.0,
+                                                    is_relative=False,
+                                                    part_identifier="sizing:taxi_out",
+                                                    shape=None,
+                                                    shape_by_conn=False,
+                                                    use_opposite=False,
+                                                    variable_name="data:mission:sizing:taxi_out:altitude",
+                                                ),
+                                                "true_airspeed": InputDefinition(
+                                                    parameter_name="true_airspeed",
+                                                    input_value=None,
+                                                    input_unit="m/s",
+                                                    default_value=0.0,
+                                                    is_relative=False,
+                                                    part_identifier="sizing:taxi_out",
+                                                    shape=None,
+                                                    shape_by_conn=False,
+                                                    use_opposite=False,
+                                                    variable_name="data:mission:sizing:taxi_out:true_airspeed",
+                                                ),
+                                            },
+                                            "type": "segment",
+                                        },
+                                        {
+                                            "name": "sizing:taxi_out",
+                                            "segment_type": "taxi",
+                                            "target": {
+                                                "time": InputDefinition(
+                                                    parameter_name="time",
+                                                    input_value=None,
+                                                    input_unit="s",
+                                                    default_value=np.nan,
+                                                    is_relative=False,
+                                                    part_identifier="sizing:taxi_out",
+                                                    shape=None,
+                                                    shape_by_conn=False,
+                                                    use_opposite=False,
+                                                    variable_name="data:mission:sizing:taxi_out:duration",
+                                                )
+                                            },
+                                            "thrust_rate": InputDefinition(
+                                                parameter_name="thrust_rate",
+                                                input_value=None,
+                                                input_unit=None,
+                                                default_value=np.nan,
+                                                is_relative=False,
+                                                part_identifier="sizing:taxi_out",
+                                                shape=None,
+                                                shape_by_conn=False,
+                                                use_opposite=False,
+                                                variable_name="data:mission:sizing:taxi_out:thrust_rate",
+                                            ),
+                                            "time_step": InputDefinition(
+                                                parameter_name="time_step",
+                                                input_value=None,
+                                                input_unit="s",
+                                                default_value=60,
+                                                is_relative=False,
+                                                part_identifier="sizing:taxi_out",
+                                                shape=None,
+                                                shape_by_conn=False,
+                                                use_opposite=False,
+                                                variable_name="settings:mission:sizing:taxi_out:time_step",
+                                            ),
+                                            "true_airspeed": InputDefinition(
+                                                parameter_name="true_airspeed",
+                                                input_value=None,
+                                                input_unit="m/s",
+                                                default_value=0.0,
+                                                is_relative=False,
+                                                part_identifier="sizing:taxi_out",
+                                                shape=None,
+                                                shape_by_conn=False,
+                                                use_opposite=False,
+                                                variable_name="data:mission:sizing:taxi_out:true_airspeed",
+                                            ),
+                                            "type": "segment",
+                                        },
+                                    ],
+                                ),
+                                ("name", "sizing:taxi_out"),
+                                ("type", "phase"),
+                            ]
+                        ),
+                        OrderedDict(
+                            [
+                                (
+                                    "parts",
+                                    [
+                                        {
+                                            "name": "sizing:takeoff",
+                                            "segment_type": "transition",
+                                            "target": {
+                                                "delta_altitude": InputDefinition(
+                                                    parameter_name="altitude",
+                                                    input_value=None,
+                                                    input_unit="ft",
+                                                    default_value=35,
+                                                    is_relative=True,
+                                                    part_identifier="sizing:takeoff",
+                                                    shape=None,
+                                                    shape_by_conn=False,
+                                                    use_opposite=False,
+                                                    variable_name="data:mission:sizing:takeoff:safety_altitude",
+                                                ),
+                                                "delta_mass": InputDefinition(
+                                                    parameter_name="mass",
+                                                    input_value=None,
+                                                    input_unit="kg",
+                                                    default_value=np.nan,
+                                                    is_relative=True,
+                                                    part_identifier="sizing:takeoff",
+                                                    shape=None,
+                                                    shape_by_conn=False,
+                                                    use_opposite=True,
+                                                    variable_name="data:mission:sizing:takeoff:fuel",
+                                                ),
+                                                "time": InputDefinition(
+                                                    parameter_name="time",
+                                                    input_value=None,
+                                                    input_unit="s",
+                                                    default_value=0.0,
+                                                    is_relative=False,
+                                                    part_identifier="sizing:takeoff",
+                                                    shape=None,
+                                                    shape_by_conn=False,
+                                                    use_opposite=False,
+                                                    variable_name="data:mission:sizing:takeoff:duration",
+                                                ),
+                                                "true_airspeed": InputDefinition(
+                                                    parameter_name="true_airspeed",
+                                                    input_value=None,
+                                                    input_unit="m/s",
+                                                    default_value=np.nan,
+                                                    is_relative=False,
+                                                    part_identifier="sizing:takeoff",
+                                                    shape=None,
+                                                    shape_by_conn=False,
+                                                    use_opposite=False,
+                                                    variable_name="data:mission:sizing:takeoff:V2",
+                                                ),
+                                            },
+                                            "type": "segment",
+                                        },
+                                        {
+                                            "name": "sizing:takeoff",
+                                            "segment_type": "mass_input",
+                                            "target": {
+                                                "mass": InputDefinition(
+                                                    parameter_name="mass",
+                                                    input_value=None,
+                                                    input_unit="kg",
+                                                    default_value=np.nan,
+                                                    is_relative=False,
+                                                    part_identifier="sizing:takeoff",
+                                                    shape=None,
+                                                    shape_by_conn=False,
+                                                    use_opposite=False,
+                                                    variable_name="data:mission:sizing:TOW",
+                                                )
+                                            },
+                                            "type": "segment",
+                                        },
+                                    ],
+                                ),
+                                ("name", "sizing:takeoff"),
+                                ("type", "phase"),
+                            ]
+                        ),
                         {
                             "climb_parts": [
                                 {
@@ -2201,10 +2438,29 @@ def _get_expected_structure():
                                             variable_name=None,
                                         )
                                     },
-                                }
+                                },
+                                {
+                                    "name": "test:test_phase",
+                                    "segment_type": "mass_input",
+                                    "target": {
+                                        "mass": InputDefinition(
+                                            parameter_name="mass",
+                                            input_value=None,
+                                            input_unit="kg",
+                                            default_value=np.nan,
+                                            is_relative=False,
+                                            part_identifier="test:test_phase",
+                                            shape=None,
+                                            shape_by_conn=False,
+                                            use_opposite=False,
+                                            variable_name="data:mission:test:test_phase:mass",
+                                        )
+                                    },
+                                    "type": "segment",
+                                },
                             ],
                             "type": "phase",
-                        }
+                        },
                     ],
                 ),
                 ("name", "test"),
diff --git a/src/fastoad/models/performances/mission/openmdao/tests/data/test_mission.xml b/src/fastoad/models/performances/mission/openmdao/tests/data/test_mission.xml
index 03aa6af46..1b555df9d 100644
--- a/src/fastoad/models/performances/mission/openmdao/tests/data/test_mission.xml
+++ b/src/fastoad/models/performances/mission/openmdao/tests/data/test_mission.xml
@@ -14,54 +14,58 @@
   -->
 
 <FASTOAD_model>
-  <data>
-    <geometry>
-      <aircraft>
-        <reference_area units="m**2" is_input="True">130.33777836207364<!--aircraft reference surface area--></reference_area>
-      </aircraft>
-      <propulsion>
-        <engine>
-          <count>2.0<!--number of engines--></count>
-        </engine>
-      </propulsion>
-    </geometry>
-    <aerodynamics>
-      <aircraft>
-        <cruise>
-          <CD is_input="True">[0.019977462877486692, 0.01998022034546169, 0.019990024530454103, 0.020006974566650067, 0.020031169588235725, 0.020062708729397215, 0.02010169112432067, 0.020148215907192235, 0.020202382212198052, 0.02026428917352425, 0.02033403592535697, 0.020411721601882357, 0.020497445337286552, 0.02059130626575568, 0.02069340352147589, 0.02080383623863332, 0.020922703551414103, 0.021050104594004384, 0.0211861385005903, 0.02133090440535799, 0.021484501442493597, 0.02164702874618325, 0.021818585450613093, 0.021999270689969264, 0.022189183598437905, 0.022388423310205147, 0.02259708895945714, 0.022815279680380017, 0.02304309460715991, 0.02328063287398297, 0.023527993615035322, 0.02378527596450312, 0.024052579056572494, 0.024330002025429582, 0.02461764400526053, 0.02491560413025147, 0.02522457637582134, 0.025545262334798906, 0.02587778415640925, 0.026222279880813847, 0.02657890427773951, 0.026947830055772483, 0.02732924947916581, 0.02772337644195902, 0.0281304490641342, 0.028550732892056674, 0.028984524806323762, 0.029432157765291588, 0.02989400654310173, 0.03037049465840181, 0.030862102735915907, 0.031369378599802863, 0.031892949468157725, 0.03243353670563835, 0.03299197370057832, 0.033569227569877125, 0.0341664255668556, 0.034784887283641056, 0.03542616401273506, 0.036092086977987575, 0.036784826583637575, 0.03750696538779544, 0.03826158821804987, 0.03905239375647542, 0.039883833087557635, 0.04076128220185182, 0.04169125738085106, 0.042681684886571564, 0.04374223961697995, 0.044884771596099535, 0.04612384465127632, 0.04747741879653079, 0.048967717232939995, 0.050622331220637445, 0.05247563234621992, 0.0545705832141888, 0.056961066098748236, 0.05971488699344479, 0.06291766303391438, 0.0666778688557273, 0.07113340810534952, 0.07646019828585256, 0.08288342169647966, 0.09069231797897755, 0.10025969619799759, 0.11206775620558623, 0.1267423715836807, 0.14509875727064964, 0.16820250446142873, 0.1974514262050255, 0.23468567770330778, 0.28233641898530626, 0.3436271902908642, 0.4228476203450364, 0.5257267226326535, 0.659943765513565, 0.835829832900332, 1.0673345972735961, 1.373363207118953, 1.7796314520376315, 2.321249176241929, 3.046330509643145, 4.0210569125490565, 5.336802916685095, 7.120200702128098, 9.547406478033079, 12.86439554307351, 17.415937754737225, 23.687115815565242, 32.363031863946134, 44.41498301871845, 61.22529443125085, 84.76881388396411, 117.87775634750399, 164.62960078101173, 230.91731165255382, 325.2906907573328, 460.202390201523, 653.8600897536481, 932.9900111992134, 1336.9756191037327, 1924.07909611123, 2780.8289219716025, 4036.238198542151, 5883.420958185787, 8612.580199156862, 12661.541074437848, 18693.455308732322, 27716.74195998986, 41270.92915999995, 61715.707656757375, 92682.24089078103, 139780.5185367864, 211712.2812603048, 322028.80581812176, 491917.92023137305, 754639.9807120938, 1162615.784503843, 1798795.7539565805, 2794967.2537128744, 4361348.829636682, 6834616.520685008, 10756146.475549214, 16999983.131426774, 26982954.419353325, 43011019.35521255, 68852418.09203142, 110689871.99210262, 178708742.6258718, 289756334.5594224]<!--drag coefficient in cruise conditions w.r.t. data:aerodynamics:aircraft:cruise:CL--></CD>
-          <CL is_input="True">[0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32, 0.33, 0.34, 0.35000000000000003, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41000000000000003, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47000000000000003, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.5700000000000001, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.6900000000000001, 0.7000000000000001, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.8200000000000001, 0.8300000000000001, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.9400000000000001, 0.9500000000000001, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.1, 1.11, 1.12, 1.1300000000000001, 1.1400000000000001, 1.1500000000000001, 1.16, 1.17, 1.18, 1.19, 1.2, 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29, 1.3, 1.31, 1.32, 1.33, 1.34, 1.35, 1.36, 1.37, 1.3800000000000001, 1.3900000000000001, 1.4000000000000001, 1.41, 1.42, 1.43, 1.44, 1.45, 1.46, 1.47, 1.48, 1.49]<!--scale of lift coefficient values for drag computations in cruise conditions--></CL>
-        </cruise>
-        <low_speed>
-          <CD is_input="True">[0.02139564485960914, 0.02139944408291914, 0.021409492798864647, 0.021425899749722883, 0.021448773677771083, 0.02147822332528649, 0.02151435743454633, 0.02155728474782784, 0.02160711400740826, 0.021663953955564814, 0.021727913334574748, 0.021799100886715283, 0.021877625354263668, 0.021963595479497135, 0.022057120004692905, 0.02215830767212823, 0.02226726722408033, 0.022384107402826453, 0.022508936950643824, 0.022641864609809683, 0.02278299912260126, 0.022932449231295796, 0.023090323678170512, 0.023256731205502656, 0.023431780555569465, 0.02361558047064816, 0.02380823969301598, 0.024009866964950166, 0.02422057102872795, 0.024440460626626564, 0.02466964450092324, 0.024908231393895225, 0.02515633004781974, 0.025414049204974025, 0.025681497607635315, 0.025958783998080843, 0.026246017118587844, 0.026543305711433558, 0.026850758518895203, 0.027168484283250034, 0.02749659174677527, 0.027835189651748162, 0.028184386740445926, 0.02854429175514581, 0.028915013438125043, 0.029296660531660856, 0.029689341778030495, 0.030093165919511184, 0.030508241698380158, 0.030934677856914658, 0.03137258313739191, 0.03182206628208917, 0.03228323603328364, 0.032756201133252574, 0.03324107032427321, 0.03373795234862278, 0.0342469559485785, 0.03476818986641763, 0.03530176284441739, 0.035847783624855016, 0.03640636095000775, 0.03697760356215282, 0.03756162020356746, 0.03815851961652891, 0.038768410543314404, 0.039391401726201175, 0.040027601907466445, 0.04067711982938747, 0.041340064234241476, 0.042016543864305686, 0.04270666746185735, 0.04341054376917369, 0.04412828152853196, 0.04485998948220937, 0.045605776372483184, 0.04636575094163061, 0.047140021931928885, 0.047928698085655266, 0.048731888145086964, 0.049549700852501224, 0.05038224495017529, 0.05122962918038636, 0.052091962285411714, 0.05296935300752856, 0.05386191008901412, 0.05476974227214566, 0.055692958299200415, 0.056631666912455594, 0.05758597685418845, 0.058555996866676216, 0.05954183569219611, 0.06054360207302539, 0.06156140475144127, 0.062595352469721, 0.06364555397014182, 0.06471211799498092, 0.06579515328651558, 0.06689476858702303, 0.06801107263878049, 0.06914417418406522, 0.07029418196515443, 0.07146120472432534, 0.07264535120385522, 0.07384673014602128, 0.07506545029310079, 0.07630162038737093, 0.07755534917110898, 0.07882674538659216, 0.0801159177760977, 0.08142297508190281, 0.08274802604628478, 0.08409117941152082, 0.08545254391988816, 0.08683222831366404, 0.08823034133512567, 0.0896469917265503, 0.09108228823021516, 0.09253633958839749, 0.09400925454337457, 0.09550114183742359, 0.09701211021282177, 0.09854226841184635, 0.10009172517677459, 0.10166058924988372, 0.10324896937345096, 0.10485697428975356, 0.10648471274106872, 0.1081322934696737, 0.10979982521784576, 0.1114874167278621, 0.11319517674199994, 0.11492321400253658, 0.11667163725174917, 0.118440555231915, 0.1202300766853113, 0.12204031035421531, 0.12387136498090424, 0.1257233493076553, 0.1275963720767458, 0.1294905420304529, 0.1314059679110539, 0.13334275846082597, 0.1353010224220464, 0.1372808685369924, 0.1392824055479412, 0.14130574219717007, 0.14335098722695616, 0.1454182493795768, 0.1475076373973092, 0.14961926002243056]<!--drag coefficient in low speed conditions (no high-lift) w.r.t. data:aerodynamics:aircraft:low_speed:CL--></CD>
-          <CL is_input="True">[0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32, 0.33, 0.34, 0.35000000000000003, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41000000000000003, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47000000000000003, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.5700000000000001, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.6900000000000001, 0.7000000000000001, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.8200000000000001, 0.8300000000000001, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.9400000000000001, 0.9500000000000001, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.1, 1.11, 1.12, 1.1300000000000001, 1.1400000000000001, 1.1500000000000001, 1.16, 1.17, 1.18, 1.19, 1.2, 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29, 1.3, 1.31, 1.32, 1.33, 1.34, 1.35, 1.36, 1.37, 1.3800000000000001, 1.3900000000000001, 1.4000000000000001, 1.41, 1.42, 1.43, 1.44, 1.45, 1.46, 1.47, 1.48, 1.49]<!--scale of lift coefficient values for drag computations in low speed conditions--></CL>
-        </low_speed>
-        <takeoff>
-          <CD>[0.04631002472472129, 0.046716605413723925, 0.047129445504808035, 0.04754865372332344, 0.04797433879461999, 0.04840660944404752, 0.04884557439695583, 0.049291342378694786, 0.04974402211461421, 0.05020372233006394, 0.05067055175039379, 0.0511446191009536, 0.05162603310709321, 0.052114902494162445, 0.05261133598751114, 0.05311544231248913, 0.05362733019444624, 0.05414710835873231, 0.05467488553069716, 0.05521077043569063, 0.05575487179906256, 0.056307298346162764, 0.056868158802341084, 0.05743756189294737, 0.05801561634333142, 0.058602430878843086, 0.059198114224832205, 0.059802775106648595, 0.06041652224964209, 0.06103946437916253, 0.06167171022055974, 0.06231336849918356, 0.06296454794038382, 0.06362535726951035, 0.06429590521191299, 0.06497630049294156, 0.06566665183794589, 0.06636706797227582, 0.06707765762128119, 0.06779852951031182, 0.06852979236471754, 0.06927155490984818, 0.07002392587105359, 0.07078701397368359, 0.07156092794308803, 0.07234577650461671, 0.07314166838361948, 0.07394871230544617, 0.0747670169954466, 0.07559669117897064, 0.07643784358136807, 0.07729058292798878, 0.07815501794418253, 0.07903125735529926, 0.07991940988668866, 0.0808195842637007, 0.0817318892116851, 0.08265643345599179, 0.08359332572197051, 0.08454267473497115, 0.08550458922034353, 0.0864791779034375, 0.08746654950960285, 0.08846681276418945, 0.0894800763925471, 0.09050644912002567, 0.09154603967197496, 0.09259895677374481, 0.09366530915068508, 0.09474520552814555, 0.09583875463147609, 0.09694606518602651, 0.09806724591714668, 0.09920240555018638, 0.1003516528104955, 0.10151509642342381, 0.1026928451143212, 0.10388500760853744, 0.10509169263142246, 0.10631300890832596, 0.10754906516459789, 0.10879997012558801, 0.1100658325166462, 0.11134676106312222, 0.11264286449036598, 0.11395425152372729, 0.11528103088855597, 0.11662331131020186, 0.11798120151401478, 0.11935481022534458, 0.12074424616954108, 0.12214961807195412, 0.12357103465793352, 0.12500860465282912, 0.12646243678199076, 0.12793263977076824, 0.12941932234451145, 0.13092259322857017, 0.13244256114829425, 0.13397933482903354, 0.13553302299613781, 0.13710373437495701, 0.13869157769084087, 0.14029666166913923, 0.14191909503520195, 0.1435589865143789, 0.1452164448320198, 0.1468915787134746, 0.14858449688409303, 0.15029530806922506, 0.15202412099422036, 0.15377104438442887, 0.15553618696520038, 0.15731965746188478, 0.1591215645998318, 0.16094201710439132, 0.1627811237009132, 0.16463899311474722, 0.1665157340712433, 0.16841145529575116, 0.17032626551362076, 0.17226027345020178, 0.17421358783084423, 0.17618631738089777, 0.17817857082571237, 0.18019045689063773, 0.1822220843010238, 0.18427356178222032, 0.18634499805957722, 0.18843650185844418, 0.19054818190417128, 0.19268014692210808, 0.1948325056376046, 0.19700536677601055, 0.19919883906267588, 0.2014130312229503, 0.2036480519821838, 0.20590401006572598, 0.20818101419892693, 0.2104791731071363, 0.21279859551570401, 0.2151393901499798, 0.21750166573531354, 0.21988553099705518, 0.2222910946605544, 0.2247184654511612, 0.22716775209422518, 0.22963906331509637, 0.23213250783912448, 0.23464819439165943]</CD>
-          <CL>[0.5117406560537386, 0.5217406560537386, 0.5317406560537387, 0.5417406560537387, 0.5517406560537387, 0.5617406560537387, 0.5717406560537386, 0.5817406560537386, 0.5917406560537386, 0.6017406560537386, 0.6117406560537386, 0.6217406560537386, 0.6317406560537386, 0.6417406560537386, 0.6517406560537387, 0.6617406560537387, 0.6717406560537387, 0.6817406560537387, 0.6917406560537387, 0.7017406560537387, 0.7117406560537387, 0.7217406560537386, 0.7317406560537386, 0.7417406560537386, 0.7517406560537386, 0.7617406560537386, 0.7717406560537386, 0.7817406560537387, 0.7917406560537387, 0.8017406560537386, 0.8117406560537386, 0.8217406560537386, 0.8317406560537386, 0.8417406560537386, 0.8517406560537386, 0.8617406560537386, 0.8717406560537386, 0.8817406560537386, 0.8917406560537386, 0.9017406560537387, 0.9117406560537387, 0.9217406560537387, 0.9317406560537387, 0.9417406560537387, 0.9517406560537387, 0.9617406560537387, 0.9717406560537387, 0.9817406560537387, 0.9917406560537386, 1.0017406560537387, 1.0117406560537385, 1.0217406560537388, 1.0317406560537385, 1.0417406560537388, 1.0517406560537386, 1.0617406560537388, 1.0717406560537386, 1.0817406560537388, 1.0917406560537386, 1.1017406560537386, 1.1117406560537386, 1.1217406560537386, 1.1317406560537386, 1.1417406560537386, 1.1517406560537387, 1.1617406560537387, 1.1717406560537387, 1.1817406560537387, 1.1917406560537387, 1.2017406560537387, 1.2117406560537387, 1.2217406560537385, 1.2317406560537387, 1.2417406560537385, 1.2517406560537387, 1.2617406560537385, 1.2717406560537388, 1.2817406560537385, 1.2917406560537388, 1.3017406560537386, 1.3117406560537388, 1.3217406560537386, 1.3317406560537388, 1.3417406560537386, 1.3517406560537386, 1.3617406560537386, 1.3717406560537386, 1.3817406560537386, 1.3917406560537386, 1.4017406560537387, 1.4117406560537387, 1.4217406560537387, 1.4317406560537387, 1.4417406560537387, 1.4517406560537387, 1.4617406560537387, 1.4717406560537385, 1.4817406560537387, 1.4917406560537385, 1.5017406560537387, 1.5117406560537385, 1.5217406560537388, 1.5317406560537385, 1.5417406560537388, 1.5517406560537386, 1.5617406560537388, 1.5717406560537386, 1.5817406560537388, 1.5917406560537386, 1.6017406560537388, 1.6117406560537386, 1.6217406560537388, 1.6317406560537386, 1.6417406560537389, 1.6517406560537387, 1.6617406560537389, 1.6717406560537387, 1.6817406560537385, 1.6917406560537387, 1.7017406560537385, 1.7117406560537387, 1.7217406560537385, 1.7317406560537387, 1.7417406560537385, 1.7517406560537387, 1.7617406560537385, 1.7717406560537388, 1.7817406560537385, 1.7917406560537388, 1.8017406560537386, 1.8117406560537388, 1.8217406560537386, 1.8317406560537388, 1.8417406560537386, 1.8517406560537388, 1.8617406560537386, 1.8717406560537388, 1.8817406560537386, 1.8917406560537389, 1.9017406560537387, 1.9117406560537389, 1.9217406560537387, 1.9317406560537385, 1.9417406560537387, 1.9517406560537385, 1.9617406560537387, 1.9717406560537385, 1.9817406560537387, 1.9917406560537385, 2.0017406560537387]</CL>
-        </takeoff>
-      </aircraft>
-    </aerodynamics>
-    <mission>
-      <operational>
-        <TOW units="kg">70000.0</TOW>
-        <OWE units="kg">40000.0</OWE>
-        <payload units="kg">15000.0</payload>
-        <ISA_offset>10.0</ISA_offset>
-        <takeoff>
-          <V2 units="m/s" is_input="True">80.0<!--safety speed before reaching 35 feet height in sizing mission--></V2>
-          <altitude units="m" is_input="True">0.0<!--altitude at takeoff in sizing mission--></altitude>
-          <fuel units="kg">95.0<!--mass of consumed fuel during takeoff phase in sizing mission--></fuel>
-        </takeoff>
-        <taxi_out>
-          <thrust_rate>0.3</thrust_rate>
-          <duration units="s">143.</duration>
-        </taxi_out>
-      </operational>
-    </mission>
-    <weight>
-      <aircraft>
-        <OWE units="kg">40000.0</OWE>
-      </aircraft>
-    </weight>
-  </data>
+    <data>
+        <geometry>
+            <aircraft>
+                <reference_area units="m**2" is_input="True">
+                    130.33777836207364<!--aircraft reference surface area--></reference_area>
+            </aircraft>
+            <propulsion>
+                <engine>
+                    <count>2.0<!--number of engines--></count>
+                </engine>
+            </propulsion>
+        </geometry>
+        <aerodynamics>
+            <aircraft>
+                <cruise>
+                    <CD is_input="True">[0.019977462877486692, 0.01998022034546169, 0.019990024530454103, 0.020006974566650067, 0.020031169588235725, 0.020062708729397215, 0.02010169112432067, 0.020148215907192235, 0.020202382212198052, 0.02026428917352425, 0.02033403592535697, 0.020411721601882357, 0.020497445337286552, 0.02059130626575568, 0.02069340352147589, 0.02080383623863332, 0.020922703551414103, 0.021050104594004384, 0.0211861385005903, 0.02133090440535799, 0.021484501442493597, 0.02164702874618325, 0.021818585450613093, 0.021999270689969264, 0.022189183598437905, 0.022388423310205147, 0.02259708895945714, 0.022815279680380017, 0.02304309460715991, 0.02328063287398297, 0.023527993615035322, 0.02378527596450312, 0.024052579056572494, 0.024330002025429582, 0.02461764400526053, 0.02491560413025147, 0.02522457637582134, 0.025545262334798906, 0.02587778415640925, 0.026222279880813847, 0.02657890427773951, 0.026947830055772483, 0.02732924947916581, 0.02772337644195902, 0.0281304490641342, 0.028550732892056674, 0.028984524806323762, 0.029432157765291588, 0.02989400654310173, 0.03037049465840181, 0.030862102735915907, 0.031369378599802863, 0.031892949468157725, 0.03243353670563835, 0.03299197370057832, 0.033569227569877125, 0.0341664255668556, 0.034784887283641056, 0.03542616401273506, 0.036092086977987575, 0.036784826583637575, 0.03750696538779544, 0.03826158821804987, 0.03905239375647542, 0.039883833087557635, 0.04076128220185182, 0.04169125738085106, 0.042681684886571564, 0.04374223961697995, 0.044884771596099535, 0.04612384465127632, 0.04747741879653079, 0.048967717232939995, 0.050622331220637445, 0.05247563234621992, 0.0545705832141888, 0.056961066098748236, 0.05971488699344479, 0.06291766303391438, 0.0666778688557273, 0.07113340810534952, 0.07646019828585256, 0.08288342169647966, 0.09069231797897755, 0.10025969619799759, 0.11206775620558623, 0.1267423715836807, 0.14509875727064964, 0.16820250446142873, 0.1974514262050255, 0.23468567770330778, 0.28233641898530626, 0.3436271902908642, 0.4228476203450364, 0.5257267226326535, 0.659943765513565, 0.835829832900332, 1.0673345972735961, 1.373363207118953, 1.7796314520376315, 2.321249176241929, 3.046330509643145, 4.0210569125490565, 5.336802916685095, 7.120200702128098, 9.547406478033079, 12.86439554307351, 17.415937754737225, 23.687115815565242, 32.363031863946134, 44.41498301871845, 61.22529443125085, 84.76881388396411, 117.87775634750399, 164.62960078101173, 230.91731165255382, 325.2906907573328, 460.202390201523, 653.8600897536481, 932.9900111992134, 1336.9756191037327, 1924.07909611123, 2780.8289219716025, 4036.238198542151, 5883.420958185787, 8612.580199156862, 12661.541074437848, 18693.455308732322, 27716.74195998986, 41270.92915999995, 61715.707656757375, 92682.24089078103, 139780.5185367864, 211712.2812603048, 322028.80581812176, 491917.92023137305, 754639.9807120938, 1162615.784503843, 1798795.7539565805, 2794967.2537128744, 4361348.829636682, 6834616.520685008, 10756146.475549214, 16999983.131426774, 26982954.419353325, 43011019.35521255, 68852418.09203142, 110689871.99210262, 178708742.6258718, 289756334.5594224]<!--drag coefficient in cruise conditions w.r.t. data:aerodynamics:aircraft:cruise:CL--></CD>
+                    <CL is_input="True">[0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32, 0.33, 0.34, 0.35000000000000003, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41000000000000003, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47000000000000003, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.5700000000000001, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.6900000000000001, 0.7000000000000001, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.8200000000000001, 0.8300000000000001, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.9400000000000001, 0.9500000000000001, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.1, 1.11, 1.12, 1.1300000000000001, 1.1400000000000001, 1.1500000000000001, 1.16, 1.17, 1.18, 1.19, 1.2, 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29, 1.3, 1.31, 1.32, 1.33, 1.34, 1.35, 1.36, 1.37, 1.3800000000000001, 1.3900000000000001, 1.4000000000000001, 1.41, 1.42, 1.43, 1.44, 1.45, 1.46, 1.47, 1.48, 1.49]<!--scale of lift coefficient values for drag computations in cruise conditions--></CL>
+                </cruise>
+                <low_speed>
+                    <CD is_input="True">[0.02139564485960914, 0.02139944408291914, 0.021409492798864647, 0.021425899749722883, 0.021448773677771083, 0.02147822332528649, 0.02151435743454633, 0.02155728474782784, 0.02160711400740826, 0.021663953955564814, 0.021727913334574748, 0.021799100886715283, 0.021877625354263668, 0.021963595479497135, 0.022057120004692905, 0.02215830767212823, 0.02226726722408033, 0.022384107402826453, 0.022508936950643824, 0.022641864609809683, 0.02278299912260126, 0.022932449231295796, 0.023090323678170512, 0.023256731205502656, 0.023431780555569465, 0.02361558047064816, 0.02380823969301598, 0.024009866964950166, 0.02422057102872795, 0.024440460626626564, 0.02466964450092324, 0.024908231393895225, 0.02515633004781974, 0.025414049204974025, 0.025681497607635315, 0.025958783998080843, 0.026246017118587844, 0.026543305711433558, 0.026850758518895203, 0.027168484283250034, 0.02749659174677527, 0.027835189651748162, 0.028184386740445926, 0.02854429175514581, 0.028915013438125043, 0.029296660531660856, 0.029689341778030495, 0.030093165919511184, 0.030508241698380158, 0.030934677856914658, 0.03137258313739191, 0.03182206628208917, 0.03228323603328364, 0.032756201133252574, 0.03324107032427321, 0.03373795234862278, 0.0342469559485785, 0.03476818986641763, 0.03530176284441739, 0.035847783624855016, 0.03640636095000775, 0.03697760356215282, 0.03756162020356746, 0.03815851961652891, 0.038768410543314404, 0.039391401726201175, 0.040027601907466445, 0.04067711982938747, 0.041340064234241476, 0.042016543864305686, 0.04270666746185735, 0.04341054376917369, 0.04412828152853196, 0.04485998948220937, 0.045605776372483184, 0.04636575094163061, 0.047140021931928885, 0.047928698085655266, 0.048731888145086964, 0.049549700852501224, 0.05038224495017529, 0.05122962918038636, 0.052091962285411714, 0.05296935300752856, 0.05386191008901412, 0.05476974227214566, 0.055692958299200415, 0.056631666912455594, 0.05758597685418845, 0.058555996866676216, 0.05954183569219611, 0.06054360207302539, 0.06156140475144127, 0.062595352469721, 0.06364555397014182, 0.06471211799498092, 0.06579515328651558, 0.06689476858702303, 0.06801107263878049, 0.06914417418406522, 0.07029418196515443, 0.07146120472432534, 0.07264535120385522, 0.07384673014602128, 0.07506545029310079, 0.07630162038737093, 0.07755534917110898, 0.07882674538659216, 0.0801159177760977, 0.08142297508190281, 0.08274802604628478, 0.08409117941152082, 0.08545254391988816, 0.08683222831366404, 0.08823034133512567, 0.0896469917265503, 0.09108228823021516, 0.09253633958839749, 0.09400925454337457, 0.09550114183742359, 0.09701211021282177, 0.09854226841184635, 0.10009172517677459, 0.10166058924988372, 0.10324896937345096, 0.10485697428975356, 0.10648471274106872, 0.1081322934696737, 0.10979982521784576, 0.1114874167278621, 0.11319517674199994, 0.11492321400253658, 0.11667163725174917, 0.118440555231915, 0.1202300766853113, 0.12204031035421531, 0.12387136498090424, 0.1257233493076553, 0.1275963720767458, 0.1294905420304529, 0.1314059679110539, 0.13334275846082597, 0.1353010224220464, 0.1372808685369924, 0.1392824055479412, 0.14130574219717007, 0.14335098722695616, 0.1454182493795768, 0.1475076373973092, 0.14961926002243056]<!--drag coefficient in low speed conditions (no high-lift) w.r.t. data:aerodynamics:aircraft:low_speed:CL--></CD>
+                    <CL is_input="True">[0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32, 0.33, 0.34, 0.35000000000000003, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41000000000000003, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47000000000000003, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.5700000000000001, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.6900000000000001, 0.7000000000000001, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.8200000000000001, 0.8300000000000001, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.9400000000000001, 0.9500000000000001, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.1, 1.11, 1.12, 1.1300000000000001, 1.1400000000000001, 1.1500000000000001, 1.16, 1.17, 1.18, 1.19, 1.2, 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29, 1.3, 1.31, 1.32, 1.33, 1.34, 1.35, 1.36, 1.37, 1.3800000000000001, 1.3900000000000001, 1.4000000000000001, 1.41, 1.42, 1.43, 1.44, 1.45, 1.46, 1.47, 1.48, 1.49]<!--scale of lift coefficient values for drag computations in low speed conditions--></CL>
+                </low_speed>
+                <takeoff>
+                    <CD>[0.04631002472472129, 0.046716605413723925, 0.047129445504808035, 0.04754865372332344, 0.04797433879461999, 0.04840660944404752, 0.04884557439695583, 0.049291342378694786, 0.04974402211461421, 0.05020372233006394, 0.05067055175039379, 0.0511446191009536, 0.05162603310709321, 0.052114902494162445, 0.05261133598751114, 0.05311544231248913, 0.05362733019444624, 0.05414710835873231, 0.05467488553069716, 0.05521077043569063, 0.05575487179906256, 0.056307298346162764, 0.056868158802341084, 0.05743756189294737, 0.05801561634333142, 0.058602430878843086, 0.059198114224832205, 0.059802775106648595, 0.06041652224964209, 0.06103946437916253, 0.06167171022055974, 0.06231336849918356, 0.06296454794038382, 0.06362535726951035, 0.06429590521191299, 0.06497630049294156, 0.06566665183794589, 0.06636706797227582, 0.06707765762128119, 0.06779852951031182, 0.06852979236471754, 0.06927155490984818, 0.07002392587105359, 0.07078701397368359, 0.07156092794308803, 0.07234577650461671, 0.07314166838361948, 0.07394871230544617, 0.0747670169954466, 0.07559669117897064, 0.07643784358136807, 0.07729058292798878, 0.07815501794418253, 0.07903125735529926, 0.07991940988668866, 0.0808195842637007, 0.0817318892116851, 0.08265643345599179, 0.08359332572197051, 0.08454267473497115, 0.08550458922034353, 0.0864791779034375, 0.08746654950960285, 0.08846681276418945, 0.0894800763925471, 0.09050644912002567, 0.09154603967197496, 0.09259895677374481, 0.09366530915068508, 0.09474520552814555, 0.09583875463147609, 0.09694606518602651, 0.09806724591714668, 0.09920240555018638, 0.1003516528104955, 0.10151509642342381, 0.1026928451143212, 0.10388500760853744, 0.10509169263142246, 0.10631300890832596, 0.10754906516459789, 0.10879997012558801, 0.1100658325166462, 0.11134676106312222, 0.11264286449036598, 0.11395425152372729, 0.11528103088855597, 0.11662331131020186, 0.11798120151401478, 0.11935481022534458, 0.12074424616954108, 0.12214961807195412, 0.12357103465793352, 0.12500860465282912, 0.12646243678199076, 0.12793263977076824, 0.12941932234451145, 0.13092259322857017, 0.13244256114829425, 0.13397933482903354, 0.13553302299613781, 0.13710373437495701, 0.13869157769084087, 0.14029666166913923, 0.14191909503520195, 0.1435589865143789, 0.1452164448320198, 0.1468915787134746, 0.14858449688409303, 0.15029530806922506, 0.15202412099422036, 0.15377104438442887, 0.15553618696520038, 0.15731965746188478, 0.1591215645998318, 0.16094201710439132, 0.1627811237009132, 0.16463899311474722, 0.1665157340712433, 0.16841145529575116, 0.17032626551362076, 0.17226027345020178, 0.17421358783084423, 0.17618631738089777, 0.17817857082571237, 0.18019045689063773, 0.1822220843010238, 0.18427356178222032, 0.18634499805957722, 0.18843650185844418, 0.19054818190417128, 0.19268014692210808, 0.1948325056376046, 0.19700536677601055, 0.19919883906267588, 0.2014130312229503, 0.2036480519821838, 0.20590401006572598, 0.20818101419892693, 0.2104791731071363, 0.21279859551570401, 0.2151393901499798, 0.21750166573531354, 0.21988553099705518, 0.2222910946605544, 0.2247184654511612, 0.22716775209422518, 0.22963906331509637, 0.23213250783912448, 0.23464819439165943]</CD>
+                    <CL>[0.5117406560537386, 0.5217406560537386, 0.5317406560537387, 0.5417406560537387, 0.5517406560537387, 0.5617406560537387, 0.5717406560537386, 0.5817406560537386, 0.5917406560537386, 0.6017406560537386, 0.6117406560537386, 0.6217406560537386, 0.6317406560537386, 0.6417406560537386, 0.6517406560537387, 0.6617406560537387, 0.6717406560537387, 0.6817406560537387, 0.6917406560537387, 0.7017406560537387, 0.7117406560537387, 0.7217406560537386, 0.7317406560537386, 0.7417406560537386, 0.7517406560537386, 0.7617406560537386, 0.7717406560537386, 0.7817406560537387, 0.7917406560537387, 0.8017406560537386, 0.8117406560537386, 0.8217406560537386, 0.8317406560537386, 0.8417406560537386, 0.8517406560537386, 0.8617406560537386, 0.8717406560537386, 0.8817406560537386, 0.8917406560537386, 0.9017406560537387, 0.9117406560537387, 0.9217406560537387, 0.9317406560537387, 0.9417406560537387, 0.9517406560537387, 0.9617406560537387, 0.9717406560537387, 0.9817406560537387, 0.9917406560537386, 1.0017406560537387, 1.0117406560537385, 1.0217406560537388, 1.0317406560537385, 1.0417406560537388, 1.0517406560537386, 1.0617406560537388, 1.0717406560537386, 1.0817406560537388, 1.0917406560537386, 1.1017406560537386, 1.1117406560537386, 1.1217406560537386, 1.1317406560537386, 1.1417406560537386, 1.1517406560537387, 1.1617406560537387, 1.1717406560537387, 1.1817406560537387, 1.1917406560537387, 1.2017406560537387, 1.2117406560537387, 1.2217406560537385, 1.2317406560537387, 1.2417406560537385, 1.2517406560537387, 1.2617406560537385, 1.2717406560537388, 1.2817406560537385, 1.2917406560537388, 1.3017406560537386, 1.3117406560537388, 1.3217406560537386, 1.3317406560537388, 1.3417406560537386, 1.3517406560537386, 1.3617406560537386, 1.3717406560537386, 1.3817406560537386, 1.3917406560537386, 1.4017406560537387, 1.4117406560537387, 1.4217406560537387, 1.4317406560537387, 1.4417406560537387, 1.4517406560537387, 1.4617406560537387, 1.4717406560537385, 1.4817406560537387, 1.4917406560537385, 1.5017406560537387, 1.5117406560537385, 1.5217406560537388, 1.5317406560537385, 1.5417406560537388, 1.5517406560537386, 1.5617406560537388, 1.5717406560537386, 1.5817406560537388, 1.5917406560537386, 1.6017406560537388, 1.6117406560537386, 1.6217406560537388, 1.6317406560537386, 1.6417406560537389, 1.6517406560537387, 1.6617406560537389, 1.6717406560537387, 1.6817406560537385, 1.6917406560537387, 1.7017406560537385, 1.7117406560537387, 1.7217406560537385, 1.7317406560537387, 1.7417406560537385, 1.7517406560537387, 1.7617406560537385, 1.7717406560537388, 1.7817406560537385, 1.7917406560537388, 1.8017406560537386, 1.8117406560537388, 1.8217406560537386, 1.8317406560537388, 1.8417406560537386, 1.8517406560537388, 1.8617406560537386, 1.8717406560537388, 1.8817406560537386, 1.8917406560537389, 1.9017406560537387, 1.9117406560537389, 1.9217406560537387, 1.9317406560537385, 1.9417406560537387, 1.9517406560537385, 1.9617406560537387, 1.9717406560537385, 1.9817406560537387, 1.9917406560537385, 2.0017406560537387]</CL>
+                </takeoff>
+          </aircraft>
+        </aerodynamics>
+        <mission>
+            <operational>
+                <TOW units="kg">70000.0</TOW>
+                <OWE units="kg">40000.0</OWE>
+                <payload units="kg">15000.0</payload>
+                <ISA_offset>10.0</ISA_offset>
+                <takeoff>
+                    <V2 units="m/s" is_input="True">
+                        80.0<!--safety speed before reaching 35 feet height in sizing mission--></V2>
+                    <altitude units="m" is_input="True">
+                        0.0<!--altitude at takeoff in sizing mission--></altitude>
+                    <fuel units="kg">
+                        95.0<!--mass of consumed fuel during takeoff phase in sizing mission--></fuel>
+                </takeoff>
+                <taxi_out>
+                    <thrust_rate>0.3</thrust_rate>
+                    <duration units="s">143.</duration>
+                </taxi_out>
+            </operational>
+        </mission>
+        <weight>
+            <aircraft>
+                <OWE units="kg">40000.0</OWE>
+            </aircraft>
+        </weight>
+    </data>
 </FASTOAD_model>
diff --git a/src/fastoad/models/performances/mission/openmdao/tests/data/test_mission.yml b/src/fastoad/models/performances/mission/openmdao/tests/data/test_mission.yml
index b5309f1c7..3502b1d3a 100644
--- a/src/fastoad/models/performances/mission/openmdao/tests/data/test_mission.yml
+++ b/src/fastoad/models/performances/mission/openmdao/tests/data/test_mission.yml
@@ -21,9 +21,6 @@ phases:
           default: 0.
         target:
           time: data:mission:operational:taxi_out:duration
-      - segment: mass_input
-        target:
-          mass: data:mission:operational:TOW
   takeoff:
     parts:
       - segment: transition
@@ -34,6 +31,10 @@ phases:
             unit: ft
           delta_mass: -data:mission:operational:takeoff:fuel
           true_airspeed: data:mission:operational:takeoff:V2
+          time: ~duration
+      - segment: mass_input
+        target:
+          mass: data:mission:TOW
   initial_climb:
     engine_setting: takeoff
     polar: data:aerodynamics:aircraft:takeoff
@@ -135,9 +136,9 @@ missions:
       - route: main_route
   operational:
     parts:
-      - phase: start
-      - phase: taxi_out
-      - phase: takeoff
+#      - phase: start
+#      - phase: taxi_out
+#      - phase: takeoff
       - route: main_route
       - reserve:
           ref: main_route
diff --git a/src/fastoad/models/performances/mission/openmdao/tests/test_mission.py b/src/fastoad/models/performances/mission/openmdao/tests/test_mission.py
index ab91d0352..f2d7d203b 100644
--- a/src/fastoad/models/performances/mission/openmdao/tests/test_mission.py
+++ b/src/fastoad/models/performances/mission/openmdao/tests/test_mission.py
@@ -115,21 +115,21 @@ def test_mission_component(cleanup, with_dummy_plugin_2):
         problem["data:mission:operational:main_route:initial_climb:fuel"], 121.0, atol=1.0
     )
     assert_allclose(
-        problem["data:mission:operational:main_route:initial_climb:distance"], 3594.0, atol=1.0
+        problem["data:mission:operational:main_route:initial_climb:distance"], 3600.0, atol=1.0
     )
 
     assert_allclose(problem["data:mission:operational:main_route:climb:duration"], 236.0, atol=1.0)
     assert_allclose(problem["data:mission:operational:main_route:climb:fuel"], 727.0, atol=1.0)
     assert_allclose(
-        problem["data:mission:operational:main_route:climb:distance"], 42995.0, atol=1.0
+        problem["data:mission:operational:main_route:climb:distance"], 43065.0, atol=1.0
     )
 
     assert_allclose(
         problem["data:mission:operational:main_route:cruise:duration"], 14736.0, atol=10.0
     )
-    assert_allclose(problem["data:mission:operational:main_route:cruise:fuel"], 5161.0, atol=1.0)
+    assert_allclose(problem["data:mission:operational:main_route:cruise:fuel"], 5167.0, atol=1.0)
     assert_allclose(
-        problem["data:mission:operational:main_route:cruise:distance"], 3392995.0, atol=500.0
+        problem["data:mission:operational:main_route:cruise:distance"], 3392590.0, atol=500.0
     )
 
     assert_allclose(
@@ -137,10 +137,10 @@ def test_mission_component(cleanup, with_dummy_plugin_2):
     )
     assert_allclose(problem["data:mission:operational:main_route:descent:fuel"], 192.0, atol=1.0)
     assert_allclose(
-        problem["data:mission:operational:main_route:descent:distance"], 264416.0, atol=500.0
+        problem["data:mission:operational:main_route:descent:distance"], 264451.0, atol=500.0
     )
 
-    assert_allclose(problem["data:mission:operational:needed_block_fuel"], 6581.0, atol=1.0)
+    assert_allclose(problem["data:mission:operational:needed_block_fuel"], 6590.0, atol=1.0)
     assert_allclose(
         problem["data:mission:operational:distance"], 2000.0 * nautical_mile, atol=500.0
     )
@@ -150,7 +150,8 @@ def test_mission_component(cleanup, with_dummy_plugin_2):
 def test_mission_component_breguet(cleanup, with_dummy_plugin_2):
 
     input_file_path = pth.join(DATA_FOLDER_PATH, "test_mission.xml")
-    ivc = DataFile(input_file_path).to_ivc()
+    vars = DataFile(input_file_path)
+    ivc = vars.to_ivc()
     ivc.add_output("data:mission:operational:ramp_weight", 70100.0, units="kg")
 
     problem = run_system(
@@ -224,11 +225,11 @@ def test_mission_group_without_fuel_adjustment(cleanup, with_dummy_plugin_2):
         ivc,
     )
     assert_allclose(
-        problem["data:mission:operational:consumed_fuel_before_input_weight"], 100.4, atol=0.1
+        problem["data:mission:operational:consumed_fuel_before_input_weight"], 195.4, atol=0.1
     )
     assert_allclose(problem["data:mission:operational:ZFW"], 55000.0, atol=1.0)
-    assert_allclose(problem["data:mission:operational:needed_block_fuel"], 6581.0, atol=1.0)
-    assert_allclose(problem["data:mission:operational:block_fuel"], 15100.0, atol=1.0)
+    assert_allclose(problem["data:mission:operational:needed_block_fuel"], 6590.0, atol=1.0)
+    assert_allclose(problem["data:mission:operational:block_fuel"], 15195.0, atol=1.0)
 
 
 def test_mission_group_breguet_without_fuel_adjustment(cleanup, with_dummy_plugin_2):