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);
267 template<
typename TanViewType,
typename ParamViewType>
268 KOKKOS_INLINE_FUNCTION
270 const ParamViewType subCellParametrization,
271 const unsigned subcellTopoKey,
272 const ordinal_type subCellOrd,
273 const ordinal_type ort);
286 template<
typename TanNormViewType,
typename ParamViewType>
287 KOKKOS_INLINE_FUNCTION
289 const ParamViewType subCellParametrization,
290 const unsigned subcellTopoKey,
291 const ordinal_type subCellOrd,
292 const ordinal_type ort);
304 template<
typename coordsViewType,
typename subcellCoordsViewType,
typename ParamViewType>
305 KOKKOS_INLINE_FUNCTION
307 const subcellCoordsViewType subCellCoords,
308 const ParamViewType subcellParametrization,
309 const unsigned subcellTopoKey,
310 const ordinal_type subCellOrd,
311 const ordinal_type ort);
329 template<
typename OutputViewType,
330 typename subcellBasisHostType,
331 typename cellBasisHostType>
335 const subcellBasisHostType& subcellBasis,
336 const cellBasisHostType& cellBasis,
337 const ordinal_type subcellId,
338 const ordinal_type subcellOrt,
339 const bool inverse =
false);
351 template<
typename OutputViewType,
352 typename subcellBasisHostType,
353 typename cellBasisHostType>
357 const subcellBasisHostType& subcellBasis,
358 const cellBasisHostType& cellBasis,
359 const ordinal_type subcellId,
360 const ordinal_type subcellOrt,
361 const bool inverse =
false);
374 template<
typename OutputViewType,
375 typename subcellBasisHostType,
376 typename cellBasisHostType>
380 const subcellBasisHostType& subcellBasis,
381 const cellBasisHostType& cellBasis,
382 const ordinal_type subcellId,
383 const ordinal_type subcellOrt,
384 const bool inverse =
false);
395 template<
typename OutputViewType,
396 typename cellBasisHostType>
400 const cellBasisHostType& cellBasis,
401 const ordinal_type cellOrt,
402 const bool inverse =
false);
410 template<
typename DeviceType>
426 template<
typename BasisHostType>
428 static CoeffMatrixDataViewType createCoeffMatrixInternal(
const BasisHostType* basis,
const bool invTrans =
false);
433 template<
typename BasisHostType>
436 BasisHostType
const *cellBasis,
437 const bool inverse =
false);
441 template<
typename BasisHostType>
444 BasisHostType
const *cellBasis,
445 const bool inverse =
false);
449 template<
typename BasisHostType>
452 BasisHostType
const *cellBasis,
453 const bool inverse =
false);
457 template<
typename BasisHostType>
460 BasisHostType
const *cellBasis,
461 const bool inverse =
false);
468 template<
typename BasisType>
475 template<
typename BasisType>
490 template<
typename elemOrtValueType,
class ...elemOrtProperties,
491 typename elemNodeValueType,
class ...elemNodeProperties>
494 getOrientation(Kokkos::DynRankView<elemOrtValueType,elemOrtProperties...> elemOrts,
495 const Kokkos::DynRankView<elemNodeValueType,elemNodeProperties...> elemNodes,
496 const shards::CellTopology cellTopo,
497 bool isSide =
false);
507 template<
typename outputValueType,
class ...outputProperties,
508 typename inputValueType,
class ...inputProperties,
509 typename OrientationViewType,
514 const Kokkos::DynRankView<inputValueType, inputProperties...> input,
515 const OrientationViewType orts,
516 const BasisType * basis,
517 const bool transpose =
false);
525 template<
typename outputValueType,
class ...outputProperties,
526 typename inputValueType,
class ...inputProperties,
527 typename OrientationViewType,
532 const Kokkos::DynRankView<inputValueType, inputProperties...> input,
533 const OrientationViewType orts,
534 const BasisType * basis);
544 template<
typename outputValueType,
class ...outputProperties,
545 typename inputValueType,
class ...inputProperties,
546 typename OrientationViewType,
551 const Kokkos::DynRankView<inputValueType, inputProperties...> input,
552 const OrientationViewType orts,
553 const BasisType * basis,
554 const bool transpose =
false);
564 template<
typename outputValueType,
class ...outputProperties,
565 typename inputValueType,
class ...inputProperties,
566 typename OrientationViewType,
567 typename BasisTypeLeft,
568 typename BasisTypeRight>
572 const Kokkos::DynRankView<inputValueType, inputProperties...> input,
573 const OrientationViewType orts,
574 const BasisTypeLeft* basisLeft,
575 const BasisTypeRight* basisRight);
590 #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.