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>
393 template<
typename BasisHostType>
395 static CoeffMatrixDataViewType createCoeffMatrixInternal(
const BasisHostType* basis,
const bool invTrans =
false);
400 template<
typename BasisHostType>
403 BasisHostType
const *cellBasis,
404 const bool inverse =
false);
408 template<
typename BasisHostType>
411 BasisHostType
const *cellBasis,
412 const bool inverse =
false);
416 template<
typename BasisHostType>
419 BasisHostType
const *cellBasis,
420 const bool inverse =
false);
424 template<
typename BasisHostType>
427 BasisHostType
const *cellBasis,
428 const bool inverse =
false);
435 template<
typename BasisType>
442 template<
typename BasisType>
457 template<
typename elemOrtValueType,
class ...elemOrtProperties,
458 typename elemNodeValueType,
class ...elemNodeProperties>
461 getOrientation(Kokkos::DynRankView<elemOrtValueType,elemOrtProperties...> elemOrts,
462 const Kokkos::DynRankView<elemNodeValueType,elemNodeProperties...> elemNodes,
463 const shards::CellTopology cellTopo,
464 bool isSide =
false);
474 template<
typename outputValueType,
class ...outputProperties,
475 typename inputValueType,
class ...inputProperties,
476 typename OrientationViewType,
481 const Kokkos::DynRankView<inputValueType, inputProperties...> input,
482 const OrientationViewType orts,
483 const BasisType * basis,
484 const bool transpose =
false);
492 template<
typename outputValueType,
class ...outputProperties,
493 typename inputValueType,
class ...inputProperties,
494 typename OrientationViewType,
499 const Kokkos::DynRankView<inputValueType, inputProperties...> input,
500 const OrientationViewType orts,
501 const BasisType * basis);
511 template<
typename outputValueType,
class ...outputProperties,
512 typename inputValueType,
class ...inputProperties,
513 typename OrientationViewType,
518 const Kokkos::DynRankView<inputValueType, inputProperties...> input,
519 const OrientationViewType orts,
520 const BasisType * basis,
521 const bool transpose =
false);
531 template<
typename outputValueType,
class ...outputProperties,
532 typename inputValueType,
class ...inputProperties,
533 typename OrientationViewType,
534 typename BasisTypeLeft,
535 typename BasisTypeRight>
539 const Kokkos::DynRankView<inputValueType, inputProperties...> input,
540 const OrientationViewType orts,
541 const BasisTypeLeft* basisLeft,
542 const BasisTypeRight* basisRight);
557 #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.