11#ifndef PANZER_EVALUATOR_SCATTER_DIRICHLET_RESIDUAL_BLOCKEDEPETRA_DECL_HPP
12#define PANZER_EVALUATOR_SCATTER_DIRICHLET_RESIDUAL_BLOCKEDEPETRA_DECL_HPP
14#include "Phalanx_config.hpp"
15#include "Phalanx_Evaluator_Macros.hpp"
16#include "Phalanx_MDField.hpp"
18#include "Teuchos_ParameterList.hpp"
20#include "PanzerDiscFE_config.hpp"
29 template <
typename ScalarT>
class ProductVectorBase;
47 public PHX::EvaluatorDerived<panzer::Traits::Residual, TRAITS>,
54 virtual Teuchos::RCP<CloneableEvaluator>
clone(
const Teuchos::ParameterList & pl)
const
60 { std::cout <<
"unspecialized version of \"ScatterDirichletResidual_BlockedEpetra::evaluateFields\" on \""+PHX::print<EvalT>()+
"\" should not be used!" << std::endl;
61 TEUCHOS_ASSERT(
false); }
74template<
typename TRAITS,
typename LO,
typename GO>
77 public PHX::EvaluatorDerived<panzer::Traits::Residual, TRAITS>,
83 const std::vector<Teuchos::RCP<const GlobalIndexer> > & )
84 : rowIndexers_(rIndexers) {}
87 const std::vector<Teuchos::RCP<const GlobalIndexer> > & cIndexers,
88 const Teuchos::ParameterList& p,
89 bool useDiscreteAdjoint=
false);
94 void preEvaluate(
typename TRAITS::PreEvalData d);
98 virtual Teuchos::RCP<CloneableEvaluator>
clone(
const Teuchos::ParameterList & pl)
const
121 Teuchos::RCP<const std::map<std::string,std::string> >
fieldMap_;
129 Teuchos::RCP<Thyra::ProductVectorBase<double> >
r_;
147template<
typename TRAITS,
typename LO,
typename GO>
150 public PHX::EvaluatorDerived<panzer::Traits::Tangent, TRAITS>,
156 const std::vector<Teuchos::RCP<const GlobalIndexer> > & )
157 : rowIndexers_(rIndexers) {}
160 const std::vector<Teuchos::RCP<const GlobalIndexer> > & cIndexers,
161 const Teuchos::ParameterList& p,
162 bool useDiscreteAdjoint=
false);
167 void preEvaluate(
typename TRAITS::PreEvalData d);
171 virtual Teuchos::RCP<CloneableEvaluator>
clone(
const Teuchos::ParameterList & pl)
const
194 Teuchos::RCP<const std::map<std::string,std::string> >
fieldMap_;
202 Teuchos::RCP<Thyra::ProductVectorBase<double> >
r_;
220template<
typename TRAITS,
typename LO,
typename GO>
223 public PHX::EvaluatorDerived<panzer::Traits::Jacobian, TRAITS>,
229 const std::vector<Teuchos::RCP<const GlobalIndexer> > & cIndexers)
230 : rowIndexers_(rIndexers), colIndexers_(cIndexers) {}
233 const std::vector<Teuchos::RCP<const GlobalIndexer> > & cIndexers,
234 const Teuchos::ParameterList& p,
235 bool useDiscreteAdjoint=
false);
237 void preEvaluate(
typename TRAITS::PreEvalData d);
244 virtual Teuchos::RCP<CloneableEvaluator>
clone(
const Teuchos::ParameterList & pl)
const
268 Teuchos::RCP<const std::map<std::string,std::string> >
fieldMap_;
279 Teuchos::RCP<Thyra::ProductVectorBase<double> >
r_;
280 Teuchos::RCP<Thyra::BlockedLinearOpBase<double> >
Jac_;
294#ifdef Panzer_BUILD_HESSIAN_SUPPORT
Non-templated empty base class for template managers.
Wrapper to PHX::EvaluatorWithBaseImpl that implements Panzer-specific helpers.
Teuchos::RCP< Thyra::BlockedLinearOpBase< double > > Jac_
bool checkApplyBC_
If set to true, allows runtime disabling of dirichlet BCs on node-by-node basis.
std::vector< Teuchos::RCP< const GlobalIndexer > > rowIndexers_
virtual Teuchos::RCP< CloneableEvaluator > clone(const Teuchos::ParameterList &pl) const
std::vector< BCFieldType > applyBC_
std::vector< int > subFieldIds_
std::string globalDataKey_
Teuchos::RCP< const std::map< std::string, std::string > > fieldMap_
Teuchos::RCP< PHX::FieldTag > scatterHolder_
std::size_t local_side_id_
Teuchos::RCP< Thyra::ProductVectorBase< double > > r_
ScatterDirichletResidual_BlockedEpetra()
std::size_t side_subcell_dim_
PHX::MDField< const bool, Cell, NODE > BCFieldType
Teuchos::RCP< Thyra::ProductVectorBase< double > > dirichletCounter_
panzer::Traits::Jacobian::ScalarT ScalarT
std::vector< PHX::MDField< const ScalarT, Cell, NODE > > scatterFields_
ScatterDirichletResidual_BlockedEpetra(const std::vector< Teuchos::RCP< const GlobalIndexer > > &rIndexers, const std::vector< Teuchos::RCP< const GlobalIndexer > > &cIndexers)
std::vector< int > indexerIds_
std::vector< Teuchos::RCP< const GlobalIndexer > > colIndexers_
std::vector< BCFieldType > applyBC_
std::vector< PHX::MDField< const ScalarT, Cell, NODE > > scatterFields_
panzer::Traits::Residual::ScalarT ScalarT
std::vector< int > indexerIds_
std::size_t side_subcell_dim_
Teuchos::RCP< Thyra::ProductVectorBase< double > > dirichletCounter_
std::vector< int > subFieldIds_
std::size_t local_side_id_
std::string globalDataKey_
Teuchos::RCP< const std::map< std::string, std::string > > fieldMap_
bool checkApplyBC_
If set to true, allows runtime disabling of dirichlet BCs on node-by-node basis.
ScatterDirichletResidual_BlockedEpetra(const std::vector< Teuchos::RCP< const GlobalIndexer > > &rIndexers, const std::vector< Teuchos::RCP< const GlobalIndexer > > &)
std::vector< Teuchos::RCP< const GlobalIndexer > > colIndexers_
virtual Teuchos::RCP< CloneableEvaluator > clone(const Teuchos::ParameterList &pl) const
Teuchos::RCP< Thyra::ProductVectorBase< double > > r_
PHX::MDField< const bool, Cell, NODE > BCFieldType
ScatterDirichletResidual_BlockedEpetra()
std::vector< Teuchos::RCP< const GlobalIndexer > > rowIndexers_
Teuchos::RCP< PHX::FieldTag > scatterHolder_
std::vector< int > subFieldIds_
PHX::MDField< const bool, Cell, NODE > BCFieldType
bool checkApplyBC_
If set to true, allows runtime disabling of dirichlet BCs on node-by-node basis.
std::vector< Teuchos::RCP< const GlobalIndexer > > colIndexers_
std::vector< Teuchos::RCP< const GlobalIndexer > > rowIndexers_
std::vector< PHX::MDField< const ScalarT, Cell, NODE > > scatterFields_
Teuchos::RCP< PHX::FieldTag > scatterHolder_
std::vector< BCFieldType > applyBC_
ScatterDirichletResidual_BlockedEpetra(const std::vector< Teuchos::RCP< const GlobalIndexer > > &rIndexers, const std::vector< Teuchos::RCP< const GlobalIndexer > > &)
Teuchos::RCP< Thyra::ProductVectorBase< double > > dirichletCounter_
Teuchos::RCP< Thyra::ProductVectorBase< double > > r_
std::string globalDataKey_
std::vector< int > indexerIds_
virtual Teuchos::RCP< CloneableEvaluator > clone(const Teuchos::ParameterList &pl) const
std::size_t side_subcell_dim_
Teuchos::RCP< const std::map< std::string, std::string > > fieldMap_
panzer::Traits::Tangent::ScalarT ScalarT
ScatterDirichletResidual_BlockedEpetra()
std::size_t local_side_id_
Pushes residual values into the residual vector for a Newton-based solve.
ScatterDirichletResidual_BlockedEpetra(const Teuchos::ParameterList &p)
virtual Teuchos::RCP< CloneableEvaluator > clone(const Teuchos::ParameterList &pl) const
void evaluateFields(typename TRAITS::EvalData d)
void postRegistrationSetup(typename TRAITS::SetupData d, PHX::FieldManager< TRAITS > &vm)
Evaluation type for computing the residual and its Jacobian, using FadType as the scalar type.
Evaluation type for computing the residual only, using RealType as the scalar type.
Evaluation type for computing directional derivatives (e.g. parameter sensitivities),...