NimbleSM
NimbleSM is a solid mechanics simulation code for dynamic systems
Loading...
Searching...
No Matches
nimble::Viewify< N, Scalar > Class Template Reference

#include <nimble_view.h>

Public Member Functions

 Viewify ()
 
 Viewify (Scalar *data, std::array< int, N > len, std::array< int, N > stride)
 
template<std::size_t NN = N, typename = typename std::enable_if<(NN == 1)>::type>
 Viewify (Scalar *data, int len)
 
template<std::size_t NN = N>
NIMBLE_INLINE_FUNCTION std::enable_if<(NN==1), Scalar >::type & operator() (int i)
 
template<std::size_t NN = N>
NIMBLE_INLINE_FUNCTION std::enable_if<(NN==1), constScalar >::type operator() (int i) const
 
template<std::size_t NN = N>
NIMBLE_INLINE_FUNCTION std::enable_if<(NN==2), Scalar >::type & operator() (int i, int j)
 
template<std::size_t NN = N>
NIMBLE_INLINE_FUNCTION std::enable_if<(NN==2), constScalar >::type operator() (int i, int j) const
 
void zero ()
 
void copy (const Viewify< N > &ref)
 
Scalardata () const
 
template<class T = Scalar, typename = typename std::enable_if<!std::is_const<T>::value>::type>
Viewify< N, Scalar > & operator+= (const details::AXPYResult< N > &rhs)
 
std::array< int, N > size () const
 
std::array< int, N > stride () const
 

Protected Attributes

Scalardata_
 
std::array< int, N > len_
 
std::array< int, N > stride_
 

Constructor & Destructor Documentation

◆ Viewify() [1/3]

template<std::size_t N = 2, class Scalar = double>
nimble::Viewify< N, Scalar >::Viewify ( )
inline
74 : data_(nullptr)
75 {
76 len_.fill(0);
77 stride_.fill(0);
78 }
std::array< int, N > len_
Definition nimble_view.h:153
Scalar * data_
Definition nimble_view.h:152
std::array< int, N > stride_
Definition nimble_view.h:154

◆ Viewify() [2/3]

template<std::size_t N = 2, class Scalar = double>
nimble::Viewify< N, Scalar >::Viewify ( Scalar * data,
std::array< int, N > len,
std::array< int, N > stride )
inline
Definition nimble_view.h:72
Scalar * data() const
Definition nimble_view.h:130
std::array< int, N > stride() const
Definition nimble_view.h:146

◆ Viewify() [3/3]

template<std::size_t N = 2, class Scalar = double>
template<std::size_t NN = N, typename = typename std::enable_if<(NN == 1)>::type>
nimble::Viewify< N, Scalar >::Viewify ( Scalar * data,
int len )
inline
83 : data_(data), len_({len}), stride_({1})
84 {
85 }

Member Function Documentation

◆ copy()

template<std::size_t N = 2, class Scalar = double>
void nimble::Viewify< N, Scalar >::copy ( const Viewify< N > & ref)
inline
124 {
125 int mySize = stride_[0] * len_[0];
126 for (int ii = 0; ii < mySize; ++ii) data_[ii] = ref.data_[ii];
127 }

◆ data()

template<std::size_t N = 2, class Scalar = double>
Scalar * nimble::Viewify< N, Scalar >::data ( ) const
inline
131 {
132 return data_;
133 }

◆ operator()() [1/4]

template<std::size_t N = 2, class Scalar = double>
template<std::size_t NN = N>
NIMBLE_INLINE_FUNCTION std::enable_if<(NN==1), Scalar >::type & nimble::Viewify< N, Scalar >::operator() ( int i)
inline
90 {
91 return data_[i];
92 }

◆ operator()() [2/4]

template<std::size_t N = 2, class Scalar = double>
template<std::size_t NN = N>
NIMBLE_INLINE_FUNCTION std::enable_if<(NN==1), constScalar >::type nimble::Viewify< N, Scalar >::operator() ( int i) const
inline
97 {
98 return data_[i];
99 }

◆ operator()() [3/4]

template<std::size_t N = 2, class Scalar = double>
template<std::size_t NN = N>
NIMBLE_INLINE_FUNCTION std::enable_if<(NN==2), Scalar >::type & nimble::Viewify< N, Scalar >::operator() ( int i,
int j )
inline
104 {
105 return data_[i * stride_[0] + j * stride_[1]];
106 }

◆ operator()() [4/4]

template<std::size_t N = 2, class Scalar = double>
template<std::size_t NN = N>
NIMBLE_INLINE_FUNCTION std::enable_if<(NN==2), constScalar >::type nimble::Viewify< N, Scalar >::operator() ( int i,
int j ) const
inline
111 {
112 return data_[i * stride_[0] + j * stride_[1]];
113 }

◆ operator+=()

template<std::size_t N, class Scalar>
template<class T, typename>
Viewify< N, Scalar > & nimble::Viewify< N, Scalar >::operator+= ( const details::AXPYResult< N > & rhs)
211{
212 rhs.assignTo(1.0, 1.0, *this);
213 return *this;
214}

◆ size()

template<std::size_t N = 2, class Scalar = double>
std::array< int, N > nimble::Viewify< N, Scalar >::size ( ) const
inline
141 {
142 return len_;
143 }

◆ stride()

template<std::size_t N = 2, class Scalar = double>
std::array< int, N > nimble::Viewify< N, Scalar >::stride ( ) const
inline
147 {
148 return stride_;
149 }

◆ zero()

template<std::size_t N = 2, class Scalar = double>
void nimble::Viewify< N, Scalar >::zero ( )
inline
117 {
118 int mySize = stride_[0] * len_[0];
119 for (int ii = 0; ii < mySize; ++ii) data_[ii] = (Scalar)(0);
120 }

Member Data Documentation

◆ data_

template<std::size_t N = 2, class Scalar = double>
Scalar* nimble::Viewify< N, Scalar >::data_
protected

◆ len_

template<std::size_t N = 2, class Scalar = double>
std::array<int, N> nimble::Viewify< N, Scalar >::len_
protected

◆ stride_

template<std::size_t N = 2, class Scalar = double>
std::array<int, N> nimble::Viewify< N, Scalar >::stride_
protected

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