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_Rank.hpp>
108 template<
class Scalar>
132 const shards::CellTopology& parentCell);
176 const int subcellDim,
177 const shards::CellTopology& parentCell);
192 template<
class ArrayJac,
class ArrayPo
int,
class ArrayCell>
194 const ArrayPoint & points,
195 const ArrayCell & cellWorkset,
196 const int & whichCell,
197 const shards::CellTopology & cellTopo);
205 template<
class ArrayJacInv,
class ArrayJac>
207 const ArrayJac & jacobian);
215 template<
class ArrayJacDet,
class ArrayJac>
217 const ArrayJac & jacobian);
228 template<
class ArrayPhysPo
int,
class ArrayRefPo
int,
class ArrayCell>
230 const ArrayRefPoint & refPoints,
231 const ArrayCell & cellWorkset,
232 const shards::CellTopology & cellTopo,
233 const int& whichCell);
244 template<
class ArrayRefPo
int,
class ArrayPhysPo
int,
class ArrayCell>
246 const ArrayPhysPoint & physPoints,
247 const ArrayCell & cellWorkset,
248 const shards::CellTopology & cellTopo,
249 const int& whichCell);
261 template<
class ArrayRefPo
int,
class ArrayInitGuess,
class ArrayPhysPo
int,
class ArrayCell>
263 const ArrayInitGuess & initGuess,
264 const ArrayPhysPoint & physPoints,
265 const ArrayCell & cellWorkset,
266 const shards::CellTopology & cellTopo,
267 const int& whichCell);
278 template<
class ArrayIncl,
class ArrayPo
int,
class ArrayCell>
280 const ArrayPoint & physPoints,
281 const ArrayCell & cellWorkset,
282 const int & whichCell,
283 const shards::CellTopology & cell);
349 template<
class ArrayJac,
class ArrayPo
int,
class ArrayCell,
bool typecheck>
359 template<
class ArrayJac,
class ArrayPo
int,
class ArrayCell>
360 static void setJacobian(ArrayJac & jacobian,
361 const ArrayPoint & points,
362 const ArrayCell & cellWorkset,
363 const shards::CellTopology & cellTopo,
364 const int & whichCell = -1);
366 template<
class ArrayJac,
class ArrayPo
int,
class ArrayCell>
367 static void setJacobian(ArrayJac & jacobian,
368 const ArrayPoint & points,
369 const ArrayCell & cellWorkset,
371 const int & whichCell = -1);
386 template<
class ArrayJacInv,
class ArrayJac>
388 const ArrayJac & jacobian);
407 template<
class ArrayJacDet,
class ArrayJac>
409 const ArrayJac & jacobian);
476 template<
class ArrayPhysPo
int,
class ArrayRefPo
int,
class ArrayCell>
478 const ArrayRefPoint & refPoints,
479 const ArrayCell & cellWorkset,
480 const shards::CellTopology & cellTopo,
481 const int & whichCell = -1);
483 template<
class ArrayPhysPo
int,
class ArrayRefPo
int,
class ArrayCell>
485 const ArrayRefPoint & refPoints,
486 const ArrayCell & cellWorkset,
488 const int & whichCell = -1);
552 template<
class ArrayPhysPo
int,
class ArrayRefPo
int,
class ArrayCell,
int refRank,
int phyptsrank>
613 template<
class ArrayRefPo
int,
class ArrayPhysPo
int,
class ArrayCell>
615 const ArrayPhysPoint & physPoints,
616 const ArrayCell & cellWorkset,
617 const shards::CellTopology & cellTopo,
618 const int & whichCell = -1);
621 template<
class ArrayRefPo
int,
class ArrayPhysPo
int,
class ArrayCell>
623 const ArrayPhysPoint & physPoints,
624 const ArrayCell & cellWorkset,
626 const int & whichCell = -1);
674 template<
class ArrayRefPo
int,
class ArrayInitGuess,
class ArrayPhysPo
int,
class ArrayCell>
676 const ArrayInitGuess & initGuess,
677 const ArrayPhysPoint & physPoints,
678 const ArrayCell & cellWorkset,
679 const shards::CellTopology & cellTopo,
680 const int & whichCell = -1);
682 template<
class ArrayRefPo
int,
class ArrayInitGuess,
class ArrayPhysPo
int,
class ArrayCell>
684 const ArrayInitGuess & initGuess,
685 const ArrayPhysPoint & physPoints,
686 const ArrayCell & cellWorkset,
688 const int & whichCell = -1);
742 template<
class ArraySubcellPo
int,
class ArrayParamPo
int>
744 const ArrayParamPoint & paramPoints,
745 const int subcellDim,
746 const int subcellOrd,
747 const shards::CellTopology & parentCell);
776 template<
class ArrayEdgeTangent>
779 const shards::CellTopology & parentCell);
819 template<
class ArrayFaceTangentU,
class ArrayFaceTangentV>
821 ArrayFaceTangentV & refFaceTanV,
823 const shards::CellTopology & parentCell);
889 template<
class ArrayS
ideNormal>
892 const shards::CellTopology & parentCell);
934 template<
class ArrayFaceNormal>
937 const shards::CellTopology & parentCell);
970 template<
class ArrayEdgeTangent,
class ArrayJac>
972 const ArrayJac & worksetJacobians,
973 const int & worksetEdgeOrd,
974 const shards::CellTopology & parentCell);
1021 template<
class ArrayFaceTangentU,
class ArrayFaceTangentV,
class ArrayJac>
1023 ArrayFaceTangentV & faceTanV,
1024 const ArrayJac & worksetJacobians,
1025 const int & worksetFaceOrd,
1026 const shards::CellTopology & parentCell);
1095 template<
class ArrayS
ideNormal,
class ArrayJac>
1097 const ArrayJac & worksetJacobians,
1098 const int & worksetSideOrd,
1099 const shards::CellTopology & parentCell);
1141 template<
class ArrayFaceNormal,
class ArrayJac>
1143 const ArrayJac & worksetJacobians,
1144 const int & worksetFaceOrd,
1145 const shards::CellTopology & parentCell);
1171 const shards::CellTopology & cellTopo,
1172 const double & threshold = INTREPID_THRESHOLD);
1188 template<
class ArrayPo
int>
1190 const shards::CellTopology & cellTopo,
1191 const double & threshold = INTREPID_THRESHOLD);
1221 template<
class ArrayIncl,
class ArrayPo
int>
1223 const ArrayPoint & points,
1224 const shards::CellTopology & cellTopo,
1225 const double & threshold = INTREPID_THRESHOLD);
1264 template<
class ArrayIncl,
class ArrayPo
int,
class ArrayCell>
1266 const ArrayPoint & points,
1267 const ArrayCell & cellWorkset,
1268 const shards::CellTopology & cell,
1269 const int & whichCell = -1,
1270 const double & threshold = INTREPID_THRESHOLD);
1285 const int vertexOrd);
1303 template<
class ArraySubcellVert>
1305 const int subcellDim,
1306 const int subcellOrd,
1307 const shards::CellTopology& parentCell);
1344 template<
class ArraySubcellNode>
1346 const int subcellDim,
1347 const int subcellOrd,
1348 const shards::CellTopology& parentCell);
1374 const int subcellOrd,
1375 const shards::CellTopology & parentCell);
1382 template<
class ArrayCell>
1384 const shards::CellTopology & parentCell,
1385 const int& pCellOrd,
1386 const int& subcellDim,
1387 const int& subcellOrd,
1388 const int& fieldWidth = 3);
1469 template<
class ArrayCVCoord,
class ArrayCellCoord>
1470 static void getSubCVCoords(ArrayCVCoord & subCVcoords,
const ArrayCellCoord & cellCoords,
1471 const shards::CellTopology& primaryCell);
1479 template<
class ArrayCent,
class ArrayCellCoord>
1480 static void getBarycenter(ArrayCent & barycenter,
const ArrayCellCoord & cellCoords);
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.