48 #ifndef __INTREPID2_ORIENTATIONTOOLS_HPP__ 
   49 #define __INTREPID2_ORIENTATIONTOOLS_HPP__ 
   51 #include "Intrepid2_ConfigDefs.hpp" 
   55 #include "Shards_CellTopology.hpp" 
   56 #include "Shards_BasicTopologies.hpp" 
  104 #include "Teuchos_LAPACK.hpp" 
  107 namespace Intrepid2 {
 
  128       template<
typename ValueType>
 
  129       KOKKOS_INLINE_FUNCTION
 
  133                            const ordinal_type ort);
 
  143       template<
typename ValueType>
 
  144       KOKKOS_INLINE_FUNCTION
 
  150                                const ordinal_type ort);
 
  160       template<
typename ValueType>
 
  161       KOKKOS_INLINE_FUNCTION
 
  167                                     const ordinal_type ort);
 
  176       template<
typename outPointViewType,
 
  177                typename refPointViewType>
 
  181                              const refPointViewType refPoints,
 
  182                              const shards::CellTopology cellTopo,
 
  183                              const ordinal_type cellOrt = 0);
 
  192       template<
typename outPointViewType,
 
  193                typename refPointViewType>
 
  194       KOKKOS_INLINE_FUNCTION
 
  197                              const refPointViewType refPoints,
 
  198                              const unsigned cellTopoKey,
 
  199                              const ordinal_type cellOrt = 0);
 
  207       template<
typename JacobianViewType>
 
  208       KOKKOS_INLINE_FUNCTION
 
  217       template<
typename JacobianViewType>
 
  218       KOKKOS_INLINE_FUNCTION
 
  227       template<
typename JacobianViewType>
 
  228       KOKKOS_INLINE_FUNCTION
 
  239       template<
typename JacobianViewType>
 
  243                              const shards::CellTopology cellTopo,
 
  244                              const ordinal_type cellOrt);
 
  252       template<
typename JacobianViewType>
 
  253       KOKKOS_INLINE_FUNCTION
 
  256                              const unsigned cellTopoKey,
 
  257                              const ordinal_type cellOrt);
 
  273       template<
typename OutputViewType,
 
  274                typename subcellBasisType,
 
  275                typename cellBasisType>
 
  279                            const subcellBasisType subcellBasis,
 
  280                            const cellBasisType cellBasis,
 
  281                            const ordinal_type subcellId,
 
  282                            const ordinal_type subcellOrt);
 
  293       template<
typename OutputViewType,
 
  294                typename subcellBasisType,
 
  295                typename cellBasisType>
 
  299                            const subcellBasisType subcellBasis,
 
  300                            const cellBasisType cellBasis,
 
  301                            const ordinal_type subcellId,
 
  302                            const ordinal_type subcellOrt);
 
  313       template<
typename OutputViewType,
 
  314                typename subcellBasisType,
 
  315                typename cellBasisType>
 
  319                           const subcellBasisType subcellBasis,
 
  320                           const cellBasisType cellBasis,
 
  321                           const ordinal_type subcellId,
 
  322                           const ordinal_type subcellOrt);
 
  329   template<
typename ExecSpaceType>
 
  343     template<
typename BasisType>
 
  351     template<
typename BasisType>
 
  354                                BasisType 
const *cellBasis);
 
  356     template<
typename BasisType>
 
  359                                BasisType 
const *cellBasis);
 
  361     template<
typename BasisType>
 
  364         BasisType 
const *cellBasis);
 
  366     template<
typename BasisType>
 
  369         BasisType 
const *cellBasis);
 
  375     template<
typename BasisType>
 
  378                                 BasisType 
const *cellBasis);
 
  380     template<
typename BasisType>
 
  383         BasisType 
const *cellBasis);
 
  385     template<
typename BasisType>
 
  388         BasisType 
const *cellBasis);
 
  390     template<
typename BasisType>
 
  393         BasisType 
const *cellBasis);
 
  399     template<
typename BasisType>
 
  402                                BasisType 
const *cellBasis);
 
  405     template<
typename BasisType>
 
  408         BasisType 
const *cellBasis);
 
  410     template<
typename BasisType>
 
  413         BasisType 
const *cellBasis);
 
  415     template<
typename BasisType>
 
  418         BasisType 
const *cellBasis);
 
  426                                          const ordinal_type edgeId);
 
  430                                              const ordinal_type faceId);
 
  434                                               const ordinal_type faceId);
 
  441     template<
typename BasisType>
 
  453     template<
typename ptViewType>
 
  454     KOKKOS_INLINE_FUNCTION
 
  463     template<
