num::chebyshev_preconditioner¶
Defined in header <linear/solvers/chebyshev.hpp>
template <class Op>
requires math::spd_operator<Op>
class chebyshev_preconditioner final;
Chebyshev polynomial preconditioner \(M^{-1} = p_m(A)\).
Each application costs degree operator applications and allocates nothing. It holds a reference to the operator, which must outlive it. Op must be SPD: this class declares law::spd, which holds only when \(A\) is SPD.
Members¶
| member | description |
|---|---|
using domain_type = vec<real> |
|
using codomain_type = vec<real> |
|
using laws = law::list<law::spd> |
Valid only for bounds that enclose the spectrum; see the file comment. |
chebyshev_preconditioner(const Op &A, real lo, real hi, idx degree) |
Build a degree-degree Chebyshev preconditioner for the spectrum \([lo, hi]\). |
idx rows() const noexcept |
|
idx cols() const noexcept |
|
idx degree() const noexcept |
|
void apply(const vec<real> &r, vec<real> &z) const |
Apply \(z \leftarrow p_m(A)\, r\). |