Intrepid2
Public Types | Public Member Functions | Public Attributes | List of all members
Intrepid2::TransformedBasisValues< Scalar, DeviceType > Class Template Reference

Structure-preserving representation of transformed vector data; reference space values and transformations are stored separately. More...

#include <Intrepid2_TransformedBasisValues.hpp>

Public Types

using value_type = Scalar
 

Public Member Functions

 TransformedBasisValues (const Data< Scalar, DeviceType > &transform, const BasisValues< Scalar, DeviceType > &basisValues)
 Standard constructor.
 
 TransformedBasisValues (const ordinal_type &numCells, const BasisValues< Scalar, DeviceType > &basisValues)
 Constructor for the case of an identity transform.
 
template<typename OtherDeviceType , class = typename std::enable_if<!std::is_same<DeviceType, OtherDeviceType>::value>::type>
 TransformedBasisValues (const TransformedBasisValues< Scalar, OtherDeviceType > &transformedVectorData)
 copy-like constructor for differing device types. This may do a deep_copy of underlying views, depending on the memory spaces involved.
 
 TransformedBasisValues ()
 Default constructor; an invalid container. Will return -1 for numCells().
 
KOKKOS_INLINE_FUNCTION bool axisAligned () const
 Returns true if the transformation matrix is diagonal.
 
const BasisValues< Scalar, DeviceType > & basisValues () const
 
KOKKOS_INLINE_FUNCTION int cellDataExtent () const
 Returns the true data extent in the cell dimension (e.g., will be 1 for transform matrices that do not vary from one cell to the next).
 
KOKKOS_INLINE_FUNCTION DataVariationType cellVariationType () const
 Returns the variation type corresponding to the cell dimension.
 
template<class ViewType >
void multiplyByPointwiseWeights (const ViewType &weights)
 Replaces the internal pullback (transformation operator) with the result of the pullback multiplied by the specified (C,P) weights. ViewType may be a rank-2 Kokkos::View, a rank-2 Kokkos::DynRankView, or a rank-2 Intrepid2::Data object.
 
KOKKOS_INLINE_FUNCTION int numCells () const
 Returns the logical extent in the cell dimension, which is the 0 dimension in this container.
 
KOKKOS_INLINE_FUNCTION int numFields () const
 Returns the logical extent in the fields dimension, which is the 1 dimension in this container.
 
KOKKOS_INLINE_FUNCTION int numPoints () const
 Returns the logical extent in the points dimension, which is the 2 dimension in this container.
 
KOKKOS_INLINE_FUNCTION int spaceDim () const
 Returns the logical extent in the space dimension, which is the 3 dimension in this container.
 
KOKKOS_INLINE_FUNCTION Scalar operator() (const int &cellOrdinal, const int &fieldOrdinal, const int &pointOrdinal) const
 Scalar accessor, with arguments (C,F,P).
 
KOKKOS_INLINE_FUNCTION Scalar operator() (const int &cellOrdinal, const int &fieldOrdinal, const int &pointOrdinal, const int &dim) const
 Vector accessor, with arguments (C,F,P,D).
 
KOKKOS_INLINE_FUNCTION Scalar transformWeight (const int &cellOrdinal, const int &pointOrdinal) const
 Returns the specified entry in the (scalar) transform. (Only valid for scalar-valued BasisValues; see the four-argument transformWeight() for the vector-valued case.)
 
KOKKOS_INLINE_FUNCTION Scalar transformWeight (const int &cellOrdinal, const int &pointOrdinal, const int &d) const
 Returns the specified entry in the transformation vector.
 
KOKKOS_INLINE_FUNCTION Scalar transformWeight (const int &cellOrdinal, const int &pointOrdinal, const int &dim1, const int &dim2) const
 Returns the specified entry in the transform matrix.
 
const Data< Scalar, DeviceType > & transform () const
 Returns the transform matrix. An invalid/empty container indicates the identity transform.
 
const VectorData< Scalar, DeviceType > & vectorData () const
 Returns the reference-space vector data.
 
KOKKOS_INLINE_FUNCTION unsigned rank () const
 Returns the rank of the container, which is 3 for scalar values, and 4 for vector values.
 
KOKKOS_INLINE_FUNCTION int extent_int (const int &r) const
 Returns the extent in the specified dimension as an int.
 

Public Attributes

ordinal_type numCells_
 
Data< Scalar, DeviceType > transform_
 
bool transformIsDiagonal_
 
BasisValues< Scalar, DeviceType > basisValues_
 

Detailed Description

template<class Scalar, typename DeviceType>
class Intrepid2::TransformedBasisValues< Scalar, DeviceType >

Structure-preserving representation of transformed vector data; reference space values and transformations are stored separately.

TransformedBasisValues provides a View-like interface of rank 3 or 4, with shape (C,F,P) or (C,F,P,D). When the corresponding accessor is used, the transformed value is determined from corresponding reference space values and the transformation.

Definition at line 33 of file Intrepid2_TransformedBasisValues.hpp.

Member Typedef Documentation