typename elemOrtValueType, 
class ...elemOrtProperties,
 
  464              typename elemNodeValueType, 
class ...elemNodeProperties>
 
  467     getOrientation(      Kokkos::DynRankView<elemOrtValueType,elemOrtProperties...> elemOrts,
 
  468                    const Kokkos::DynRankView<elemNodeValueType,elemNodeProperties...> elemNodes,
 
  469                    const shards::CellTopology cellTopo);
 
  477     template<
typename outputValueType, 
class ...outputProperties,
 
  478              typename inputValueType,  
class ...inputProperties,
 
  479              typename ortValueType,    
class ...ortProperties,
 
  484                              const Kokkos::DynRankView<inputValueType, inputProperties...>  input,
 
  485                              const Kokkos::DynRankView<ortValueType,   ortProperties...> orts,
 
  486                              const BasisType*  basis);
 
  488     template<
typename ExecutionSpaceType, 
typename dofCoordsValueType,
 
  489              typename dofCoeffsValueType, 
typename BasisType>
 
  495       const BasisType&  basis,
 
  496       EPointType pointType = POINTTYPE_EQUISPACED);
 
  498     template<
typename dofCoordsValueType, 
class ...dofCoordsProperties,
 
  499              typename dofCoeffsValueType, 
class ...dofCoeffsProperties,
 
  500              typename ortValueType,       
class ...ortProperties,
 
  504     getModifiedDofs(  Kokkos::DynRankView<dofCoordsValueType,dofCoordsProperties...> orientedDofCoords,
 
  505       Kokkos::DynRankView<dofCoeffsValueType,dofCoeffsProperties...> orientedDofCoeffs,
 
  506       const Kokkos::DynRankView<ortValueType,   ortProperties...>    orts,
 
  507       const BasisType& basis,
 
  508       EPointType pointType = POINTTYPE_EQUISPACED);
 
Stateless classes that act as factories for two families of hierarchical bases. HierarchicalBasisFami...
 
Header file for the Intrepid2::Basis_HGRAD_LINE_Cn_FEM class. 
 
Header file for the Intrepid2::Basis_HDIV_TET_I1_FEM class. 
 
Header file for the Intrepid2::Basis_HCURL_HEX_In_FEM class. 
 
Header file for the Intrepid2::Basis_HDIV_HEX_I1_FEM class. 
 
Header file for the Intrepid2::Basis_HDIV_WEDGE_I1_FEM class. 
 
An abstract base class that defines interface for concrete basis implementations for Finite Element (...
 
Header file for the Intrepid2::Basis_HDIV_HEX_In_FEM class. 
 
Header function for Intrepid2::Util class and other utility functions. 
 
Header file for the Intrepid2::Basis_HGRAD_TRI_Cn_FEM class. 
 
Header file for the Intrepid2::Basis_HVOL_LINE_Cn_FEM class. 
 
Header file for the Intrepid2::Basis_HDIV_QUAD_I1_FEM class. 
 
Header file for the Intrepid2::Basis_HCURL_TET_In_FEM class. 
 
Header file for the Intrepid2::Basis_HGRAD_TET_Cn_FEM class. 
 
Header file for the Intrepid2::Basis_HDIV_TRI_I1_FEM class. 
 
Header file for the Intrepid2::Basis_HDIV_QUAD_In_FEM class. 
 
Header file for the Intrepid2::Basis_HCURL_QUAD_In_FEM class. 
 
Header file for the Intrepid2::Basis_HDIV_TRI_In_FEM class. 
 
Contains definitions of custom data types in Intrepid2. 
 
Header file for the Intrepid2::Basis_HGRAD_QUAD_Cn_FEM class. 
 
Header file for the Intrepid2::Basis_HDIV_TET_In_FEM class. 
 
Header file for the Intrepid2::Basis_HCURL_QUAD_I1_FEM class. 
 
Header file for the Intrepid2::Basis_HCURL_WEDGE_I1_FEM class. 
 
Header file for the Intrepid2::Basis_HCURL_TET_I1_FEM class. 
 
Header file for the Intrepid2::Basis_HCURL_HEX_I1_FEM class. 
 
Header file for the Intrepid2::Basis_HCURL_TRI_I1_FEM class. 
 
Header file for the Intrepid2::Basis_HVOL_TRI_Cn_FEM class. 
 
Stateless class that acts as a factory for a family of nodal bases (hypercube topologies only at this...
 
Header file for the abstract base class Intrepid2::Basis. 
 
Header file for the Intrepid2::Basis_HCURL_TRI_In_FEM class. 
 
Header file for the Intrepid2::Basis_HGRAD_HEX_Cn_FEM class.