![]() |
Block-Structured AMR Software Framework
|
l1 hybrid Gauss-Seidel smoother for CPUs. More...
#include <AMReX_Smoother_MV.H>
Public Member Functions | |
| L1GaussSeidelSmoother (SpMatrix< T > const *a_A) | |
Construct a smoother that operates on a_A. | |
| int | setNumIters (int a_niters) |
| Number of sweeps per application (2 by default). | |
| void | operator() (AlgVector< T > &xvec, AlgVector< T > const &bvec, bool with_initial_guess=false, bool backward=false) |
Apply the smoother to solve approximately for xvec. | |
l1 hybrid Gauss-Seidel smoother for CPUs.
Gauss-Seidel within each process, and within each of a fixed number of row blocks that the OpenMP threads share out; couplings to other blocks and to other processes use the previous iterate and their absolute values are added to the diagonal, which keeps the sweep convergent for any SPD matrix and any partition [Baker, Falgout, Kolev, Yang, SIAM J. Sci. Comput. 33 (2011), 2864-2887]. Forward and backward sweeps are available to keep a V-cycle symmetric. Not available in GPU builds.
|
inlineexplicit |
Construct a smoother that operates on a_A.
| a_A | Sparse matrix supplying the stencil and SpMV. |
|
inline |
Apply the smoother to solve approximately for xvec.
| xvec | Solution vector updated in place. |
| bvec | RHS vector. |
| with_initial_guess | True if xvec already holds an initial guess. |
| backward | Sweep the rows in descending order. |
|
inline |
Number of sweeps per application (2 by default).