◆ value_type

template<class Scalar , typename DeviceType >
using Intrepid2::TransformedBasisValues< Scalar, DeviceType >::value_type = Scalar

Definition at line 36 of file Intrepid2_TransformedBasisValues.hpp.

Constructor & Destructor Documentation

◆ TransformedBasisValues() [1/4]

template<class Scalar , typename DeviceType >
Intrepid2::TransformedBasisValues< Scalar, DeviceType >::TransformedBasisValues ( const Data< Scalar, DeviceType > &  transform,
const BasisValues< Scalar, DeviceType > &  basisValues 
)
inline

Standard constructor.

Parameters
[in]transform- the transformation (matrix), with logical shape (C,P), (C,P,D), or (C,P,D,D)
[in]basisValues- the reference-space data to be transformed, with logical shape (F,P) (for scalar values) or (F,P,D) (for vector values)

Definition at line 51 of file Intrepid2_TransformedBasisValues.hpp.

References Intrepid2::CONSTANT, Intrepid2::Data< DataScalar, DeviceType >::getVariationTypes(), INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::Data< DataScalar, DeviceType >::rank().

◆ TransformedBasisValues() [2/4]

template<class Scalar , typename DeviceType >
Intrepid2::TransformedBasisValues< Scalar, DeviceType >::TransformedBasisValues ( const ordinal_type &  numCells,
const BasisValues< Scalar, DeviceType > &  basisValues 
)
inline

Constructor for the case of an identity transform.

Parameters
[in]vectorData- the reference-space data, with logical shape (F,P,D)

Definition at line 67 of file Intrepid2_TransformedBasisValues.hpp.

◆ TransformedBasisValues() [3/4]

template<class Scalar , typename DeviceType >
template<typename OtherDeviceType , class = typename std::enable_if<!std::is_same<DeviceType, OtherDeviceType>::value>::type>
Intrepid2::TransformedBasisValues< Scalar, DeviceType >::TransformedBasisValues ( const TransformedBasisValues< Scalar, OtherDeviceType > &  transformedVectorData)
inline

copy-like constructor for differing device types. This may do a deep_copy of underlying views, depending on the memory spaces involved.

Definition at line 76 of file Intrepid2_TransformedBasisValues.hpp.

◆ TransformedBasisValues() [4/4]

template<class Scalar , typename DeviceType >
Intrepid2::TransformedBasisValues< Scalar, DeviceType >::TransformedBasisValues ( )
inline

Default constructor; an invalid container. Will return -1 for numCells().

Definition at line 87 of file Intrepid2_TransformedBasisValues.hpp.

Member Function Documentation

◆ axisAligned()

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION bool Intrepid2::TransformedBasisValues< Scalar, DeviceType >::axisAligned ( ) const
inline

Returns true if the transformation matrix is diagonal.

Definition at line 94 of file Intrepid2_TransformedBasisValues.hpp.

Referenced by Intrepid2::IntegrationTools< DeviceType >::integrate().

◆ basisValues()

template<class Scalar , typename DeviceType >
const BasisValues< Scalar, DeviceType > & Intrepid2::TransformedBasisValues< Scalar, DeviceType >::basisValues ( ) const
inline

Definition at line 99 of file Intrepid2_TransformedBasisValues.hpp.

◆ cellDataExtent()

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION int Intrepid2::TransformedBasisValues< Scalar, DeviceType >::cellDataExtent ( ) const
inline

Returns the true data extent in the cell dimension (e.g., will be 1 for transform matrices that do not vary from one cell to the next).

Definition at line 105 of file Intrepid2_TransformedBasisValues.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getDataExtent().

◆ cellVariationType()

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION DataVariationType Intrepid2::TransformedBasisValues< Scalar, DeviceType >::cellVariationType ( ) const
inline

Returns the variation type corresponding to the cell dimension.

Definition at line 111 of file Intrepid2_TransformedBasisValues.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getVariationTypes().

◆ extent_int()

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION int Intrepid2::TransformedBasisValues< Scalar, DeviceType >::extent_int ( const int &  r) const
inline

◆ multiplyByPointwiseWeights()

template<class Scalar , typename DeviceType >
template<class ViewType >
void Intrepid2::TransformedBasisValues< Scalar, DeviceType >::multiplyByPointwiseWeights ( const ViewType &  weights)
inline

Replaces the internal pullback (transformation operator) with the result of the pullback multiplied by the specified (C,P) weights. ViewType may be a rank-2 Kokkos::View, a rank-2 Kokkos::DynRankView, or a rank-2 Intrepid2::Data object.

Definition at line 118 of file Intrepid2_TransformedBasisValues.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::allocateInPlaceCombinationResult(), Intrepid2::getFunctorRank(), INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, Intrepid2::Data< DataScalar, DeviceType >::isValid(), Intrepid2::DataTools::multiplyByCPWeights(), and Intrepid2::Data< DataScalar, DeviceType >::rank().

◆ numCells()

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION int Intrepid2::TransformedBasisValues< Scalar, DeviceType >::numCells ( ) const
inline

