10 #ifndef NOX_EPETRA_LINEARSYSTEMMPBD_H
11 #define NOX_EPETRA_LINEARSYSTEMMPBD_H
15 #ifdef HAVE_STOKHOS_NOX
17 #include "NOX_Common.H"
19 #include "NOX_Epetra_LinearSystem.H"
20 #include "NOX_Utils.H"
25 #include "EpetraExt_BlockVector.h"
45 class LinearSystemMPBD :
public virtual NOX::Epetra::LinearSystem {
61 virtual ~LinearSystemMPBD();
67 virtual bool applyJacobian(
const NOX::Epetra::Vector& input,
68 NOX::Epetra::Vector& result)
const;
74 virtual bool applyJacobianTranspose(
const NOX::Epetra::Vector& input,
75 NOX::Epetra::Vector& result)
const;
82 const NOX::Epetra::Vector &input,
83 NOX::Epetra::Vector &result);
86 virtual bool applyRightPreconditioning(
bool useTranspose,
88 const NOX::Epetra::Vector& input,
89 NOX::Epetra::Vector& result)
const;
98 virtual bool computeJacobian(
const NOX::Epetra::Vector& x);
101 virtual bool createPreconditioner(
const NOX::Epetra::Vector& x,
103 bool recomputeGraph)
const;
106 virtual bool destroyPreconditioner()
const;
109 virtual bool recomputePreconditioner(
const NOX::Epetra::Vector& x,
113 virtual PreconditionerReusePolicyType
114 getPreconditionerPolicy(
bool advanceReuseCounter=
true);
117 virtual bool isPreconditionerConstructed()
const;
120 virtual bool hasPreconditioner()
const;
124 getJacobianOperator()
const;
131 getGeneratedPrecOperator()
const;
174 PREC_STRATEGY precStrategy;