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>
295 PHX::MDField<const ScalarT, Cell, IP, Dim>
vector_;
341 PHX::MDField<double, panzer::Cell, panzer::BASIS, panzer::IP, panzer::Dim>
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, Dim > vector_
A field representing the vector-valued function we're integrating ( ).
PHX::View< InnerView * > OuterView
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.
PHX::View< PHX::UnmanagedView< const ScalarT ** > * > kokkosFieldMults_
The PHX::View representation of the (possibly empty) list of fields that are multipliers out in front...
PHX::UnmanagedView< ScalarT ** > InnerView
std::size_t basisIndex_
The index in the Workset bases for our particular BasisIRLayout name.
typename EvalT::ScalarT ScalarT
The scalar type.
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 ( ).
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.
std::vector< PHX::MDField< ScalarT, Cell, BASIS > > fields_host_
The fields to which we'll contribute, or in which we'll store, the result of computing this integral.
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.