From ad4316eb66b591da560c8c4607049873b05726b8 Mon Sep 17 00:00:00 2001 From: "Yu-Hsiang M. Tsai" Date: Wed, 15 May 2024 00:39:53 +0200 Subject: [PATCH] remove fixed_coarsening Co-authored-by: Marcel Koch --- core/config/multigrid_config.cpp | 6 ++--- core/multigrid/fixed_coarsening.cpp | 15 ------------ core/solver/multigrid.cpp | 24 ++----------------- .../core/multigrid/fixed_coarsening.hpp | 19 --------------- include/ginkgo/core/multigrid/pgm.hpp | 6 +++-- include/ginkgo/core/solver/multigrid.hpp | 7 +++--- 6 files changed, 13 insertions(+), 64 deletions(-) diff --git a/core/config/multigrid_config.cpp b/core/config/multigrid_config.cpp index 03d69e4d76a..8c0edb4704c 100644 --- a/core/config/multigrid_config.cpp +++ b/core/config/multigrid_config.cpp @@ -2,16 +2,17 @@ // // SPDX-License-Identifier: BSD-3-Clause +#include + + #include #include #include -#include #include #include "core/config/config_helper.hpp" #include "core/config/dispatch.hpp" -#include "core/config/parse_marco.hpp" #include "core/config/type_descriptor_helper.hpp" @@ -20,7 +21,6 @@ namespace config { PARSE_VALUE_AND_INDEX_TYPE(Pgm, gko::multigrid::Pgm); -PARSE_VALUE_AND_INDEX_TYPE(FixedCoarsening, gko::multigrid::FixedCoarsening); } // namespace config diff --git a/core/multigrid/fixed_coarsening.cpp b/core/multigrid/fixed_coarsening.cpp index d61961ac295..ee50a714996 100644 --- a/core/multigrid/fixed_coarsening.cpp +++ b/core/multigrid/fixed_coarsening.cpp @@ -38,21 +38,6 @@ GKO_REGISTER_OPERATION(fill_seq_array, components::fill_seq_array); } // namespace fixed_coarsening -template -typename FixedCoarsening::parameters_type -FixedCoarsening::parse( - const config::pnode& config, const config::registry& context, - const config::type_descriptor& td_for_child) -{ - auto factory = FixedCoarsening::build(); - // TODO: ARRAY - if (auto& obj = config.get("skip_sorting")) { - factory.with_skip_sorting(gko::config::get_value(obj)); - } - return factory; -} - - template void FixedCoarsening::generate() { diff --git a/core/solver/multigrid.cpp b/core/solver/multigrid.cpp index 0bd351dccc8..5d25f69cf1b 100644 --- a/core/solver/multigrid.cpp +++ b/core/solver/multigrid.cpp @@ -566,19 +566,6 @@ void MultigridState::run_cycle(multigrid::cycle cycle, size_type level, } // namespace multigrid -std::function get_selector( - std::string key) -{ - static std::map> - selector_map{ - {{"first_for_top", [](const size_type level, const LinOp*) { - return (level == 0) ? 0 : 1; - }}}}; - return selector_map.at(key); -} - - typename Multigrid::parameters_type Multigrid::parse( const config::pnode& config, const config::registry& context, const config::type_descriptor& td_for_child) @@ -595,9 +582,6 @@ typename Multigrid::parameters_type Multigrid::parse( gko::config::get_factory_vector( obj, context, td_for_child)); } - if (auto& obj = config.get("level_selector")) { - factory.with_level_selector(get_selector(obj.get_string())); - } if (auto& obj = config.get("pre_smoother")) { factory.with_pre_smoother( gko::config::get_factory_vector(obj, context, @@ -627,7 +611,7 @@ typename Multigrid::parameters_type Multigrid::parse( } else if (str == "standalone") { factory.with_mid_case(multigrid::mid_smooth_type::standalone); } else { - GKO_INVALID_STATE("Not valid mid_smooth_type value"); + GKO_INVALID_CONFIG_VALUE("mid_smooth_type", str); } } if (auto& obj = config.get("max_levels")) { @@ -641,10 +625,6 @@ typename Multigrid::parameters_type Multigrid::parse( gko::config::get_factory_vector(obj, context, td_for_child)); } - if (auto& obj = config.get("solver_selector")) { - auto str = obj.get_string(); - factory.with_solver_selector(get_selector(str)); - } if (auto& obj = config.get("cycle")) { auto str = obj.get_string(); if (str == "v") { @@ -654,7 +634,7 @@ typename Multigrid::parameters_type Multigrid::parse( } else if (str == "f") { factory.with_cycle(multigrid::cycle::f); } else { - GKO_INVALID_STATE("Not valid cycle value"); + GKO_INVALID_CONFIG_VALUE("cycle", str); } } if (auto& obj = config.get("kcycle_base")) { diff --git a/include/ginkgo/core/multigrid/fixed_coarsening.hpp b/include/ginkgo/core/multigrid/fixed_coarsening.hpp index 3b19072f62c..2ab3211b609 100644 --- a/include/ginkgo/core/multigrid/fixed_coarsening.hpp +++ b/include/ginkgo/core/multigrid/fixed_coarsening.hpp @@ -13,8 +13,6 @@ #include #include #include -#include -#include #include #include #include @@ -86,23 +84,6 @@ class FixedCoarsening GKO_ENABLE_LIN_OP_FACTORY(FixedCoarsening, parameters, Factory); GKO_ENABLE_BUILD_METHOD(Factory); - /** - * Create the parameters from the property_tree. - * Because this is directly tied to the specific type. The value/index type - * settings are ignored and type_descriptor is for children objects. - * - * @param config the property tree for setting - * @param context the registry - * @param td_for_child the type descriptor for children objects. The - * default will directly from the specific type. - * - * @return parameters - */ - static parameters_type parse( - const config::pnode& config, const config::registry& context, - const config::type_descriptor& td_for_child = - config::make_type_descriptor()); - protected: void apply_impl(const LinOp* b, LinOp* x) const override { diff --git a/include/ginkgo/core/multigrid/pgm.hpp b/include/ginkgo/core/multigrid/pgm.hpp index c233e9806f0..576c644ed00 100644 --- a/include/ginkgo/core/multigrid/pgm.hpp +++ b/include/ginkgo/core/multigrid/pgm.hpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -134,12 +135,13 @@ class Pgm : public EnableLinOp>, /** * Create the parameters from the property_tree. * Because this is directly tied to the specific type. The value/index type - * settings are ignored and type_descriptor is for children objects. + * settings within config are ignored and type_descriptor is only used + * for children objects. * * @param config the property tree for setting * @param context the registry * @param td_for_child the type descriptor for children objects. The - * default will directly from the specific type. + * default uses the value/index type of this class. * * @return parameters */ diff --git a/include/ginkgo/core/solver/multigrid.hpp b/include/ginkgo/core/solver/multigrid.hpp index ff40a2696bf..b8c5e5e51f2 100644 --- a/include/ginkgo/core/solver/multigrid.hpp +++ b/include/ginkgo/core/solver/multigrid.hpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -384,12 +385,12 @@ class Multigrid : public EnableLinOp, /** * Create the parameters from the property_tree. * Because this is directly tied to the specific type. The value/index type - * settings are ignored and type_descriptor is for children objects. + * settings within config are ignored and type_descriptor is only used + * for children objects. * * @param config the property tree for setting * @param context the registry - * @param td_for_child the type descriptor for children objects. The - * default will directly from the specific type. + * @param td_for_child the type descriptor for children objects * * @return parameters */