11 #ifndef PANZER_PointValues_Evaluator_IMPL_HPP
12 #define PANZER_PointValues_Evaluator_IMPL_HPP
22 template<
typename EvalT,
typename Traits>
34 initialize(pointRule,userArray.
ptr(),Teuchos::null);
38 template <
typename EvalT,
typename TRAITST>
40 const Kokkos::DynRankView<double,PHX::Device> & userArray)
44 initialize(pointRule,Teuchos::ptrFromRef(userArray),Teuchos::null);
48 template <
typename EvalT,
typename TRAITST>
54 initialize(pointRule,Teuchos::ptrFromRef(userArray),Teuchos::null);
58 template <
typename EvalT,
typename TRAITST>
65 initialize(pointRule,userArray,pureBasis);
69 template <
typename EvalT,
typename TRAITST>
70 template <
typename ArrayT>
77 if(userArray!=Teuchos::null && basis==Teuchos::null)
78 useBasisValuesRefArray =
false;
79 else if(userArray==Teuchos::null && basis!=Teuchos::null)
80 useBasisValuesRefArray =
true;
87 if(userArray!=Teuchos::null) {
91 refPointArray = md_af.buildStaticArray<double,
NODE,
Dim>(
"refPointArray",userArray->extent(0),userArray->extent(1));
92 Kokkos::deep_copy(PHX::as_view(refPointArray), PHX::as_view(*userArray));
101 this->addEvaluatedField(pointValues.coords_ref);
102 this->addEvaluatedField(pointValues.node_coordinates);
103 this->addEvaluatedField(pointValues.jac);
104 this->addEvaluatedField(pointValues.jac_inv);
105 this->addEvaluatedField(pointValues.jac_det);
106 this->addEvaluatedField(pointValues.point_coords);
108 std::string n =
"PointValues_Evaluator: " + pointRule->
getName();
113 template<
typename EvalT,
typename Traits>
121 this->utils.setFieldData(pointValues.coords_ref,fm);
122 this->utils.setFieldData(pointValues.node_coordinates,fm);
123 this->utils.setFieldData(pointValues.jac,fm);
124 this->utils.setFieldData(pointValues.jac_inv,fm);
125 this->utils.setFieldData(pointValues.jac_det,fm);
126 this->utils.setFieldData(pointValues.point_coords,fm);
128 if(useBasisValuesRefArray) {
138 template<
typename EvalT,
typename Traits>
144 if(useBasisValuesRefArray) {
148 pointValues.
evaluateValues(this->wda(workset).cell_node_coordinates,
154 pointValues.evaluateValues(this->wda(workset).cell_node_coordinates,refPointArray,
PointValues_Evaluator(const Teuchos::ParameterList &p)
int num_cells
DEPRECATED - use: numCells()
T & get(const std::string &name, T def_value)
void postRegistrationSetup(typename Traits::SetupData d, PHX::FieldManager< Traits > &fm)
const std::string & getName() const
void setupArrays(const Teuchos::RCP< const panzer::PointRule > &pr)
Sizes/allocates memory for arrays.
void initialize(const Teuchos::RCP< const panzer::PointRule > &pointRule, const Teuchos::Ptr< const ArrayT > &userArray, const Teuchos::RCP< const panzer::PureBasis > &pureBasis)
Initialization method to unify the constructors.
void evaluateFields(typename Traits::EvalData d)
std::vector< std::string >::size_type getPureBasisIndex(std::string basis_name, const panzer::Workset &workset, WorksetDetailsAccessor &wda)
Returns the index in the workset bases for a particular PureBasis name.
Array_BasisDim basis_coordinates_ref
#define TEUCHOS_ASSERT(assertion_test)
void evaluateValues(const PHX::MDField< Scalar, IP, Dim > &cub_points, const PHX::MDField< Scalar, Cell, IP, Dim, Dim > &jac, const PHX::MDField< Scalar, Cell, IP > &jac_det, const PHX::MDField< Scalar, Cell, IP, Dim, Dim > &jac_inv, const int in_num_cells=-1)
Teuchos::RCP< const std::vector< panzer::Workset > > worksets_