43 #ifndef PANZER_BASIS_VALUES2_HPP 
   44 #define PANZER_BASIS_VALUES2_HPP 
   48 #include "Intrepid2_Basis.hpp" 
   49 #include "Intrepid2_Orientation.hpp" 
   62   template <
typename Scalar>
 
   75     BasisValues2(
const std::string & pre=
"",
bool allocArrays=
false,
bool buildWeighted=
false) 
 
   81                      bool computeDerivatives=
true);
 
   83     void evaluateValues(
const PHX::MDField<Scalar,IP,Dim> & cub_points,
 
   84                         const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & 
jac,
 
   85                         const PHX::MDField<Scalar,Cell,IP> & jac_det,
 
   86                         const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & jac_inv,
 
   87                         const int in_num_cells = -1);
 
   89     void evaluateValues(
const PHX::MDField<Scalar,IP,Dim> & cub_points,
 
   90                         const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & 
jac,
 
   91                         const PHX::MDField<Scalar,Cell,IP> & jac_det,
 
   92                         const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & jac_inv,
 
   93                         const PHX::MDField<Scalar,Cell,IP> & weighted_measure,
 
   94                         const PHX::MDField<Scalar,Cell,NODE,Dim> & vertex_coordinates,
 
   95                         bool use_vertex_coordinates=
true,
 
   96                         const int in_num_cells = -1);
 
   98     void evaluateValuesCV(
const PHX::MDField<Scalar,Cell,IP,Dim> & cell_cub_points,
 
   99                           const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & 
jac,
 
  100                           const PHX::MDField<Scalar,Cell,IP> & jac_det,
 
  101                           const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & jac_inv);
 
  104     void evaluateValuesCV(
const PHX::MDField<Scalar,Cell,IP,Dim> & cell_cub_points,
 
  105                           const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & 
jac,
 
  106                           const PHX::MDField<Scalar,Cell,IP> & jac_det,
 
  107                           const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & jac_inv,
 
  108                           const PHX::MDField<Scalar,Cell,NODE,Dim> & vertex_coordinates,
 
  109                           bool use_vertex_coordinates=
true,
 
  110                           const int in_num_cells = -1);
 
  113     void evaluateValues(
const PHX::MDField<Scalar,Cell,IP,Dim> & cub_points,
 
  114                         const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & 
jac,
 
  115                         const PHX::MDField<Scalar,Cell,IP> & jac_det,
 
  116                         const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & jac_inv,
 
  117                         const PHX::MDField<Scalar,Cell,IP> & weighted_measure,
 
  118                         const PHX::MDField<Scalar,Cell,NODE,Dim> & vertex_coordinates,
 
  119                         bool use_vertex_coordinates=
true,
 
  120                         const int in_num_cells = -1);
 
  125     void applyOrientations(
const PHX::MDField<const Scalar,Cell,BASIS> & orientations);
 
  129                            const int in_num_cells = -1);
 
  183     std::vector<PHX::index_size_type> 
ddims_;
 
  189                               const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & jac_inv,
 
  190                               const PHX::MDField<Scalar,Cell,IP> & weighted_measure,
 
  191                               const int in_num_cells);
 
  194                              const PHX::MDField<Scalar,Cell,IP> & jac_det,
 
  195                              const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & jac_inv,
 
  196                              const PHX::MDField<Scalar,Cell,IP> & weighted_measure,
 
  197                              const int in_num_cells);
 
  200                               const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & jac_inv,
 
  201                               const PHX::MDField<Scalar,Cell,IP> & weighted_measure,
 
  202                               const int in_num_cells);
 
  205                               const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & 
jac,
 
  206                               const PHX::MDField<Scalar,Cell,IP> & jac_det,
 
  207                               const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & jac_inv,
 
  208                               const PHX::MDField<Scalar,Cell,IP> & weighted_measure,
 
  209                               const int in_num_cells);
 
  212                              const PHX::MDField<Scalar,Cell,IP,Dim,Dim> & 
jac,
 
  213                              const PHX::MDField<Scalar,Cell,IP> & jac_det,
 
  214                              const PHX::MDField<Scalar,Cell,IP> & weighted_measure,
 
  215                              const int in_num_cells);
 
  220                                   const int in_num_cells = -1);
 
Array_CellBasisIPDim weighted_curl_basis_vector
 
