43 #ifndef PANZER_PRODUCT_IMPL_HPP 44 #define PANZER_PRODUCT_IMPL_HPP 53 template<
typename EvalT,
typename Traits>
56 const Teuchos::ParameterList& p)
59 std::string product_name = p.get<std::string>(
"Product Name");
60 Teuchos::RCP<std::vector<std::string> > value_names =
61 p.get<Teuchos::RCP<std::vector<std::string> > >(
"Values Names");
62 Teuchos::RCP<PHX::DataLayout> data_layout =
63 p.get< Teuchos::RCP<PHX::DataLayout> >(
"Data Layout");
65 if(p.isType<
double>(
"Scaling"))
66 scaling = p.get<
double>(
"Scaling");
68 product = PHX::MDField<ScalarT>(product_name, data_layout);
70 this->addEvaluatedField(
product);
72 values.resize(value_names->size());
73 for (std::size_t i=0; i < value_names->size(); ++i) {
74 values[i] = PHX::MDField<const ScalarT>( (*value_names)[i], data_layout);
75 this->addDependentField(
values[i]);
78 std::string n =
"Product Evaluator";
83 template<
typename EvalT,
typename Traits>
89 product.deep_copy(
ScalarT(scaling));
90 for (std::size_t j = 0; j < values.size(); ++j)
91 product.V_Multiply(values[j]);
Product(const Teuchos::ParameterList &p)
PHX::MDField< ScalarT > product
std::vector< PHX::MDField< const ScalarT > > values
typename EvalT::ScalarT ScalarT
void evaluateFields(typename Traits::EvalData d)