43 #ifndef __Panzer_ScatterDirichletResidual_Tpetra_Hessian_hpp__ 44 #define __Panzer_ScatterDirichletResidual_Tpetra_Hessian_hpp__ 47 #ifdef Panzer_BUILD_HESSIAN_SUPPORT 57 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
58 class ScatterDirichletResidual_Tpetra<
panzer::Traits::Hessian,TRAITS,LO,GO,NodeT>
60 public PHX::EvaluatorDerived<panzer::Traits::Hessian, TRAITS>,
64 ScatterDirichletResidual_Tpetra(
const Teuchos::RCP<
const UniqueGlobalIndexer<LO,GO> > & indexer)
65 : globalIndexer_(indexer) {}
67 ScatterDirichletResidual_Tpetra(
const Teuchos::RCP<
const UniqueGlobalIndexer<LO,GO> > & indexer,
68 const Teuchos::ParameterList& p);
70 void postRegistrationSetup(
typename TRAITS::SetupData d,
73 void preEvaluate(
typename TRAITS::PreEvalData d);
75 void evaluateFields(
typename TRAITS::EvalData workset);
77 virtual Teuchos::RCP<CloneableEvaluator> clone(
const Teuchos::ParameterList & pl)
const 78 {
return Teuchos::rcp(
new ScatterDirichletResidual_Tpetra<panzer::Traits::Hessian,TRAITS,LO,GO>(globalIndexer_,pl)); }
81 typedef typename panzer::Traits::Hessian::ScalarT ScalarT;
82 typedef TpetraLinearObjContainer<double,LO,GO,NodeT> LOC;
85 Teuchos::RCP<PHX::FieldTag> scatterHolder_;
88 std::vector< PHX::MDField<const ScalarT,Cell,NODE> >
scatterFields_;
92 Teuchos::RCP<const panzer::UniqueGlobalIndexer<LO,GO> > globalIndexer_;
93 std::vector<int> fieldIds_;
99 Teuchos::RCP<const std::map<std::string,std::string> > fieldMap_;
103 std::size_t side_subcell_dim_;
104 std::size_t local_side_id_;
106 ScatterDirichletResidual_Tpetra() {}
108 Teuchos::RCP<typename LOC::VectorType> dirichletCounter_;
110 std::string globalDataKey_;
111 Teuchos::RCP<const LOC> tpetraContainer_;
120 std::vector< PHX::MDField<const bool,Cell,NODE> > applyBC_;
126 #endif // end hessian support std::vector< PHX::MDField< const ScalarT, panzer::Cell, panzer::Point > > scatterFields_
Wrapper to PHX::EvaluatorWithBaseImpl that implements Panzer-specific helpers.
Non-templated empty base class for template managers.