From c8eaaab83fc4b683bc68ebec0df7947c86ebd535 Mon Sep 17 00:00:00 2001 From: jensviloehr <j.viloehr@tu-berlin.de> Date: Mon, 14 Apr 2025 14:17:00 +0200 Subject: [PATCH] Refactored mass technology-factor: removed global, added per-stabilizer --- empennage_design/empennage_design_conf.xml | 70 ++++++++++++++++--- .../bwbVerticalTailsDesignConfig.cpp | 2 - .../bwbVerticalTailsDesignConfig.h | 1 - .../low/lowBwbVerticalTailsDesign.cpp | 2 +- empennage_design/src/lib/io_methods/io.h | 5 +- .../conventionalEmpennageDesignConfig.cpp | 2 - .../conventionalEmpennageDesignConfig.h | 1 - .../low/lowConventionalEmpennageDesign.cpp | 4 +- .../low/low_t_tail_empennage_design.cpp | 4 +- .../t_tail/t_tail_empennage_design_config.cpp | 2 - .../t_tail/t_tail_empennage_design_config.h | 1 - 11 files changed, 69 insertions(+), 25 deletions(-) diff --git a/empennage_design/empennage_design_conf.xml b/empennage_design/empennage_design_conf.xml index 1ca40940..a651f00f 100644 --- a/empennage_design/empennage_design_conf.xml +++ b/empennage_design/empennage_design_conf.xml @@ -55,16 +55,6 @@ <method description="Selector mode_0: flops"> <value>mode_0</value> </method> - <parameters description="parameters for mass calculation methods"> - <mode_0 description="flops"> - <technology_factor description="technology factor applied to flops mass calculation methods"> - <value>1.0</value> - <unit>1</unit> - <lower_boundary>0.5</lower_boundary> - <upper_boundary>1.5</upper_boundary> - </technology_factor> - </mode_0> - </parameters> </mass_mode> </modes> <common_airfoil_data_path description="path to common airfoil data"> @@ -126,6 +116,18 @@ <upper_boundary>90</upper_boundary> </delta_sweep> </parameter> + <mass_mode description="mass calculation method"> + <parameters description="parameters for mass calculation methods"> + <mode_0 description="flops"> + <technology_factor description="technology factor applied to flops mass calculation methods"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.5</lower_boundary> + <upper_boundary>1.5</upper_boundary> + </technology_factor> + </mode_0> + </parameters> + </mass_mode> <profiles description="tail profile for both inner and outer section"> <profile description="tail profile at section 0" ID="0"> <name description="profile name"> @@ -360,6 +362,18 @@ <upper_boundary>45</upper_boundary> </delta_sweep> </parameter> + <mass_mode description="mass calculation method"> + <parameters description="parameters for mass calculation methods"> + <mode_0 description="flops"> + <technology_factor description="technology factor applied to flops mass calculation methods"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.5</lower_boundary> + <upper_boundary>1.5</upper_boundary> + </technology_factor> + </mode_0> + </parameters> + </mass_mode> <profiles description="tail profile for both inner and outer section"> <profile description="tail profile at section 0" ID="0"> <name description="profile name"> @@ -596,6 +610,18 @@ <upper_boundary>90</upper_boundary> </delta_sweep> </parameter> + <mass_mode description="mass calculation method"> + <parameters description="parameters for mass calculation methods"> + <mode_0 description="flops"> + <technology_factor description="technology factor applied to flops mass calculation methods"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.5</lower_boundary> + <upper_boundary>1.5</upper_boundary> + </technology_factor> + </mode_0> + </parameters> + </mass_mode> <profiles description="tail profile for both inner and outer section"> <profile description="tail profile at section 0" ID="0"> <name description="profile name"> @@ -830,6 +856,18 @@ <upper_boundary>45</upper_boundary> </delta_sweep> </parameter> + <mass_mode description="mass calculation method"> + <parameters description="parameters for mass calculation methods"> + <mode_0 description="flops"> + <technology_factor description="technology factor applied to flops mass calculation methods"> + <value>3.0</value> + <unit>1</unit> + <lower_boundary>0.5</lower_boundary> + <upper_boundary>1.5</upper_boundary> + </technology_factor> + </mode_0> + </parameters> + </mass_mode> <profiles description="tail profile for both inner and outer section"> <profile description="tail profile at section 0" ID="0"> <name description="profile name"> @@ -1073,6 +1111,18 @@ <upper_boundary>90</upper_boundary> </delta_sweep> </parameter> + <mass_mode description="mass calculation method"> + <parameters description="parameters for mass calculation methods"> + <mode_0 description="flops"> + <technology_factor description="technology factor applied to flops mass calculation methods"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.5</lower_boundary> + <upper_boundary>1.5</upper_boundary> + </technology_factor> + </mode_0> + </parameters> + </mass_mode> <profiles description="tail profile for both inner and outer section"> <profile description="tail profile at section 0" ID="0"> <name description="profile name"> diff --git a/empennage_design/src/bwb/vertical_tails/bwbVerticalTailsDesignConfig.cpp b/empennage_design/src/bwb/vertical_tails/bwbVerticalTailsDesignConfig.cpp index bd940ed9..3e7a34cd 100644 --- a/empennage_design/src/bwb/vertical_tails/bwbVerticalTailsDesignConfig.cpp +++ b/empennage_design/src/bwb/vertical_tails/bwbVerticalTailsDesignConfig.cpp @@ -29,13 +29,11 @@ namespace low { VerticalTailsConfig::VerticalTailsConfig() : design_mode(EndnodeReadOnly<std::string>("module_configuration_file/program_settings/modes/design_mode")), mass_mode(EndnodeReadOnly<std::string>("module_configuration_file/program_settings/modes/mass_mode/method")), - mass_mode_flops_technology_factor(EndnodeReadOnly<double>("module_configuration_file/program_settings/modes/mass_mode/parameters/mode_0/technology_factor")), common_airfoil_data_path(EndnodeReadOnly<std::string>("module_configuration_file/program_settings/common_airfoil_data_path")) {} void VerticalTailsConfig::read(const node& xml) { design_mode.read(xml); mass_mode.read(xml); - mass_mode_flops_technology_factor.read(xml); common_airfoil_data_path.read(xml); /* List all tail elements */ diff --git a/empennage_design/src/bwb/vertical_tails/bwbVerticalTailsDesignConfig.h b/empennage_design/src/bwb/vertical_tails/bwbVerticalTailsDesignConfig.h index 0a3c44fe..8d366dce 100644 --- a/empennage_design/src/bwb/vertical_tails/bwbVerticalTailsDesignConfig.h +++ b/empennage_design/src/bwb/vertical_tails/bwbVerticalTailsDesignConfig.h @@ -42,7 +42,6 @@ class VerticalTailsConfig { EndnodeReadOnly<std::string> common_airfoil_data_path; EndnodeReadOnly<std::string> design_mode; EndnodeReadOnly<std::string> mass_mode; - EndnodeReadOnly<double> mass_mode_flops_technology_factor; std::vector<TailElement> vertical_tails; }; diff --git a/empennage_design/src/bwb/vertical_tails/low/lowBwbVerticalTailsDesign.cpp b/empennage_design/src/bwb/vertical_tails/low/lowBwbVerticalTailsDesign.cpp index f42e6bc5..2c377d74 100644 --- a/empennage_design/src/bwb/vertical_tails/low/lowBwbVerticalTailsDesign.cpp +++ b/empennage_design/src/bwb/vertical_tails/low/lowBwbVerticalTailsDesign.cpp @@ -275,7 +275,7 @@ void VerticalTails::flops_mass() { MassPropertiesIO(std::format("component_design/empennage/specific/geometry/aerodynamic_surface@{}/", id), std::format("vertical_tail_{}", id))); data->tails_mass.back().data["mass"] = - flops::vertical_stabilizer_mass(config->mass_mode_flops_technology_factor.value(), 1, geom2::measure::reference_area(data->tails[id]), + flops::vertical_stabilizer_mass(config->vertical_tails[id].mass_mode_flops_technology_factor.value(), 1, geom2::measure::reference_area(data->tails[id]), geom2::measure::taper_ratio(data->tails[id]), maximum_takeoff_mass); geom2::Point_3 cg = geom2::measure::centroid(data->tails[id]); diff --git a/empennage_design/src/lib/io_methods/io.h b/empennage_design/src/lib/io_methods/io.h index 420c146f..dc635a18 100644 --- a/empennage_design/src/lib/io_methods/io.h +++ b/empennage_design/src/lib/io_methods/io.h @@ -102,7 +102,8 @@ class TailElement { factor_taper_ratio(EndnodeReadOnly<double>(origin + "parameter/factor_taper_ratio")), delta_sweep(EndnodeReadOnly<double>(origin + "parameter/delta_sweep")), inner_profile(EndnodeReadOnly<std::string>(origin + "profiles/profile@0/name")), - outer_profile(EndnodeReadOnly<std::string>(origin + "profiles/profile@1/name")) {} + outer_profile(EndnodeReadOnly<std::string>(origin + "profiles/profile@1/name")), + mass_mode_flops_technology_factor(EndnodeReadOnly<double>(origin + "mass_mode/parameters/mode_0/technology_factor")) {} ~TailElement() = default; const std::string origin; @@ -116,6 +117,7 @@ class TailElement { EndnodeReadOnly<double> delta_sweep; EndnodeReadOnly<std::string> inner_profile; EndnodeReadOnly<std::string> outer_profile; + EndnodeReadOnly<double> mass_mode_flops_technology_factor; std::vector<Spar> spars; std::vector<ControlDevice> control_devices; @@ -131,6 +133,7 @@ class TailElement { delta_sweep.read(xml); inner_profile.read(xml); outer_profile.read(xml); + mass_mode_flops_technology_factor.read(xml); size_t spars_available = xml.getVector(origin + "spars/spar", 1).size(); for (size_t i = 0; i < spars_available; ++i) { diff --git a/empennage_design/src/taw/conventional/conventionalEmpennageDesignConfig.cpp b/empennage_design/src/taw/conventional/conventionalEmpennageDesignConfig.cpp index d659ebb6..9eafe8cf 100644 --- a/empennage_design/src/taw/conventional/conventionalEmpennageDesignConfig.cpp +++ b/empennage_design/src/taw/conventional/conventionalEmpennageDesignConfig.cpp @@ -28,7 +28,6 @@ namespace low { ConventionalConfig::ConventionalConfig() : design_mode(EndnodeReadOnly<std::string>("module_configuration_file/program_settings/modes/design_mode")), mass_mode(EndnodeReadOnly<std::string>("module_configuration_file/program_settings/modes/mass_mode/method")), - mass_mode_flops_technology_factor(EndnodeReadOnly<double>("module_configuration_file/program_settings/modes/mass_mode/parameters/mode_0/technology_factor")), vertical_stabilizer(TailElement( "module_configuration_file/program_settings/tube_and_wing/low_fidelity/conventional/tail_element@0/")), horizontal_stabilizer(TailElement( @@ -38,7 +37,6 @@ ConventionalConfig::ConventionalConfig() void ConventionalConfig::read(const node& xml) { design_mode.read(xml); mass_mode.read(xml); - mass_mode_flops_technology_factor.read(xml); common_airfoil_data_path.read(xml); vertical_stabilizer.read(xml); horizontal_stabilizer.read(xml); diff --git a/empennage_design/src/taw/conventional/conventionalEmpennageDesignConfig.h b/empennage_design/src/taw/conventional/conventionalEmpennageDesignConfig.h index e79d36d0..3c8d0d4b 100644 --- a/empennage_design/src/taw/conventional/conventionalEmpennageDesignConfig.h +++ b/empennage_design/src/taw/conventional/conventionalEmpennageDesignConfig.h @@ -39,7 +39,6 @@ class ConventionalConfig { EndnodeReadOnly<std::string> common_airfoil_data_path; EndnodeReadOnly<std::string> design_mode; EndnodeReadOnly<std::string> mass_mode; - EndnodeReadOnly<double> mass_mode_flops_technology_factor; TailElement vertical_stabilizer; TailElement horizontal_stabilizer; }; diff --git a/empennage_design/src/taw/conventional/low/lowConventionalEmpennageDesign.cpp b/empennage_design/src/taw/conventional/low/lowConventionalEmpennageDesign.cpp index c4a031e0..d36940ae 100644 --- a/empennage_design/src/taw/conventional/low/lowConventionalEmpennageDesign.cpp +++ b/empennage_design/src/taw/conventional/low/lowConventionalEmpennageDesign.cpp @@ -405,7 +405,7 @@ void Conventional::flops_mass() { const double maximum_takeoff_mass = data->maximum_takeoff_mass.value(); data->vertical_stabilizer_mass.data["mass"] = - flops::vertical_stabilizer_mass(config->mass_mode_flops_technology_factor.value(), 1, geom2::measure::reference_area(data->vertical_stabilizer), + flops::vertical_stabilizer_mass(config->vertical_stabilizer.mass_mode_flops_technology_factor.value(), 1, geom2::measure::reference_area(data->vertical_stabilizer), geom2::measure::taper_ratio(data->vertical_stabilizer), maximum_takeoff_mass); myRuntimeInfo->out << std::format("Vertical stabilizer mass ... {}", data->vertical_stabilizer_mass.data["mass"].value()) @@ -423,7 +423,7 @@ void Conventional::flops_mass() { /* Horizontal stabilizer mass and cog */ data->horizontal_stabilizer_mass.data["mass"] = - flops::horizontal_stabilizer_mass(config->mass_mode_flops_technology_factor.value(), geom2::measure::reference_area(data->horizontal_stabilizer), + flops::horizontal_stabilizer_mass(config->horizontal_stabilizer.mass_mode_flops_technology_factor.value(), geom2::measure::reference_area(data->horizontal_stabilizer), geom2::measure::taper_ratio(data->horizontal_stabilizer), maximum_takeoff_mass); myRuntimeInfo->out << std::format("Horizontal stabilizer mass ... {:.2f}", data->horizontal_stabilizer_mass.data["mass"].value()) diff --git a/empennage_design/src/taw/t_tail/low/low_t_tail_empennage_design.cpp b/empennage_design/src/taw/t_tail/low/low_t_tail_empennage_design.cpp index 10664758..52eb4c16 100755 --- a/empennage_design/src/taw/t_tail/low/low_t_tail_empennage_design.cpp +++ b/empennage_design/src/taw/t_tail/low/low_t_tail_empennage_design.cpp @@ -402,7 +402,7 @@ void T_Tail::flops_mass() { const double maximum_takeoff_mass = data->maximum_takeoff_mass.value(); data->vertical_stabilizer_mass.data["mass"] = - flops::vertical_stabilizer_mass(config->mass_mode_flops_technology_factor.value(), 1, geom2::measure::reference_area(data->vertical_stabilizer), + flops::vertical_stabilizer_mass(config->vertical_stabilizer.mass_mode_flops_technology_factor.value(), 1, geom2::measure::reference_area(data->vertical_stabilizer), geom2::measure::taper_ratio(data->vertical_stabilizer), maximum_takeoff_mass); myRuntimeInfo->out << std::format("Vertical stabilizer mass ... {}", data->vertical_stabilizer_mass.data["mass"].value()) @@ -420,7 +420,7 @@ void T_Tail::flops_mass() { /* Horizontal stabilizer mass and cog */ data->horizontal_stabilizer_mass.data["mass"] = - flops::horizontal_stabilizer_mass(config->mass_mode_flops_technology_factor.value(), geom2::measure::reference_area(data->horizontal_stabilizer), + flops::horizontal_stabilizer_mass(config->horizontal_stabilizer.mass_mode_flops_technology_factor.value(), geom2::measure::reference_area(data->horizontal_stabilizer), geom2::measure::taper_ratio(data->horizontal_stabilizer), maximum_takeoff_mass); myRuntimeInfo->out << std::format("Horizontal stabilizer mass ... {:.2f}", data->horizontal_stabilizer_mass.data["mass"].value()) diff --git a/empennage_design/src/taw/t_tail/t_tail_empennage_design_config.cpp b/empennage_design/src/taw/t_tail/t_tail_empennage_design_config.cpp index 1e1255d8..1aa82274 100755 --- a/empennage_design/src/taw/t_tail/t_tail_empennage_design_config.cpp +++ b/empennage_design/src/taw/t_tail/t_tail_empennage_design_config.cpp @@ -28,7 +28,6 @@ namespace low { T_Tail_Config::T_Tail_Config() : design_mode(EndnodeReadOnly<std::string>("module_configuration_file/program_settings/modes/design_mode")), mass_mode(EndnodeReadOnly<std::string>("module_configuration_file/program_settings/modes/mass_mode")), - mass_mode_flops_technology_factor(EndnodeReadOnly<double>("module_configuration_file/program_settings/modes/mass_mode/parameters/mode_0/technology_factor")), vertical_stabilizer(TailElement( "module_configuration_file/program_settings/tube_and_wing/low_fidelity/t_tail/tail_element@0/")), horizontal_stabilizer(TailElement( @@ -38,7 +37,6 @@ T_Tail_Config::T_Tail_Config() void T_Tail_Config::read(const node& xml) { design_mode.read(xml); mass_mode.read(xml); - mass_mode_flops_technology_factor.read(xml); common_airfoil_data_path.read(xml); vertical_stabilizer.read(xml); horizontal_stabilizer.read(xml); diff --git a/empennage_design/src/taw/t_tail/t_tail_empennage_design_config.h b/empennage_design/src/taw/t_tail/t_tail_empennage_design_config.h index a09da17e..43b77e88 100755 --- a/empennage_design/src/taw/t_tail/t_tail_empennage_design_config.h +++ b/empennage_design/src/taw/t_tail/t_tail_empennage_design_config.h @@ -39,7 +39,6 @@ class T_Tail_Config { EndnodeReadOnly<std::string> common_airfoil_data_path; EndnodeReadOnly<std::string> design_mode; EndnodeReadOnly<std::string> mass_mode; - EndnodeReadOnly<double> mass_mode_flops_technology_factor; TailElement vertical_stabilizer; TailElement horizontal_stabilizer; }; -- GitLab