11#ifndef PANZER_EVALUATOR_GRADBASISCROSSVECTOR_DECL_HPP
12#define PANZER_EVALUATOR_GRADBASISCROSSVECTOR_DECL_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>
103 const std::vector<std::string>& resNames,
104 const std::string& vecName,
108 const std::vector<std::string>& fmNames =
109 std::vector<std::string>(),
110 const Teuchos::RCP<PHX::DataLayout>& vecDL = Teuchos::null);
159 const Teuchos::ParameterList& p);
193 template<
int NUM_FIELD_MULT>
213 template<
int NUM_FIELD_MULT>
214 KOKKOS_INLINE_FUNCTION
218 const std::size_t& cell)
const;
232 Teuchos::RCP<Teuchos::ParameterList>
263 PHX::MDField<const ScalarT, Cell, IP, Dim>
vector_;
309 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.