15#ifndef Intrepid2_SerendipityBasisFamily_h 
   16#define Intrepid2_SerendipityBasisFamily_h 
   22#include "Intrepid2_DerivedBasis_HDIV_QUAD.hpp" 
   34  template<
class FullBasis, 
int numPolyOrderArgs>
 
   40    using BasisBase = 
typename FullBasis::BasisBase;
 
   41    using BasisPtr  = Teuchos::RCP<BasisBase>;
 
   42    using DeviceType = 
typename BasisBase::DeviceType;
 
   43    using ExecutionSpace  = 
typename BasisBase::ExecutionSpace;
 
   44    using OutputValueType = 
typename BasisBase::OutputValueType;
 
   45    using PointValueType  = 
typename BasisBase::PointValueType;
 
   47    using OrdinalTypeArray1D     = 
typename BasisBase::OrdinalTypeArray1D;
 
   48    using OrdinalTypeArray1DHost = 
typename BasisBase::OrdinalTypeArray1DHost;
 
   49    using OrdinalTypeArray2DHost = 
typename BasisBase::OrdinalTypeArray2DHost;
 
   50    using OutputViewType         = 
typename BasisBase::OutputViewType;
 
   51    using PointViewType          = 
typename BasisBase::PointViewType;
 
   56    SerendipityBasis<typename FullBasis::BasisBase>(Teuchos::rcp(new FullBasis(polyOrder)) )
 
 
   60    template<
bool M=(numPolyOrderArgs==2)>
 
   61    SerendipityBasisWrapper(
int polyOrder_x, 
int polyOrder_y, 
const EPointType pointType=POINTTYPE_DEFAULT, 
typename std::enable_if<M>::type* = 0)
 
   63    SerendipityBasis<typename FullBasis::BasisBase>(Teuchos::rcp(new FullBasis(polyOrder_x, polyOrder_y)) )
 
 
   67    template<
bool M=(numPolyOrderArgs==3)>
 
   68    SerendipityBasisWrapper(
int polyOrder_x, 
int polyOrder_y, 
int polyOrder_z, 
const EPointType pointType=POINTTYPE_DEFAULT, 
typename std::enable_if<M>::type* = 0)
 
   70    SerendipityBasis<typename FullBasis::BasisBase>(Teuchos::rcp(new FullBasis(polyOrder_x, polyOrder_y, polyOrder_z)) )
 
 
 
   77  template<
class LineBasisHGRAD, 
class LineBasisHVOL, 
class TriangleBasisFamily, 
class TetrahedronBasisFamily >
 
   81    using ExecutionSpace  = 
typename LineBasisHGRAD::ExecutionSpace;
 
   82    using OutputValueType = 
typename LineBasisHGRAD::OutputValueType;
 
   83    using PointValueType  = 
typename LineBasisHGRAD::PointValueType;
 
   85    using Basis      = 
typename LineBasisHGRAD::BasisBase;
 
   86    using BasisPtr   = Teuchos::RCP<Basis>;
 
   90    using HGRAD_LINE = LineBasisHGRAD;
 
   91    using HVOL_LINE  = LineBasisHVOL;
 
  106    using HGRAD_TRI = 
typename TriangleBasisFamily::HGRAD;
 
  107    using HCURL_TRI = 
typename TriangleBasisFamily::HCURL;
 
  108    using HDIV_TRI  = 
typename TriangleBasisFamily::HDIV;
 
  109    using HVOL_TRI  = 
typename TriangleBasisFamily::HVOL;
 
  112    using HGRAD_TET = 
typename TetrahedronBasisFamily::HGRAD;
 
  113    using HCURL_TET = 
typename TetrahedronBasisFamily::HCURL;
 
  114    using HDIV_TET  = 
typename TetrahedronBasisFamily::HDIV;
 
  115    using HVOL_TET  = 
typename TetrahedronBasisFamily::HVOL;
 
 
  121  template<
typename DeviceType,
 
  122           typename OutputScalar = double,
 
  123           typename PointScalar  = 
double>
 
  136  template<
typename DeviceType,
 
  137           typename OutputScalar = double,
 
  138           typename PointScalar  = 
double>
 
Header file for the abstract base class Intrepid2::Basis.
 
Implementation of H(curl) basis on the hexahedron that is templated on H(vol) and H(grad) on the line...
 
Implementation of H(curl) basis on the quadrilateral that is templated on H(vol) and H(grad) on the l...
 
Implementation of H(div) basis on the hexahedron that is templated on H(vol) and H(grad) on the line.
 
Implementation of H(grad) basis on the hexahedron that is templated on H(grad) on the line.
 
Implementation of H(grad) basis on the quadrilateral that is templated on H(grad) on the line.
 
Implementation of H(vol) basis on the hexahedron that is templated on H(vol) on the line.
 
Implementation of H(vol) basis on the quadrilateral that is templated on H(vol) on the line.
 
Device DeviceType
(Kokkos) Device type on which Basis is templated. Does not necessarily return true for Kokkos::is_dev...
 
Basis defining Legendre basis on the line, a polynomial subspace of L^2 (a.k.a. H(vol)) on the line.
 
Helper class that allows SerendipityBasis construction with poly order arguments that are passed to t...
 
SerendipityBasisWrapper(int polyOrder, const EPointType pointType=POINTTYPE_DEFAULT)
single-argument constructor, for isotropic bases.
 
SerendipityBasisWrapper(int polyOrder_x, int polyOrder_y, int polyOrder_z, const EPointType pointType=POINTTYPE_DEFAULT, typename std::enable_if< M >::type *=0)
three-argument constructor; enabled if numPolyOrderArgs is 3.
 
SerendipityBasisWrapper(int polyOrder_x, int polyOrder_y, const EPointType pointType=POINTTYPE_DEFAULT, typename std::enable_if< M >::type *=0)
two-argument constructor; enabled if numPolyOrderArgs is 2.
 
Serendipity Basis, defined as the sub-basis of a provided basis, consisting of basis elements for whi...