43#ifndef __Panzer_Integrator_DivBasisTimesScalar_hpp__
44#define __Panzer_Integrator_DivBasisTimesScalar_hpp__
56#include "Kokkos_DynRankView.hpp"
63#include "Phalanx_Evaluator_Derived.hpp"
64#include "Phalanx_MDField.hpp"
80 template<
typename EvalT,
typename Traits>
84 public PHX::EvaluatorDerived<EvalT, Traits>
124 const std::string& resName,
125 const std::string& valName,
129 const std::vector<std::string>& fmNames =
130 std::vector<std::string>());
176 const Teuchos::ParameterList& p);
210 template<
int NUM_FIELD_MULT>
219 template<
int NUM_FIELD_MULT>
239 template<
int NUM_FIELD_MULT>
240 KOKKOS_INLINE_FUNCTION
244 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const;
261 template<
int NUM_FIELD_MULT>
262 KOKKOS_INLINE_FUNCTION
266 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const;
288 using scratch_view = Kokkos::View<ScalarT* ,typename PHX::DevLayout<ScalarT>::type,
typename PHX::exec_space::scratch_memory_space,Kokkos::MemoryUnmanaged>;
304 PHX::MDField<ScalarT, Cell, BASIS>
field_;
310 PHX::MDField<const ScalarT, Cell, IP>
scalar_;
350 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 ( ).
bool use_shared_memory
If set to true, device shared memory will be used.
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.