Skip to content

Commit

Permalink
use more general default selector
Browse files Browse the repository at this point in the history
  • Loading branch information
yhmtsai committed May 17, 2024
1 parent e8af940 commit d6946d4
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 13 deletions.
16 changes: 6 additions & 10 deletions core/solver/multigrid.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -880,16 +880,12 @@ Multigrid::Multigrid(const Multigrid::Factory* factory,
stop::combine(factory->get_parameters().criteria)},
parameters_{factory->get_parameters()}
{
this->validate();
if (!parameters_.level_selector) {
if (parameters_.mg_level.size() == 1) {
level_selector_ = [](const size_type, const LinOp*) {
return size_type{0};
};
} else if (parameters_.mg_level.size() > 1) {
level_selector_ = [](const size_type level, const LinOp*) {
return level;
};
}
auto num = parameters_.mg_level.size();
level_selector_ = [num](const size_type level, const LinOp*) {
return (level < num) ? level : num - 1;
};
} else {
level_selector_ = parameters_.level_selector;
}
Expand All @@ -903,7 +899,7 @@ Multigrid::Multigrid(const Multigrid::Factory* factory,
solver_selector_ = parameters_.solver_selector;
}

this->validate();

this->set_default_initial_guess(parameters_.default_initial_guess);
if (this->get_system_matrix()->get_size()[0] != 0) {
// generate on the existed matrix
Expand Down
5 changes: 2 additions & 3 deletions include/ginkgo/core/solver/multigrid.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,9 +222,8 @@ class Multigrid : public EnableLinOp<Multigrid>,
* >= 3 and the number of rows of fine matrix > 1024, or the 2-idx
* elements otherwise.
*
* default selector:
* use the first factory when mg_level size = 1
* use the level as the index when mg_level size > 1
* default selector: use the level as the index when the level <
* #mg_level and reuse the last one when the level >= #mg_level
*/
std::function<size_type(const size_type, const LinOp*)>
GKO_FACTORY_PARAMETER_SCALAR(level_selector, nullptr);
Expand Down

0 comments on commit d6946d4

Please sign in to comment.