Ginkgo Generated from branch based on master. Ginkgo version 1.8.0
A numerical linear algebra library targeting many-core architectures
Loading...
Searching...
No Matches
batch_bicgstab.hpp
1// SPDX-FileCopyrightText: 2017 - 2024 The Ginkgo authors
2//
3// SPDX-License-Identifier: BSD-3-Clause
4
5#ifndef GKO_PUBLIC_CORE_SOLVER_BATCH_BICGSTAB_HPP_
6#define GKO_PUBLIC_CORE_SOLVER_BATCH_BICGSTAB_HPP_
7
8
9#include <vector>
10
11
12#include <ginkgo/core/base/batch_lin_op.hpp>
13#include <ginkgo/core/base/batch_multi_vector.hpp>
14#include <ginkgo/core/base/exception_helpers.hpp>
15#include <ginkgo/core/base/lin_op.hpp>
16#include <ginkgo/core/base/types.hpp>
17#include <ginkgo/core/solver/batch_solver_base.hpp>
18#include <ginkgo/core/stop/batch_stop_enum.hpp>
19
20
21namespace gko {
22namespace batch {
23namespace solver {
24
25
50template <typename ValueType = default_precision>
51class Bicgstab final
52 : public EnableBatchSolver<Bicgstab<ValueType>, ValueType> {
53 friend class EnableBatchLinOp<Bicgstab>;
55
56public:
57 using value_type = ValueType;
58 using real_type = gko::remove_complex<ValueType>;
59
60 class Factory;
61
67
68private:
69 explicit Bicgstab(std::shared_ptr<const Executor> exec);
70
71 explicit Bicgstab(const Factory* factory,
72 std::shared_ptr<const BatchLinOp> system_matrix);
73
74 void solver_apply(
76 log::detail::log_data<real_type>* log_data) const override;
77};
78
79
80} // namespace solver
81} // namespace batch
82} // namespace gko
83
84
85#endif // GKO_PUBLIC_CORE_SOLVER_BATCH_BICGSTAB_HPP_
This mixin inherits from (a subclass of) PolymorphicObject and provides a base implementation of a ne...
Definition polymorphic_object.hpp:663
Definition batch_lin_op.hpp:60
The EnableBatchLinOp mixin can be used to provide sensible default implementations of the majority of...
Definition batch_lin_op.hpp:253
MultiVector stores multiple vectors in a batched fashion and is useful for batched operations.
Definition logger.hpp:41
Definition batch_bicgstab.hpp:65
BiCGSTAB or the Bi-Conjugate Gradient-Stabilized is a Krylov subspace solver.
Definition batch_bicgstab.hpp:52
This mixin provides apply and common iterative solver functionality to all the batched solvers.
Definition batch_solver_base.hpp:206
#define GKO_ENABLE_BATCH_LIN_OP_FACTORY(_batch_lin_op, _parameters_name, _factory_name)
This macro will generate a default implementation of a BatchLinOpFactory for the BatchLinOp subclass ...
Definition batch_lin_op.hpp:359
#define GKO_ENABLE_BUILD_METHOD(_factory_name)
Defines a build method for the factory, simplifying its construction by removing the repetitive typin...
Definition abstract_factory.hpp:394
The Ginkgo namespace.
Definition abstract_factory.hpp:20
typename detail::remove_complex_s< T >::type remove_complex
Obtain the type which removed the complex of complex/scalar type or the template parameter of class b...
Definition math.hpp:326
Definition batch_bicgstab.hpp:64