20 template<
typename T, DeviceType deviceType>
class Array2D;
45 inline const std::vector<T>* handle()
const {
return &m_data; }
46 inline std::vector<T>* handle() {
return &m_data; }
48 inline const T* begin()
const {
return m_data.data(); }
50 inline uint nx()
const {
return m_nx; }
51 inline uint ny()
const {
return m_ny; }
53 inline T operator () (
const uint i,
const uint j)
const
55 return m_data[i + j * m_nx];
58 inline T& operator () (
const uint i,
const uint j)
60 return m_data[i + j * m_nx];
63 inline int index(
const uint i,
const uint j)
const
68 inline T operator [] (
const uint id)
const
73 inline T& operator [] (
const uint id)
78 inline uint size()
const {
return (
uint)m_data.size(); }
79 inline bool isCPU()
const {
return false; }
80 inline bool isGPU()
const {
return true; }
83 void assign(
const Array2D<T, DeviceType::GPU>& src);
86 void assign(
const Array2D<T, DeviceType::CPU>& src);
92 std::vector<T> m_data;
98 if (m_data.size() != 0) clear();
100 m_data.resize(nx * ny);
108 std::fill(m_data.begin(), m_data.end(), 0);
112 void dyno::Array2D<T, DeviceType::CPU>::clear()
123 if (m_nx != src.size() || m_ny != src.size()) {
124 this->resize(src.nx(), src.ny());
127 m_data.assign(src.m_data.begin(), src.m_data.end());
This is an implementation of AdditiveCCD based on peridyno.
Array2D< T, DeviceType::CPU > CArray2D