12 #ifndef MFEM_COMPLEX_OPERATOR 13 #define MFEM_COMPLEX_OPERATOR 15 #include "operator.hpp" 21 #ifdef MFEM_USE_SUITESPARSE 87 bool ownReal,
bool ownImag,
158 bool ownReal,
bool ownImag,
180 #ifdef MFEM_USE_SUITESPARSE 199 mutable double Info[UMFPACK_INFO];
209 bool transa_ =
false)
262 bool ownReal,
bool ownImag,
284 int & num_recv_procs,
292 #endif // MFEM_USE_MPI 296 #endif // MFEM_COMPLEX_OPERATOR 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 ...
double Control[UMFPACK_CONTROL]
virtual Operator & real()
Real or imaginary part accessor methods.
virtual ~ComplexOperator()
virtual void Mult(const Vector &b, Vector &x) const
This is solving the system A x = b.
void SetPrintLevel(int print_lvl)
virtual Type GetType() const
ComplexSparseMatrix * mat
virtual ~ComplexUMFPackSolver()
Interface with UMFPack solver specialized for ComplexSparseMatrix This approach avoids forming a mono...
virtual Type GetType() const
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.
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...
ID for class ComplexHypreParMatrix.
ComplexSparseMatrix(SparseMatrix *A_Real, SparseMatrix *A_Imag, bool ownReal, bool ownImag, Convention convention=HERMITIAN)
virtual void Mult(const Vector &x, Vector &y) const =0
Operator application: y=A(x).
bool hasRealPart() const
Check for existence of real or imaginary part of the operator.
Alternate convention for damping operators.
ComplexOperator(Operator *Op_Real, Operator *Op_Imag, bool ownReal, bool ownImag, Convention convention=HERMITIAN)
Constructs complex operator object.
HypreParMatrix * GetSystemMatrix() const
SparseMatrix * GetSystemMatrix() const
virtual SparseMatrix & real()
Real or imaginary part accessor methods.
Type
Enumeration defining IDs for some classes derived from Operator.
void SetTransposeSolve(bool transa_)
Specialization of the ComplexOperator built from a pair of Sparse Matrices.
virtual Operator & imag()
virtual void SetOperator(const Operator &op)
Factorize the given Operator op which must be a ComplexSparseMatrix.
Convention GetConvention() const
Specialization of the ComplexOperator built from a pair of HypreParMatrices.
virtual SparseMatrix & imag()
Native convention for Hermitian operators.
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 ...
virtual void Mult(const Vector &x, Vector &y) const
Operator application: y=A(x).
virtual Type GetType() 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.