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.