12 #ifndef MFEM_COMPLEX_OPERATOR
13 #define MFEM_COMPLEX_OPERATOR
21 #ifdef MFEM_USE_SUITESPARSE
87 bool ownReal,
bool ownImag,
155 bool ownReal,
bool ownImag,
177 #ifdef MFEM_USE_SUITESPARSE
196 mutable double Info[UMFPACK_INFO];
206 bool transa_ =
false)
259 bool ownReal,
bool ownImag,
281 int & num_recv_procs,
289 #endif // MFEM_USE_MPI
293 #endif // MFEM_COMPLEX_OPERATOR
double Control[UMFPACK_CONTROL]
virtual Operator & real()
Real or imaginary part accessor methods.
virtual ~ComplexOperator()
virtual Type GetType() const
void SetPrintLevel(int print_lvl)
ComplexSparseMatrix * mat
virtual ~ComplexUMFPackSolver()
Interface with UMFPack solver specialized for ComplexSparseMatrix This approach avoids forming a mono...
ComplexHypreParMatrix(HypreParMatrix *A_Real, HypreParMatrix *A_Imag, bool ownReal, bool ownImag, Convention convention=HERMITIAN)
Mimic the action of a complex operator using two real operators.
ID for class ComplexHypreParMatrix.
ComplexSparseMatrix(SparseMatrix *A_Real, SparseMatrix *A_Imag, bool ownReal, bool ownImag, Convention convention=HERMITIAN)
Alternate convention for damping operators.
ComplexOperator(Operator *Op_Real, Operator *Op_Imag, bool ownReal, bool ownImag, Convention convention=HERMITIAN)
Constructs complex operator object.
bool hasRealPart() const
Check for existence of real or imaginary part of the operator.
virtual Type GetType() const
virtual SparseMatrix & real()
Real or imaginary part accessor methods.
SparseMatrix * GetSystemMatrix() const
Type
Enumeration defining IDs for some classes derived from Operator.
virtual void Mult(const Vector &x, Vector &y) const
Operator application: y=A(x).
void SetTransposeSolve(bool transa_)
Specialization of the ComplexOperator built from a pair of Sparse Matrices.
virtual Operator & imag()
Convention GetConvention() const
virtual void SetOperator(const Operator &op)
Factorize the given Operator op which must be a ComplexSparseMatrix.
virtual void Mult(const Vector &b, Vector &x) const
This is solving the system A x = b.
Specialization of the ComplexOperator built from a pair of HypreParMatrices.
virtual SparseMatrix & imag()
Native convention for Hermitian operators.
virtual void MultTranspose(const Vector &b, Vector &x) const
This is solving the system: A^H x = b (when transa = false) This is equivalent to solving the transpo...
virtual Type GetType() const
ID for class ComplexSparseMatrix.
ComplexUMFPackSolver(ComplexSparseMatrix &A, bool use_long_ints_=false, bool transa_=false)
Factorize the given ComplexSparseMatrix using the defaults. For larger matrices, if the solver fails...
virtual void MultTranspose(const Vector &x, Vector &y) const
Action of the transpose operator: y=A^t(x). The default behavior in class Operator is to generate an ...
HypreParMatrix * GetSystemMatrix() const
virtual HypreParMatrix & imag()
ID for class ComplexOperator.
Wrapper for hypre's ParCSR matrix class.
double Info[UMFPACK_INFO]
virtual HypreParMatrix & real()
Real or imaginary part accessor methods.
ComplexUMFPackSolver(bool use_long_ints_=false, bool transa_=false)
For larger matrices, if the solver fails, set the parameter use_long_ints_ = true.