diff --git a/empennage_design/src/empennageDesign.cpp b/empennage_design/src/empennageDesign.cpp index e005bb46023a3d1c1bb5f9de7b436cae06fef270..35267ce0b3fd8659ba8f3b3bf6f8e6fe17705efd 100644 --- a/empennage_design/src/empennageDesign.cpp +++ b/empennage_design/src/empennageDesign.cpp @@ -27,28 +27,14 @@ EmpennageDesign::EmpennageDesign(const int argc, char *argv[], const std::string std::string configuration = rtIO_->aircraft_configuration_type(); std::string usedtype = EndnodeReadOnly<std::string>("requirements_and_specifications/design_specification/configuration/empennage_definition/empennage_type").read(rtIO_->acxml).value(); std::string fidelity = EndnodeReadOnly<std::string>("program_settings/fidelity_selection").read(rtIO_->moduleConfig).value(); - route = {configuration, usedtype, fidelity}; - strategy.setStrategy(design_routing(route)(rtIO_)); -} -strategyaccess EmpennageDesign::design_routing(const std::vector<std::string> &route) { - /* Routing table */ - std::map<std::string, std::map<std::string, std::map<std::string, strategyaccess>>> table = { - {"tube_and_wing", - std::map<std::string, std::map<std::string, strategyaccess>>{ - {"conventional", - std::map<std::string, strategyaccess>{ - {"low", - [](const std::shared_ptr<RuntimeIO> &arg) { return std::make_unique<taw::low::Conventional>(arg); }}, - }}, - }}, - {"blended_wing_body", - std::map<std::string, std::map<std::string, strategyaccess>>{ - {"vertical_tails", - std::map<std::string, strategyaccess>{ - {"low", - [](const std::shared_ptr<RuntimeIO> &arg) { return std::make_unique<bwb::low::VerticalTails>(arg); }}, - }}}}}; - - return table[route.at(0)][route.at(1)][route.at(2)]; + /* Register existing strategies */ + /* tube and wing strategies */ + strategy.registerStrategy<taw::low::Conventional>({"tube_and_wing", "conventional", "low"}); + + /* blended wing body strategies*/ + strategy.registerStrategy<bwb::low::VerticalTails>({"blended_wing_body", "vertical_tails", "low"}); + + /* Set desired strategy */ + strategy.setStrategy({configuration, usedtype, fidelity}, rtIO_); } diff --git a/empennage_design/src/empennageDesign.h b/empennage_design/src/empennageDesign.h index 3660ac27439f10192978b6d68073ed8a80189e4b..edac1f933a9f783e94e3b00918b99b5770d70eb1 100644 --- a/empennage_design/src/empennageDesign.h +++ b/empennage_design/src/empennageDesign.h @@ -30,8 +30,6 @@ class EmpennageDesign : public Module { aixml::saveDocument(rtIO_->acxml); }; - std::vector<std::string> route; - strategyaccess design_routing(const std::vector<std::string> &route); StrategySelector strategy; }; diff --git a/wing_design/src/taw/cantilever/cantileverWingDesignTaw.cpp b/wing_design/src/taw/cantilever/cantileverWingDesignTaw.cpp index db941234126d47fcf4e66ee088eef18d3fc77fa2..24fca9910801367896f1abaf08f915107b9ab5a9 100644 --- a/wing_design/src/taw/cantilever/cantileverWingDesignTaw.cpp +++ b/wing_design/src/taw/cantilever/cantileverWingDesignTaw.cpp @@ -551,10 +551,6 @@ void Wing::flops_mass() { return *std::max_element(t_to_c.begin(), t_to_c.end()); }; - myRuntimeInfo->warn << "Following values are Hard coded!" << std::endl; - myRuntimeInfo->warn << "================================" << std::endl; - myRuntimeInfo->warn << "\twing_mounted_engines" << std::endl; - myRuntimeInfo->warn << "================================" << std::endl; const double to_foot = convertUnit(METER, FOOT, 1.0); const double to_meter = 1. / to_foot; const double taper_ratio = geom2::measure::taper_ratio(data->wing); diff --git a/wing_design/src/wingDesign.cpp b/wing_design/src/wingDesign.cpp index d5565164bac53c9799dfdb4a379e1a2dfe272025..873df672542b2006dfbbbfda006c84f45025fc9a 100644 --- a/wing_design/src/wingDesign.cpp +++ b/wing_design/src/wingDesign.cpp @@ -25,20 +25,14 @@ WingDesign::WingDesign(const int argc, char *argv[], const std::string &toolName : Module(argc, argv, toolName, toolVersion) { std::string configuration = rtIO_->aircraft_configuration_type(); std::string wing_type = "cantilever"; - route = {configuration, wing_type}; - strategy.setStrategy(design_route(route)(rtIO_)); -} + + /* Register existing strategies */ + /* tube and wing strategies */ + strategy.registerStrategy<taw::cantilever::Wing>({"tube_and_wing", "cantilever"}); -strategyaccess WingDesign::design_route(const std::vector<std::string> &route) { - std::map<std::string, std::map<std::string, strategyaccess>> table = { - {"tube_and_wing", - std::map<std::string, strategyaccess>{ - {"cantilever", - [](const std::shared_ptr<RuntimeIO> &arg) { return std::make_unique<taw::cantilever::Wing>(arg); }}, - }}, - {"blended_wing_body", - std::map<std::string, strategyaccess>{ - {"cantilever", [](const std::shared_ptr<RuntimeIO> &arg) { return std::make_unique<bwb::low::Wing>(arg); }}, - }}}; - return table[route.at(0)][route.at(1)]; + /* blended wing body strategies */ + strategy.registerStrategy<bwb::low::Wing>({"blended_wing_body", "cantilever"}); + + /* Set desired strategy */ + strategy.setStrategy({configuration, wing_type}, rtIO_); } diff --git a/wing_design/src/wingDesign.h b/wing_design/src/wingDesign.h index ee174d54777bd22aa9efcb2b047d9483c654e211..fdd87ebc4466dff3c10e6c546fde04c2bdd2c829 100644 --- a/wing_design/src/wingDesign.h +++ b/wing_design/src/wingDesign.h @@ -30,8 +30,7 @@ class WingDesign : public Module { rtIO_->saveAndCloseAcXML(); rtIO_->closeModuleConfig(); } - std::vector<std::string> route; - strategyaccess design_route(const std::vector<std::string> &route); + StrategySelector strategy; };