43 #ifndef PANZER_BasisValues_Evaluator_IMPL_HPP 44 #define PANZER_BasisValues_Evaluator_IMPL_HPP 57 Teuchos::RCP<const panzer::PointRule>
pointRule 58 = p.get< Teuchos::RCP<const panzer::PointRule> >(
"Point Rule");
59 Teuchos::RCP<const panzer::PureBasis> inBasis
60 = p.get<Teuchos::RCP<const panzer::PureBasis> >(
"Basis");
62 bool derivativesRequired =
true;
63 if(p.isType<
bool>(
"Derivatives Required"))
64 derivativesRequired = p.get<
bool>(
"Derivatives Required");
70 template <
typename EvalT,
typename TRAITST>
72 const Teuchos::RCP<const panzer::PureBasis> & inBasis)
75 bool derivativesRequired =
true;
80 template <
typename EvalT,
typename TRAITST>
82 const Teuchos::RCP<const panzer::PureBasis> & inBasis,
83 bool derivativesRequired)
90 template <
typename EvalT,
typename TRAITST>
92 const Teuchos::RCP<const panzer::PureBasis> & inBasis,
93 bool derivativesRequired)
98 int space_dim =
basis->dimension();
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,
161 std::string n =
"BasisValues_Evaluator: " +
basis->name() +
"_" +
pointRule->getName();
168 int space_dim =
basis->dimension();
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);
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::RCP< const panzer::PointRule > pointRule
Array< Scalar, Cell, IP, void, void, void, void, void, void > jac_det
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.
PHX_POST_REGISTRATION_SETUP(BasisValues_Evaluator, sd, fm)
Array< Scalar, IP, Dim, void, void, void, void, void, void > coords_ref