Intrepid2
Intrepid2::OrientationTools< DeviceType > Class Template Reference

Tools to compute orientations for degrees-of-freedom. More...

#include <Intrepid2_OrientationTools.hpp>

Public Types

typedef Kokkos::View< double ****, DeviceType > CoeffMatrixDataViewType
 subcell ordinal, orientation, matrix m x n

Public Member Functions

template<typename BasisHostType>
void init_HGRAD (typename OrientationTools< DT >::CoeffMatrixDataViewType matData, BasisHostType const *cellBasis)
template<typename BasisHostType>
void init_HCURL (typename OrientationTools< DT >::CoeffMatrixDataViewType matData, BasisHostType const *cellBasis)
template<typename BasisHostType>
void init_HDIV (typename OrientationTools< DT >::CoeffMatrixDataViewType matData, BasisHostType const *cellBasis)
template<typename BasisHostType>
void init_HVOL (typename OrientationTools< DT >::CoeffMatrixDataViewType matData, BasisHostType const *cellBasis)

Static Public Member Functions

template<typename BasisType>
static CoeffMatrixDataViewType createCoeffMatrix (const BasisType *basis)
 Create coefficient matrix.
static void clearCoeffMatrix ()
 Clear coefficient matrix.
template<typename elemOrtValueType, class ... elemOrtProperties, typename elemNodeValueType, class ... elemNodeProperties>
static void getOrientation (Kokkos::DynRankView< elemOrtValueType, elemOrtProperties... > elemOrts, const Kokkos::DynRankView< elemNodeValueType, elemNodeProperties... > elemNodes, const shards::CellTopology cellTopo, bool isSide=false)
 Compute orientations of cells in a workset.
template<typename outputValueType, class ... outputProperties, typename inputValueType, class ... inputProperties, typename OrientationViewType, typename BasisType>
static void modifyBasisByOrientation (Kokkos::DynRankView< outputValueType, outputProperties... > output, const Kokkos::DynRankView< inputValueType, inputProperties... > input, const OrientationViewType orts, const BasisType *basis)
 Modify basis due to orientation.
template<typename outputValueType, class ... outputProperties, typename inputValueType, class ... inputProperties, typename OrientationViewType, typename BasisType>
static void modifyBasisByOrientationTranspose (Kokkos::DynRankView< outputValueType, outputProperties... > output, const Kokkos::DynRankView< inputValueType, inputProperties... > input, const OrientationViewType orts, const BasisType *basis)
 Modify basis due to orientation, applying the transpose of the operator applied in modifyBasisByOrientation(). If the input provided represents basis coefficents in the global orientation, then this method will appropriately transform them to the local orientation.
template<typename outputValueType, class ... outputProperties, typename inputValueType, class ... inputProperties, typename OrientationViewType, typename BasisTypeLeft, typename BasisTypeRight>
static void modifyMatrixByOrientation (Kokkos::DynRankView< outputValueType, outputProperties... > output, const Kokkos::DynRankView< inputValueType, inputProperties... > input, const OrientationViewType orts, const BasisTypeLeft *basisLeft, const BasisTypeRight *basisRight)
 Modify an assembled (C,F1,F2) matrix according to orientation of the cells.

Static Public Attributes

static std::map< std::pair< std::string, ordinal_type >, CoeffMatrixDataViewTypeortCoeffData
 key :: basis name, order, value :: matrix data view type

Static Private Member Functions

template<typename BasisHostType>
static CoeffMatrixDataViewType createCoeffMatrixInternal (const BasisHostType *basis)
template<typename BasisHostType>
static void init_HGRAD (CoeffMatrixDataViewType matData, BasisHostType const *cellBasis)
 Compute orientation matrix for HGRAD basis.
template<typename BasisHostType>
static void init_HCURL (CoeffMatrixDataViewType matData, BasisHostType const *cellBasis)
 Compute orientation matrix for HCURL basis.
