Namespace containing a variety of different linear solvers. More...
Namespaces | |
namespace | detail |
Classes | |
class | dense_linear_solver_tag |
Internal tag used for the specification of a dense linear solver (Gauss, single-threaded) More... | |
class | gpu_parallel_linear_solver_tag |
Internal tag used for the specification of a GPU-accelerated linear solver. More... | |
class | invalid_linear_solver_exception |
Exception for the case that an invalid solver is in use. More... | |
class | invalid_nonlinear_solver_exception |
Exception for the case that an invalid nonlinear solver is in use. More... | |
class | linear_solver_config |
A configuration class holding options for use within the different linear solvers. More... | |
struct | linear_solver_ids |
Provides IDs for the linear solvers. More... | |
struct | log_gpu_block_ilut_precond |
Logging tag for messages specific to the GPU block-ILUT preconditioner. More... | |
struct | log_linear_solver |
Logging tag for general linear solver action. More... | |
struct | log_parallel_ilut_precond |
Logging tag for messages specific to the multithreaded (CPU-based) block-ILUT preconditioner. More... | |
class | nonlinear_solver_config |
A configuration class holding options for use within the different linear solvers. More... | |
struct | nonlinear_solver_ids |
Provides IDs for the nonlinear iteration schemes. More... | |
class | parallel_linear_solver_tag |
Internal tag used for the specification of a CPU-based multi-threaded linear solver. More... | |
class | petsc_amgx_solver_tag |
class | PETSC_handler |
class | petsc_linear_solver_tag |
Internal tag used for the specification of a CPU-based PETSC solver. More... | |
class | PETSC_matrix |
Wrapper class to the PETSC matrix. More... | |
class | PETSC_vector |
Class Encapsulate The PETSc COMM WORLD -Should be singleton. More... | |
class | serial_linear_solver_tag |
Internal tag used for the specification of a single-threaded linear solver. More... | |
Functions | |
std::vector< double > | solve (viennashe::math::sparse_matrix< double > &A, std::vector< double > const &b, linear_solver_config const &config) |
Public interface for solving a system of linear equations represented using a sparse matrix. More... | |
std::vector< double > | solve (viennashe::math::dense_matrix< double > &A, std::vector< double > const &b) |
Public interface for solving a system of linear equations using a dense matrix. More... | |
template<typename NumericT , typename VectorType > | |
VectorType | solve (viennashe::math::dense_matrix< NumericT > const &A, VectorType const &b, viennashe::solvers::linear_solver_config const &config, viennashe::solvers::dense_linear_solver_tag) |
Solves the provided system using a dense Gauss solver with partial pivoting. More... | |
template<typename NumericT , typename VectorType > | |
VectorType | solve (viennashe::math::sparse_matrix< NumericT > const &A, VectorType const &b, viennashe::solvers::linear_solver_config const &config, viennashe::solvers::dense_linear_solver_tag) |
Specialization for a sparse matrix. More... | |
template<typename NumericT , typename VectorType > | |
VectorType | solve (viennashe::math::sparse_matrix< NumericT > const &A, VectorType const &b, viennashe::solvers::linear_solver_config const &config, viennashe::solvers::petsc_linear_solver_tag) |
template<typename MatrixType , typename VectorType > | |
VectorType | solve_impl (MatrixType &system_matrix, VectorType const &rhs, linear_solver_config const &config) |
Public interface for solving a system of linear equations. More... | |
template<typename CompressedMatrixType , typename VectorType > | |
VectorType | solve (CompressedMatrixType const &system_matrix, VectorType const &rhs, viennashe::solvers::linear_solver_config const &config, viennashe::solvers::parallel_linear_solver_tag) |
Solves the provided system using an iterative solver with a block preconditioner on CPU. More... | |
template<typename MatrixType , typename VectorType > | |
VectorType | solve (MatrixType const &system_matrix, VectorType const &rhs, viennashe::solvers::linear_solver_config const &config, viennashe::solvers::serial_linear_solver_tag) |
Solves the provided system using an iterative solver in a serial fashion (single-threaded execution) More... | |
Namespace containing a variety of different linear solvers.
VectorType viennashe::solvers::solve | ( | CompressedMatrixType const & | system_matrix, |
VectorType const & | rhs, | ||
viennashe::solvers::linear_solver_config const & | config, | ||
viennashe::solvers::parallel_linear_solver_tag | |||
) |
Solves the provided system using an iterative solver with a block preconditioner on CPU.
system_matrix | The system matrix |
rhs | The load vector (right hand side) |
config | The linear solver configuration object |
Definition at line 52 of file parallel_linear_solver.hpp.
VectorType viennashe::solvers::solve | ( | MatrixType const & | system_matrix, |
VectorType const & | rhs, | ||
viennashe::solvers::linear_solver_config const & | config, | ||
viennashe::solvers::serial_linear_solver_tag | |||
) |
Solves the provided system using an iterative solver in a serial fashion (single-threaded execution)
system_matrix | The system matrix |
rhs | The load vector (right hand side) |
config | The linear solver configuration object |
Definition at line 101 of file serial_linear_solver.hpp.
std::vector< double > viennashe::solvers::solve | ( | viennashe::math::dense_matrix< double > & | A, |
std::vector< double > const & | b | ||
) |
Public interface for solving a system of linear equations using a dense matrix.
A | The system matrix containing even and odd unknowns |
b | The load vector containing even and odd unknowns |
VectorType viennashe::solvers::solve | ( | viennashe::math::dense_matrix< NumericT > const & | A, |
VectorType const & | b, | ||
viennashe::solvers::linear_solver_config const & | config, | ||
viennashe::solvers::dense_linear_solver_tag | |||
) |
Solves the provided system using a dense Gauss solver with partial pivoting.
A | The system matrix |
b | The load vector (right hand side) |
config | The linear solver configuration object |
Definition at line 77 of file dense_linear_solver.hpp.
std::vector< double > viennashe::solvers::solve | ( | viennashe::math::sparse_matrix< double > & | A, |
std::vector< double > const & | b, | ||
linear_solver_config const & | config | ||
) |
Public interface for solving a system of linear equations represented using a sparse matrix.
A | The system matrix containing even and odd unknowns |
b | The load vector containing even and odd unknowns |
config | Linear solver configuration object |
VectorType viennashe::solvers::solve | ( | viennashe::math::sparse_matrix< NumericT > const & | A, |
VectorType const & | b, | ||
viennashe::solvers::linear_solver_config const & | config, | ||
viennashe::solvers::dense_linear_solver_tag | |||
) |
Specialization for a sparse matrix.
Definition at line 139 of file dense_linear_solver.hpp.
VectorType viennashe::solvers::solve | ( | viennashe::math::sparse_matrix< NumericT > const & | A, |
VectorType const & | b, | ||
viennashe::solvers::linear_solver_config const & | config, | ||
viennashe::solvers::petsc_linear_solver_tag | |||
) |
Definition at line 35 of file petsc_solver.hpp.
VectorType viennashe::solvers::solve_impl | ( | MatrixType & | system_matrix, |
VectorType const & | rhs, | ||
linear_solver_config const & | config | ||
) |