12#ifndef __EIGENBiCGSTABSOLVER_H
13#define __EIGENBiCGSTABSOLVER_H
21template <
typename Eigen_ArrayType = Eigen::VectorXd,
22 typename Eigen_SparseArrayType = Eigen::SparseMatrix<double>,
23 typename Eigen_SolverType = Eigen::BiCGSTAB<Eigen_SparseArrayType, Eigen::DiagonalPreconditioner<double>>>
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 BiCGSTAB Linear solver.
Definition Eigen_BiCGSTABSolver.hpp:25
IArray * _solution
The solution of the linear syste.
Definition Eigen_BiCGSTABSolver.hpp:29
void Initialize(const ISparseArray &matrix, const IArray &rightHandSide, IArray &solution, const Configuration &config={100, 1e-6})
Initialize the linear solver Ax = b.
Definition Eigen_BiCGSTABSolver.cpp:28
ILinearSolver::SolutionInfo Solve() const
Compute the solution.
Definition Eigen_BiCGSTABSolver.cpp:50
Eigen_BiCGSTABSolver()
Definition Eigen_BiCGSTABSolver.hpp:33
Eigen_SolverType linearSolver
The solver.
Definition Eigen_BiCGSTABSolver.hpp:27
Configuration _config
Definition Eigen_BiCGSTABSolver.hpp:30
~Eigen_BiCGSTABSolver()
Definition Eigen_BiCGSTABSolver.hpp:38
const IArray * _rightHandSide
The rightHandSide of the linear syste.
Definition Eigen_BiCGSTABSolver.hpp:28
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