43 #ifndef PANZER_EVALUATOR_GRADBASISCROSSVECTOR_DECL_HPP
44 #define PANZER_EVALUATOR_GRADBASISCROSSVECTOR_DECL_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>
135 const std::vector<std::string>& resNames,
136 const std::string& vecName,
140 const std::vector<std::string>& fmNames =
141 std::vector<std::string>(),
142 const Teuchos::RCP<PHX::DataLayout>& vecDL = Teuchos::null);
191 const Teuchos::ParameterList& p);
225 template<
int NUM_FIELD_MULT>
245 template<
int NUM_FIELD_MULT>
246 KOKKOS_INLINE_FUNCTION
250 const std::size_t& cell)
const;
264 Teuchos::RCP<Teuchos::ParameterList>
286 Kokkos::View<PHX::MDField<ScalarT, Cell, BASIS>*>
fields_;
292 PHX::MDField<const ScalarT, Cell, IP, Dim>
vector_;
311 Kokkos::View<Kokkos::View<
const ScalarT**,
312 typename PHX::DevLayout<ScalarT>::type, PHX::Device>*>
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, Dim > vector_
A field representing the vector-valued function we're integrating ( ).
Teuchos::RCP< Teuchos::ParameterList > getValidParameters() const
Get Valid Parameters.
std::vector< PHX::MDField< const ScalarT, Cell, IP > > fieldMults_
The (possibly empty) list of fields that are multipliers out in front of the integral ( ,...
void evaluateFields(typename Traits::EvalData d)
Evaluate Fields.
void postRegistrationSetup(typename Traits::SetupData d, PHX::FieldManager< Traits > &fm)
Post-Registration Setup.
std::size_t basisIndex_
The index in the Workset bases for our particular BasisIRLayout name.
typename EvalT::ScalarT ScalarT
The scalar type.
Kokkos::View< PHX::MDField< ScalarT, Cell, BASIS > * > fields_
The fields to which we'll contribute, or in which we'll store, the result of computing this integral.
std::string basisName_
The name of the basis we're using.
PHX::MDField< double, panzer::Cell, panzer::BASIS, panzer::IP, panzer::Dim > basis_
The gradient vector basis information necessary for integration.
double multiplier_
The scalar multiplier out in front of the integral ( ).
Integrator_GradBasisCrossVector(const panzer::EvaluatorStyle &evalStyle, const std::vector< std::string > &resNames, const std::string &vecName, 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< Kokkos::View< const ScalarT **, typename PHX::DevLayout< ScalarT >::type, PHX::Device > * > kokkosFieldMults_
The Kokkos::View representation of the (possibly empty) list of fields that are multipliers out in fr...
const panzer::EvaluatorStyle evalStyle_
An enum determining the behavior of this Evaluator.
int numDims_
The number of dimensions associated with the vector.
KOKKOS_INLINE_FUNCTION void operator()(const FieldMultTag< NUM_FIELD_MULT > &tag, const std::size_t &cell) const
Perform the integration.
int numGradDims_
The number of dimensions associated with the gradient.
EvaluatorStyle
An indication of how an Evaluator will behave.
This empty struct allows us to optimize operator()() depending on the number of field multipliers.