11#ifndef PANZER_EVALUATOR_SUM_HPP
12#define PANZER_EVALUATOR_SUM_HPP
14#include "Phalanx_Evaluator_Macros.hpp"
15#include "Phalanx_MDField.hpp"
34template<
typename EvalT,
typename Traits>
38 public PHX::EvaluatorDerived<EvalT, Traits>
43 const Teuchos::ParameterList& p);
59 PHX::MDField<ScalarT>
sum;
68 template<
unsigned int RANK>
71 template<
unsigned int RANK>
72 KOKKOS_INLINE_FUNCTION
81template<
typename EvalT,
typename TRAITS,
typename Tag0,
typename Tag1=
void,
typename Tag2=
void>
83 public PHX::EvaluatorDerived<EvalT, TRAITS> {
91template<
typename EvalT,
typename TRAITS,
typename Tag0>
93 public PHX::EvaluatorDerived<EvalT, TRAITS> {
95 SumStatic(
const Teuchos::ParameterList& p);
100 PHX::MDField<ScalarT,Tag0>
sum;
101 std::vector< PHX::MDField<const ScalarT,Tag0> >
values;
104template<
typename EvalT,
typename TRAITS,
typename Tag0,
typename Tag1>
106 public PHX::EvaluatorDerived<EvalT, TRAITS> {
108 SumStatic(
const Teuchos::ParameterList& p);
120 SumStatic(
const std::vector<PHX::Tag<typename EvalT::ScalarT>> & inputs,
121 const std::vector<double> & scalar_values,
122 const PHX::Tag<typename EvalT::ScalarT> & output);
123 void postRegistrationSetup(
typename TRAITS::SetupData d,
127 struct ScalarsTag {};
128 KOKKOS_INLINE_FUNCTION
129 void operator()(
const ScalarsTag,
const unsigned c)
const;
131 struct NoScalarsTag {};
132 KOKKOS_INLINE_FUNCTION
133 void operator()(
const NoScalarsTag,
const unsigned c)
const;
138 PHX::MDField<ScalarT,Tag0,Tag1>
sum;
139 std::vector< PHX::MDField<const ScalarT,Tag0,Tag1> >
values;
144 enum {MAX_VALUES=20};
146 PHX::View<const ScalarT**> value_views[MAX_VALUES];
171template<
typename EvalT,
typename TRAITS,
typename Tag0,
typename Tag1,
typename Tag2>
172Teuchos::RCP<PHX::Evaluator<TRAITS> >
174 const std::vector<std::string> & value_names,
175 const Teuchos::RCP<PHX::DataLayout> & data_layout);
Wrapper to PHX::EvaluatorWithBaseImpl that implements Panzer-specific helpers.
PHX::View< const double * > scalars
std::vector< PHX::MDField< const ScalarT, Tag0, Tag1 > > values
PHX::MDField< const ScalarT, Tag0, Tag1 > current_value
PHX::MDField< ScalarT, Tag0, Tag1 > sum
PHX::MDField< ScalarT, Tag0 > sum
std::vector< PHX::MDField< const ScalarT, Tag0 > > values
SumStatic(const Teuchos::ParameterList &p)
void evaluateFields(typename TRAITS::EvalData d)
PHX::View< const double * > scalars
static const int MAX_VALUES
KOKKOS_INLINE_FUNCTION void operator()(PanzerSumTag< RANK >, const int &i) const
PHX::MDField< const ScalarT > values[MAX_VALUES]
std::size_t cell_data_size
typename EvalT::ScalarT ScalarT
void evaluateFields(typename Traits::EvalData d)
PHX::MDField< ScalarT > sum
void postRegistrationSetup(typename Traits::SetupData d, PHX::FieldManager< Traits > &fm)
Teuchos::RCP< PHX::Evaluator< TRAITS > > buildStaticSumEvaluator(const std::string &sum_name, const std::vector< std::string > &value_names, const Teuchos::RCP< PHX::DataLayout > &data_layout)