44 #ifndef NOX_EPETRA_LINEARSYSTEMMPBD_H 45 #define NOX_EPETRA_LINEARSYSTEMMPBD_H 49 #ifdef HAVE_STOKHOS_NOX 51 #include "NOX_Common.H" 53 #include "NOX_Epetra_LinearSystem.H" 54 #include "NOX_Utils.H" 59 #include "EpetraExt_BlockVector.h" 79 class LinearSystemMPBD :
public virtual NOX::Epetra::LinearSystem {
95 virtual ~LinearSystemMPBD();
101 virtual bool applyJacobian(
const NOX::Epetra::Vector& input,
102 NOX::Epetra::Vector& result)
const;
108 virtual bool applyJacobianTranspose(
const NOX::Epetra::Vector& input,
109 NOX::Epetra::Vector& result)
const;
116 const NOX::Epetra::Vector &input,
117 NOX::Epetra::Vector &result);
120 virtual bool applyRightPreconditioning(
bool useTranspose,
122 const NOX::Epetra::Vector& input,
123 NOX::Epetra::Vector& result)
const;
132 virtual bool computeJacobian(
const NOX::Epetra::Vector&
x);
135 virtual bool createPreconditioner(
const NOX::Epetra::Vector&
x,
137 bool recomputeGraph)
const;
140 virtual bool destroyPreconditioner()
const;
143 virtual bool recomputePreconditioner(
const NOX::Epetra::Vector&
x,
147 virtual PreconditionerReusePolicyType
148 getPreconditionerPolicy(
bool advanceReuseCounter=
true);
151 virtual bool isPreconditionerConstructed()
const;
154 virtual bool hasPreconditioner()
const;
158 getJacobianOperator()
const;
165 getGeneratedPrecOperator()
const;
208 PREC_STRATEGY precStrategy;
const IndexType const IndexType const IndexType const IndexType const ValueType const ValueType * x