43 #ifndef PANZER_DIRICHLET_RESIDUAL_FACEBASIS_IMPL_HPP 44 #define PANZER_DIRICHLET_RESIDUAL_FACEBASIS_IMPL_HPP 50 #include "Intrepid2_CellTools.hpp" 53 #include "Kokkos_ViewFactory.hpp" 60 std::string residual_name = p.get<std::string>(
"Residual Name");
65 std::string field_name = p.
get<std::string>(
"DOF Name");
67 std::string value_name = p.get<std::string>(
"Value Name");
75 TEUCHOS_ASSERT(basis_layout->dimension(0)==vector_layout_dof->dimension(0));
76 TEUCHOS_ASSERT(basis_layout->dimension(1)==vector_layout_dof->dimension(1));
78 TEUCHOS_ASSERT(vector_layout_vector->dimension(0)==vector_layout_dof->dimension(0));
79 TEUCHOS_ASSERT(vector_layout_vector->dimension(1)==vector_layout_dof->dimension(1));
80 TEUCHOS_ASSERT(vector_layout_vector->dimension(2)==vector_layout_dof->dimension(2));
82 residual = PHX::MDField<ScalarT,Cell,BASIS>(residual_name, basis_layout);
83 dof = PHX::MDField<const ScalarT,Cell,Point,Dim>(dof_name, vector_layout_dof);
84 value = PHX::MDField<const ScalarT,Cell,Point,Dim>(value_name, vector_layout_vector);
102 this->addDependentField(
dof);
104 this->addDependentField(
value);
106 std::string n =
"Dirichlet Residual Face Basis Evaluator";
113 this->utils.setFieldData(
residual,fm);
114 this->utils.setFieldData(
dof,fm);
116 this->utils.setFieldData(
value,fm);
125 if(workset.num_cells<=0)
128 Intrepid2::CellTools<ScalarT>::getPhysicalFaceNormals(
faceNormal,
130 this->wda(workset).subcell_index,
133 for(index_t c=0;c<workset.num_cells;c++) {
134 for(
int b=0;b<
dof.extent_int(1);b++) {
136 for(
int d=0;d<
dof.extent_int(2);d++)
PHX::MDField< ScalarT > residual
Evaluates a Dirichlet BC residual corresponding to a field value.
PointValues2< ScalarT, PHX::MDField > pointValues
Interpolates basis DOF values to IP DOF values.
bool isVectorBasis() const
Kokkos::DynRankView< typename InputArray::value_type, PHX::Device > createDynRankView(const InputArray &a, const std::string &name, const DimensionPack... dims)
Wrapper to simplify Panzer use of Sacado ViewFactory.
PHX::MDField< const ScalarT > dof
Teuchos::RCP< const panzer::PointRule > pointRule
Teuchos::RCP< PHX::DataLayout > functional_grad
<Cell,Basis,Dim>
int dimension() const
Returns the dimension of the basis from the topology.
PHX_EVALUATOR_CTOR(BasisValues_Evaluator, p)
PHX_EVALUATE_FIELDS(BasisValues_Evaluator, workset)
Teuchos::RCP< PHX::DataLayout > dl_vector
Data layout for vector fields.
Teuchos::RCP< const shards::CellTopology > getCellTopology() const
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
#define TEUCHOS_ASSERT(assertion_test)
Teuchos::RCP< PHX::DataLayout > functional
<Cell,Basis> or <Cell,Basis>
PHX_POST_REGISTRATION_SETUP(BasisValues_Evaluator, sd, fm)
Kokkos::DynRankView< ScalarT, PHX::Device > faceNormal