Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
amrex::L1GaussSeidelSmoother< T > Class Template Reference

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.
 

Detailed Description

template<typename T>
class amrex::L1GaussSeidelSmoother< T >

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.

Constructor & Destructor Documentation

◆ L1GaussSeidelSmoother()

template<typename T >
amrex::L1GaussSeidelSmoother< T >::L1GaussSeidelSmoother ( SpMatrix< T > const *  a_A)
inlineexplicit

Construct a smoother that operates on a_A.

Parameters
a_ASparse matrix supplying the stencil and SpMV.

Member Function Documentation

◆ operator()()

template<typename T >
void amrex::L1GaussSeidelSmoother< T >::operator() ( AlgVector< T > &  xvec,
AlgVector< T > const &  bvec,
bool  with_initial_guess = false,
bool  backward = false 
)
inline

Apply the smoother to solve approximately for xvec.

Parameters
xvecSolution vector updated in place.
bvecRHS vector.
with_initial_guessTrue if xvec already holds an initial guess.
backwardSweep the rows in descending order.

◆ setNumIters()

template<typename T >
int amrex::L1GaussSeidelSmoother< T >::setNumIters ( int  a_niters)
inline

Number of sweeps per application (2 by default).


The documentation for this class was generated from the following file: