11#ifndef __Panzer_Integrator_DivBasisTimesScalar_hpp__
12#define __Panzer_Integrator_DivBasisTimesScalar_hpp__
24#include "Kokkos_DynRankView.hpp"
31#include "Phalanx_Evaluator_Derived.hpp"
32#include "Phalanx_MDField.hpp"
48 template<
typename EvalT,
typename Traits>
52 public PHX::EvaluatorDerived<EvalT, Traits>
92 const std::string& resName,
93 const std::string& valName,
97 const std::vector<std::string>& fmNames =
98 std::vector<std::string>());
144 const Teuchos::ParameterList& p);
178 template<
int NUM_FIELD_MULT>
187 template<
int NUM_FIELD_MULT>
207 template<
int NUM_FIELD_MULT>
208 KOKKOS_INLINE_FUNCTION
212 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const;
229 template<
int NUM_FIELD_MULT>
230 KOKKOS_INLINE_FUNCTION
234 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const;
256 using scratch_view = Kokkos::View<ScalarT* ,typename PHX::DevLayout<ScalarT>::type,
typename PHX::exec_space::scratch_memory_space,Kokkos::MemoryUnmanaged>;
272 PHX::MDField<ScalarT, Cell, BASIS>
field_;
278 PHX::MDField<const ScalarT, Cell, IP>
scalar_;
318 PHX::MDField<double, panzer::Cell, panzer::BASIS, panzer::IP>
basis_;
panzer::EvaluatorStyle evalStyle
The EvaluatorStyle of the parent Integrator_CurlBasisDotVector object.
double multiplier
The scalar multiplier out in front of the integral ( ).
Wrapper to PHX::EvaluatorWithBaseImpl that implements Panzer-specific helpers.
PHX::MDField< const ScalarT, Cell, IP > scalar_
A field representing the scalar function we're integrating ( ).
Teuchos::RCP< Teuchos::ParameterList > getValidParameters() const
Get Valid Parameters.
PHX::MDField< double, panzer::Cell, panzer::BASIS, panzer::IP > basis_
The scalar basis information necessary for integration.
std::size_t numQP_
The number of quadrature points for each cell.
KOKKOS_INLINE_FUNCTION void operator()(const FieldMultTag< NUM_FIELD_MULT > &tag, const Kokkos::TeamPolicy< PHX::exec_space >::member_type &team) const
Perform the integration. Main memory version.
void postRegistrationSetup(typename Traits::SetupData d, PHX::FieldManager< Traits > &fm)
Post-Registration Setup.
Kokkos::View< ScalarT *,typename PHX::DevLayout< ScalarT >::type, typename PHX::exec_space::scratch_memory_space, Kokkos::MemoryUnmanaged > scratch_view
Type for shared memory.
std::string basisName_
The name of the basis we're using.
void evaluateFields(typename Traits::EvalData d)
Evaluate Fields.
PHX::View< ScalarT * > tmp_
Temporary for non-shared calculations.
const panzer::EvaluatorStyle evalStyle_
An enum determining the behavior of this Evaluator.
double multiplier_
The scalar multiplier out in front of the integral ( ).
std::size_t basisIndex_
The index in the Workset bases for our particular BasisIRLayout name.
PHX::MDField< ScalarT, Cell, BASIS > field_
A field to which we'll contribute, or in which we'll store, the result of computing this integral.
PHX::View< PHX::UnmanagedView< const ScalarT ** > * > kokkosFieldMults_
The PHX::View representation of the (possibly empty) list of fields that are multipliers out in front...
typename EvalT::ScalarT ScalarT
The scalar type.
std::vector< PHX::MDField< const ScalarT, Cell, IP > > fieldMults_
The (possibly empty) list of fields that are multipliers out in front of the integral ( ,...
EvaluatorStyle
An indication of how an Evaluator will behave.
This empty struct allows us to optimize operator()() depending on the number of field multipliers.
This empty struct allows us to optimize operator()() depending on the number of field multipliers.