43#ifndef __Panzer_Integrator_GradBasisDotVector_decl_hpp__
44#define __Panzer_Integrator_GradBasisDotVector_decl_hpp__
60#include "Phalanx_Evaluator_Derived.hpp"
61#include "Phalanx_MDField.hpp"
77 template<
typename EvalT,
typename Traits>
81 public PHX::EvaluatorDerived<EvalT, Traits>
127 const std::string& resName,
128 const std::string& fluxName,
132 const std::vector<std::string>& fmNames =
133 std::vector<std::string>(),
134 const Teuchos::RCP<PHX::DataLayout>& vecDL = Teuchos::null);
183 const Teuchos::ParameterList& p);
219 template<
int NUM_FIELD_MULT>
227 template<
int NUM_FIELD_MULT>
246 template<
int NUM_FIELD_MULT>
247 KOKKOS_INLINE_FUNCTION
251 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const;
269 template<
int NUM_FIELD_MULT>
270 KOKKOS_INLINE_FUNCTION
274 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const;
288 Teuchos::RCP<Teuchos::ParameterList>
297 using scratch_view = Kokkos::View<ScalarT* ,typename PHX::DevLayout<ScalarT>::type,
typename PHX::exec_space::scratch_memory_space,Kokkos::MemoryUnmanaged>;
314 PHX::MDField<ScalarT, panzer::Cell, panzer::BASIS>
field_;
320 PHX::MDField<const ScalarT, panzer::Cell, panzer::IP, panzer::Dim>
333 std::vector<PHX::MDField<const ScalarT, panzer::Cell, panzer::IP>>
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::View< ScalarT * > tmp_
Temporary used when shared memory is disabled.
PHX::MDField< ScalarT, panzer::Cell, panzer::BASIS > field_
A field to which we'll contribute, or in which we'll store, the result of computing this integral.
double multiplier_
The scalar multiplier out in front of the integral ( ).
Teuchos::RCP< Teuchos::ParameterList > getValidParameters() const
Get Valid Parameters.
std::vector< PHX::MDField< const ScalarT, panzer::Cell, panzer::IP > > fieldMults_
The (possibly empty) list of fields that are multipliers out in front of the integral ( ,...
Integrator_GradBasisDotVector(const panzer::EvaluatorStyle &evalStyle, const std::string &resName, const std::string &fluxName, const panzer::BasisIRLayout &basis, const panzer::IntegrationRule &ir, const double &multiplier=1, const std::vector< std::string > &fmNames=std::vector< std::string >(), const Teuchos::RCP< PHX::DataLayout > &vecDL=Teuchos::null)
Main Constructor.
Kokkos::View< ScalarT *,typename PHX::DevLayout< ScalarT >::type, typename PHX::exec_space::scratch_memory_space, Kokkos::MemoryUnmanaged > scratch_view
Type for shared memory.
typename EvalT::ScalarT ScalarT
The scalar type.
void postRegistrationSetup(typename Traits::SetupData d, PHX::FieldManager< Traits > &fm)
Post-Registration Setup.
PHX::MDField< const ScalarT, panzer::Cell, panzer::IP, panzer::Dim > vector_
A field representing the vector-valued function we're integrating ( ).
const panzer::EvaluatorStyle evalStyle_
An enum determining the behavior of this Evaluator.
std::string basisName_
The name of the basis we're using.
PHX::View< PHX::UnmanagedView< const ScalarT ** > * > kokkosFieldMults_
The PHX::View representation of the (possibly empty) list of fields that are multipliers out in front...
KOKKOS_INLINE_FUNCTION void operator()(const FieldMultTag< NUM_FIELD_MULT > &tag, const Kokkos::TeamPolicy< PHX::exec_space >::member_type &team) const
Perform the integration.
PHX::MDField< double, panzer::Cell, panzer::BASIS, panzer::IP, panzer::Dim > basis_
The gradient vector basis information necessary for integration.
void evaluateFields(typename Traits::EvalData d)
Evaluate Fields.
std::size_t basisIndex_
The index in the Workset bases for our particular BasisIRLayout name.
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....