52#ifndef Intrepid2_TransformedBasisValues_h
53#define Intrepid2_TransformedBasisValues_h
56#include "Intrepid2_ScalarView.hpp"
64 template<
class Scalar,
typename DeviceType>
68 ordinal_type numCells_;
83 basisValues_(basisValues)
96 basisValues_(basisValues)
100 template<typename OtherDeviceType, class = typename std::enable_if<!std::is_same<DeviceType, OtherDeviceType>::value>::type>
103 numCells_(transformedVectorData.
numCells()),
104 transform_(transformedVectorData.
transform()),
105 basisValues_(transformedVectorData.basisValues())
156 return basisValues_.extent_int(0);
162 return basisValues_.extent_int(1);
168 return basisValues_.extent_int(2);
172 KOKKOS_INLINE_FUNCTION Scalar
operator()(
const int &cellOrdinal,
const int &fieldOrdinal,
const int &pointOrdinal)
const
177 return basisValues_(fieldOrdinal,pointOrdinal);
181 return transform_(cellOrdinal,pointOrdinal) * basisValues_(fieldOrdinal,pointOrdinal);
186 KOKKOS_INLINE_FUNCTION Scalar
operator()(
const int &cellOrdinal,
const int &fieldOrdinal,
const int &pointOrdinal,
const int &dim)
const
191 return basisValues_(fieldOrdinal,pointOrdinal,dim);
195 return transform_(cellOrdinal,pointOrdinal,dim,dim) * basisValues_(fieldOrdinal,pointOrdinal,dim);
200 for (
int d2=0; d2<transform_.
extent_int(2); d2++)
202 value += transform_(cellOrdinal,pointOrdinal,dim,d2) * basisValues_(fieldOrdinal,pointOrdinal,d2);
209 KOKKOS_INLINE_FUNCTION Scalar
transformWeight(
const int &cellOrdinal,
const int &pointOrdinal)
const
218 return transform_(cellOrdinal,pointOrdinal);
223 KOKKOS_INLINE_FUNCTION Scalar
transformWeight(
const int &cellOrdinal,
const int &pointOrdinal,
const int &dim1,
const int &dim2)
const
228 return (dim1 == dim2) ? 1.0 : 0.0;
232 return transform_(cellOrdinal,pointOrdinal,dim1,dim2);
249 KOKKOS_INLINE_FUNCTION
252 return basisValues_.rank() + 1;
256 KOKKOS_INLINE_FUNCTION
263 else if (r > 3)
return 1;
Header file for the data-wrapper class Intrepid2::BasisValues.
#define INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE(test, x, msg)
The data containers in Intrepid2 that support sum factorization and other reduced-data optimizations ...
const VectorDataType & vectorData() const
VectorData accessor.
Wrapper around a Kokkos::View that allows data that is constant or repeating in various logical dimen...
KOKKOS_INLINE_FUNCTION int extent_int(const int &r) const
Returns the logical extent in the specified dimension.
KOKKOS_INLINE_FUNCTION constexpr bool isValid() const
returns true for containers that have data; false for those that don't (namely, those that have been ...
KOKKOS_INLINE_FUNCTION bool isDiagonal() const
returns true for containers that have two dimensions marked as BLOCK_PLUS_DIAGONAL for which the non-...
KOKKOS_INLINE_FUNCTION const Kokkos::Array< DataVariationType, 7 > & getVariationTypes() const
Returns an array with the variation types in each logical dimension.
KOKKOS_INLINE_FUNCTION int getDataExtent(const ordinal_type &d) const
returns the true extent of the data corresponding to the logical dimension provided; if the data does...
Reference-space field values for a basis, designed to support typical vector-valued bases.