--- trunk/src/brains/DataStorage.cpp 2013/06/16 15:15:42 1879 +++ trunk/src/brains/DataStorage.cpp 2015/03/05 16:30:23 2069 @@ -55,12 +55,12 @@ namespace OpenMD { } - DataStorage::DataStorage(int size, int storageLayout) : size_(size){ + DataStorage::DataStorage(std::size_t size, int storageLayout) : size_(size){ setStorageLayout(storageLayout); resize(size); } - int DataStorage::getSize() { + std::size_t DataStorage::getSize() { if (storageLayout_ & dslPosition && position.size() != size_) { //error @@ -146,12 +146,17 @@ namespace OpenMD { //error cerr << "size does not match"<< endl; } + + if (storageLayout_ & dslSitePotential && sitePotential.size() != size_) { + //error + cerr << "size does not match"<< endl; + } return size_; } - void DataStorage::resize(int newSize) { + void DataStorage::resize(std::size_t newSize) { if (storageLayout_ & dslPosition) { internalResize(position, newSize); @@ -221,10 +226,14 @@ namespace OpenMD { internalResize(flucQFrc, newSize); } + if (storageLayout_ & dslSitePotential) { + internalResize(sitePotential, newSize); + } + size_ = newSize; } - void DataStorage::reserve(int size) { + void DataStorage::reserve(std::size_t size) { if (storageLayout_ & dslPosition) { position.reserve(size); } @@ -292,9 +301,13 @@ namespace OpenMD { if (storageLayout_ & dslFlucQForce) { flucQFrc.reserve(size); } + + if (storageLayout_ & dslSitePotential) { + sitePotential.reserve(size); + } } - void DataStorage::copy(int source, int num, int target) { + void DataStorage::copy(int source, std::size_t num, std::size_t target) { if (num + target > size_ ) { //error } @@ -365,6 +378,10 @@ namespace OpenMD { if (storageLayout_ & dslFlucQForce) { internalCopy(flucQFrc, source, num, target); } + + if (storageLayout_ & dslSitePotential) { + internalCopy(sitePotential, source, num, target); + } } int DataStorage::getStorageLayout() { @@ -430,6 +447,9 @@ namespace OpenMD { case dslFlucQForce: return internalGetArrayPointer(flucQFrc); + case dslSitePotential: + return internalGetArrayPointer(sitePotential); + default: //error message return NULL; @@ -463,8 +483,8 @@ namespace OpenMD { } template - void DataStorage::internalResize(std::vector& v, int newSize){ - int oldSize = v.size(); + void DataStorage::internalResize(std::vector& v, std::size_t newSize){ + std::size_t oldSize = v.size(); if (oldSize == newSize) { return; @@ -479,7 +499,8 @@ namespace OpenMD { } template - void DataStorage::internalCopy(std::vector& v, int source, int num, int target) { + void DataStorage::internalCopy(std::vector& v, int source, + std::size_t num, std::size_t target) { typename std::vector::iterator first; typename std::vector::iterator last; typename std::vector::iterator result; @@ -496,8 +517,8 @@ namespace OpenMD { std::copy(first, last, result); } - int DataStorage::getBytesPerStuntDouble(int layout) { - int bytes = 0; + std::size_t DataStorage::getBytesPerStuntDouble(int layout) { + std::size_t bytes = 0; if (layout & dslPosition) { bytes += sizeof(Vector3d); } @@ -549,6 +570,9 @@ namespace OpenMD { if (layout & dslFlucQForce) { bytes += sizeof(RealType); } + if (layout & dslSitePotential) { + bytes += sizeof(RealType); + } return bytes; }