From dd6ebda3e06873597f7868500b92545cb2dbf810 Mon Sep 17 00:00:00 2001
From: Gerrit Pauls <gerrit.pauls@tuhh.de>
Date: Wed, 26 Feb 2025 13:55:53 +0100
Subject: [PATCH 1/2] Updated range boundaries

---
 .../standard_mission/standard_mission.cpp              | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/mission_analysis/src/standard_mission/standard_mission/standard_mission.cpp b/mission_analysis/src/standard_mission/standard_mission/standard_mission.cpp
index 627c3eb7..dbfaab45 100644
--- a/mission_analysis/src/standard_mission/standard_mission/standard_mission.cpp
+++ b/mission_analysis/src/standard_mission/standard_mission/standard_mission.cpp
@@ -471,13 +471,16 @@ void StandardMission::update() {
 
     /* Non-global endnode initialization */
     EndnodeReadOnly<double> energy_carrier_tmp(EndnodeReadOnly<double>("consumed_energy"));
+    EndnodeReadOnly<double> range_tmp( // Get endnode boundaries from TLARs
+        EndnodeReadOnly<double>("requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission/range").read(rtIO->acxml));
     Endnode<double> relative_cruise_step_end("relative_end_of_cruise_step", "End of cruise step relative to total cruise length", 0 , "1", 0, 1);
     Endnode<double> altitude("altitude", "Altitude of cruise step", 0 , "m", 0, 15000);
     Endnode<double> block_time("block_time", "Block time for the whole mission: Time from break release to end of taxiing after landing",
         this->mission_profile.back().end_time + this->mission_file->taxi_time_origin + this->mission_file->taxi_time_destination, "s", 0, 45000);
     Endnode<double> takeoff_engine_derate("takeoff_engine_derate", "Engine power demand", this->mission_file->mission_data.at(0).derate, "1", 0, 1);
     Endnode<double> flight_time("flight_time", "Flight time for the whole mission", this->mission_profile.back().end_time, "s", 0, 44500);
-    Endnode<double> total_range("range", "Traveled range from break release to end of taxi at destination", this->mission_profile.back().end_range, "m", 0, 5000000);
+    Endnode<double> total_range("range", "Traveled range from break release to end of taxi at destination",
+                        this->mission_profile.back().end_range, range_tmp.unit(), range_tmp.lower_boundary(), range_tmp.upper_boundary());
     Endnode<int> energy_carrier_id("energy_carrier_ID", "See energy carrier specification node", 0, "1", 0, 5); // TODO(GErrit): Auf Multifuel anpassen hier und drunter
     Endnode<double> consumed_energy("consumed_energy", "Energy amount", 0, "J", 0, 1.e13);
 
@@ -904,8 +907,11 @@ void  StandardMission::breguet_update() {/* Create path to mission and build nod
 
     /* Non-global endnode initialization */
     EndnodeReadOnly<double> energy_carrier_tmp(EndnodeReadOnly<double>("consumed_energy"));
+    EndnodeReadOnly<double> range_tmp( // Get endnode boundaries from TLARs
+        EndnodeReadOnly<double>("requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission/range").read(rtIO->acxml));
     Endnode<double> total_range("range", "Traveled range from break release to end of taxi at destination", // take required range for 1st assumption
-        EndnodeReadOnly<double>("requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission/range").read(rtIO->acxml).value(), "m", 0, 5000000);
+        EndnodeReadOnly<double>("requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission/range").read(rtIO->acxml).value(),
+                                range_tmp.unit(), range_tmp.lower_boundary(), range_tmp.upper_boundary());
     Endnode<int> energy_carrier_id("energy_carrier_ID", "See energy carrier specification node", 0, "1", 0, 5); // TODO(GErrit): Auf Multifuel anpassen hier und drunter
     Endnode<double> consumed_energy("consumed_energy", "Energy amount", 0, "J", 0, 1.e13);
 
-- 
GitLab


From ca18a5be8fa1f25612a98552f099bca5c21674bf Mon Sep 17 00:00:00 2001
From: Gerrit Pauls <gerrit.pauls@tuhh.de>
Date: Wed, 26 Feb 2025 16:04:56 +0100
Subject: [PATCH 2/2] top_of_climb_range and top_of_descent_range boundaries,
 too

---
 .../standard_mission/standard_mission/standard_mission.cpp  | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/mission_analysis/src/standard_mission/standard_mission/standard_mission.cpp b/mission_analysis/src/standard_mission/standard_mission/standard_mission.cpp
index dbfaab45..005b9bb8 100644
--- a/mission_analysis/src/standard_mission/standard_mission/standard_mission.cpp
+++ b/mission_analysis/src/standard_mission/standard_mission/standard_mission.cpp
@@ -190,8 +190,10 @@ StandardMission::StandardMission(const std::shared_ptr<RuntimeIO>& rtIO) :
     step_height_cruise(0.),
     cruise_profile_start(0),
     cruise_profile_end(0),
-    top_of_climb_range("top_of_climb_range", "Flown range from takeoff to top of climb (= start of initial cruise altitude (ICA))", 0, "m", 0, 500000),
-    top_of_descent_range("top_of_descent_range", "Flown range from takeoff to top of descent", 0, "m", 0, 5000000),
+    top_of_climb_range("top_of_climb_range", "Flown range from takeoff to top of climb (= start of initial cruise altitude (ICA))", 0, "m", 0,
+        EndnodeReadOnly<double>("requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission/range").read(rtIO->acxml).value()),
+    top_of_descent_range("top_of_descent_range", "Flown range from takeoff to top of descent", 0, "m", 0,
+        EndnodeReadOnly<double>("requirements_and_specifications/requirements/top_level_aircraft_requirements/design_mission/range").read(rtIO->acxml).value()),
     descent_range(0.),
     descent_range_next_FL(0.),
     top_of_descent_altitude(0.),
-- 
GitLab