43 #ifndef PANZER_EVALUATOR_SUM_HPP
44 #define PANZER_EVALUATOR_SUM_HPP
46 #include "Phalanx_Evaluator_Macros.hpp"
47 #include "Phalanx_MDField.hpp"
69 PHX::MDField<ScalarT>
sum;
72 PHX::MDField<const ScalarT>
values[MAX_VALUES];
73 Kokkos::View<const
double *,PHX::Device>
scalars;
78 template<
unsigned int RANK>
81 template<
unsigned int RANK>
89 template<
typename EvalT,
typename TRAITS,
typename Tag0,
typename Tag1=
void,
typename Tag2=
void>
91 public PHX::EvaluatorDerived<EvalT, TRAITS> {
101 template<
typename EvalT,
typename TRAITS,
typename Tag0>
103 public PHX::EvaluatorDerived<EvalT, TRAITS> {
112 PHX::MDField<ScalarT,Tag0>
sum;
113 std::vector< PHX::MDField<const ScalarT,Tag0> >
values;
116 template<
typename EvalT,
typename TRAITS,
typename Tag0,
typename Tag1>
118 public PHX::EvaluatorDerived<EvalT, TRAITS> {
125 struct ScalarsTag {};
126 KOKKOS_INLINE_FUNCTION
127 void operator()(
const ScalarsTag,
const unsigned c)
const;
129 struct NoScalarsTag {};
130 KOKKOS_INLINE_FUNCTION
131 void operator()(
const NoScalarsTag,
const unsigned c)
const;
136 PHX::MDField<ScalarT,Tag0,Tag1>
sum;
137 std::vector< PHX::MDField<const ScalarT,Tag0,Tag1> >
values;
144 Kokkos::View<const ScalarT**,PHX::Device> value_views[
MAX_VALUES];
145 Kokkos::View<const double*,PHX::Device>
scalars;
171 template<
typename EvalT,
typename TRAITS,
typename Tag0,
typename Tag1,
typename Tag2>
174 const std::vector<std::string> & value_names,
PHX::MDField< ScalarT > sum
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)
Kokkos::View< const double *, PHX::Device > scalars
#define PANZER_EVALUATOR_CLASS(NAME)
Macro definition of an evaluator class.
std::size_t cell_data_size
PHX::MDField< const ScalarT, Tag0, Tag1 > current_value
SumStatic(const Teuchos::ParameterList &p)
Kokkos::View< const double *, PHX::Device > scalars
std::vector< PHX::MDField< const ScalarT, Tag0 > > values
void operator()(const size_t &cell) const
Wrapper to PHX::EvaluatorWithBaseImpl that implements Panzer-specific helpers.
std::vector< ScalarT > values
#define PANZER_EVALUATOR_CLASS_END
Macro definition to end an evaluator class declaration.
PHX::MDField< ScalarT, Tag0, Tag1 > sum
static const int MAX_VALUES
void evaluateFields(typename TRAITS::EvalData d)
void postRegistrationSetup(typename TRAITS::SetupData d, PHX::FieldManager< TRAITS > &fm)
std::vector< PHX::MDField< const ScalarT, Tag0, Tag1 > > values
PHX::MDField< ScalarT, Tag0 > sum