Binds a Krylov solver to an SpMatrix.
More...
#include <AMReX_KrylovMV.H>
|
| static T | norm2 (VEC const &vec) |
| | Euclidean norm of vec.
|
| static void | scale (VEC &vec, T scale_factor) |
| | Scale vec in place by scale_factor.
|
| static T | dotProduct (VEC const &vec1, VEC const &vec2) |
| | Dot product between vec1 and vec2.
|
| static void | setToZero (VEC &lhs) |
| | Reset lhs to zero.
|
| static void | assign (VEC &lhs, VEC const &rhs) |
| | Copy rhs into lhs.
|
| static void | increment (VEC &lhs, VEC const &rhs, T a) |
| | Accumulate lhs += a * rhs.
|
| static void | linComb (VEC &lhs, T a, VEC const &rhs_a, T b, VEC const &rhs_b) |
| | Form the linear combination lhs = a * rhs_a + b * rhs_b.
|
template<template< typename, typename > class S, typename T>
class amrex::KrylovMV< S, T >
Binds a Krylov solver to an SpMatrix.
- Template Parameters
-
| S | Krylov solver class template with the GMRES operator interface, e.g., GMRES, BiCGStab or PCG. |
| T | Value type of the matrix and vectors (double or float). |
Use the aliases GMRES_MV, BiCGStab_MV and PCG_MV.
◆ GM
template<template< typename, typename > class S, typename T>
◆ MAT
template<template< typename, typename > class S, typename T>
◆ PC
template<template< typename, typename > class S, typename T>
◆ RT
template<template< typename, typename > class S, typename T>
◆ Solver
template<template< typename, typename > class S, typename T>
◆ VEC
template<template< typename, typename > class S, typename T>
◆ KrylovMV() [1/3]
template<template< typename, typename > class S, typename T>
Bind the solver to a sparse matrix described by a_mat.
- Parameters
-
| a_mat | Matrix supplying the SpMV operation and partition. |
◆ ~KrylovMV()
template<template< typename, typename > class S, typename T>
◆ KrylovMV() [2/3]
template<template< typename, typename > class S, typename T>
◆ KrylovMV() [3/3]
template<template< typename, typename > class S, typename T>
◆ apply()
template<template< typename, typename > class S, typename T>
Apply the sparse operator: lhs = A rhs.
rhs is non-const to satisfy the solver interface.
◆ assign()
template<template< typename, typename > class S, typename T>
◆ dotProduct()
template<template< typename, typename > class S, typename T>
Dot product between vec1 and vec2.
◆ getGMRES()
template<template< typename, typename > class S, typename T>
◆ getSolver()
template<template< typename, typename > class S, typename T>
Access the underlying solver for additional settings and results.
◆ increment()
template<template< typename, typename > class S, typename T>
Accumulate lhs += a * rhs.
◆ linComb()
template<template< typename, typename > class S, typename T>
Form the linear combination lhs = a * rhs_a + b * rhs_b.
◆ makeVecLHS()
template<template< typename, typename > class S, typename T>
Return another AlgVector with the same partition for LHS storage.
◆ makeVecRHS()
template<template< typename, typename > class S, typename T>
Return an AlgVector that mirrors the matrix partition for RHS storage.
◆ norm2()
template<template< typename, typename > class S, typename T>
◆ operator=() [1/2]
template<template< typename, typename > class S, typename T>
◆ operator=() [2/2]
template<template< typename, typename > class S, typename T>
◆ precond()
template<template< typename, typename > class S, typename T>
Apply the optional preconditioner (or copy if none is provided).
◆ scale()
template<template< typename, typename > class S, typename T>
Scale vec in place by scale_factor.
◆ setPrecond()
template<template< typename, typename > class S, typename T>
Supply an optional right-preconditioner functor.
The functor must follow the signature void(VEC& lhs, VEC const& rhs).
- Parameters
-
| a_pc | Callable that computes lhs = P^{-1}(rhs). |
◆ setToZero()
template<template< typename, typename > class S, typename T>
◆ setVerbose()
template<template< typename, typename > class S, typename T>
Set verbosity level v for the underlying solver.
◆ solve()
template<template< typename, typename > class S, typename T>
Solve the linear system.
- Parameters
-
| a_sol | unknowns, i.e., x in A x = b. |
| a_rhs | RHS, i.e., b in A x = b. |
| a_tol_rel | relative tolerance. |
| a_tol_abs | absolute tolerance. |
The documentation for this class was generated from the following file: