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