43 #ifndef PANZER_PRODUCT_IMPL_HPP
44 #define PANZER_PRODUCT_IMPL_HPP
53 template<
typename EvalT,
typename Traits>
59 std::string product_name = p.
get<std::string>(
"Product Name");
65 if(p.
isType<
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]);
T & get(const std::string &name, T def_value)
Product(const Teuchos::ParameterList &p)
PHX::MDField< ScalarT > product
bool isType(const std::string &name) const
std::vector< PHX::MDField< const ScalarT > > values
typename EvalT::ScalarT ScalarT
void evaluateFields(typename Traits::EvalData d)