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>
388 using KeyType = std::pair<const std::string,ordinal_type>;
389 using OrtCoeffDataType = std::map<KeyType,Kokkos::View<double****,DeviceType> >;
391 static OrtCoeffDataType ortCoeffData;
392 static OrtCoeffDataType ortInvCoeffData;
396 template<
typename BasisHostType>
398 static CoeffMatrixDataViewType createCoeffMatrixInternal(
const BasisHostType* basis,
const bool invTrans =
false);
403 template<
typename BasisHostType>
406 BasisHostType
const *cellBasis,
407 const bool inverse =
false);
411 template<
typename BasisHostType>
414 BasisHostType
const *cellBasis,
415 const bool inverse =
false);
419 template<
typename BasisHostType>
422 BasisHostType
const *cellBasis,
423 const bool inverse =
false);
427 template<
typename BasisHostType>
430 BasisHostType
const *cellBasis,
431 const bool inverse =
false);
438 template<
typename BasisType>
445 template<
typename BasisType>
460 template<
typename elemOrtValueType,
class ...elemOrtProperties,
461 typename elemNodeValueType,
class ...elemNodeProperties>
464 getOrientation(Kokkos::DynRankView<elemOrtValueType,elemOrtProperties...> elemOrts,
465 const Kokkos::DynRankView<elemNodeValueType,elemNodeProperties...> elemNodes,
466 const shards::CellTopology cellTopo,
467 bool isSide =
false);
477 template<
typename outputValueType,
class ...outputProperties,
478 typename inputValueType,
class ...inputProperties,
479 typename OrientationViewType,
484 const Kokkos::DynRankView<inputValueType, inputProperties...> input,
485 const OrientationViewType orts,
486 const BasisType * basis,
487 const bool transpose =
false);
495 template<
typename outputValueType,
class ...outputProperties,
496 typename inputValueType,
class ...inputProperties,
497 typename OrientationViewType,
502 const Kokkos::DynRankView<inputValueType, inputProperties...> input,
503 const OrientationViewType orts,
504 const BasisType * basis);
514 template<
typename outputValueType,
class ...outputProperties,
515 typename inputValueType,
class ...inputProperties,
516 typename OrientationViewType,
521 const Kokkos::DynRankView<inputValueType, inputProperties...> input,
522 const OrientationViewType orts,
523 const BasisType * basis,
524 const bool transpose =
false);
534 template<
typename outputValueType,
class ...outputProperties,
535 typename inputValueType,
class ...inputProperties,
536 typename OrientationViewType,
537 typename BasisTypeLeft,
538 typename BasisTypeRight>
542 const Kokkos::DynRankView<inputValueType, inputProperties...> input,
543 const OrientationViewType orts,
544 const BasisTypeLeft* basisLeft,
545 const BasisTypeRight* basisRight);
559 #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.