From 516b27b3f3c182a691782549e74af6ba6a465866 Mon Sep 17 00:00:00 2001
From: "ellen.seabrooke" <seabrooke@ifb.uni-stuttgart.de>
Date: Tue, 18 Mar 2025 09:11:28 +0100
Subject: [PATCH 1/9] correct avionics bay location

---
 systems_design/src/common/aircraftSystems/ATAXX.cpp | 6 +++---
 systems_design/src/common/systemsIOData.cpp         | 3 ++-
 systems_design/src/common/systemsIOData.h           | 1 +
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/systems_design/src/common/aircraftSystems/ATAXX.cpp b/systems_design/src/common/aircraftSystems/ATAXX.cpp
index b204c515..20215909 100644
--- a/systems_design/src/common/aircraftSystems/ATAXX.cpp
+++ b/systems_design/src/common/aircraftSystems/ATAXX.cpp
@@ -23,6 +23,7 @@
 /* The following statements import necessary header files */
 #include "ATAXX.h"                                // Import of header file from src/aircraftSystems folder for ATAXX
 #include <runtimeInfo/runtimeInfo.h>                          // Import of header file from external runtime library for using runtimeInfo
+#include <aircraftGeometry2/processing/transform.h>    //Import of header file for geometry transformation operations
 
 /* Constructor for ATAXX */
 ATAXX::ATAXX(const std::string& systemName, bool systemIsOperating, std::shared_ptr<systemsIOData> data, const RuntimeIO& rtIO)
