1 #ifndef INTREPID_CELTOOLS_HPP 
    2 #define INTREPID_CELTOOLS_HPP 
   52 #ifndef INTREPID_CELLTOOLS_HPP 
   53 #define INTREPID_CELLTOOLS_HPP 
   58 #include "Intrepid_ConfigDefs.hpp" 
   63 #include "Intrepid_HGRAD_QUAD_C1_FEM.hpp" 
   64 #include "Intrepid_HGRAD_TET_C1_FEM.hpp" 
   65 #include "Intrepid_HGRAD_WEDGE_C1_FEM.hpp" 
   66 #include "Intrepid_HGRAD_PYR_C1_FEM.hpp" 
   67 #include "Intrepid_HGRAD_HEX_C1_FEM.hpp" 
   72 #include "Intrepid_HGRAD_QUAD_C2_FEM.hpp" 
   81 #include "Shards_CellTopology.hpp" 
   82 #include "Shards_BasicTopologies.hpp" 
   84 #include "Teuchos_Assert.hpp" 
   85 #include "Teuchos_RCP.hpp" 
   87 #include <Intrepid_KokkosRank.hpp> 
   88 #ifdef INTREPID_OLD_KOKKOS_CODE 
   89 #include "Kokkos_Core.hpp" 
  110 template<
class Scalar>
 
  134                                                                  const shards::CellTopology& parentCell);
 
  178                                         const int                   subcellDim,
 
  179                                         const shards::CellTopology& parentCell);
 
  194   template<
class ArrayJac, 
class ArrayPo
int, 
class ArrayCell>
 
  196                                             const ArrayPoint  &          points,
 
  197                                             const ArrayCell   &          cellWorkset,
 
  198                                             const int &                  whichCell,
 
  199                                             const shards::CellTopology & cellTopo);
 
  207   template<
class ArrayJacInv, 
class ArrayJac>
 
  209                                                const ArrayJac    &  jacobian);
 
  217   template<
class ArrayJacDet, 
class ArrayJac>
 
  219                                                    const ArrayJac    &  jacobian);
 
  230   template<
class ArrayPhysPo
int, 
class ArrayRefPo
int, 
class ArrayCell>
 
  232                                                    const ArrayRefPoint  &        refPoints,
 
  233                                                    const ArrayCell      &        cellWorkset,
 
  234                                                    const shards::CellTopology &  cellTopo,
 
  235                                                    const int&                    whichCell);
 
  246   template<
class ArrayRefPo
int, 
class ArrayPhysPo
int, 
class ArrayCell>
 
  248                                                     const ArrayPhysPoint &        physPoints,
 
  249                                                     const ArrayCell      &        cellWorkset,
 
  250                                                     const shards::CellTopology &  cellTopo,
 
  251                                                     const int&                    whichCell);
 
  263   template<
class ArrayRefPo
int, 
class ArrayInitGuess, 
class ArrayPhysPo
int, 
class ArrayCell>
 
  265                                                     const ArrayInitGuess &        initGuess,
 
  266                                                     const ArrayPhysPoint &        physPoints,
 
  267                                                     const ArrayCell      &        cellWorkset,
 
  268                                                     const shards::CellTopology &  cellTopo,
 
  269                                                     const int&                    whichCell);
 
  280   template<
class ArrayIncl, 
class ArrayPo
int, 
class ArrayCell>
 
  282                                                         const ArrayPoint &            physPoints,
 
  283                                                         const ArrayCell  &            cellWorkset,
 
  284                                                         const int &                   whichCell,
 
  285                                                         const shards::CellTopology &  cell);
 
  366     template<
class ArrayJac, 
class ArrayPo
int, 
class ArrayCell, 
bool typecheck>
 
  376     template<
class ArrayJac, 
class ArrayPo
int, 
class ArrayCell>
 
  377     static void setJacobian(ArrayJac &                   jacobian,
 
  378                             const ArrayPoint &           points,
 
  379                             const ArrayCell  &           cellWorkset,
 
  380                             const shards::CellTopology & cellTopo,
 
  381                             const int &                  whichCell = -1);
 
  383     template<
