30 #ifndef SACADO_FAD_EXP_DYNAMICSTORAGE_HPP 31 #define SACADO_FAD_EXP_DYNAMICSTORAGE_HPP 33 #include <type_traits> 45 template <
typename T,
typename U = T>
56 template <
typename TT,
typename UU = TT>
154 val_ = std::move(
x.val_);
155 sz_ =
x.sz_;
x.sz_ = 0;
156 len_ =
x.len_;
x.len_ = 0;
157 dx_ =
x.dx_;
x.dx_ =
nullptr;
241 #if defined(SACADO_VIEW_CUDA_HIERARCHICAL_DFAD_STRIDED) && !defined(SACADO_DISABLE_CUDA_IN_KOKKOS) && defined(__CUDA_ARCH__) 245 U
dx(
int i)
const {
return sz_ ?
dx_[
i*blockDim.x] : U(0.); }
292 #endif // SACADO_FAD_EXP_DYNAMICSTORAGE_HPP SACADO_INLINE_FUNCTION const U & fastAccessDx(int i) const
Returns derivative component i without bounds checking.
Turn DynamicStorage into a meta-function class usable with mpl::apply.
SACADO_INLINE_FUNCTION void resize(int sz)
Resize the derivative array to sz.
SACADO_INLINE_FUNCTION void resizeAndZero(int sz)
Resize the derivative array to sz.
int sz_
Derivative array size.
SACADO_INLINE_FUNCTION DynamicStorage(const DynamicStorage &x)
Copy constructor.
SACADO_INLINE_FUNCTION int length() const
Returns array length.
static constexpr int static_size
static SACADO_INLINE_FUNCTION void zero(T *dest, int sz)
Zero out array dest of length sz.
SACADO_INLINE_FUNCTION ~DynamicStorage()
Destructor.
static constexpr bool is_statically_sized
int len_
Derivative array length.
SACADO_INLINE_FUNCTION DynamicStorage & operator=(const DynamicStorage &x)
Assignment.
SACADO_INLINE_FUNCTION U dx(int i) const
Returns derivative component i with bounds checking.
SACADO_INLINE_FUNCTION DynamicStorage(const T &x)
Constructor with value.
Replace static derivative length.
SACADO_INLINE_FUNCTION int size() const
Returns number of derivative components.
SACADO_INLINE_FUNCTION DynamicStorage(DynamicStorage &&x)
Move constructor.
static SACADO_INLINE_FUNCTION void destroy_and_release(T *m, int sz)
Destroy array elements and release memory.
SACADO_INLINE_FUNCTION T & val()
Returns value.
SACADO_INLINE_FUNCTION void expand(int sz)
Expand derivative array to size sz.
Derivative array storage class using dynamic memory allocation.
DerivInit
Enum use to signal whether the derivative array should be initialized in AD object constructors...
SACADO_INLINE_FUNCTION const T & val() const
Returns value.
DynamicStorage< T, U > type
SACADO_INLINE_FUNCTION const U * dx() const
Returns derivative array.
SACADO_INLINE_FUNCTION DynamicStorage(const int sz, const T &x, const DerivInit zero_out=InitDerivArray)
Constructor with size sz.
static SACADO_INLINE_FUNCTION void copy(const T *src, T *dest, int sz)
Copy array from src to dest of length sz.
DynamicStorage< TT, UU > type
SACADO_INLINE_FUNCTION DynamicStorage(const int sz, const int i, const value_type &x)
Constructor with size sz, index i, and value x.
SACADO_INLINE_FUNCTION DynamicStorage & operator=(DynamicStorage &&x)
Move assignment.
Initialize the derivative array.
static SACADO_INLINE_FUNCTION T * get(int sz)
Get memory for new array of length sz.
SACADO_INLINE_FUNCTION DynamicStorage()
Default constructor.
static constexpr bool is_view
#define SACADO_INLINE_FUNCTION
SACADO_INLINE_FUNCTION void zero()
Zero out derivative array.
std::remove_cv< T >::type value_type
SACADO_INLINE_FUNCTION U & fastAccessDx(int i)
Returns derivative component i without bounds checking.
static SACADO_INLINE_FUNCTION T * get_and_fill(int sz)
Get memory for new array of length sz and fill with zeros.