|
| | ChebyshevSmoother (SpMatrix< T > const *a_A, bool a_l1=false) |
| |
| void | setDegree (int d) |
| | Polynomial degree (number of matrix-vector products per application, 2 by default).
|
| |
| void | setEigRatio (T r) |
| |
| int | setNumIters (int a_niters) |
| | Number of polynomial applications per call (1 by default).
|
| |
| void | setLambdaMax (T l) |
| | Set the largest eigenvalue of the scaled operator instead of the bound.
|
| |
| T | lambdaMax () |
| |
| void | operator() (AlgVector< T > &xvec, AlgVector< T > const &bvec, bool with_initial_guess=false) |
| | Apply the smoother to solve approximately for xvec.
|
| |
| void | bound () |
| | Gershgorin bound of the eigenvalues of D^{-1} A.
|
| |
template<typename T>
class amrex::ChebyshevSmoother< T >
Chebyshev polynomial smoother for AlgVector/SpMatrix systems.
Applies a Chebyshev polynomial of the diagonally (or l1) scaled operator D^{-1} A that damps the spectrum in [lambda_max / ratio, lambda_max] [Adams, Brezina, Hu, Tuminaro, J. Comput. Phys. 188 (2003), 593-610]. Each application costs degree matrix-vector products. lambda_max is the Gershgorin bound max_i sum_j |a_ij| / |d_i| of the scaled operator, which is one with l1 scaling.