28 mfem_error(
"SparseSmoother::SetOperator : not a SparseMatrix!");
DSmoother(int t=0, real_t s=1., int it=1)
Create Jacobi smoother.
bool use_abs_diag
Uses abs values of the diagonal entries. Relevant only when type = 0.
virtual void Mult(const Vector &x, Vector &y) const
Matrix vector multiplication with Jacobi smoother.
virtual void Mult(const Vector &x, Vector &y) const
Matrix vector multiplication with GS Smoother.
int width
Dimension of the input / number of columns in the matrix.
int Height() const
Get the height (size of output) of the Operator. Synonym with NumRows().
int height
Dimension of the output / number of rows in the matrix.
int Width() const
Get the width (size of input) of the Operator. Synonym with NumCols().
bool iterative_mode
If true, use the second argument of Mult() as an initial guess.
void Gauss_Seidel_back(const Vector &x, Vector &y) const
void Jacobi3(const Vector &b, const Vector &x0, Vector &x1, real_t sc=1.0) const
void Jacobi(const Vector &b, const Vector &x0, Vector &x1, real_t sc, bool use_abs_diag=false) const
void Gauss_Seidel_forw(const Vector &x, Vector &y) const
Gauss-Seidel forward and backward iterations over a vector x.
void DiagScale(const Vector &b, Vector &x, real_t sc=1.0, bool use_abs_diag=false) const
x = sc b / A_ii. When use_abs_diag = true, |A_ii| is used.
void Jacobi2(const Vector &b, const Vector &x0, Vector &x1, real_t sc=1.0) const
virtual void SetOperator(const Operator &a)
Set/update the solver for the given operator.
const SparseMatrix * oper
void SetSize(int s)
Resize the vector to size s.
void Swap(Array< T > &, Array< T > &)
void mfem_error(const char *msg)
real_t p(const Vector &x, real_t t)