33 #ifndef GKO_CORE_SOLVER_IR_HPP_ 34 #define GKO_CORE_SOLVER_IR_HPP_ 40 #include <ginkgo/core/base/lin_op.hpp> 41 #include <ginkgo/core/base/types.hpp> 42 #include <ginkgo/core/matrix/identity.hpp> 43 #include <ginkgo/core/stop/combined.hpp> 44 #include <ginkgo/core/stop/criterion.hpp> 92 template <
typename ValueType = default_precision>
98 using value_type = ValueType;
107 return system_matrix_;
116 std::shared_ptr<const LinOp>
get_solver()
const {
return solver_; }
123 std::vector<std::shared_ptr<const stop::CriterionFactory>>
136 void apply_impl(
const LinOp *b, LinOp *x)
const override;
138 void apply_impl(
const LinOp *alpha,
const LinOp *b,
const LinOp *beta,
139 LinOp *x)
const override;
141 explicit Ir(std::shared_ptr<const Executor> exec)
145 explicit Ir(
const Factory *factory,
146 std::shared_ptr<const LinOp> system_matrix)
150 system_matrix_{std::move(system_matrix)}
153 solver_ = parameters_.
solver->generate(system_matrix_);
158 stop_criterion_factory_ =
163 std::shared_ptr<const LinOp> system_matrix_{};
164 std::shared_ptr<const LinOp> solver_{};
165 std::shared_ptr<const stop::CriterionFactory> stop_criterion_factory_{};
173 #endif // GKO_CORE_SOLVER_IR_HPP_ std::shared_ptr< const LinOp > get_system_matrix() const
Returns the system operator (matrix) of the linear system.
Definition: ir.hpp:105
const parameters_type & get_parameters() const noexcept
Returns the parameters of the factory.
Definition: abstract_factory.hpp:175
This mixin inherits from (a subclass of) PolymorphicObject and provides a base implementation of a ne...
Definition: polymorphic_object.hpp:505
#define GKO_FACTORY_PARAMETER(_name,...)
Creates a factory parameter in the factory parameters structure.
Definition: lin_op.hpp:751
Iterative refinement (IR) is an iterative method that uses another coarse method to approximate the e...
Definition: ir.hpp:93
The Ginkgo namespace.
Definition: abstract_factory.hpp:45
The EnableLinOp mixin can be used to provide sensible default implementations of the majority of the ...
Definition: lin_op.hpp:509
const dim< 2 > & get_size() const noexcept
Returns the size of the operator.
Definition: lin_op.hpp:221
std::shared_ptr< const LinOpFactory > solver
Inner solver factory.
Definition: ir.hpp:130
std::shared_ptr< const LinOp > get_solver() const
Returns the solver operator used as the inner solver.
Definition: ir.hpp:116
std::shared_ptr< const Executor > get_executor() const noexcept
Returns the Executor of the object.
Definition: polymorphic_object.hpp:201
#define GKO_CREATE_FACTORY_PARAMETERS(_parameters_name, _factory_name)
This Macro will generate a new type containing the parameters for the factory _factory_name.
Definition: lin_op.hpp:611
This class is a utility which efficiently implements the identity matrix (a linear operator which map...
Definition: identity.hpp:63
std::shared_ptr< const CriterionFactory > combine(FactoryContainer &&factories)
Combines multiple criterion factories into a single combined criterion factory.
Definition: combined.hpp:116
std::vector< std::shared_ptr< const stop::CriterionFactory > > criteria
Criterion factories.
Definition: ir.hpp:124
#define GKO_ENABLE_LIN_OP_FACTORY(_lin_op, _parameters_name, _factory_name)
This macro will generate a default implementation of a LinOpFactory for the LinOp subclass it is defi...
Definition: lin_op.hpp:691
#define GKO_ENABLE_BUILD_METHOD(_factory_name)
Defines a build method for the factory, simplifying its construction by removing the repetitive typin...
Definition: lin_op.hpp:730
constexpr dim< 2, DimensionType > transpose(const dim< 2, DimensionType > &dimensions) noexcept
Returns a dim<2> object with its dimensions swapped.
Definition: dim.hpp:234