--- trunk/OOPSE-2.0/src/brains/Snapshot.hpp 2004/10/21 21:31:39 1630 +++ trunk/OOPSE-2.0/src/brains/Snapshot.hpp 2004/10/22 23:09:57 1639 @@ -30,6 +30,7 @@ * @time 23:56am * @version 1.0 */ + #ifndef BRAINS_SNAPSHOT_HPP #define BRAINS_SNAPSHOT_HPP @@ -42,15 +43,47 @@ namespace oopse{ namespace oopse{ + //forward declaration + class Snapshot; + class SnapshotManager; + /** + * @struct DataStorage + * @brief + */ + class DataStorage { + public: + DataStorage() {}; + DataStorage(size_t size); + void resize(size_t size); + void reserve(size_t size); + + //friend Snapshot; + //friend SnapshotManager; + //private: + vector position; /** position array */ + vector velocity; /** velocity array */ + vector Amat; /** rotation matrix array */ + vector angularMomentum;/** velocity array */ + vector ul; /** the lab frame unit vector array*/ + vector zAngle; /** z -angle array */ + vector force; /** force array */ + vector torque; /** torque array */ + + }; + + /** * @class Snapshot Snapshot.hpp "brains/Snapshot.hpp" * @brief Snapshot class is a repository class for storing dynamic data during * Simulation + * Every snapshot class will contain one DataStorage for atoms and one DataStorage + * for rigid bodies. * @see SimData */ class Snapshot { public: - + + Snapshot() {} Snapshot(int i) { } @@ -69,22 +102,18 @@ namespace oopse{ id_ = id; } - /** */ - Snapshot* clone() { - return new Snapshot(*this); - } - - //template //static typename T::ElemPointerType getArrayPointer(vector& v) { // return v[0]->getArrayPointer(); //} static double* getArrayPointer(vector& v) { + assert(v.size() > 0); return v[0].getArrayPointer(); } static double* getArrayPointer(vector& v) { + assert(v.size() > 0); return v[0].getArrayPointer(); } @@ -93,19 +122,22 @@ namespace oopse{ return &(v[0]); } - vector pos; - vector vel; - vector frc; - vector trq; - vector Amat; - vector mu; - vector ul; - vector zAngle; - + /** */ + void resize(size_t size); + + + /** */ + void reserve(size_t size); + + DataStorage atomData; + DataStorage rigidbodyData; + + friend class SnapshotManager; private: int id_; /**< identification number of the snapshot */ }; + typedef DataStorage* (Snapshot::*DataStoragePointer); } #endif //BRAINS_SNAPSHOT_HPP