43 #ifndef __Panzer_SubcellSum_impl_hpp__ 44 #define __Panzer_SubcellSum_impl_hpp__ 50 #include "Phalanx_DataLayout_MDALayout.hpp" 59 p.validateParameters(*valid_params);
61 const std::string inName = p.get<std::string>(
"Field Name");
62 const std::string outName = p.get<std::string>(
"Sum Name");
63 Teuchos::RCP<const PureBasis>
basis = p.get< Teuchos::RCP<const PureBasis> >(
"Basis");
65 if(p.isType<
bool>(
"Evaluate On Closure"))
68 inField = PHX::MDField<ScalarT,Cell,BASIS>( inName,
basis->functional);
69 outField = PHX::MDField<ScalarT,Cell>( outName,
basis->cell_data);
71 this->addDependentField(
inField);
77 std::string n =
"SubcellSum: " +
outField.fieldTag().name();
84 this->utils.setFieldData(
inField,fm);
85 this->utils.setFieldData(
outField,fm);
91 std::vector<int> indices;
97 fieldPattern_->getSubcellClosureIndices(workset.subcell_dim,this->wda(workset).subcell_index,indices);
99 indices =
fieldPattern_->getSubcellIndices(workset.subcell_dim,this->wda(workset).subcell_index);
101 for(index_t c=0;c<workset.num_cells;c++) {
105 for(std::size_t i=0;i<indices.size();i++)
114 template<
typename EvalT,
typename TRAITS>
115 Teuchos::RCP<Teuchos::ParameterList>
118 Teuchos::RCP<Teuchos::ParameterList> p = Teuchos::rcp(
new Teuchos::ParameterList);
119 p->set<std::string>(
"Sum Name",
"?");
120 p->set<std::string>(
"Field Name",
"?");
121 p->set<
double>(
"Multiplier",1.0);
122 p->set<
bool>(
"Evaluate On Closure",
false);
124 Teuchos::RCP<const panzer::PureBasis>
basis;
125 p->set(
"Basis",
basis);
PHX::MDField< ScalarT, Cell, BASIS > inField
PHX::MDField< ScalarT, Cell > outField
Teuchos::RCP< Teuchos::ParameterList > getValidParameters() const
PHX_EVALUATOR_CTOR(BasisValues_Evaluator, p)
PHX_EVALUATE_FIELDS(BasisValues_Evaluator, workset)
Teuchos::RCP< const panzer::PureBasis > basis
Interpolates basis DOF values to IP DOF values.
Teuchos::RCP< const panzer::FieldPattern > fieldPattern_
PHX_POST_REGISTRATION_SETUP(BasisValues_Evaluator, sd, fm)