1 #ifndef VERTEXCFD_INTEGRATOR_BOUNDARYGRADBASISDOTVECTOR_HPP
2 #define VERTEXCFD_INTEGRATOR_BOUNDARYGRADBASISDOTVECTOR_HPP
4 #include <Panzer_EvaluatorStyle.hpp>
5 #include <Panzer_Evaluator_WithBaseImpl.hpp>
7 #include <Phalanx_Evaluator_Derived.hpp>
8 #include <Phalanx_MDField.hpp>
24 template<
typename EvalType,
typename Traits>
26 :
public panzer::EvaluatorWithBaseImpl<Traits>,
27 public PHX::EvaluatorDerived<EvalType, Traits>
31 const std::string& res_name,
32 const std::string& flux_name,
33 const panzer::BasisIRLayout& basis,
34 const panzer::IntegrationRule& ir,
35 const double& multiplier = 1,
36 const std::vector<std::string>& fm_names
37 = std::vector<std::string>{});
39 void postRegistrationSetup(
typename Traits::SetupData d,
40 PHX::FieldManager<Traits>& fm);
42 void evaluateFields(
typename Traits::EvalData d);
45 template<
int NUM_FIELD_MULT>
50 template<
int NUM_FIELD_MULT>
51 KOKKOS_INLINE_FUNCTION
void operator()(
53 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const;
56 template<
int NUM_FIELD_MULT>
61 template<
int NUM_FIELD_MULT>
62 KOKKOS_INLINE_FUNCTION
void operator()(
64 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const;
67 Teuchos::RCP<Teuchos::ParameterList> getValidParameters()
const;
69 using ScalarT =
typename EvalType::ScalarT;
71 = Kokkos::View<ScalarT*,
72 typename PHX::DevLayout<ScalarT>::type,
73 typename PHX::exec_space::scratch_memory_space,
74 Kokkos::MemoryUnmanaged>;
76 const panzer::EvaluatorStyle _eval_style;
78 std::string _basis_name;
79 std::size_t _basis_index;
81 PHX::MDField<ScalarT, panzer::Cell, panzer::BASIS> _field;
82 PHX::MDField<ScalarT, panzer::Cell, panzer::BASIS, panzer::Point, panzer::Dim>
85 std::vector<PHX::MDField<const ScalarT, panzer::Cell, panzer::Point>>
87 Kokkos::View<Kokkos::View<
const ScalarT**,
88 typename PHX::DevLayout<ScalarT>::type,
92 PHX::MDField<const ScalarT, panzer::Cell, panzer::Point, panzer::Dim> _vector;
93 PHX::MDField<const ScalarT, panzer::Cell, panzer::Point, panzer::Dim> _normals;
94 PHX::MDField<const double, panzer::Cell, panzer::BASIS, panzer::Point, panzer::Dim>
103 #endif // VERTEXCFD_INTEGRATOR_BOUNDARYGRADBASISDOTVECTOR_HPP