43 #ifndef PANZER_BasisValues_Evaluator_IMPL_HPP 44 #define PANZER_BasisValues_Evaluator_IMPL_HPP 62 bool derivativesRequired =
true;
63 if(p.isType<
bool>(
"Derivatives Required"))
64 derivativesRequired = p.
get<
bool>(
"Derivatives Required");
70 template <
typename EvalT,
typename TRAITST>
75 bool derivativesRequired =
true;
80 template <
typename EvalT,
typename TRAITST>
83 bool derivativesRequired)
90 template <
typename EvalT,
typename TRAITST>
93 bool derivativesRequired)
119 this->addEvaluatedField(
basisValues->basis_ref_scalar);
120 this->addEvaluatedField(
basisValues->basis_scalar);
122 if(derivativesRequired) {
123 this->addEvaluatedField(
basisValues->grad_basis_ref);
129 this->addEvaluatedField(
basisValues->basis_ref_vector);
130 this->addEvaluatedField(
basisValues->basis_vector);
132 if(derivativesRequired && space_dim==2) {
133 this->addEvaluatedField(
basisValues->curl_basis_ref_scalar);
134 this->addEvaluatedField(
basisValues->curl_basis_scalar);
136 else if(derivativesRequired && space_dim==3) {
137 this->addEvaluatedField(
basisValues->curl_basis_ref_vector);
138 this->addEvaluatedField(
basisValues->curl_basis_vector);
143 this->addEvaluatedField(
basisValues->basis_ref_vector);
144 this->addEvaluatedField(
basisValues->basis_vector);
146 if(derivativesRequired) {
147 this->addEvaluatedField(
basisValues->div_basis_ref);
155 std::string orientationFieldName =
basis->
name()+
" Orientation";
156 orientation = PHX::MDField<ScalarT,panzer::Cell,panzer::BASIS>(orientationFieldName,
170 basisValues->setExtendedDimensions(fm.template getKokkosExtendedDataTypeDimensions<EvalT>());
181 this->utils.setFieldData(
basisValues->basis_ref_scalar,fm);
182 this->utils.setFieldData(
basisValues->basis_scalar,fm);
185 this->utils.setFieldData(
basisValues->grad_basis_ref,fm);
186 this->utils.setFieldData(
basisValues->grad_basis,fm);
191 this->utils.setFieldData(
basisValues->basis_ref_vector,fm);
192 this->utils.setFieldData(
basisValues->basis_vector,fm);
195 this->utils.setFieldData(
basisValues->curl_basis_ref_scalar,fm);
196 this->utils.setFieldData(
basisValues->curl_basis_scalar,fm);
199 this->utils.setFieldData(
basisValues->curl_basis_ref_vector,fm);
200 this->utils.setFieldData(
basisValues->curl_basis_vector,fm);
205 this->utils.setFieldData(
basisValues->basis_ref_vector,fm);
206 this->utils.setFieldData(
basisValues->basis_vector,fm);
209 this->utils.setFieldData(
basisValues->div_basis_ref,fm);
210 this->utils.setFieldData(
basisValues->div_basis,fm);
std::string name() const
A unique key that is the combination of the basis type and basis order.
PHX::MDField< ScalarT, panzer::Cell, panzer::BASIS > orientation
Array< Scalar, Cell, IP, Dim, Dim, void, void, void, void > jac_inv
BasisValues_Evaluator(const Teuchos::RCP< const panzer::PointRule > &pointRule, const Teuchos::RCP< const panzer::PureBasis > &basis)
PointValues2< ScalarT, PHX::MDField > pointValues
Interpolates basis DOF values to IP DOF values.
bool derivativesRequired_
void initialize(const Teuchos::RCP< const panzer::PointRule > &pointRule, const Teuchos::RCP< const panzer::PureBasis > &basis, bool derivativesRequired)
Initialization method to unify the constructors.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Teuchos::RCP< const panzer::PointRule > pointRule
EElementSpace getElementSpace() const
Array< Scalar, Cell, IP, void, void, void, void, void, void > jac_det
int dimension() const
Returns the dimension of the basis from the topology.
PHX_EVALUATOR_CTOR(BasisValues_Evaluator, p)
Teuchos::RCP< BasisValues2< ScalarT > > basisValues
PHX_EVALUATE_FIELDS(BasisValues_Evaluator, workset)
Teuchos::RCP< const panzer::PureBasis > basis
Interpolates basis DOF values to IP DOF values.
Array< Scalar, Cell, IP, Dim, Dim, void, void, void, void > jac
void setupArrays(const Teuchos::RCP< const panzer::PointRule > &pr, const ArrayFactory &af)
Sizes/allocates memory for arrays.
const std::string & getName() const
Teuchos::RCP< PHX::DataLayout > functional
<Cell,Basis> or <Cell,Basis>
PHX_POST_REGISTRATION_SETUP(BasisValues_Evaluator, sd, fm)
Array< Scalar, IP, Dim, void, void, void, void, void, void > coords_ref