43#ifndef PANZER_EXPLICIT_MODEL_EVALUATOR_HPP
44#define PANZER_EXPLICIT_MODEL_EVALUATOR_HPP
46#include "PanzerDiscFE_config.hpp"
48#include "Thyra_ModelEvaluatorDelegatorBase.hpp"
49#include "Thyra_BlockedLinearOpBase.hpp"
53#ifdef PANZER_HAVE_EPETRA_STACK
66template<
typename Scalar>
68 :
public Thyra::ModelEvaluatorDelegatorBase<Scalar>,
79 bool constantMassMatrix,
81 bool applyMassInverse=
true);
89 Thyra::ModelEvaluatorBase::InArgs<Scalar>
createInArgs()
const;
92 Thyra::ModelEvaluatorBase::OutArgs<Scalar>
createOutArgs()
const;
104 Thyra::apply(*
mass_,Thyra::NOTRANS,*input,output.ptr());
116#ifdef PANZER_HAVE_EPETRA_STACK
117 if(panzerEpetraModel_!=Teuchos::null) { panzerEpetraModel_->applyDirichletBCs(x,f);
return; }
120 TEUCHOS_ASSERT(
false);
135 void evalModelImpl(
const Thyra::ModelEvaluatorBase::InArgs<Scalar> &inArgs,
136 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs)
const;
158#ifdef PANZER_HAVE_EPETRA_STACK
160 Teuchos::RCP<const panzer::ModelEvaluator_Epetra> panzerEpetraModel_;
163 mutable Teuchos::RCP<Thyra::LinearOpBase<Scalar> >
mass_;
165 mutable Teuchos::RCP<Thyra::VectorBase<Scalar> >
scrap_f_;
166 mutable Teuchos::RCP<Thyra::VectorBase<Scalar> >
zero_;
Teuchos::RCP< const panzer::ModelEvaluator< Scalar > > panzerModel_
Access to the panzer model evaluator pointer (thyra version)
Thyra::ModelEvaluatorBase::OutArgs< Scalar > prototypeOutArgs_
Teuchos::RCP< Thyra::VectorBase< Scalar > > zero_
void evalModelImpl(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
Evaluation of model, applies the mass matrix to the RHS.
Teuchos::RCP< const Thyra::LinearOpBase< Scalar > > invMassMatrix_
void applyDirichletBCs(const Teuchos::RCP< Thyra::VectorBase< Scalar > > &x, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &f) const
void setOneTimeDirichletBeta(double beta, const Thyra::ModelEvaluator< Scalar > &me) const
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > mass_
Thyra::ModelEvaluatorBase::InArgs< Scalar > getNominalValues() const
Build the nominal values, modifies the underlying models in args slightly.
void buildInverseMassMatrix(const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs) const
Teuchos::RCP< Thyra::VectorBase< Scalar > > scrap_f_
Thyra::ModelEvaluatorBase::InArgs< Scalar > prototypeInArgs_
virtual void applyInverseMassMatrix(const Teuchos::RCP< Thyra::MultiVectorBase< Scalar > > input, const Teuchos::RCP< Thyra::MultiVectorBase< Scalar > > output) const
virtual void applyMassMatrix(const Teuchos::RCP< Thyra::MultiVectorBase< Scalar > > input, const Teuchos::RCP< Thyra::MultiVectorBase< Scalar > > output) const
Thyra::ModelEvaluatorBase::OutArgs< Scalar > createOutArgs() const
Build the out args, modifies the underlying models in args slightly.
Teuchos::RCP< panzer::ModelEvaluator< Scalar > > getPanzerUnderlyingModel()
Get the underlying panzer::ModelEvaluator.
bool constantMassMatrix_
Is the mass matrix constant.
bool massLumping_
Use mass lumping, or a full solve.
void buildArgsPrototypes()
Build prototype in/out args.
Thyra::ModelEvaluatorBase::InArgs< Scalar > createInArgs() const
Build the in args, modifies the underlying models in args slightly.