11#ifndef __Panzer_ResponseMESupportBase_hpp__
12#define __Panzer_ResponseMESupportBase_hpp__
16#include "Teuchos_RCP.hpp"
18#include "PanzerDiscFE_config.hpp"
19#ifdef PANZER_HAVE_EPETRA_STACK
20#include "Epetra_Map.h"
21#include "Epetra_Vector.h"
22#include "Epetra_MultiVector.h"
23#include "Epetra_Operator.h"
26#include "Thyra_VectorSpaceBase.hpp"
27#include "Thyra_VectorBase.hpp"
28#include "Thyra_MultiVectorBase.hpp"
29#include "Thyra_LinearOpBase.hpp"
35template <
typename EvalT>
43#ifdef PANZER_HAVE_EPETRA_STACK
48 virtual Teuchos::RCP<const Epetra_Map> getMap()
const = 0;
53 virtual void setVector(
const Teuchos::RCP<Epetra_Vector> & destVec) = 0;
60 virtual Teuchos::RCP<const Thyra::VectorSpaceBase<double> >
getVectorSpace()
const = 0;
84#ifdef PANZER_HAVE_EPETRA_STACK
89 virtual Teuchos::RCP<Epetra_MultiVector> buildEpetraDerivative()
const = 0;
93 virtual void setDerivative(
const Teuchos::RCP<Epetra_MultiVector> & derivative) = 0;
121#ifdef PANZER_HAVE_EPETRA_STACK
126 virtual Teuchos::RCP<const Epetra_Map> getMap()
const = 0;
131 virtual void setVector(
const Teuchos::RCP<Epetra_MultiVector> & destVec) = 0;
138 virtual Teuchos::RCP<const Thyra::VectorSpaceBase<double> >
getVectorSpace()
const = 0;
151#ifdef Panzer_BUILD_HESSIAN_SUPPORT
virtual void setDerivative(const Teuchos::RCP< Thyra::MultiVectorBase< double > > &derivative)=0
virtual bool supportsDerivative() const =0
Does this response support derivative evaluation?
virtual ~ResponseMESupportBase()
ResponseMESupportBase(const std::string &responseName)
virtual Teuchos::RCP< Thyra::MultiVectorBase< double > > buildDerivative() const =0
Get an Epetra_Operator for this response, map is constructed lazily.
ResponseMESupportBase(const ResponseMESupportBase< panzer::Traits::Hessian > &)
ResponseMESupportBase(const std::string &responseName)
virtual bool supportsDerivative() const =0
Does this response support derivative evaluation?
virtual Teuchos::RCP< Thyra::MultiVectorBase< double > > buildDerivative() const =0
Get an Epetra_Operator for this response, map is constructed lazily.
virtual ~ResponseMESupportBase()
ResponseMESupportBase(const ResponseMESupportBase< panzer::Traits::Jacobian > &)
virtual void setDerivative(const Teuchos::RCP< Thyra::MultiVectorBase< double > > &derivative)=0
ResponseMESupportBase(const std::string &responseName)
virtual void setVector(const Teuchos::RCP< Thyra::MultiVectorBase< double > > &destVec)=0
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< double > > getVectorSpace() const =0
Get the vector space for this response, vector space is constructed lazily.
virtual ~ResponseMESupportBase()
ResponseMESupportBase(const ResponseMESupportBase< panzer::Traits::Tangent > &)
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< double > > getVectorSpace() const =0
Get the vector space for this response, vector space is constructed lazily.
ResponseMESupportBase(const ResponseMESupportBase< EvalT > &)
ResponseMESupportBase(const std::string &responseName)
virtual void setVector(const Teuchos::RCP< Thyra::VectorBase< double > > &destVec)=0
virtual ~ResponseMESupportBase()
Evaluation type for computing second derivatives, using HessianType as the scalar type....
Evaluation type for computing the residual and its Jacobian, using FadType as the scalar type.
Evaluation type for computing directional derivatives (e.g. parameter sensitivities),...