12#ifndef __EIGENPCGSOLVER_H
13#define __EIGENPCGSOLVER_H
21template <
typename Eigen_ArrayType = Eigen::VectorXd,
22 typename Eigen_SparseArrayType = Eigen::SparseMatrix<double>,
23 typename Eigen_SolverType = Eigen::ConjugateGradient<Eigen_SparseArrayType, Eigen::Lower, Eigen::DiagonalPreconditioner<double>>>
28 const IArray *_rightHandSide;
35 _rightHandSide =
nullptr;
40 _rightHandSide =
nullptr;
46 void Initialize(
const IArray &rightHandSide, IArray &solution,
const Configuration &config = {100, 1e-6});
48 ILinearSolver::SolutionInfo
Solve()
const;
50 void Initialize(
const ISparseArray &matrix,
const Configuration &config = {100, 1e-6});
51 ILinearSolver::SolutionInfo
Solve(
const IArray &rightHandSide, IArray &solution)
const;
Eigen column vector.
Definition Eigen_Array.hpp:23
Eigen PCG Linear solver.
Definition Eigen_PCGSolver.hpp:25
~Eigen_PCGSolver()
Definition Eigen_PCGSolver.hpp:38
void Initialize(const ISparseArray &matrix, const IArray &rightHandSide, IArray &solution, const Configuration &config={100, 1e-6})
Initialize the linear solver Ax = b.
Definition Eigen_PCGSolver.cpp:28
Eigen_PCGSolver()
Definition Eigen_PCGSolver.hpp:33
ILinearSolver::SolutionInfo Solve() const
Compute the solution.
Definition Eigen_PCGSolver.cpp:50
Interface used for column double Array.
Definition IArray.hpp:23
Interface used for algebra linear solvers.
Definition ILinearSolver.hpp:22
Interface used for sparse Array of double.
Definition ISparseArray.hpp:25
Definition Eigen_Array.cpp:22
Definition ILinearSolver.hpp:25