class ArrayJac, 
class ArrayPo
int, 
class ArrayCell>
 
  384     static void setJacobian(ArrayJac &                   jacobian,
 
  385                             const ArrayPoint &           points,
 
  386                             const ArrayCell  &           cellWorkset,
 
  388                             const int &                  whichCell = -1);
 
  403     template<
class ArrayJacInv, 
class ArrayJac>
 
  405                                const ArrayJac &  jacobian);
 
  424     template<
class ArrayJacDet, 
class ArrayJac>
 
  426                                const ArrayJac &  jacobian);
 
  493     template<
class ArrayPhysPo
int, 
class ArrayRefPo
int, 
class ArrayCell>
 
  495                                    const ArrayRefPoint &         refPoints,
 
  496                                    const ArrayCell     &         cellWorkset,
 
  497                                    const shards::CellTopology &  cellTopo,
 
  498                                    const int &                   whichCell = -1);
 
  500     template<
class ArrayPhysPo
int, 
class ArrayRefPo
int, 
class ArrayCell>
 
  502                                    const ArrayRefPoint &         refPoints,
 
  503                                    const ArrayCell     &         cellWorkset,
 
  505                                    const int &                   whichCell = -1);
 
  569             template<
class ArrayPhysPo
int, 
class ArrayRefPo
int, 
class ArrayCell, 
int refRank,
int phyptsrank>
 
  630     template<
class ArrayRefPo
int, 
class ArrayPhysPo
int, 
class ArrayCell>
 
  632                                     const ArrayPhysPoint &        physPoints,
 
  633                                     const ArrayCell      &        cellWorkset,
 
  634                                     const shards::CellTopology &  cellTopo,
 
  635                                     const int &                   whichCell = -1);
 
  638     template<
class ArrayRefPo
int, 
class ArrayPhysPo
int, 
class ArrayCell>
 
  640                                     const ArrayPhysPoint &        physPoints,
 
  641                                     const ArrayCell      &        cellWorkset,
 
  643                                     const int &                   whichCell = -1);
 
  691     template<
class ArrayRefPo
int, 
class ArrayInitGuess, 
class ArrayPhysPo
int, 
class ArrayCell>
 
  693                                              const ArrayInitGuess &        initGuess,
 
  694                                              const ArrayPhysPoint &        physPoints,
 
  695                                              const ArrayCell      &        cellWorkset,
 
  696                                              const shards::CellTopology &  cellTopo,
 
  697                                              const int &                   whichCell = -1);
 
  699     template<
class ArrayRefPo
int, 
class ArrayInitGuess, 
class ArrayPhysPo
int, 
class ArrayCell>
 
  701                                              const ArrayInitGuess &        initGuess,
 
  702                                              const ArrayPhysPoint &        physPoints,
 
  703                                              const ArrayCell      &        cellWorkset,
 
  705                                              const int &                   whichCell = -1);
 
  759     template<
class ArraySubcellPo
int, 
class ArrayParamPo
int>
 
  761                                       const ArrayParamPoint &       paramPoints,
 
  762                                       const int                     subcellDim,
 
  763                                       const int                     subcellOrd,
 
  764                                       const shards::CellTopology &  parentCell);
 
  793     template<
class ArrayEdgeTangent>
 
  796                                         const shards::CellTopology &  parentCell);
 
  836     template<
class ArrayFaceTangentU, 
class ArrayFaceTangentV>
 
  838                                          ArrayFaceTangentV &           refFaceTanV,
 
  840                                          const shards::CellTopology &  parentCell);
 
  906     template<
class ArrayS
ideNormal>
 
  909                                        const shards::CellTopology &  parentCell);
 
  951     template<
class ArrayFaceNormal>
 
  954                                        const shards::CellTopology &  parentCell);
 
  987     template<
class ArrayEdgeTangent, 
class ArrayJac>
 
  989                                         const ArrayJac &              worksetJacobians,
 
  990                                         const int &                   worksetEdgeOrd,
 
  991                                         const shards::CellTopology &  parentCell);
 
 1038     template<
class ArrayFaceTangentU, 
class ArrayFaceTangentV, 
class ArrayJac>
 
 1040                                         ArrayFaceTangentV &           faceTanV,
 
 1041                                         const ArrayJac &              worksetJacobians,
 
 1042                                         const int &                   worksetFaceOrd,
 
 1043                                         const shards::CellTopology &  parentCell);
 
 1112     template<
