ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-2.0/src/brains/Snapshot.hpp
(Generate patch)

Comparing trunk/OOPSE-2.0/src/brains/Snapshot.hpp (file contents):
Revision 1642 by tim, Mon Oct 25 04:08:14 2004 UTC vs.
Revision 1648 by tim, Tue Oct 26 22:19:22 2004 UTC

# Line 36 | Line 36
36  
37   #include <vector>
38  
39 < #include "math/Vector3.hpp"
40 < #include "math/SquareMatrix3.hpp"
39 > #include "brains/DataStorage.hpp"
40  
41   using namespace std;
42  
43   namespace oopse{
44  
46    enum DataStorageLayout {
47        dslPosition = 1,
48        dslVelocity = 2,
49        dslAMat = 4,
50        dslAngularMomentum = 8,
51        dslUnitVector = 16,
52        dslZAngle = 32,
53        dslForce = 64,
54        dslTorque = 128
55    };
56    //forward declaration
57    class Snapshot;
58    class SnapshotManager;
45      class StuntDouble;
46      
47      /**
62     * @class DataStorage
63     * @brief
64     * @warning do not try to insert element into (or ease element from) private member data
65     * of DataStorage directly.
66     */
67    class DataStorage {
68        public:
69            DataStorage() {};
70            DataStorage(size_t size);
71
72            int size();
73            void resize(size_t size);
74            void reserve(size_t size);
75            
76            friend class Snapshot;
77            friend class StuntDouble;
78        private:
79            vector<Vector3d> position;               /** position array */
80            vector<Vector3d> velocity;               /** velocity array */
81            vector<RotMat3x3d> aMat;            /** rotation matrix array */
82            vector<Vector3d> angularMomentum;/** velocity array */
83            vector<Vector3d> unitVector;                /** the lab frame unit vector array*/
84            vector<double> zAngle;              /** z -angle array */        
85            vector<Vector3d> force;               /** force array */
86            vector<Vector3d> torque;               /** torque array */
87
88    };
89
90    /**
48       * @class Snapshot Snapshot.hpp "brains/Snapshot.hpp"
49       * @brief Snapshot class is a repository class for storing dynamic data during
50       *  Simulation
# Line 122 | Line 79 | namespace oopse{
79              //    return v[0]->getArrayPointer();
80              //}
81  
82 <            static double* getArrayPointer(vector<Vector3d>& v) {
83 <                assert(v.size() > 0);
127 <                return v[0].getArrayPointer();
82 >            int getSize() {
83 >                return atomData.getSize() + rigidbodyData.getSize();
84              }
85 <            
86 <            static double* getArrayPointer(vector<RotMat3x3d>& v) {
87 <                assert(v.size() > 0);
88 <                return v[0].getArrayPointer();
85 >
86 >            /** Returns the number of atoms */
87 >            int getNumberOfAtoms() {
88 >                return atomData.getSize();
89              }
90 <            
91 <            static double* getArrayPointer(vector<double>& v) {
92 <                assert(v.size() > 0);
93 <                return &(v[0]);
90 >
91 >            /** Returns the number of rigid bodies */
92 >            int getNumberOfRigidBodies() {
93 >                return rigidbodyData.getSize();
94              }
95  
96 <            int getSize() {
97 <                return atomData.size() + rigidbodyData.size();
96 >            /** Returns the H-Matrix */
97 >            Mat3x3d getHmat() {
98 >                return hmat_;
99              }
100 <            
101 <            int getSizeOfAtoms() {
102 <                return atomData.size();
100 >
101 >            /** Sets the H-Matrix */
102 >            void setHamt(const Mat3x3d& m) {
103 >                hmat_ = m;
104 >                invHmat_ = hmat_.inverse();
105              }
106 <            
107 <            int getSizeOfRigidBodies() {
108 <                return rigidbodyData.size();
106 >
107 >            /** Returns the inverse H-Matrix */
108 >            Mat3x3d getInvHmat() {
109 >                return invHmat_
110              }
111 <            
111 >
112 >            double getTimeStamp() {
113 >                return timeStamp_;
114 >            }
115 >
116 >            void setTimeStamp(double timeStamp) {
117 >                timeStamp_ =timeStamp;
118 >            }
119 >
120 >
121              DataStorage atomData;
122              DataStorage rigidbodyData;
123 <
123 >            
124              friend class StuntDouble;
125 +            
126          private:
127 <
127 >            double timeStamp_;
128 >            Mat3x3d hmat_;
129 >            Mat3x3d invHmat_;
130              int id_; /**< identification number of the snapshot */
131      };
132  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines