26 MFEM_VERIFY(
oper !=
nullptr,
"Operator must be a SparseMatrix");
133 MFEM_ABORT(
"Invalid type.");
153 MFEM_VERIFY(
type == 0 || !
At,
"l1 or lumped Jacobi transpose not implemented"
154 " for non-symmetric matrices");
JacobiType type
Type of diagonal scaling, see DSmoother::JacobiType.
bool use_abs_diag
Uses abs values of the diagonal entries. Relevant only with type JacobiType::JACOBI.
void Mult_(const SparseMatrix &A, const Vector &x, Vector &y) const
Apply the Jacobi smoother (used internally by Mult() and MultTranspose())
int iterations
Number of stationary iterations to perform.
void Mult(const Vector &x, Vector &y) const override
Apply the Jacobi smoother.
real_t scale
Scaling (damping) factor.
Vector z
Temporary work vector.
void MultTranspose(const Vector &x, Vector &y) const override
Apply the transpose of the Jacobi smoother.
int iterations
Number of stationary iterations.
void Mult(const Vector &x, Vector &y) const override
Application of the Gauss-Seidel smoother.
void MultTranspose(const Vector &x, Vector &y) const override
Application of the transpose of the Gauss-Seidel smoother.
GSType type
Type of Gauss-Seidel, see GSSmoother::GSType.
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.
real_t IsSymmetric() const
Returns max_{i,j} |(i,j)-(j,i)| for a finalized matrix.
void Jacobi2(const Vector &b, const Vector &x0, Vector &x1, real_t sc=1.0) const
void SetOperator(const Operator &a) override
Sets the underlying matrix. a must be a SparseMatrix.
std::unique_ptr< SparseMatrix > At
Transpose of A, if needed.
void EnsureTranspose() const
Ensure that the transpose is set.
const SparseMatrix * oper
The underlying matrix.
const SparseMatrix * oper_T
void SetSize(int s)
Resize the vector to size s.
void Transpose(const Table &A, Table &At, int ncols_A_)
Transpose a Table.
void Swap(T &a, T &b)
Swap objects of type T. The operation is performed using the most specialized swap function from the ...
real_t p(const Vector &x, real_t t)