51 {
mfem_error (
"Operator::MultTranspose() is not overloaded!"); }
56 mfem_error(
"Operator::GetGradient() is not overloaded!");
57 return const_cast<Operator &
>(*this);
61 void PrintMatlab (std::ostream & out,
int n = 0,
int m = 0)
const;
86 virtual void SetTime(
const double _t) {
t = _t; }
94 mfem_error(
"TimeDependentOperator::ImplicitSolve() is not overloaded!");
111 explicit Solver(
int s = 0,
bool iter_mode =
false)
115 Solver(
int h,
int w,
bool iter_mode =
false)
196 bool ownA, ownB, ownC;
201 bool ownA,
bool ownB,
bool ownC)
204 , ownA(ownA), ownB(ownB), ownC(ownC)
216 if (ownA) {
delete A; }
217 if (ownB) {
delete B; }
218 if (ownC) {
delete C; }
virtual double GetTime() const
Solver(int s=0, bool iter_mode=false)
virtual void Mult(const Vector &x, Vector &y) const
Operator application.
Base abstract class for time dependent operators: (x,t) -> f(x,t)
virtual Operator & GetGradient(const Vector &x) const
Evaluate the gradient operator at the point x.
int Width() const
Get the width (size of input) of the Operator. Synonym with NumCols.
virtual void SetTime(const double _t)
virtual void Mult(const Vector &x, Vector &y) const =0
Operator application.
TripleProductOperator(Operator *A, Operator *B, Operator *C, bool ownA, bool ownB, bool ownC)
virtual void MultTranspose(const Vector &x, Vector &y) const
Action of the transpose operator.
bool iterative_mode
If true, use the second argument of Mult as an initial guess.
virtual ~TimeDependentOperator()
virtual void MultTranspose(const Vector &x, Vector &y) const
Action of the transpose operator.
Solver(int h, int w, bool iter_mode=false)
Initialize a Solver with height 'h' and width 'w'.
virtual void Mult(const Vector &x, Vector &y) const
Operator application.
TransposeOperator(const Operator &a)
Construct the transpose of a given operator.
virtual void MultTranspose(const Vector &x, Vector &y) const
Action of the transpose operator.
int Height() const
Get the height (size of output) of the Operator. Synonym with NumRows.
TimeDependentOperator(int n=0, double _t=0.0)
The operator x -> R*A*P*x.
virtual void ImplicitSolve(const double dt, const Vector &x, Vector &k)
virtual void Mult(const Vector &x, Vector &y) const
Operator application.
TimeDependentOperator(int h, int w, double _t=0.0)
Operator(int s=0)
Construct a square Operator with given size s (default 0)
IdentityOperator(int n)
Creates I_{nxn}.
void mfem_error(const char *msg)
The transpose of a given operator.
void PrintMatlab(std::ostream &out, int n=0, int m=0) const
Prints operator with input size n and output size m in matlab format.
General triple product operator x -> A*B*C*x, with ownership of the factors.
virtual void Mult(const Vector &x, Vector &y) const
Operator application.
virtual void SetOperator(const Operator &op)=0
Set/update the solver for the given operator.
TransposeOperator(const Operator *a)
Construct the transpose of a given operator.
virtual void MultTranspose(const Vector &x, Vector &y) const
Action of the transpose operator.
virtual ~TripleProductOperator()
RAPOperator(Operator &Rt_, Operator &A_, Operator &P_)
Construct the RAP operator given R^T, A and P.