template<typename BasisHostType>
static void init_HDIV (CoeffMatrixDataViewType matData, BasisHostType const *cellBasis)
 Compute orientation matrix for HDIV basis.
template<typename BasisHostType>
static void init_HVOL (CoeffMatrixDataViewType matData, BasisHostType const *cellBasis)
 Compute orientation matrix for HVOL basis.

Detailed Description

template<typename DeviceType>
class Intrepid2::OrientationTools< DeviceType >

Tools to compute orientations for degrees-of-freedom.

Definition at line 406 of file Intrepid2_OrientationTools.hpp.

Member Typedef Documentation

◆ CoeffMatrixDataViewType

template<typename DeviceType>
typedef Kokkos::View<double****,DeviceType> Intrepid2::OrientationTools< DeviceType >::CoeffMatrixDataViewType

subcell ordinal, orientation, matrix m x n

Definition at line 411 of file Intrepid2_OrientationTools.hpp.

Member Function Documentation

◆ clearCoeffMatrix()

template<typename DT>
void Intrepid2::OrientationTools< DT >::clearCoeffMatrix ( )
inlinestatic

Clear coefficient matrix.

Definition at line 325 of file Intrepid2_OrientationToolsDefMatrixData.hpp.

References ortCoeffData.

◆ createCoeffMatrix()

template<typename DT>
template<typename BasisType>
OrientationTools< DT >::CoeffMatrixDataViewType Intrepid2::OrientationTools< DT >::createCoeffMatrix ( const BasisType * basis)
inlinestatic

Create coefficient matrix.

Parameters
basis[in] - basis type

Definition at line 302 of file Intrepid2_OrientationToolsDefMatrixData.hpp.

References ortCoeffData.

Referenced by modifyBasisByOrientation(), modifyBasisByOrientationTranspose(), and modifyMatrixByOrientation().

◆ createCoeffMatrixInternal()

template<typename DT>
template<typename BasisHostType>
OrientationTools< DT >::CoeffMatrixDataViewType Intrepid2::OrientationTools< DT >::createCoeffMatrixInternal ( const BasisHostType * basis)
inlinestaticprivate

Definition at line 61 of file Intrepid2_OrientationToolsDefMatrixData.hpp.

◆ getOrientation()

template<typename DT>
template<typename elemOrtValueType, class ... elemOrtProperties, typename elemNodeValueType, class ... elemNodeProperties>
void Intrepid2::OrientationTools< DT >::getOrientation ( Kokkos::DynRankView< elemOrtValueType, elemOrtProperties... > elemOrts,
const Kokkos::DynRankView< elemNodeValueType, elemNodeProperties... > elemNodes,
const shards::CellTopology cellTopo,
bool isSide = false )
inlinestatic

Compute orientations of cells in a workset.

Parameters
elemOrts[out] - cell orientations
elemNodes[in] - node coordinates
cellTopo[in] - shards cell topology
isSide[in] - boolean, whether the cell is a side

Definition at line 64 of file Intrepid2_OrientationToolsDefModifyBasis.hpp.

Referenced by Intrepid2::CellGeometry< PointScalar, spaceDim, DeviceType >::initializeOrientations().

◆ init_HCURL()

template<typename DeviceType>
template<typename BasisHostType>
void Intrepid2::OrientationTools< DeviceType >::init_HCURL ( typename OrientationTools< DT >::CoeffMatrixDataViewType matData,
BasisHostType const * cellBasis )

Definition at line 168 of file Intrepid2_OrientationToolsDefMatrixData.hpp.

◆ init_HDIV()

template<typename DeviceType>
template<typename BasisHostType>
void Intrepid2::OrientationTools< DeviceType >::init_HDIV ( typename OrientationTools< DT >::CoeffMatrixDataViewType matData,
BasisHostType const * cellBasis )

Definition at line 228 of file Intrepid2_OrientationToolsDefMatrixData.hpp.

◆ init_HGRAD()

