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