class ArrayS
ideNormal, 
class ArrayJac>
 
 1114                                        const ArrayJac &              worksetJacobians,
 
 1115                                        const int &                   worksetSideOrd,
 
 1116                                        const shards::CellTopology &  parentCell);
 
 1158     template<
class ArrayFaceNormal, 
class ArrayJac>
 
 1160                                        const ArrayJac &              worksetJacobians,
 
 1161                                        const int &                   worksetFaceOrd,
 
 1162                                        const shards::CellTopology &  parentCell);
 
 1188                                    const shards::CellTopology &  cellTopo,
 
 1189                                    const double &                threshold = INTREPID_THRESHOLD);
 
 1205     template<
class ArrayPo
int>
 
 1207                                       const shards::CellTopology &  cellTopo, 
 
 1208                                       const double &                threshold = INTREPID_THRESHOLD);
 
 1238     template<
class ArrayIncl, 
class ArrayPo
int>
 
 1240                                         const ArrayPoint &            points,
 
 1241                                         const shards::CellTopology &  cellTopo, 
 
 1242                                         const double &                threshold = INTREPID_THRESHOLD);
 
 1281     template<
class ArrayIncl, 
class ArrayPo
int, 
class ArrayCell>
 
 1283                                         const ArrayPoint &            points,
 
 1284                                         const ArrayCell &             cellWorkset,
 
 1285                                         const shards::CellTopology &  cell,
 
 1286                                         const int &                   whichCell = -1, 
 
 1287                                         const double &                threshold = INTREPID_THRESHOLD);
 
 1302                                             const int                   vertexOrd);
 
 1320     template<
class ArraySubcellVert>
 
 1322                                             const int                   subcellDim,
 
 1323                                             const int                   subcellOrd,
 
 1324                                             const shards::CellTopology& parentCell);
 
 1361     template<
class ArraySubcellNode>
 
 1363                                         const int                   subcellDim,
 
 1364                                         const int                   subcellOrd,
 
 1365                                         const shards::CellTopology& parentCell);
 
 1391                                      const int subcellOrd,
 
 1392                                      const shards::CellTopology & parentCell);
 
 1399     template<
class ArrayCell>
 
 1401                                     const shards::CellTopology &  parentCell,
 
 1402                                     const int&                    pCellOrd,
 
 1403                                     const int&                    subcellDim,
 
 1404                                     const int&                    subcellOrd,
 
 1405                                     const int&                    fieldWidth = 3);
 
 1486   template<
class ArrayCVCoord, 
class ArrayCellCoord>
 
 1487   static void getSubCVCoords(ArrayCVCoord & subCVcoords, 
const ArrayCellCoord & cellCoords,
 
 1488                              const shards::CellTopology& primaryCell);
 
 1496   template<
class ArrayCent, 
class ArrayCellCoord>
 
 1497   static void getBarycenter(ArrayCent & barycenter, 
const ArrayCellCoord & cellCoords);
 
 1505 #ifdef INTREPID_OLD_KOKKOS_CODE 
 1506 #include <Intrepid_CellTools_Kokkos.hpp> 
Header file for the Intrepid::HGRAD_WEDGE_I2_FEM class. 
Header file for the Intrepid::HGRAD_TRI_C1_FEM class. 
Header file for utility class to provide multidimensional containers. 
Contains definitions of custom data types in Intrepid. 
Header file for the Intrepid::HGRAD_TET_C2_FEM class. 
Header file for the Intrepid::HGRAD_TRI_C2_FEM class. 
Header file for the abstract base class Intrepid::Basis. 
Header file for the Intrepid::G_WEDGE_C2_FEM class. 
Header file for the Intrepid::HGRAD_HEX_I2_FEM class. 
An abstract base class that defines interface for concrete basis implementations for Finite Element (...
Header file for the Intrepid::HGRAD_HEX_C2_FEM class. 
Header file for the Intrepid::HGRAD_TET_COMP12_FEM class. 
Header file for the Intrepid::HGRAD_PYR_I2_FEM class. 
Header file for the Intrepid::HGRAD_LINE_C1_FEM class.