49 #ifndef __INTREPID2_HGRAD_PYR_C1_FEM_HPP__ 
   50 #define __INTREPID2_HGRAD_PYR_C1_FEM_HPP__ 
   91       typedef struct Pyramid<5> cell_topology_type;
 
   95       template<EOperator opType>
 
   97         template<
typename OutputViewType,
 
   98                  typename inputViewType>
 
   99         KOKKOS_INLINE_FUNCTION
 
  101         getValues(       OutputViewType output,
 
  102                    const inputViewType input );
 
  106       template<
typename ExecSpaceType,
 
  107                typename outputValueValueType, 
class ...outputValueProperties,
 
  108                typename inputPointValueType,  
class ...inputPointProperties>
 
  110       getValues(       Kokkos::DynRankView<outputValueValueType,outputValueProperties...> outputValues,
 
  111                  const Kokkos::DynRankView<inputPointValueType, inputPointProperties...>  inputPoints,
 
  112                  const EOperator operatorType);
 
  117       template<
typename outputValueViewType,
 
  118                typename inputPointViewType,
 
  121               outputValueViewType _outputValues;
 
  122         const inputPointViewType  _inputPoints;
 
  124         KOKKOS_INLINE_FUNCTION
 
  125         Functor(       outputValueViewType outputValues_,
 
  126                        inputPointViewType  inputPoints_ )
 
  127           : _outputValues(outputValues_), _inputPoints(inputPoints_) {}
 
  129         KOKKOS_INLINE_FUNCTION
 
  130         void operator()(
const ordinal_type pt)
 const {
 
  132           case OPERATOR_VALUE : {
 
  133             auto       output = Kokkos::subview( _outputValues, Kokkos::ALL(), pt );
 
  134             const auto input  = Kokkos::subview( _inputPoints,                 pt, Kokkos::ALL() );
 
  141           case OPERATOR_MAX : {
 
  142             auto       output = Kokkos::subview( _outputValues, Kokkos::ALL(), pt, Kokkos::ALL() );
 
  143             const auto input  = Kokkos::subview( _inputPoints,                 pt, Kokkos::ALL() );
 
  148             INTREPID2_TEST_FOR_ABORT( opType != OPERATOR_VALUE &&
 
  149                                       opType != OPERATOR_GRAD &&
 
  150                                       opType != OPERATOR_CURL &&
 
  151                                       opType != OPERATOR_D2 &&
 
  152                                       opType != OPERATOR_MAX,
 
  153                                       ">>> ERROR: (Intrepid2::Basis_HGRAD_PYR_C1_FEM::Serial::getValues) operator is not supported");
 
  161   template<
typename ExecSpaceType = void,
 
  162            typename outputValueType = double,
 
  163            typename pointValueType = 
double>
 
  184                const EOperator operatorType = OPERATOR_VALUE )
 const {
 
  185 #ifdef HAVE_INTREPID2_DEBUG 
  187       Intrepid2::getValues_HGRAD_Args(outputValues,
 
  193       Impl::Basis_HGRAD_PYR_C1_FEM::
 
  194         getValues<ExecSpaceType>( outputValues,
 
  202 #ifdef HAVE_INTREPID2_DEBUG 
  204       INTREPID2_TEST_FOR_EXCEPTION( dofCoords.rank() != 2, std::invalid_argument,
 
  205                                     ">>> ERROR: (Intrepid2::Basis_HGRAD_PYR_C1_FEM::getDofCoords) rank = 2 required for dofCoords array");
 
  207       INTREPID2_TEST_FOR_EXCEPTION( static_cast<ordinal_type>(dofCoords.extent(0)) != this->
getCardinality(), std::invalid_argument,
 
  208                                     ">>> ERROR: (Intrepid2::Basis_HGRAD_PYR_C1_FEM::getDofCoords) mismatch in number of dof and 0th dimension of dofCoords array");
 
  210       INTREPID2_TEST_FOR_EXCEPTION( dofCoords.extent(1) != this->
getBaseCellTopology().getDimension(), std::invalid_argument,
 
  211                                     ">>> ERROR: (Intrepid2::Basis_HGRAD_PYR_C1_FEM::getDofCoords) incorrect reference cell (1st) dimension in dofCoords array");
 
  213       Kokkos::deep_copy(dofCoords, this->
dofCoords_);
 
  219 #ifdef HAVE_INTREPID2_DEBUG 
  221       INTREPID2_TEST_FOR_EXCEPTION( dofCoeffs.rank() != 1, std::invalid_argument,
 
  222                                     ">>> ERROR: (Intrepid2::Basis_HGRAD_PYR_C1_FEM::getdofCoeffs) rank = 1 required for dofCoeffs array");
 
  224       INTREPID2_TEST_FOR_EXCEPTION( static_cast<ordinal_type>(dofCoeffs.extent(0)) != this->
getCardinality(), std::invalid_argument,
 
  225                                     ">>> ERROR: (Intrepid2::Basis_HGRAD_PYR_C1_FEM::getdofCoeffs) mismatch in number of dof and 0th dimension of dofCoeffs array");
 
  227       Kokkos::deep_copy(dofCoeffs, 1.0);
 
  233       return "Intrepid2_HGRAD_PYR_C1_FEM";
 
Kokkos::View< ordinal_type *, typename ExecSpaceType::array_layout, Kokkos::HostSpace > OrdinalTypeArray1DHost
View type for 1d host array. 
 
Kokkos::View< ordinal_type **, typename ExecSpaceType::array_layout, Kokkos::HostSpace > OrdinalTypeArray2DHost
View type for 2d host array. 
 
Implementation of the default H(grad)-compatible FEM basis of degree 1 on Pyramid cell...
 
An abstract base class that defines interface for concrete basis implementations for Finite Element (...
 
shards::CellTopology getBaseCellTopology() const 
Returns the base cell topology for which the basis is defined. See Shards documentation https://trili...
 
Kokkos::DynRankView< scalarType, ExecSpaceType > dofCoords_
Coordinates of degrees-of-freedom for basis functions defined in physical space. 
 
ordinal_type getCardinality() const 
Returns cardinality of the basis. 
 
See Intrepid2::Basis_HGRAD_PYR_C1_FEM. 
 
Kokkos::DynRankView< OutputValueType, Kokkos::LayoutStride, ExecSpaceType > OutputViewType
View type for basis value output. 
 
Kokkos::View< ordinal_type ***, typename ExecSpaceType::array_layout, Kokkos::HostSpace > OrdinalTypeArray3DHost
View type for 3d host array. 
 
Kokkos::DynRankView< PointValueType, Kokkos::LayoutStride, ExecSpaceType > PointViewType
View type for input points. 
 
virtual const char * getName() const 
Returns basis name. 
 
Definition file for FEM basis functions of degree 1 for H(grad) functions on PYR cells. 
 
See Intrepid2::Basis_HGRAD_PYR_C1_FEM. 
 
Kokkos::DynRankView< scalarType, Kokkos::LayoutStride, ExecSpaceType > ScalarViewType
View type for scalars. 
 
virtual void getValues(OutputViewType outputValues, const PointViewType inputPoints, const EOperator operatorType=OPERATOR_VALUE) const 
Evaluation of a FEM basis on a reference cell. 
 
See Intrepid2::Basis_HGRAD_PYR_C1_FEM. 
 
Basis_HGRAD_PYR_C1_FEM()
Constructor. 
 
virtual void getDofCoords(ScalarViewType dofCoords) const 
Returns spatial locations (coordinates) of degrees of freedom on the reference cell. 
 
virtual void getDofCoeffs(ScalarViewType dofCoeffs) const 
Coefficients for computing degrees of freedom for Lagrangian basis If P is an element of the space sp...
 
Header file for the abstract base class Intrepid2::Basis.