diff --git a/empennage_design/empennage_design_conf.xml b/empennage_design/empennage_design_conf.xml index 1ca40940960e4e0c351b7eeceaa268245b6070d4..a651f00fa9c200a040f3e0fc867b2a119b03a95e 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 bd940ed974d49a52ef7cea32750196917899d2a6..3e7a34cd828c10eb585715dbcfebd92c131afd55 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 0a3c44fe405e5dfb7438d63739b75a467b133bb3..8d366dce514786a09f9dacd2c96d84fb3d5c18e9 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 f42e6bc560496303cef84411761f85ad65157f8e..2c377d74752c656a8fbe333c46ea5ad7e5f90ce4 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 420c146f6a6b6ee4e09eae9fb7bb98e5a0b53eea..dc635a1882ab41d1864631057e7b5350b10d294e 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 d659ebb6e31f4ddbd9fc9d5812a33bfdac5c2612..9eafe8cf5beb2ffd7680ac003bec8c9e3feaa001 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 e79d36d0fc2e653810371ba7d99594551f5c4ba7..3c8d0d4b96de4e4c484656dc3b8012e5c0f18c89 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 c4a031e0962b2bf2e33904bd646a3a9b39db7f26..d36940aef4f89e9768f67bef4f15cb2f31505678 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 10664758599b78760551db494bb2d0413eea657a..52eb4c1637bc2f815ccd09b61ac6b77abf69770a 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 1e1255d86ca6aba379211f82da44262ae5ac6254..1aa82274958fcbd703e80c7362e0f82b6a2c4b20 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 a09da17ea182128ce11ccf04a12802cf192048a0..43b77e889ca454abd4a595beb6f72ad4402f4247 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; };