15 #ifndef __INTREPID2_ORIENTATIONTOOLS_HPP__ 
   16 #define __INTREPID2_ORIENTATIONTOOLS_HPP__ 
   18 #include "Intrepid2_ConfigDefs.hpp" 
   22 #include "Shards_CellTopology.hpp" 
   23 #include "Shards_BasicTopologies.hpp" 
   71 #include "Teuchos_LAPACK.hpp" 
   95       template<
typename ValueType>
 
   96       KOKKOS_INLINE_FUNCTION
 
  100                            const ordinal_type ort);
 
  110       template<
typename ValueType>
 
  111       KOKKOS_INLINE_FUNCTION
 
  117                                const ordinal_type ort);
 
  127       template<
typename ValueType>
 
  128       KOKKOS_INLINE_FUNCTION
 
  134                                     const ordinal_type ort);
 
  143       template<
typename outPointViewType,
 
  144                typename refPointViewType>
 
  148                              const refPointViewType refPoints,
 
  149                              const shards::CellTopology cellTopo,
 
  150                              const ordinal_type cellOrt = 0);
 
  159       template<
typename outPointViewType,
 
  160                typename refPointViewType>
 
  161       KOKKOS_INLINE_FUNCTION
 
  164                              const refPointViewType refPoints,
 
  165                              const unsigned cellTopoKey,
 
  166                              const ordinal_type cellOrt = 0);
 
  174       template<
typename JacobianViewType>
 
  175       KOKKOS_INLINE_FUNCTION
 
  184       template<
typename JacobianViewType>
 
  185       KOKKOS_INLINE_FUNCTION
 
  194       template<
typename JacobianViewType>
 
  195       KOKKOS_INLINE_FUNCTION
 
  206       template<
typename JacobianViewType>
 
  210                                   const shards::CellTopology cellTopo,
 
  211                                   const ordinal_type cellOrt);
 
  219       template<
typename JacobianViewType>
 
  220       KOKKOS_INLINE_FUNCTION
 
  223                                   const unsigned cellTopoKey,
 
  224                                   const ordinal_type cellOrt);
 
  234       template<
typename TanViewType, 
typename ParamViewType>
 
  235       KOKKOS_INLINE_FUNCTION
 
  237                                         const ParamViewType subCellParametrization,
 
  238                                         const unsigned subcellTopoKey,
 
  239                                         const ordinal_type subCellOrd,
 
  240                                         const ordinal_type ort);
 
  253       template<
typename TanNormViewType, 
typename ParamViewType>
 
  254       KOKKOS_INLINE_FUNCTION
 
  256                                               const ParamViewType subCellParametrization,
 
  257                                               const unsigned subcellTopoKey,
 
  258                                               const ordinal_type subCellOrd,
 
  259                                               const ordinal_type ort);
 
  271       template<
typename coordsViewType, 
typename subcellCoordsViewType, 
typename ParamViewType>
 
  272       KOKKOS_INLINE_FUNCTION
 
  274                                             const subcellCoordsViewType subCellCoords,
 
  275                                             const ParamViewType subcellParametrization,
 
  276                                             const unsigned subcellTopoKey,
 
  277                                             const ordinal_type subCellOrd,
 
  278                                             const ordinal_type ort);
 
  296       template<
typename OutputViewType,
 
  297                typename subcellBasisHostType,
 
  298                typename cellBasisHostType>
 
  302                            const subcellBasisHostType& subcellBasis,
 
  303                            const cellBasisHostType& cellBasis,
 
  304                            const ordinal_type subcellId,
 
  305                            const ordinal_type subcellOrt,
 
  306                            const bool inverse = 
false);
 
  318       template<
typename OutputViewType,
 
  319                typename subcellBasisHostType,
 
  320                typename cellBasisHostType>
 
  324                            const subcellBasisHostType& subcellBasis,
 
  325                            const cellBasisHostType& cellBasis,
 
  326                            const ordinal_type subcellId,
 
  327                            const ordinal_type subcellOrt,
 
  328                            const bool inverse = 
false);
 
  341       template<
