 |
Ginkgo
Generated from pipelines/2837190956 branch based on develop. Ginkgo version 2.0.0
A numerical linear algebra library targeting many-core architectures
|
5 #ifndef GKO_PUBLIC_CORE_MULTIGRID_MULTIGRID_LEVEL_HPP_
6 #define GKO_PUBLIC_CORE_MULTIGRID_MULTIGRID_LEVEL_HPP_
12 #include <ginkgo/core/base/abstract_factory.hpp>
13 #include <ginkgo/core/base/composition.hpp>
14 #include <ginkgo/core/base/exception_helpers.hpp>
15 #include <ginkgo/core/base/lin_op.hpp>
16 #include <ginkgo/core/base/utils.hpp>
44 virtual std::shared_ptr<const LinOp>
get_fine_op()
const = 0;
58 virtual std::shared_ptr<const LinOp>
get_coarse_op()
const = 0;
79 template <
typename ValueType>
83 using value_type = ValueType;
114 void set_multigrid_level(std::shared_ptr<const LinOp> prolong_op,
115 std::shared_ptr<const LinOp> coarse_op,
116 std::shared_ptr<const LinOp> restrict_op)
119 restrict_op->get_size()[1]};
120 GKO_ASSERT_EQUAL_DIMENSIONS(fine_op_->get_size(), mg_size);
122 this->set_composition(prolong_op, coarse_op, restrict_op);
131 void set_fine_op(std::shared_ptr<const LinOp> fine_op)
133 GKO_ASSERT_EQUAL_DIMENSIONS(fine_op_->get_size(), fine_op->get_size());
137 explicit EnableMultigridLevel() {}
148 explicit EnableMultigridLevel(std::shared_ptr<const LinOp> fine_op)
153 std::shared_ptr<const LinOp> fine_op_;
161 #endif // GKO_PUBLIC_CORE_MULTIGRID_MULTIGRID_LEVEL_HPP_
The UseComposition class can be used to store the composition information in LinOp.
Definition: composition.hpp:178
std::shared_ptr< const LinOp > get_fine_op() const override
Returns the operator on fine level.
Definition: multigrid_level.hpp:85
virtual std::shared_ptr< const LinOp > get_restrict_op() const =0
Returns the restrict operator.
std::shared_ptr< const LinOp > get_prolong_op() const override
Returns the prolong operator.
Definition: multigrid_level.hpp:100
The Ginkgo namespace.
Definition: abstract_factory.hpp:19
virtual std::shared_ptr< const LinOp > get_prolong_op() const =0
Returns the prolong operator.
The EnableMultigridLevel gives the default implementation of MultigridLevel with composition and prov...
Definition: multigrid_level.hpp:80
std::shared_ptr< const LinOp > get_restrict_op() const override
Returns the restrict operator.
Definition: multigrid_level.hpp:90
This class represents two levels in a multigrid hierarchy.
Definition: multigrid_level.hpp:37
std::shared_ptr< const LinOp > get_operator_at(size_type index) const
Returns the operator at index-th position of composition.
Definition: composition.hpp:203
std::shared_ptr< const LinOp > get_coarse_op() const override
Returns the operator on coarse level.
Definition: multigrid_level.hpp:95
virtual std::shared_ptr< const LinOp > get_coarse_op() const =0
Returns the operator on coarse level.
virtual std::shared_ptr< const LinOp > get_fine_op() const =0
Returns the operator on fine level.