◆ numFields()

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION int Intrepid2::TransformedBasisValues< Scalar, DeviceType >::numFields ( ) const
inline

◆ numPoints()

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION int Intrepid2::TransformedBasisValues< Scalar, DeviceType >::numPoints ( ) const
inline

Returns the logical extent in the points dimension, which is the 2 dimension in this container.

Definition at line 160 of file Intrepid2_TransformedBasisValues.hpp.

Referenced by Intrepid2::TransformedBasisValues< Scalar, DeviceType >::extent_int(), and Intrepid2::IntegrationTools< DeviceType >::integrate().

◆ operator()() [1/2]

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION Scalar Intrepid2::TransformedBasisValues< Scalar, DeviceType >::operator() ( const int &  cellOrdinal,
const int &  fieldOrdinal,
const int &  pointOrdinal 
) const
inline

◆ operator()() [2/2]

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION Scalar Intrepid2::TransformedBasisValues< Scalar, DeviceType >::operator() ( const int &  cellOrdinal,
const int &  fieldOrdinal,
const int &  pointOrdinal,
const int &  dim 
) const
inline

◆ rank()

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION unsigned Intrepid2::TransformedBasisValues< Scalar, DeviceType >::rank ( ) const
inline

Returns the rank of the container, which is 3 for scalar values, and 4 for vector values.

Definition at line 298 of file Intrepid2_TransformedBasisValues.hpp.

References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::Data< DataScalar, DeviceType >::rank().

◆ spaceDim()

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION int Intrepid2::TransformedBasisValues< Scalar, DeviceType >::spaceDim ( ) const
inline

◆ transform()

template<class Scalar , typename DeviceType >
const Data< Scalar, DeviceType > & Intrepid2::TransformedBasisValues< Scalar, DeviceType >::transform ( ) const
inline

Returns the transform matrix. An invalid/empty container indicates the identity transform.

Definition at line 285 of file Intrepid2_TransformedBasisValues.hpp.

Referenced by Intrepid2::IntegrationTools< DeviceType >::allocateIntegralData(), and Intrepid2::IntegrationTools< DeviceType >::integrate().

◆ transformWeight() [1/3]

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION Scalar Intrepid2::TransformedBasisValues< Scalar, DeviceType >::transformWeight ( const int &  cellOrdinal,
const int &  pointOrdinal 
) const
inline

Returns the specified entry in the (scalar) transform. (Only valid for scalar-valued BasisValues; see the four-argument transformWeight() for the vector-valued case.)

Definition at line 244 of file Intrepid2_TransformedBasisValues.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::isValid().

◆ transformWeight() [2/3]

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION Scalar Intrepid2::TransformedBasisValues< Scalar, DeviceType >::transformWeight ( const int &  cellOrdinal,
const int &  pointOrdinal,
const int &  d 
) const
inline

Returns the specified entry in the transformation vector.

Definition at line 258 of file Intrepid2_TransformedBasisValues.hpp.

References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::Data< DataScalar, DeviceType >::isValid().

◆ transformWeight() [3/3]

template<class Scalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION Scalar Intrepid2::TransformedBasisValues< Scalar, DeviceType >::transformWeight ( const int &  cellOrdinal,
const int &  pointOrdinal,
const int &  dim1,
const int &  dim2 
) const
inline

Returns the specified entry in the transform matrix.

Definition at line 271 of file Intrepid2_TransformedBasisValues.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::isValid().

◆ vectorData()

template<class Scalar , typename DeviceType >
const VectorData< Scalar, DeviceType > & Intrepid2::TransformedBasisValues< Scalar, DeviceType >::vectorData ( ) const
inline

Returns the reference-space vector data.

Definition at line 291 of file Intrepid2_TransformedBasisValues.hpp.

References Intrepid2::BasisValues< Scalar, DeviceType >::vectorData().

Referenced by Intrepid2::IntegrationTools< DeviceType >::integrate().

Member Data Documentation

◆ basisValues_

template<class Scalar , typename DeviceType >
BasisValues<Scalar, DeviceType> Intrepid2::TransformedBasisValues< Scalar, DeviceType >::basisValues_

Definition at line 44 of file Intrepid2_TransformedBasisValues.hpp.

◆ numCells_

template<class Scalar , typename DeviceType >
ordinal_type Intrepid2::TransformedBasisValues< Scalar, DeviceType >::numCells_

Definition at line 38 of file Intrepid2_TransformedBasisValues.hpp.

◆ transform_

template<class Scalar , typename DeviceType >
Data<Scalar,DeviceType> Intrepid2::TransformedBasisValues< Scalar, DeviceType >::transform_

Definition at line 40 of file Intrepid2_TransformedBasisValues.hpp.

◆ transformIsDiagonal_

template<class Scalar , typename DeviceType >
bool Intrepid2::TransformedBasisValues< Scalar, DeviceType >::transformIsDiagonal_

Definition at line 42 of file Intrepid2_TransformedBasisValues.hpp.


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