typename OutputViewType,
 
  342                typename subcellBasisHostType,
 
  343                typename cellBasisHostType>
 
  347                           const subcellBasisHostType& subcellBasis,
 
  348                           const cellBasisHostType& cellBasis,
 
  349                           const ordinal_type subcellId,
 
  350                           const ordinal_type subcellOrt,
 
  351                            const bool inverse = 
false);
 
  362       template<
typename OutputViewType,
 
  363                typename cellBasisHostType>
 
  367                            const cellBasisHostType& cellBasis,
 
  368                            const ordinal_type cellOrt,
 
  369                            const bool inverse = 
false);
 
  377   template<
typename DeviceType>
 
  388     using KeyType = std::pair<const std::string,ordinal_type>;
 
  389     using OrtCoeffDataType = std::map<KeyType,Kokkos::View<double****,DeviceType> >;
 
  391     static OrtCoeffDataType ortCoeffData;
 
  392     static OrtCoeffDataType ortInvCoeffData;
 
  396     template<
typename BasisHostType>
 
  398     static CoeffMatrixDataViewType createCoeffMatrixInternal(
const BasisHostType* basis, 
const bool invTrans = 
false);
 
  403     template<
typename BasisHostType>
 
  406                            BasisHostType 
const *cellBasis,
 
  407                            const bool inverse = 
false);
 
  411     template<
typename BasisHostType>
 
  414                            BasisHostType 
const *cellBasis,
 
  415                            const bool inverse = 
false);
 
  419     template<
typename BasisHostType>
 
  422                           BasisHostType 
const *cellBasis,
 
  423                            const bool inverse = 
false);
 
  427     template<
typename BasisHostType>
 
  430                            BasisHostType 
const *cellBasis,
 
  431                            const bool inverse = 
false);
 
  438     template<
typename BasisType>
 
  445     template<
typename BasisType>
 
  460     template<
typename elemOrtValueType, 
class ...elemOrtProperties,
 
  461              typename elemNodeValueType, 
class ...elemNodeProperties>
 
  464     getOrientation(Kokkos::DynRankView<elemOrtValueType,elemOrtProperties...> elemOrts,
 
  465                    const Kokkos::DynRankView<elemNodeValueType,elemNodeProperties...> elemNodes,
 
  466                    const shards::CellTopology cellTopo,
 
  467                    bool isSide = 
false);
 
  477     template<
typename outputValueType, 
class ...outputProperties,
 
  478              typename inputValueType,  
class ...inputProperties,
 
  479              typename OrientationViewType,
 
  484                              const Kokkos::DynRankView<inputValueType, inputProperties...>  input,
 
  485                              const OrientationViewType orts,
 
  486                              const BasisType * basis,
 
  487                              const bool transpose = 
false);
 
  495     template<
typename outputValueType, 
class ...outputProperties,
 
  496              typename inputValueType,  
class ...inputProperties,
 
  497              typename OrientationViewType,
 
  502                                       const Kokkos::DynRankView<inputValueType, inputProperties...>  input,
 
  503                                       const OrientationViewType orts,
 
  504                                       const BasisType * basis);
 
  514     template<
typename outputValueType, 
class ...outputProperties,
 
  515              typename inputValueType,  
class ...inputProperties,
 
  516              typename OrientationViewType,
 
  521                                       const Kokkos::DynRankView<inputValueType, inputProperties...>  input,
 
  522                                       const OrientationViewType orts,
 
  523                                       const BasisType * basis,
 
  524                                       const bool transpose = 
false);
 
  534     template<
typename outputValueType, 
class ...outputProperties,
 
  535              typename inputValueType,  
class ...inputProperties,
 
  536              typename OrientationViewType,
 
  537              typename BasisTypeLeft,
 
  538              typename BasisTypeRight>
 
  542                               const Kokkos::DynRankView<inputValueType, inputProperties...>  input,
 
  543                               const OrientationViewType orts,
 
  544                               const BasisTypeLeft* basisLeft,
 
  545                               const BasisTypeRight* basisRight);
 
  559 #include "Intrepid2_OrientationToolsDefCoeffMatrix_HCURL.hpp" 
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. 
 
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.