void evaluateValues_HCurl(const PHX::MDField< Scalar, Cell, 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 PHX::MDField< Scalar, Cell, IP > &weighted_measure, const int in_num_cells)
 
void evaluateValues_HDiv(const PHX::MDField< Scalar, Cell, 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 > &weighted_measure, const int in_num_cells)
 
Array_BasisIP basis_ref_scalar
 
Array_BasisIPDim curl_basis_ref_vector
 
void evaluateValuesCV(const PHX::MDField< Scalar, Cell, IP, Dim > &cell_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)
 
void evaluateReferenceValues(const PHX::MDField< Scalar, IP, Dim > &cub_points, bool compute_derivatives, bool use_vertex_coordinates)
 
void evaluateValues_HGrad(const PHX::MDField< Scalar, Cell, IP, Dim > &cub_points, const PHX::MDField< Scalar, Cell, IP, Dim, Dim > &jac_inv, const PHX::MDField< Scalar, Cell, IP > &weighted_measure, const int in_num_cells)
 
Array_CellBasisIPDim curl_basis_vector
 
BasisValues2(const std::string &pre="", bool allocArrays=false, bool buildWeighted=false)
 
Array_CellBasisIP weighted_basis_scalar
 
Array_CellBasisIP basis_scalar
 
Array_CellBasisIP div_basis
 
void applyOrientations(const PHX::MDField< const Scalar, Cell, BASIS > &orientations)
Method to apply orientations to a basis values container. 
 
void setExtendedDimensions(const std::vector< PHX::index_size_type > &ddims)
 
PHX::MDField< Scalar, Cell, BASIS, IP > Array_CellBasisIP
 
PHX::MDField< Scalar, Cell, BASIS, IP, Dim > Array_CellBasisIPDim
 
Array_CellBasisIPDim basis_vector
 
PHX::MDField< Scalar, Cell, BASIS, Dim > Array_CellBasisDim
 
void evaluateBasisCoordinates(const PHX::MDField< Scalar, Cell, NODE, Dim > &vertex_coordinates, const int in_num_cells=-1)
 
Array_BasisIPDim basis_ref_vector
 
std::vector< PHX::index_size_type > ddims_
 
ArrayTraits< Scalar, PHX::MDField< Scalar > >::size_type size_type
 
Teuchos::RCP< const panzer::BasisIRLayout > basis_layout
 
Teuchos::RCP< Intrepid2::Basis< PHX::Device::execution_space, Scalar, Scalar > > intrepid_basis
 
PureBasis::EElementSpace getElementSpace() const 
 
bool references_evaluated
 
Array_CellBasisIP weighted_curl_basis_scalar
 
Array_BasisIP div_basis_ref
 
void evaluateValues_Const(const PHX::MDField< Scalar, Cell, IP, Dim > &cub_points, const PHX::MDField< Scalar, Cell, IP, Dim, Dim > &jac_inv, const PHX::MDField< Scalar, Cell, IP > &weighted_measure, const int in_num_cells)
 
Array_CellBasisDim basis_coordinates
 
Array_CellBasisIPDim weighted_grad_basis
 
Array_CellBasisIPDim weighted_basis_vector
 
void setupArrays(const Teuchos::RCP< const panzer::BasisIRLayout > &basis, bool computeDerivatives=true)
Sizes/allocates memory for arrays. 
 
Array_CellBasisIPDim grad_basis
 
PHX::MDField< Scalar, BASIS, IP, Dim > Array_BasisIPDim
 
Array_CellBasisIP weighted_div_basis
 
void evaluateValues_HVol(const PHX::MDField< Scalar, Cell, IP, Dim > &cub_points, const PHX::MDField< Scalar, Cell, IP > &jac_det, const PHX::MDField< Scalar, Cell, IP, Dim, Dim > &jac_inv, const PHX::MDField< Scalar, Cell, IP > &weighted_measure, const int in_num_cells)
 
PHX::MDField< Scalar, BASIS, Dim > Array_BasisDim
 
Array_BasisDim basis_coordinates_ref
 
Array_BasisIP curl_basis_ref_scalar
 
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)
 
PHX::MDField< Scalar, BASIS, IP > Array_BasisIP
 
Array_BasisIPDim grad_basis_ref
 
Array_CellBasisIP curl_basis_scalar
 
PHX::MDField< Scalar > ArrayDynamic