@@ -159,9 +160,8 @@ Vec3 ATAXX::getRefPoint() {
     this->refPtX_cockpit = 0.0;
     this->refPtX_cockpit = data_->data.Accommodation.payload_tube_x_ref;
     /* Auto Flight System, Navigation & Communication: Placement in Avionics Bay */
-    if (avBayLocation == 0) {
-        this->refPtX_avionicsBay = data_->theWing.at(0).aerodynamicSurface.sections.front().origin[0] -
-                                   0.25 * data_->theWing.at(0).aerodynamicSurface.sections.front().get_chord_length(); // Initial method
+    if (avBayLocation == 0) {//Location of avionics bay at wing root
+        this->refPtX_avionicsBay = data_->theWing.at(0).xposition; // Initial method
     } else if (avBayLocation == 1) {
         this->refPtX_avionicsBay = this->refPtX_cockpit * 0.25; // Location of the avionics bay in the nose for business-jet-like AC; approximation: 25% of the cockpit length
     } else if (avBayLocation == 2) {
diff --git a/systems_design/src/common/systemsIOData.cpp b/systems_design/src/common/systemsIOData.cpp
index 2d7fd2ee..7f1fd422 100644
--- a/systems_design/src/common/systemsIOData.cpp
+++ b/systems_design/src/common/systemsIOData.cpp
@@ -95,6 +95,7 @@ void systemsIOData::readWing(const node& acxml, const std::string& airfoilDir) {
     geom2::WingFactory theWingfactory{ACXML, airfoilDir}; // wing factory
     for (size_t i = 0; i < wingVector.size(); i++) {
         Wing newWing;
+        newWing.xposition = EndnodeReadOnly<double>("aircraft_exchange_file/component_design/wing/position/x").read(acxml).value();
         newWing.aerodynamicSurface = theWingfactory.create("wing/specific/geometry/aerodynamic_surface@0");
         theWing.push_back(newWing);
         myRuntimeInfo->out << "Create: " << theWing.at(i).aerodynamicSurface.name << " ..." << std::endl;
@@ -172,7 +173,7 @@ void systemsIOData::readFuselages(const node& acxml, const std::string& geometry
         myRuntimeInfo->out << "Create: " << theFuselage.at(i).name << " ..." << std::endl;
         /* Point between cockpit and cabin is needed for cable length / avionics positioning */
         // current implementation only for TAW aircraft with one payload tube
-        data.Accommodation.payload_tube_x_ref = fuselageVector[i]->at("/fuselage_accommodation/payload_tube@0/payload_tube_reference_points/front_reference_points/x/value");
+        data.Accommodation.payload_tube_x_ref = fuselageVector[i]->at("/fuselage_accommodation/position/x/value");
     }
 }
 
diff --git a/systems_design/src/common/systemsIOData.h b/systems_design/src/common/systemsIOData.h
index fe7c073d..0fb4f5e1 100644
--- a/systems_design/src/common/systemsIOData.h
+++ b/systems_design/src/common/systemsIOData.h
@@ -75,6 +75,7 @@ class systemsIOData {
     class Wing {
      public:
         geom2::MultisectionSurface<geom2::AirfoilSection> aerodynamicSurface;/** aerodynamic surface of the wing*/
+        double xposition = 0.0;/**[m] x-position of wing*/
         std::vector<geom2::MultisectionSurface<geom2::PolygonSection>> controlSurface;/** control surface of the wing*/
         std::vector<double> controlDevicePosDeflection;/**[°] maximum pos. deflection of the control device*/
         std::vector<double> controlDeviceNegDeflection;/**[°] maximum neg. deflection of the control device*/
-- 
GitLab


From 13d901bafe9053fca89f54ea6da74faeaabe32b8 Mon Sep 17 00:00:00 2001
From: "ellen.seabrooke" <seabrooke@ifb.uni-stuttgart.de>
Date: Tue, 18 Mar 2025 09:15:12 +0100
Subject: [PATCH 2/9] fix ECS switch and remove unused parameter

---
 .../src/common/aircraftSystems/conventionalATA21.cpp         | 4 +---
 .../src/common/aircraftSystems/conventionalATA21.h           | 1 -
 systems_design/systems_design_conf.xml                       | 5 -----
 3 files changed, 1 insertion(+), 9 deletions(-)

diff --git a/systems_design/src/common/aircraftSystems/conventionalATA21.cpp b/systems_design/src/common/aircraftSystems/conventionalATA21.cpp
index cd68d60a..83e3e9a4 100644
--- a/systems_design/src/common/aircraftSystems/conventionalATA21.cpp
+++ b/systems_design/src/common/aircraftSystems/conventionalATA21.cpp
@@ -65,8 +65,6 @@ void conventionalATA21::readParameters(const node& config) {
     data_->configuration.checkForValidity(heatSun, 0.0, 5000.0, "heatSun");
     heatPerPAX          = config.at("/module_configuration_file/program_settings/systems_constants/environmental_control_system/heat_per_pax/value");
     data_->configuration.checkForValidity(heatPerPAX, 0.0, 500.0, "heatPerPAX");
-    heatPerLightLength  = config.at("/module_configuration_file/program_settings/systems_constants/environmental_control_system/heat_per_light_length/value");
-    data_->configuration.checkForValidity(heatPerLightLength, 0.0, 500.0, "heatPerLightLength");
     efficiencyFactor    = config.at("/module_configuration_file/program_settings/systems_constants/environmental_control_system/efficiency_factor/value");
     data_->configuration.checkForValidity(efficiencyFactor, 0.0, 1.0, "efficiencyFactor");
     heatCapacityAir     = config.at("/module_configuration_file/program_settings/systems_constants/environmental_control_system/heat_capacity_air/value");
@@ -251,7 +249,7 @@ void conventionalATA21::getPower(std::vector<double> existingHeatLoads) {
         heatLoad.missionPower.at(i).baseLoad = (1. - efficiencyFactor) * (P_ACP
                                                + 0.1 * myElectricSum.missionPower.at(i).baseLoad);
         //Switching off the air condition during takeoff
-        if (offTakeOff == true && data_->mission.Steps.at(i).rating == "TO" && data_->mission.Steps.at(i).configuration == "TakeOff") {
+        if (offTakeOff == true && data_->mission.Steps.at(i).rating == "takeoff" && data_->mission.Steps.at(i).configuration == "takeoff") {
             bleedAir.missionPower.at(i).baseLoad = 0.0;
             heatLoad.missionPower.at(i).baseLoad = 0.0;
         }
diff --git a/systems_design/src/common/aircraftSystems/conventionalATA21.h b/systems_design/src/common/aircraftSystems/conventionalATA21.h
index 48bd4637..24cc1a08 100644
--- a/systems_design/src/common/aircraftSystems/conventionalATA21.h
+++ b/systems_design/src/common/aircraftSystems/conventionalATA21.h
@@ -62,7 +62,6 @@ class conventionalATA21: public aircraftSystem {
     double heatSun;             /**< [W/m^2] heat from the sun **/
     double windowArea;          /**< [m^2] window area **/
     double heatPerPAX;          /**< [W] heat from each PAX **/
-    double heatPerLightLength;  /**< [W/m] heat per meter of lighting **/
     double efficiencyFactor;    /**< [---] efficiency factor of the ECS **/
     double heatCapacityAir;     /**< [J/(kg*K)] heat capacity of the air **/
     bool offTakeOff;            /**< switch if ECS is off during takeoff */
diff --git a/systems_design/systems_design_conf.xml b/systems_design/systems_design_conf.xml
index 1c067f9c..14ae079f 100644
--- a/systems_design/systems_design_conf.xml
+++ b/systems_design/systems_design_conf.xml
@@ -457,11 +457,6 @@
 					<unit>W</unit>
 					<default>75</default>
 				</heat_per_pax>
-				<heat_per_light_length description="Heat emission per light specific cabin length">
-					<value>40</value>
-					<unit>W/m</unit>
-					<default>40</default>
-				</heat_per_light_length>
 				<efficiency_factor description="Efficiency of the ACP">
 					<value>0.7</value>
 					<unit>1</unit>
-- 
GitLab


From 77cb44704c2063392e0210ecaf837c00d644e4b7 Mon Sep 17 00:00:00 2001
From: "ellen.seabrooke" <seabrooke@ifb.uni-stuttgart.de>
Date: Tue, 18 Mar 2025 09:34:38 +0100
Subject: [PATCH 3/9] add lower and upper boundaries for identified parameter
 boundaries

---
 systems_design/systems_design_conf.xml | 77 ++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)

diff --git a/systems_design/systems_design_conf.xml b/systems_design/systems_design_conf.xml
index 14ae079f..dc728f09 100644
--- a/systems_design/systems_design_conf.xml
+++ b/systems_design/systems_design_conf.xml
@@ -461,6 +461,8 @@
 					<value>0.7</value>
 					<unit>1</unit>
 					<default>0.7</default>
+					<lower_boundary>0.0</lower_boundary>
+					<upper_boundary>1.0</upper_boundary>
 				</efficiency_factor>
 				<heat_capacity_air description="Heat capacity of air">
 					<value>1005.0</value>
@@ -613,6 +615,8 @@
 					<value>0.8</value>
 					<unit>1</unit>
 					<default>0.8</default>
+					<lower_boundary>0.0</lower_boundary>
+					<upper_boundary>1.0</upper_boundary>
 				</efficiency_factor_electro_thermic_anti_icing>
 				<shaft_power_sources description="Sources for possible existing shaft power consumption">
 					<number_of_power_sources description="Number of power sources">
@@ -715,6 +719,8 @@
 					<value>0.95</value>
 					<unit>1</unit>
 					<default>0.95</default>
+					<lower_boundary>0.0</lower_boundary>
+					<upper_boundary>1.0</upper_boundary>
 				</efficiency_factor>
 				<retraction_time description="Time to retract the landing gear">
 					<value>10.0</value>
@@ -775,6 +781,9 @@
 					<efficiency description="Actuator efficiency in average operation">
 						<value>0.85</value>
 						<default>0.85</default>
+						<unit>1</unit>
+						<lower_boundary>0.0</lower_boundary>
+						<upper_boundary>1.0</upper_boundary>
 					</efficiency>
 					<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 						<value>0.</value>
@@ -848,6 +857,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>0.85</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -878,6 +889,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>0.85</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -925,6 +938,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>0.85</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -955,6 +970,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>0.85</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1028,6 +1045,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1057,6 +1076,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1086,6 +1107,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1115,6 +1138,8 @@
 										<value>1.</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1144,6 +1169,8 @@
 										<value>1.</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1218,6 +1245,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1247,6 +1276,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1291,6 +1322,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1320,6 +1353,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1394,6 +1429,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1438,6 +1475,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1482,6 +1521,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1526,6 +1567,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1570,6 +1613,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1614,6 +1659,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1658,6 +1705,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1702,6 +1751,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1746,6 +1797,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1790,6 +1843,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1867,6 +1922,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -1896,6 +1953,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>1.</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<standby_power description="Average basic power in standby operation (e.g. due to leakage)">
 										<value>0.0</value>
@@ -2135,11 +2194,15 @@
 					<value>0.95</value>
 					<unit>1</unit>
 					<default>0.95</default>
+					<lower_boundary>0.0</lower_boundary>
+					<upper_boundary>1.0</upper_boundary>
 				</efficiency_factor_hydraulic_system>
 				<rel_max_power description="Ratio of maximum permanent power and maximum required power of all pumps">
 					<value>1.0</value>
 					<unit>1</unit>
 					<default>1.0</default>
+					<lower_boundary>1.0</lower_boundary>
+					<upper_boundary>10.0</upper_boundary>
 				</rel_max_power>
 				<specific_ducting_mass description="Specific weight of hydraulic lines">
 					<value>2.5</value>
@@ -2199,6 +2262,8 @@
 										<value>0.85</value>
 										<unit>1</unit>
 										<default>0.85</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<operation_factor description="Percentage of total pump power in normal operation (value must be between">
 										<value>0.8</value>
@@ -2226,6 +2291,8 @@
 										<value>0.7</value>
 										<unit>1</unit>
 										<default>0.95</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</efficiency>
 									<operation_factor description="Percentage of total pump power in normal operation (value must be between 0 and 1. 0=off, 1=total)">
 										<value>0.2</value>
@@ -2273,11 +2340,15 @@
 					<value>1.0</value>
 					<unit>1</unit>
 					<default>1.0</default>
+					<lower_boundary>0.0</lower_boundary>
+					<upper_boundary>1.0</upper_boundary>
 				</efficiency_factor_electric_system>
 				<rel_max_power description="Ratio of maximum permanent power and maximum required power of all generators">
 					<value>1.0</value>
 					<unit>1</unit>
 					<default>1.0</default>
+					<lower_boundary>1.0</lower_boundary>
+					<upper_boundary>10.0</upper_boundary>
 				</rel_max_power>
 				<specific_cable_mass description="Specific weight of electrical wiring">
 					<value>6.5</value>
@@ -2309,6 +2380,8 @@
 										<value>0.665</value>
 										<unit>1</unit>
 										<default>0.665</default>
+										<lower_boundary>0.0</lower_boundary>
+										<upper_boundary>1.0</upper_boundary>
 									</generator_efficiency>
 									<operation_factor description="Share of total power in normal operation (value must be between 0 and 1. 0=off, 1=total)">
 										<value>1</value>
@@ -2355,6 +2428,8 @@
 					<value>0.95</value>
 					<unit>1</unit>
 					<default>0.95</default>
+					<lower_boundary>0.0</lower_boundary>
+					<upper_boundary>1.0</upper_boundary>
 				</efficiency_factor_bleed_air>
 			</propulsion_system>
 			<auxiliary_power_unit>
@@ -2382,6 +2457,8 @@
 					<value>0.90</value>
 					<unit>1</unit>
 					<default>0.90</default>
+					<lower_boundary>0.0</lower_boundary>
+					<upper_boundary>1.0</upper_boundary>
 				</efficiency_factor_bleed_air>
 				<installation_factor description="Installation factor for attached parts such as fire protection, noise protection, etc.">
 					<value>1.5</value>
-- 
GitLab


From fdf7e3525f3b7cd26b694853d9770a1a969e4298 Mon Sep 17 00:00:00 2001
From: "ellen.seabrooke" <seabrooke@ifb.uni-stuttgart.de>
Date: Tue, 18 Mar 2025 09:39:51 +0100
Subject: [PATCH 4/9] Fix switch for default actuator use

---
 .../aircraftSystems/conventionalATA27.cpp     | 10 +++---
 systems_design/systems_design_conf.xml        | 32 +++++++++----------
 2 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/systems_design/src/common/aircraftSystems/conventionalATA27.cpp b/systems_design/src/common/aircraftSystems/conventionalATA27.cpp
index 61ab640a..3f631fd5 100644
--- a/systems_design/src/common/aircraftSystems/conventionalATA27.cpp
+++ b/systems_design/src/common/aircraftSystems/conventionalATA27.cpp
@@ -146,11 +146,11 @@ void conventionalATA27::readParameters(const node& config) {
         myRuntimeInfo->err << "--> Abort!" << std::endl;
         exit(1);
     }
-    flightControl.defaultAileronActuator = EndnodeReadOnly<bool>(flightControlConfig + "/ailerons/default_actuator_architecture").read(config).value();
-    flightControl.defaultSpoilerActuator = EndnodeReadOnly<bool>(flightControlConfig + "/spoilers/default_actuator_architecture").read(config).value();
-    flightControl.defaultElevatorActuator = EndnodeReadOnly<bool>(flightControlConfig + "/elevators/default_actuator_architecture").read(config).value();
-    flightControl.defaultRudderActuator = EndnodeReadOnly<bool>(flightControlConfig + "/rudders/default_actuator_architecture").read(config).value();
-    flightControl.defaultTHSAActuator = EndnodeReadOnly<bool>(flightControlConfig + "/trimmable_horizontal_stabilizer/default_actuator_architecture").read(config).value();
+    flightControl.defaultAileronActuator = EndnodeReadOnly<bool>(flightControlConfig + "/ailerons/default_actuator_architecture_switch").read(config).value();
+    flightControl.defaultSpoilerActuator = EndnodeReadOnly<bool>(flightControlConfig + "/spoilers/default_actuator_architecture_switch").read(config).value();
+    flightControl.defaultElevatorActuator = EndnodeReadOnly<bool>(flightControlConfig + "/elevators/default_actuator_architecture_switch").read(config).value();
+    flightControl.defaultRudderActuator = EndnodeReadOnly<bool>(flightControlConfig + "/rudders/default_actuator_architecture_switch").read(config).value();
+    flightControl.defaultTHSAActuator = EndnodeReadOnly<bool>(flightControlConfig + "/trimmable_horizontal_stabilizer/default_actuator_architecture_switch").read(config).value();
 
     this->getAilerons(config);
     this->getSpoilers(config);
diff --git a/systems_design/systems_design_conf.xml b/systems_design/systems_design_conf.xml
index dc728f09..c3ba1263 100644
--- a/systems_design/systems_design_conf.xml
+++ b/systems_design/systems_design_conf.xml
@@ -801,10 +801,10 @@
 						<value>0.25</value>
 						<default>0.5</default>
 					</electric_flight_control_system_weight_factor>
-					<default_actuator_architecture_switch description="Enables the default layout for the actuator architecture. Switch: 1 (true) / 0 (false)">
-						<value>1</value>
+					<default_actuator_architecture_switch description="Enables the default layout for the actuator architecture. Switch: true / false">
+						<value>true</value>
 						<unit>1</unit>
-						<default>1</default>
+						<default>true</default>
 					</default_actuator_architecture_switch>
 					<default_actuator_architecture description="Definition of the default actuator architecture">
 						<number_of_actuators_per_control_surface description="Number of actuators per control surface">
@@ -993,15 +993,15 @@
 						<value>0.25</value>
 						<default>0.5</default>
 					</electric_flight_control_system_weight_factor>
-					<default_actuator_architecture_switch description="Enables the default layout for the actuator architecture. Switch: 1 (true) / 0 (false)">
-						<value>1</value>
+					<default_actuator_architecture_switch description="Enables the default layout for the actuator architecture. Switch: true / false">
+						<value>true</value>
 						<unit>1</unit>
-						<default>1</default>
+						<default>true</default>
 					</default_actuator_architecture_switch>
 					<default_actuator_architecture description="Definition of the default actuator architecture">
 						<number_of_actuators_per_control_surface description="Number of actuators per control surface">
 							<value>3</value>
-							<unit></unit>
+							<unit>1</unit>
 							<default>3</default>
 						</number_of_actuators_per_control_surface>
 						<default_deflection_speed description="Deflection speed">
@@ -1193,10 +1193,10 @@
 						<unit></unit>
 						<default>0.5</default>
 					</electric_flight_control_system_weight_factor>
-					<default_actuator_architecture_switch description="Enables the default layout for the actuator architecture. Switch: 1 (true) / 0 (false)">
-						<value>1</value>
+					<default_actuator_architecture_switch description="Enables the default layout for the actuator architecture. Switch: true / false">
+						<value>true</value>
 						<unit>1</unit>
-						<default>1</default>
+						<default>true</default>
 					</default_actuator_architecture_switch>
 					<default_actuator_architecture description="Definition of the default actuator architecture">
 						<number_of_actuators_per_control_surface description="Number of actuators per control surface">
@@ -1377,10 +1377,10 @@
 						<unit></unit>
 						<default>0.5</default>
 					</electric_flight_control_system_weight_factor>
-					<default_actuator_architecture_switch description="Enables the default layout for the actuator architecture. Switch: 1 (true) / 0 (false)">
-						<value>1</value>
+					<default_actuator_architecture_switch description="Enables the default layout for the actuator architecture. Switch: true / false">
+						<value>true</value>
 						<unit>1</unit>
-						<default>1</default>
+						<default>true</default>
 					</default_actuator_architecture_switch>
 					<default_actuator_architecture description="Definition of the default actuator architecture">
 						<number_of_actuators_per_control_surface description="Number of actuators per control surface">
@@ -1871,10 +1871,10 @@
 						<unit></unit>
 						<default>0.5</default>
 					</electric_flight_control_system_weight_factor>
-					<default_actuator_architecture_switch description="Enables the default layout for the actuator architecture. Switch: 1 (true) / 0 (false)">
-						<value>1</value>
+					<default_actuator_architecture_switch description="Enables the default layout for the actuator architecture. Switch: true / false">
+						<value>ture</value>
 						<unit>1</unit>
-						<default>1</default>
+						<default>true</default>
 					</default_actuator_architecture_switch>
 					<default_actuator_architecture description="Definition of the default actuator architecture">
 						<number_of_actuators_per_control_surface description="Number of actuators per control surface">
-- 
GitLab


From 1edfd70ec07eaf488e5aed14f0a10f946d868bb6 Mon Sep 17 00:00:00 2001
From: "ellen.seabrooke" <seabrooke@ifb.uni-stuttgart.de>
Date: Tue, 18 Mar 2025 09:42:25 +0100
Subject: [PATCH 5/9] remove unused hydraulic pressure variable and function

---
 .../aircraftSystems/conventionalATA29.cpp       | 17 -----------------
 .../common/aircraftSystems/conventionalATA29.h  |  8 --------
 systems_design/systems_design_conf.xml          |  5 -----
 3 files changed, 30 deletions(-)

diff --git a/systems_design/src/common/aircraftSystems/conventionalATA29.cpp b/systems_design/src/common/aircraftSystems/conventionalATA29.cpp
index 5b96a288..a654373f 100644
--- a/systems_design/src/common/aircraftSystems/conventionalATA29.cpp
+++ b/systems_design/src/common/aircraftSystems/conventionalATA29.cpp
@@ -54,18 +54,6 @@ void conventionalATA29::readParameters(const node& config) {
     scaling_factor = EndnodeReadOnly<double>("/module_configuration_file/program_settings/scaling_factors/hydraulic_system").read(config).value();
     std::string unit;
     std::string hydraulicSystemConfig = "/module_configuration_file/program_settings/systems_constants/hydraulic_system";
-    unit = std::string(config.at(hydraulicSystemConfig + "/pressure/unit"));
-    if (unit == "psi") {
-        Pressure  = 6894.76 * config.at(hydraulicSystemConfig + "/pressure/value");
-    } else if (unit == "Pa") {
-        Pressure  = config.at(hydraulicSystemConfig + "/pressure/value");
-    } else {
-        Pressure  = config.at(hydraulicSystemConfig + "/pressure/value");
-        myRuntimeInfo->err << "The unit of hydraulic pressure is not known.!" << std::endl;
-        myRuntimeInfo->err << "hydraulic pressure: " << Pressure << " " << unit << std::endl;
-        exit(1);
-    }
-    data_->configuration.checkForValidity(Pressure, 6894.76 * 2500, 6894.76 * 10000, "Hydraulic.Pressure");
     efficiencyFactorHydraulicSystem         = config.at(hydraulicSystemConfig + "/efficiency_factor_hydraulic_system/value");
     data_->configuration.checkForValidity(efficiencyFactorHydraulicSystem, 0.0, 1.0, "Hydraulic.efficiencyFactorHydraulicSystem");
     maxRelPower   =  config.at(hydraulicSystemConfig + "/rel_max_power/value");
@@ -361,8 +349,3 @@ Vec3 conventionalATA29::getRefPoint() {
     return Vec3(data_->theWing.back().aerodynamicSurface.origin[0] + 0.5 * data_->theWing.back().aerodynamicSurface.sections.at(0).get_chord_length(),
                 data_->theWing.back().aerodynamicSurface.origin[1], data_->theWing.back().aerodynamicSurface.origin[2]);
 }
-
-/* Determination of hydraulic volume flow */
-double conventionalATA29::getHydraulicVolumeFlow(double Power, double Pressure) {
-    return (Power / Pressure * (60 / 0.001));
-}
diff --git a/systems_design/src/common/aircraftSystems/conventionalATA29.h b/systems_design/src/common/aircraftSystems/conventionalATA29.h
index 00a9472a..7c7591b3 100644
--- a/systems_design/src/common/aircraftSystems/conventionalATA29.h
+++ b/systems_design/src/common/aircraftSystems/conventionalATA29.h
@@ -55,7 +55,6 @@ class conventionalATA29: public aircraftSystem {
 
     double lengthDucting;                       /**<[m] length of the ducting */
 
-    double Pressure; /**< [Pa] Pressure of the hydraulic System **/
     double efficiencyFactorHydraulicSystem;/**< [-] efficiency factor of the hydraulic system */
     double maxRelPower;
     double specificDuctingMass; /**< [kg/m] specific mass of hydraulic ducting */
@@ -117,13 +116,6 @@ class conventionalATA29: public aircraftSystem {
      */
     Vec3 getRefPoint();
 
-    /** \brief calculates the volume flow of the hydraulic system. UNUSED FUNCTION!
-     * \param Power double: [W]
-     * \param Pressure double: [N/m^2]
-     * \return double: volume flow [kg/s]
-     */
-    double getHydraulicVolumeFlow(double Power, double Pressure);   /** < Return of the volume flow [l/min] */
-
     /** \brief Constructor of the hydraulic system
      * \param systemName string
      * \param systemIsOperating bool: Switch whether system is operating (1) or not (0)
diff --git a/systems_design/systems_design_conf.xml b/systems_design/systems_design_conf.xml
index c3ba1263..fd216966 100644
--- a/systems_design/systems_design_conf.xml
+++ b/systems_design/systems_design_conf.xml
@@ -2185,11 +2185,6 @@
 				</specific_ducting_mass>
 			</bleed_air>
 			<hydraulic_system>
-				<pressure description="Nominal pressure of the hydraulic system">
-					<value>20684000</value>
-					<unit>Pa</unit>
-					<default>20684000</default>
-				</pressure>
 				<efficiency_factor_hydraulic_system description="Efficiency of the hydraulic system, e.g. leakage losses">
 					<value>0.95</value>
 					<unit>1</unit>
-- 
GitLab


From 006a8b296b2f0de850610264f7c3ad76e83efeaf Mon Sep 17 00:00:00 2001
From: "ellen.seabrooke" <seabrooke@ifb.uni-stuttgart.de>
Date: Tue, 18 Mar 2025 09:45:40 +0100
Subject: [PATCH 6/9] Add comments to landing gear mass and remove scaling
 factor

---
 .../src/common/aircraftSystems/conventionalATA32.cpp     | 3 ++-
 systems_design/systems_design_conf.xml                   | 9 +--------
 2 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/systems_design/src/common/aircraftSystems/conventionalATA32.cpp b/systems_design/src/common/aircraftSystems/conventionalATA32.cpp
index 6faed3a4..80fbe2a6 100644
--- a/systems_design/src/common/aircraftSystems/conventionalATA32.cpp
+++ b/systems_design/src/common/aircraftSystems/conventionalATA32.cpp
@@ -99,6 +99,7 @@ void conventionalATA32::calculateSinkMass(const powerProfile& sourceBleed,
     UNUSED(sourceElectric);
     UNUSED(sourceHydraulic);
     /* Calculate Systems Mass */
+    //landing gear mass is required for power calculation. It is not considered in total system mass since it is accounted for in landing_gear_design
     if (data_->data.Mass.Gear > 0.0) {
         Mass = data_->data.Mass.Gear;
         refPoint = data_->data.CofG.landingGear;
@@ -191,7 +192,7 @@ void conventionalATA32::getPower() {
     cleanPowerPeaks(&bleedAir);
 }
 double conventionalATA32::getMass() {
-    //TODO(seabrooke): check that this is the landing gear actuation mass
+    //landing gear mass is required for power calculation but not considered for total system mass
     return  static_cast<double>(0.00271 * pow(data_->data.Mass.MLM, 1.24));
 }
 
diff --git a/systems_design/systems_design_conf.xml b/systems_design/systems_design_conf.xml
index fd216966..8f828661 100644
--- a/systems_design/systems_design_conf.xml
+++ b/systems_design/systems_design_conf.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" ?>
+<?xml version="1.0" encoding="utf-8" ?>
 <module_configuration_file name="systems_design_conf.xml">
 	<control_settings description="General control settings for this tool">
         <aircraft_exchange_file_name description="Specify the name of the exchange file">
@@ -105,13 +105,6 @@
 				<upper_boundary>inf</upper_boundary>
 				<default>1</default>
 			</ice_rain_protection_system>
-			<landing_gear_system description="Scaling factor for the landing gear actuation.">
-				<value>1</value>
-				<unit>1</unit>
-				<lower_boundary>0</lower_boundary>
-				<upper_boundary>inf</upper_boundary>
-				<default>1</default>
-			</landing_gear_system>
 			<lighting_system description="Scaling factor for the lighting system.">
 				<value>1</value>
 				<unit>1</unit>
-- 
GitLab


From fb8bd5efcfa82cce13c5ffc4ee3bb7836f95d3a9 Mon Sep 17 00:00:00 2001
From: "ellen.seabrooke" <seabrooke@ifb.uni-stuttgart.de>
Date: Tue, 18 Mar 2025 11:10:57 +0100
Subject: [PATCH 7/9] Set switches to true/false

---
 .../src/common/aircraftSystems/conventionalATA21.cpp      | 6 ++----
 systems_design/systems_design_conf.xml                    | 8 ++++----
 2 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/systems_design/src/common/aircraftSystems/conventionalATA21.cpp b/systems_design/src/common/aircraftSystems/conventionalATA21.cpp
index 83e3e9a4..d9cddf1d 100644
--- a/systems_design/src/common/aircraftSystems/conventionalATA21.cpp
+++ b/systems_design/src/common/aircraftSystems/conventionalATA21.cpp
@@ -51,10 +51,8 @@ conventionalATA21::~conventionalATA21() {
 void conventionalATA21::readParameters(const node& config) {
     std::string unit;
     scaling_factor = EndnodeReadOnly<double>("/module_configuration_file/program_settings/scaling_factors/environmental_control_system").read(config).value();
-    offTakeOff          = config.at("/module_configuration_file/program_settings/systems_constants/environmental_control_system/off_on_take_off/value");
-    data_->configuration.checkForValidity(offTakeOff, 0, 1, "offOnTakeOff");
-    ecoMode             = config.at("/module_configuration_file/program_settings/systems_constants/environmental_control_system/eco_mode/value");
-    data_->configuration.checkForValidity(ecoMode, 0, 1, "ecoMode");
+    offTakeOff          = EndnodeReadOnly<bool>("/module_configuration_file/program_settings/systems_constants/environmental_control_system/off_on_take_off").read(config).value();
+    ecoMode             = EndnodeReadOnly<bool>("/module_configuration_file/program_settings/systems_constants/environmental_control_system/eco_mode").read(config).value();
     airflowPerPax       = config.at("/module_configuration_file/program_settings/systems_constants/environmental_control_system/airflow_per_pax/value");
     data_->configuration.checkForValidity(airflowPerPax, 0.0, 0.02, "airflowPerPax");
     Recirculation       = config.at("/module_configuration_file/program_settings/systems_constants/environmental_control_system/recirculation/value");
diff --git a/systems_design/systems_design_conf.xml b/systems_design/systems_design_conf.xml
index 8f828661..d061564e 100644
--- a/systems_design/systems_design_conf.xml
+++ b/systems_design/systems_design_conf.xml
@@ -463,14 +463,14 @@
 					<default>1005.0</default>
 				</heat_capacity_air>
 				<off_on_take_off description="Switch off ACP during take off (Airbus Getting Grips on Fuel Savings). Switch: true (ACP off during take off) / false (ACP always on)">
-					<value>1</value>
+					<value>true</value>
 					<unit>1</unit>
-					<default>1</default>
+					<default>true</default>
 				</off_on_take_off>
 				<eco_mode description="ECO Mode switch: 25% reduction in bleed air withdrawal (Airbus Getting Grips on Fuel Savings). Switch : true (ECO Mode) / false (normal mode)">
-					<value>1</value>
+					<value>true</value>
 					<unit>1</unit>
-					<default>1</default>
+					<default>true</default>
 				</eco_mode>
 				<shaft_power_sources description="Sources for possible existing shaft power consumption">
 					<number_of_power_sources description="Number of power sources">
-- 
GitLab


From 7c9b2f39201dd7ea4695d825a0d47018b01f5a1c Mon Sep 17 00:00:00 2001
From: "ellen.seabrooke" <seabrooke@ifb.uni-stuttgart.de>
Date: Tue, 18 Mar 2025 13:54:05 +0100
Subject: [PATCH 8/9] Remove scaling factor from ATA32 and fix format of config
 node

---
 .../src/common/aircraftSystems/conventionalATA32.cpp          | 1 -
 systems_design/systems_design_conf.xml                        | 4 ++--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/systems_design/src/common/aircraftSystems/conventionalATA32.cpp b/systems_design/src/common/aircraftSystems/conventionalATA32.cpp
index 80fbe2a6..54b63e64 100644
--- a/systems_design/src/common/aircraftSystems/conventionalATA32.cpp
+++ b/systems_design/src/common/aircraftSystems/conventionalATA32.cpp
@@ -40,7 +40,6 @@ conventionalATA32::~conventionalATA32() {
 
 /* Reading system specific parameters of configuration xml file */
 void conventionalATA32::readParameters(const node& config) {
-    scaling_factor = EndnodeReadOnly<double>("/module_configuration_file/program_settings/scaling_factors/landing_gear_system").read(config).value();
     efficiencyFactor = config.at("/module_configuration_file/program_settings/systems_constants/gear/efficiency_factor/value");
     retractionTime = config.at("/module_configuration_file/program_settings/systems_constants/gear/retraction_time/value");
     extensionTime = config.at("/module_configuration_file/program_settings/systems_constants/gear/extension_time/value");
diff --git a/systems_design/systems_design_conf.xml b/systems_design/systems_design_conf.xml
index d061564e..d1a942dd 100644
--- a/systems_design/systems_design_conf.xml
+++ b/systems_design/systems_design_conf.xml
@@ -2472,8 +2472,8 @@
 				</design_loads>
 			</auxiliary_power_unit>
 			<avionics description="Components grouped inside ATAXX">
-				<location_of_aviationics_bay description="0: Wing root, 1: Nose, 2: Behind cockpit">
-					<value>0</value>
+				<location_of_aviationics_bay description="Selector: 0 (Wing root) / 1 (Nose) / 2 (Behind cockpit)">
+					<value>1</value>
 					<unit>1</unit>
 					<default>0</default>
 				</location_of_aviationics_bay>
-- 
GitLab


From cc0557cf7d3ed22ffca4a5e933e319bd24aadf7d Mon Sep 17 00:00:00 2001
From: "ellen.seabrooke" <seabrooke@ifb.uni-stuttgart.de>
Date: Fri, 21 Mar 2025 09:41:36 +0100
Subject: [PATCH 9/9] Fix wing related CoG positions

---
 systems_design/src/common/aircraftSystems/ATAXX.cpp         | 2 +-
 .../src/common/aircraftSystems/conventionalATA21.cpp        | 4 ++--
 .../src/common/aircraftSystems/conventionalATA27.cpp        | 4 ++--
 .../src/common/aircraftSystems/conventionalATA29.cpp        | 4 ++--
 .../src/common/aircraftSystems/conventionalATA36.cpp        | 6 +++---
 systems_design/src/common/systemsIOData.cpp                 | 4 +++-
 systems_design/src/common/systemsIOData.h                   | 2 +-
 7 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/systems_design/src/common/aircraftSystems/ATAXX.cpp b/systems_design/src/common/aircraftSystems/ATAXX.cpp
index 20215909..6e265d22 100644
--- a/systems_design/src/common/aircraftSystems/ATAXX.cpp
+++ b/systems_design/src/common/aircraftSystems/ATAXX.cpp
@@ -161,7 +161,7 @@ Vec3 ATAXX::getRefPoint() {
     this->refPtX_cockpit = data_->data.Accommodation.payload_tube_x_ref;
     /* Auto Flight System, Navigation & Communication: Placement in Avionics Bay */
     if (avBayLocation == 0) {//Location of avionics bay at wing root
-        this->refPtX_avionicsBay = data_->theWing.at(0).xposition; // Initial method
+        this->refPtX_avionicsBay = data_->theWing.at(0).position[0]; // Initial method
     } else if (avBayLocation == 1) {
         this->refPtX_avionicsBay = this->refPtX_cockpit * 0.25; // Location of the avionics bay in the nose for business-jet-like AC; approximation: 25% of the cockpit length
     } else if (avBayLocation == 2) {
diff --git a/systems_design/src/common/aircraftSystems/conventionalATA21.cpp b/systems_design/src/common/aircraftSystems/conventionalATA21.cpp
index d9cddf1d..b6d2bd07 100644
--- a/systems_design/src/common/aircraftSystems/conventionalATA21.cpp
+++ b/systems_design/src/common/aircraftSystems/conventionalATA21.cpp
@@ -302,9 +302,9 @@ double conventionalATA21::getMass(double massFlowECS) {
 /* Determination of the reference point */
 Vec3 conventionalATA21::getRefPoint() {
     /* Assumption: ECS is located in the belly fairing */
-    return Vec3(data_->theWing.back().aerodynamicSurface.origin[0] +
+    return Vec3(data_->theWing.back().position[0] +
                 0.5 * data_->theWing.back().aerodynamicSurface.sections.at(0).get_chord_length(),
-                data_->theWing.back().aerodynamicSurface.origin[1], data_->theWing.back().aerodynamicSurface.origin[2]);
+                data_->theWing.back().position[1], data_->theWing.back().position[2]);
 }
 
 /* Determination of the heat flux for ACP */
diff --git a/systems_design/src/common/aircraftSystems/conventionalATA27.cpp b/systems_design/src/common/aircraftSystems/conventionalATA27.cpp
index 3f631fd5..55b8c338 100644
--- a/systems_design/src/common/aircraftSystems/conventionalATA27.cpp
+++ b/systems_design/src/common/aircraftSystems/conventionalATA27.cpp
@@ -1716,9 +1716,9 @@ Vec3 conventionalATA27::getRefPoint() {
 //    return Vec3(x_cg_ATA27, 0., z_cg_ATA27);
     //alte Annahme: Schwerpunkt bei 45% Rumpflaenge
     // return Vec3(fuselageRef[0]+0.45*fuselageLength, fuselageRef[1], fuselageRef[2]);
-    return Vec3(data_->theWing.back().aerodynamicSurface.origin[0] +
+    return Vec3(data_->theWing.back().position[0] +
                 0.5 * data_->theWing.back().aerodynamicSurface.sections.at(0).get_chord_length(),
-                data_->theWing.back().aerodynamicSurface.origin[1], data_->theWing.back().aerodynamicSurface.origin[2]);
+                data_->theWing.back().position[1], data_->theWing.back().position[2]);
 }
 
 double conventionalATA27::getMaxDeflection(double minDeflection, double maxDeflection) {
diff --git a/systems_design/src/common/aircraftSystems/conventionalATA29.cpp b/systems_design/src/common/aircraftSystems/conventionalATA29.cpp
index a654373f..f3415201 100644
--- a/systems_design/src/common/aircraftSystems/conventionalATA29.cpp
+++ b/systems_design/src/common/aircraftSystems/conventionalATA29.cpp
@@ -346,6 +346,6 @@ double conventionalATA29::getDuctingLength(const geom2::MultisectionSurface<geom
 /* Determination of the reference point */
 Vec3 conventionalATA29::getRefPoint() {
     /* Assumption: hydraulic system is located in the belly fairing */
-    return Vec3(data_->theWing.back().aerodynamicSurface.origin[0] + 0.5 * data_->theWing.back().aerodynamicSurface.sections.at(0).get_chord_length(),
-                data_->theWing.back().aerodynamicSurface.origin[1], data_->theWing.back().aerodynamicSurface.origin[2]);
+    return Vec3(data_->theWing.back().position[0] + 0.5 * data_->theWing.back().aerodynamicSurface.sections.at(0).get_chord_length(),
+                data_->theWing.back().position[1], data_->theWing.back().position[2]);
 }
diff --git a/systems_design/src/common/aircraftSystems/conventionalATA36.cpp b/systems_design/src/common/aircraftSystems/conventionalATA36.cpp
index c2a4e9fb..b90bacad 100644
--- a/systems_design/src/common/aircraftSystems/conventionalATA36.cpp
+++ b/systems_design/src/common/aircraftSystems/conventionalATA36.cpp
@@ -175,7 +175,7 @@ double conventionalATA36::getMass() {
 
 Vec3 conventionalATA36::getRefPoint() {
     /* Assumption: the bleed air system is located in the belly fairing **/
-    return Vec3(data_->theWing.back().aerodynamicSurface.origin[0] + 0.5 * data_->theWing.back().aerodynamicSurface.sections.at(0).get_chord_length(),
-                data_->theWing.back().aerodynamicSurface.origin[1],
-                data_->theWing.back().aerodynamicSurface.origin[2]);
+    return Vec3(data_->theWing.back().position[0] + 0.5 * data_->theWing.back().aerodynamicSurface.sections.at(0).get_chord_length(),
+                data_->theWing.back().position[1],
+                data_->theWing.back().position[2]);
 }
diff --git a/systems_design/src/common/systemsIOData.cpp b/systems_design/src/common/systemsIOData.cpp
index 7f1fd422..8aa1cc81 100644
--- a/systems_design/src/common/systemsIOData.cpp
+++ b/systems_design/src/common/systemsIOData.cpp
@@ -95,7 +95,9 @@ void systemsIOData::readWing(const node& acxml, const std::string& airfoilDir) {
     geom2::WingFactory theWingfactory{ACXML, airfoilDir}; // wing factory
     for (size_t i = 0; i < wingVector.size(); i++) {
         Wing newWing;
-        newWing.xposition = EndnodeReadOnly<double>("aircraft_exchange_file/component_design/wing/position/x").read(acxml).value();
+        newWing.position[0] = EndnodeReadOnly<double>("aircraft_exchange_file/component_design/wing/position/x").read(acxml).value();
+        newWing.position[1] = EndnodeReadOnly<double>("aircraft_exchange_file/component_design/wing/position/y").read(acxml).value();
+        newWing.position[2] = EndnodeReadOnly<double>("aircraft_exchange_file/component_design/wing/position/z").read(acxml).value();
         newWing.aerodynamicSurface = theWingfactory.create("wing/specific/geometry/aerodynamic_surface@0");
         theWing.push_back(newWing);
         myRuntimeInfo->out << "Create: " << theWing.at(i).aerodynamicSurface.name << " ..." << std::endl;
diff --git a/systems_design/src/common/systemsIOData.h b/systems_design/src/common/systemsIOData.h
index 0fb4f5e1..eaed585e 100644
--- a/systems_design/src/common/systemsIOData.h
+++ b/systems_design/src/common/systemsIOData.h
@@ -75,7 +75,7 @@ class systemsIOData {
     class Wing {
      public:
         geom2::MultisectionSurface<geom2::AirfoilSection> aerodynamicSurface;/** aerodynamic surface of the wing*/
-        double xposition = 0.0;/**[m] x-position of wing*/
+        Vec3 position;/**[m] Wing root position*/
         std::vector<geom2::MultisectionSurface<geom2::PolygonSection>> controlSurface;/** control surface of the wing*/
         std::vector<double> controlDevicePosDeflection;/**[°] maximum pos. deflection of the control device*/
         std::vector<double> controlDeviceNegDeflection;/**[°] maximum neg. deflection of the control device*/
-- 
GitLab