Intrepid2
|
The data containers in Intrepid2 that support sum factorization and other reduced-data optimizations distinguish between scalar-valued data that is a simple product of elements in tensor components, and vector-valued data that is made up of a series of such products. More...
#include <Intrepid2_BasisValues.hpp>
Public Member Functions | |
BasisValues (TensorDataType tensorData) | |
Constructor for scalar-valued BasisValues with a single family of values. | |
BasisValues (std::vector< TensorDataType > tensorDataFamilies) | |
Constructor for scalar-valued BasisValues, with potentially multiple families of values. (Used, e.g., for op = DIV and functionSpace = HDIV.) | |
BasisValues (VectorDataType vectorData) | |
Constructor for vector-valued BasisValues. | |
BasisValues () | |
Default constructor. | |
template<typename OtherExecSpaceType , class = typename std::enable_if<!std::is_same<ExecSpaceType, OtherExecSpaceType>::value>::type> | |
BasisValues (const BasisValues< Scalar, OtherExecSpaceType > &basisValues) | |
copy-like constructor for differing execution spaces. This does a deep copy of underlying views. | |
BasisValues< Scalar, ExecSpaceType > | basisValuesForFields (const int &fieldStartOrdinal, const int &numFields) |
field start and length must align with families in vectorData_ or tensorDataFamilies_ (whichever is valid). | |
KOKKOS_INLINE_FUNCTION int | familyFieldOrdinalOffset (const int &familyOrdinal) const |
Returns the field ordinal offset for the specified family. | |
TensorDataType & | tensorData () |
TensorData accessor for single-family scalar data. | |
const TensorDataType & | tensorData (const int &familyOrdinal) const |
TensorData accessor for multi-family scalar data. | |
KOKKOS_INLINE_FUNCTION int | numFamilies () const |
For valid vectorData, returns the number of families in vectorData; otherwise, returns number of TensorData families. | |
KOKKOS_INLINE_FUNCTION int | numTensorDataFamilies () const |
KOKKOS_INLINE_FUNCTION int | numFieldsInFamily (int familyOrdinal) const |
const Kokkos::Array< TensorDataType, Parameters::MaxTensorComponents > & | tensorDataFamilies () const |
TensorDataFamilies accessor. | |
const VectorDataType & | vectorData () const |
VectorData accessor. | |
KOKKOS_INLINE_FUNCTION Scalar | operator() (const int &fieldOrdinal, const int &pointOrdinal) const |
operator() for (F,P) scalar data; throws an exception if this is not a scalar-valued container | |
KOKKOS_INLINE_FUNCTION Scalar | operator() (const int &fieldOrdinal, const int &pointOrdinal, const int &dim) const |
operator() for (F,P,D) vector data; throws an exception if this is not a vector-valued container | |
KOKKOS_INLINE_FUNCTION Scalar | operator() (const int &cellOrdinal, const int &fieldOrdinal, const int &pointOrdinal, const int &dim) const |
operator() for (C,F,P,D) data, which arises in CVFEM; at present unimplemented, and only declared here to allow a generic setJacobian() method in CellTools to compile. | |
KOKKOS_INLINE_FUNCTION int | extent_int (const int &i) const |
KOKKOS_INLINE_FUNCTION size_t | extent (const int &i) const |
KOKKOS_INLINE_FUNCTION size_t | rank () const |
void | setOrdinalFilter (Kokkos::View< ordinal_type *, ExecSpaceType > ordinalFilter) |
Kokkos::View< ordinal_type *, ExecSpaceType > | ordinalFilter () const |
Private Types | |
using | TensorDataType = TensorData<Scalar,ExecSpaceType> |
using | VectorDataType = VectorData<Scalar,ExecSpaceType> |
Private Attributes | |
Kokkos::Array< TensorDataType, Parameters::MaxTensorComponents > | tensorDataFamilies_ |
VectorDataType | vectorData_ |
int | numTensorDataFamilies_ = -1 |
Kokkos::View< ordinal_type *, ExecSpaceType > | ordinalFilter_ |
The data containers in Intrepid2 that support sum factorization and other reduced-data optimizations distinguish between scalar-valued data that is a simple product of elements in tensor components, and vector-valued data that is made up of a series of such products.
BasisValues contains both a VectorData and a TensorData object; only one of them will be valid in any BasisValues object. This allows us to maintain a common getValues() interface in the Basis class, rather than distinguishing at the interface level between operations that result in vector values and those that result in scalars.
Definition at line 69 of file Intrepid2_BasisValues.hpp.
|
private |
Definition at line 71 of file Intrepid2_BasisValues.hpp.
|
private |
Definition at line 72 of file Intrepid2_BasisValues.hpp.
|
inline |
Constructor for scalar-valued BasisValues with a single family of values.
Definition at line 82 of file Intrepid2_BasisValues.hpp.
References Intrepid2::BasisValues< Scalar, ExecSpaceType >::tensorData().
|
inline |
Constructor for scalar-valued BasisValues, with potentially multiple families of values. (Used, e.g., for op = DIV and functionSpace = HDIV.)
Definition at line 89 of file Intrepid2_BasisValues.hpp.
References Intrepid2::BasisValues< Scalar, ExecSpaceType >::tensorDataFamilies().
|
inline |
Constructor for vector-valued BasisValues.
Definition at line 100 of file Intrepid2_BasisValues.hpp.
|
inline |
Default constructor.
Definition at line 106 of file Intrepid2_BasisValues.hpp.
|
inline |
copy-like constructor for differing execution spaces. This does a deep copy of underlying views.
Definition at line 114 of file Intrepid2_BasisValues.hpp.
References Intrepid2::BasisValues< Scalar, ExecSpaceType >::tensorDataFamilies().
|
inline |
field start and length must align with families in vectorData_ or tensorDataFamilies_ (whichever is valid).
Definition at line 131 of file Intrepid2_BasisValues.hpp.
References Intrepid2::VectorData< Scalar, DeviceType >::getComponent(), Intrepid2::VectorData< Scalar, DeviceType >::numComponents(), Intrepid2::BasisValues< Scalar, ExecSpaceType >::numFamilies(), and Intrepid2::BasisValues< Scalar, ExecSpaceType >::tensorDataFamilies().
Referenced by Intrepid2::Basis_DirectSumBasis< BasisBaseClass >::getValues().
|
inline |
Definition at line 342 of file Intrepid2_BasisValues.hpp.
|
inline |
Definition at line 304 of file Intrepid2_BasisValues.hpp.
|
inline |
Returns the field ordinal offset for the specified family.
Definition at line 174 of file Intrepid2_BasisValues.hpp.
References Intrepid2::VectorData< Scalar, DeviceType >::familyFieldOrdinalOffset(), and Intrepid2::VectorData< Scalar, DeviceType >::isValid().
Referenced by Intrepid2::IntegrationTools< DeviceType >::integrate().
|
inline |
For valid vectorData, returns the number of families in vectorData; otherwise, returns number of TensorData families.
Definition at line 208 of file Intrepid2_BasisValues.hpp.
References Intrepid2::VectorData< Scalar, DeviceType >::isValid(), and Intrepid2::VectorData< Scalar, DeviceType >::numFamilies().
Referenced by Intrepid2::BasisValues< Scalar, ExecSpaceType >::basisValuesForFields(), Intrepid2::Basis_TensorBasis< BasisBaseClass >::getValues(), and Intrepid2::IntegrationTools< DeviceType >::integrate().
|
inline |
Definition at line 227 of file Intrepid2_BasisValues.hpp.
|
inline |
Definition at line 221 of file Intrepid2_BasisValues.hpp.
|
inline |
operator() for (C,F,P,D) data, which arises in CVFEM; at present unimplemented, and only declared here to allow a generic setJacobian() method in CellTools to compile.
Definition at line 297 of file Intrepid2_BasisValues.hpp.
References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE.
|
inline |
operator() for (F,P) scalar data; throws an exception if this is not a scalar-valued container
Definition at line 253 of file Intrepid2_BasisValues.hpp.
References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE.
|
inline |
operator() for (F,P,D) vector data; throws an exception if this is not a vector-valued container
Definition at line 286 of file Intrepid2_BasisValues.hpp.
References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::VectorData< Scalar, DeviceType >::isValid().
|
inline |
Definition at line 369 of file Intrepid2_BasisValues.hpp.
|
inline |
Definition at line 348 of file Intrepid2_BasisValues.hpp.
|
inline |
Definition at line 364 of file Intrepid2_BasisValues.hpp.
|
inline |
TensorData accessor for single-family scalar data.
Definition at line 192 of file Intrepid2_BasisValues.hpp.
References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE.
Referenced by Intrepid2::Basis_DirectSumBasis< BasisBaseClass >::allocateBasisValues(), Intrepid2::BasisValues< Scalar, ExecSpaceType >::BasisValues(), Intrepid2::Basis< Device, outputValueType, pointValueType >::getValues(), Intrepid2::Basis_TensorBasis< BasisBaseClass >::getValues(), and Intrepid2::IntegrationTools< DeviceType >::integrate().
|
inline |
TensorData accessor for multi-family scalar data.
Definition at line 199 of file Intrepid2_BasisValues.hpp.
References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE.
|
inline |
TensorDataFamilies accessor.
Definition at line 240 of file Intrepid2_BasisValues.hpp.
Referenced by Intrepid2::BasisValues< Scalar, ExecSpaceType >::BasisValues(), Intrepid2::BasisValues< Scalar, ExecSpaceType >::BasisValues(), and Intrepid2::BasisValues< Scalar, ExecSpaceType >::basisValuesForFields().
|
inline |
VectorData accessor.
Definition at line 246 of file Intrepid2_BasisValues.hpp.
Referenced by Intrepid2::Basis_DirectSumBasis< BasisBaseClass >::allocateBasisValues(), Intrepid2::Basis< Device, outputValueType, pointValueType >::getValues(), Intrepid2::Basis_TensorBasis< BasisBaseClass >::getValues(), and Intrepid2::TransformedBasisValues< Scalar, DeviceType >::vectorData().
|
private |
Definition at line 77 of file Intrepid2_BasisValues.hpp.
|
private |
Definition at line 79 of file Intrepid2_BasisValues.hpp.
|
private |
Definition at line 74 of file Intrepid2_BasisValues.hpp.
|
private |
Definition at line 75 of file Intrepid2_BasisValues.hpp.