template<typename DeviceType>
template<typename BasisHostType>
void Intrepid2::OrientationTools< DeviceType >::init_HGRAD ( typename OrientationTools< DT >::CoeffMatrixDataViewType matData,
BasisHostType const * cellBasis )

Definition at line 105 of file Intrepid2_OrientationToolsDefMatrixData.hpp.

◆ init_HVOL()

template<typename DeviceType>
template<typename BasisHostType>
void Intrepid2::OrientationTools< DeviceType >::init_HVOL ( typename OrientationTools< DT >::CoeffMatrixDataViewType matData,
BasisHostType const * cellBasis )

Definition at line 262 of file Intrepid2_OrientationToolsDefMatrixData.hpp.

◆ modifyBasisByOrientation()

template<typename DT>
template<typename outputValueType, class ... outputProperties, typename inputValueType, class ... inputProperties, typename OrientationViewType, typename BasisType>
void Intrepid2::OrientationTools< DT >::modifyBasisByOrientation ( Kokkos::DynRankView< outputValueType, outputProperties... > output,
const Kokkos::DynRankView< inputValueType, inputProperties... > input,
const OrientationViewType orts,
const BasisType * basis )
inlinestatic

◆ modifyBasisByOrientationTranspose()

template<typename DT>
template<typename outputValueType, class ... outputProperties, typename inputValueType, class ... inputProperties, typename OrientationViewType, typename BasisType>
void Intrepid2::OrientationTools< DT >::modifyBasisByOrientationTranspose ( Kokkos::DynRankView< outputValueType, outputProperties... > output,
const Kokkos::DynRankView< inputValueType, inputProperties... > input,
const OrientationViewType orts,
const BasisType * basis )
inlinestatic

Modify basis due to orientation, applying the transpose of the operator applied in modifyBasisByOrientation(). If the input provided represents basis coefficents in the global orientation, then this method will appropriately transform them to the local orientation.

Parameters
output[out] - output array, of shape (C,F,P[,D])
input[in] - input array, of shape (C,F,P[,D]) or (F,P[,D])
orts[in] - orientations, of shape (C)
basis[in] - basis of cardinality F

Definition at line 364 of file Intrepid2_OrientationToolsDefModifyBasis.hpp.

References Intrepid2::RealSpaceTools< DeviceType >::clone(), and createCoeffMatrix().

◆ modifyMatrixByOrientation()

template<typename DT>
template<typename outputValueType, class ... outputProperties, typename inputValueType, class ... inputProperties, typename OrientationViewType, typename BasisTypeLeft, typename BasisTypeRight>
void Intrepid2::OrientationTools< DT >::modifyMatrixByOrientation ( Kokkos::DynRankView< outputValueType, outputProperties... > output,
const Kokkos::DynRankView< inputValueType, inputProperties... > input,
const OrientationViewType orts,
const BasisTypeLeft * basisLeft,
const BasisTypeRight * basisRight )
inlinestatic

Modify an assembled (C,F1,F2) matrix according to orientation of the cells.

Parameters
output[out] - output array, shape (C,F1,F2)
input[in] - input array, shape (C,F1,F2)
orts[in] - orientations, shape (C)
basisLeft[in] - basis with cardinality F1
basisRight[in] - basis with cardinality F2

Definition at line 450 of file Intrepid2_OrientationToolsDefModifyBasis.hpp.

References Intrepid2::RealSpaceTools< DeviceType >::clone(), and createCoeffMatrix().

Member Data Documentation

◆ ortCoeffData

template<typename DeviceType>
std::map<std::pair<std::string,ordinal_type>,CoeffMatrixDataViewType> Intrepid2::OrientationTools< DeviceType >::ortCoeffData
static

key :: basis name, order, value :: matrix data view type

Definition at line 416 of file Intrepid2_OrientationTools.hpp.

Referenced by clearCoeffMatrix(), and createCoeffMatrix().


The documentation for this class was generated from the following files: