12#ifndef MFEM_COMPLEX_OPERATOR
13#define MFEM_COMPLEX_OPERATOR
21#ifdef MFEM_USE_SUITESPARSE
87 bool ownReal,
bool ownImag,
158 bool ownReal,
bool ownImag,
180#ifdef MFEM_USE_SUITESPARSE
209 bool transa_ =
false)
262 bool ownReal,
bool ownImag,
284 int & num_recv_procs,
Specialization of the ComplexOperator built from a pair of HypreParMatrices.
ComplexHypreParMatrix(HypreParMatrix *A_Real, HypreParMatrix *A_Imag, bool ownReal, bool ownImag, Convention convention=HERMITIAN)
virtual HypreParMatrix & imag()
HypreParMatrix * GetSystemMatrix() const
virtual Type GetType() const
virtual HypreParMatrix & real()
Real or imaginary part accessor methods.
Mimic the action of a complex operator using two real operators.
virtual Operator & imag()
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 Operator & real()
Real or imaginary part accessor methods.
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 ...
Convention GetConvention() const
virtual ~ComplexOperator()
@ HERMITIAN
Native convention for Hermitian operators.
@ BLOCK_SYMMETRIC
Alternate convention for damping operators.
virtual void Mult(const Vector &x, Vector &y) const
Operator application: y=A(x).
Specialization of the ComplexOperator built from a pair of Sparse Matrices.
virtual Type GetType() const
ComplexSparseMatrix(SparseMatrix *A_Real, SparseMatrix *A_Imag, bool ownReal, bool ownImag, Convention convention=HERMITIAN)
SparseMatrix * GetSystemMatrix() const
virtual SparseMatrix & real()
Real or imaginary part accessor methods.
virtual SparseMatrix & imag()
Interface with UMFPack solver specialized for ComplexSparseMatrix This approach avoids forming a mono...
virtual void Mult(const Vector &b, Vector &x) const
This is solving the system A x = b.
void SetTransposeSolve(bool transa_)
virtual void SetOperator(const Operator &op)
Factorize the given Operator op which must be a ComplexSparseMatrix.
real_t Info[UMFPACK_INFO]
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 &b, Vector &x) const
This is solving the system: A^H x = b (when transa = false) This is equivalent to solving the transpo...
real_t Control[UMFPACK_CONTROL]
ComplexUMFPackSolver(bool use_long_ints_=false, bool transa_=false)
For larger matrices, if the solver fails, set the parameter use_long_ints_ = true.
virtual ~ComplexUMFPackSolver()
ComplexSparseMatrix * mat
void SetPrintLevel(int print_lvl)
Wrapper for hypre's ParCSR matrix class.
virtual void Mult(const Vector &x, Vector &y) const =0
Operator application: y=A(x).
Type
Enumeration defining IDs for some classes derived from Operator.
@ MFEM_ComplexSparseMat
ID for class ComplexSparseMatrix.
@ Complex_Operator
ID for class ComplexOperator.
@ Complex_Hypre_ParCSR
ID for class ComplexHypreParMatrix.
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 ...