ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/brains/Snapshot.hpp
(Generate patch)

Comparing:
trunk/src/brains/Snapshot.hpp (file contents), Revision 665 by tim, Thu Oct 13 22:26:47 2005 UTC vs.
branches/development/src/brains/Snapshot.hpp (file contents), Revision 1540 by gezelter, Mon Jan 17 21:34:36 2011 UTC

# Line 6 | Line 6
6   * redistribute this software in source and binary code form, provided
7   * that the following conditions are met:
8   *
9 < * 1. Acknowledgement of the program authors must be made in any
10 < *    publication of scientific results based in part on use of the
11 < *    program.  An acceptable form of acknowledgement is citation of
12 < *    the article in which the program was described (Matthew
13 < *    A. Meineke, Charles F. Vardeman II, Teng Lin, Christopher
14 < *    J. Fennell and J. Daniel Gezelter, "OOPSE: An Object-Oriented
15 < *    Parallel Simulation Engine for Molecular Dynamics,"
16 < *    J. Comput. Chem. 26, pp. 252-271 (2005))
17 < *
18 < * 2. Redistributions of source code must retain the above copyright
9 > * 1. Redistributions of source code must retain the above copyright
10   *    notice, this list of conditions and the following disclaimer.
11   *
12 < * 3. Redistributions in binary form must reproduce the above copyright
12 > * 2. Redistributions in binary form must reproduce the above copyright
13   *    notice, this list of conditions and the following disclaimer in the
14   *    documentation and/or other materials provided with the
15   *    distribution.
# Line 37 | Line 28
28   * arising out of the use of or inability to use software, even if the
29   * University of Notre Dame has been advised of the possibility of
30   * such damages.
31 + *
32 + * SUPPORT OPEN SCIENCE!  If you use OpenMD or its source code in your
33 + * research, please cite the appropriate papers when you publish your
34 + * work.  Good starting points are:
35 + *                                                                      
36 + * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).            
37 + * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).          
38 + * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008).          
39 + * [4]  Vardeman & Gezelter, in progress (2009).                        
40   */
41    
42   /**
# Line 56 | Line 56
56   #include "brains/Stats.hpp"
57   #include "UseTheForce/DarkSide/simulation_interface.h"
58  
59 namespace oopse{
59  
60 + namespace OpenMD{
61 +
62    /**
63     * @class Snapshot Snapshot.hpp "brains/Snapshot.hpp"
64     * @brief Snapshot class is a repository class for storing dynamic data during
65     *  Simulation
66 <   * Every snapshot class will contain one DataStorage  for atoms and one DataStorage
66 >   * Every snapshot class will contain one DataStorage for atoms and one DataStorage
67     *  for rigid bodies.
68     */
69    class Snapshot {
70    public:
71              
72 <    Snapshot(int nAtoms, int nRigidbodies) : atomData(nAtoms), rigidbodyData(nRigidbodies),
73 <                                             currentTime_(0), orthoRhombic_(0), chi_(0.0), integralOfChiDt_(0.0), eta_(0.0), id_(-1) {
72 >    Snapshot(int nAtoms, int nRigidbodies,
73 >             int nCutoffGroups) : atomData(nAtoms),
74 >                                  rigidbodyData(nRigidbodies),
75 >                                  cgData(nCutoffGroups, DataStorage::dslPosition),
76 >                                  currentTime_(0),
77 >                                  orthoTolerance_(1e-6),
78 >                                  orthoRhombic_(0),
79 >                                  chi_(0.0),
80 >                                  integralOfChiDt_(0.0),
81 >                                  eta_(0.0), id_(-1), hasCOM_(false),
82 >                                  hasVolume_(false), volume_(0.0) {
83  
84      }
85  
86 <    Snapshot(int nAtoms, int nRigidbodies, int storageLayout)
87 <      : atomData(nAtoms, storageLayout), rigidbodyData(nRigidbodies, storageLayout),
88 <        currentTime_(0), orthoRhombic_(0), chi_(0.0), integralOfChiDt_(0.0), eta_(0.0), id_(-1) {
89 <
90 <      }
91 <            
86 >    Snapshot(int nAtoms, int nRigidbodies, int nCutoffGroups,
87 >             int storageLayout) : atomData(nAtoms, storageLayout),
88 >                                  rigidbodyData(nRigidbodies, storageLayout),
89 >                                  cgData(nCutoffGroups, DataStorage::dslPosition),
90 >                                  currentTime_(0), orthoTolerance_(1e-6),
91 >                                  orthoRhombic_(0), chi_(0.0),
92 >                                  integralOfChiDt_(0.0), eta_(0.0), id_(-1),
93 >                                  hasCOM_(false), hasVolume_(false),
94 >                                  volume_(0.0)  {
95 >    }
96 >    
97      /** Returns the id of this Snapshot */
98      int getID() {
99        return id_;
# Line 111 | Line 126 | namespace oopse{
126      /** Sets the H-Matrix */
127      void setHmat(const Mat3x3d& m);
128              
129 <    double getVolume() {
130 <      return hmat_.determinant();
129 >    RealType getVolume() {
130 >      if (hasVolume_){
131 >        return volume_;
132 >      }else{
133 >        return hmat_.determinant();
134 >      }
135      }
136  
137 +    void setVolume(RealType volume){
138 +      hasVolume_=true;
139 +      volume_ = volume;
140 +    }
141 +
142      /** Returns the inverse H-Matrix */
143      Mat3x3d getInvHmat() {
144        return invHmat_;
# Line 122 | Line 146 | namespace oopse{
146  
147      /** Wrapping the vector according to periodic boundary condition*/
148      void wrapVector(Vector3d& v);
149 <
149 >    Vector3d getCOM();
150 >    Vector3d getCOMvel();
151 >    Vector3d getCOMw();
152              
153 <    double getTime() {
153 >    RealType getTime() {
154        return currentTime_;
155      }
156  
157 <    void increaseTime(double dt) {
157 >    void increaseTime(RealType dt) {
158        setTime(getTime() + dt);
159      }
160  
161 <    void setTime(double time) {
161 >    void setTime(RealType time) {
162        currentTime_ =time;
163        //time at statData is redundant
164        statData[Stats::TIME] = currentTime_;
165      }
166  
167 <    double getChi() {
167 >    RealType getChi() {
168        return chi_;
169      }
170  
171 <    void setChi(double chi) {
171 >    void setChi(RealType chi) {
172        chi_ = chi;
173      }
174  
175 <    double getIntegralOfChiDt() {
175 >    RealType getIntegralOfChiDt() {
176        return integralOfChiDt_;
177      }
178  
179 <    void setIntegralOfChiDt(double integralOfChiDt) {
179 >    void setIntegralOfChiDt(RealType integralOfChiDt) {
180        integralOfChiDt_ = integralOfChiDt;
181      }
182              
183 +
184 +    void setOrthoTolerance(RealType orthoTolerance) {
185 +      orthoTolerance_ = orthoTolerance;
186 +    }
187 +
188      Mat3x3d getEta() {
189        return eta_;
190      }
# Line 161 | Line 192 | namespace oopse{
192      void setEta(const Mat3x3d& eta) {
193        eta_ = eta;
194      }
195 <            
195 >
196 >    bool hasCOM() {
197 >      return hasCOM_;
198 >    }
199 >
200 >    void setCOMprops(const Vector3d& COM, const Vector3d& COMvel, const Vector3d& COMw) {
201 >      COM_ = COM;
202 >      COMvel_ = COMvel;
203 >      COMw_ = COMw;
204 >      hasCOM_ = true;
205 >    }
206 >
207 >    Vector3d getAtomPosByIindex(int iIndex) {
208 > #ifdef IS_MPI
209 >      return atomIData.position[iIndex];
210 > #else
211 >      return atomData.position[iIndex];
212 > #endif
213 >    }
214 >    Vector3d getAtomPosByJindex(int jIndex) {
215 > #ifdef IS_MPI
216 >      return atomJData.position[jIndex];
217 > #else
218 >      return atomData.position[jIndex];
219 > #endif
220 >    }
221 >
222 >    Vector3d getCutoffGroupPosByIindex(int iIndex) {
223 > #ifdef IS_MPI
224 >      return cgIData.position[iIndex];
225 > #else
226 >      return cgData.position[iIndex];
227 > #endif
228 >    }
229 >    Vector3d getCutoffGroupPosByJindex(int jIndex) {
230 > #ifdef IS_MPI
231 >      return cgJData.position[jIndex];
232 > #else
233 >      return cgData.position[jIndex];
234 > #endif
235 >    }
236 >
237      DataStorage atomData;
238      DataStorage rigidbodyData;
239 +    DataStorage cgData;
240 +
241 + #ifdef IS_MPI
242 +    DataStorage atomIData;
243 +    DataStorage atomJData;
244 +    DataStorage cgIData;
245 +    DataStorage cgJData;
246 + #endif
247 +    
248      Stats statData;
249              
250    private:
251 <    double currentTime_;
251 >    RealType currentTime_;
252  
253      Mat3x3d hmat_;
254      Mat3x3d invHmat_;
255 +    RealType orthoTolerance_;
256      int orthoRhombic_;
257 +    RealType volume_;
258  
259 <    double chi_;
260 <    double integralOfChiDt_;
259 >    RealType chi_;
260 >    RealType integralOfChiDt_;
261      Mat3x3d eta_;
262 <            
262 >    Vector3d COM_;
263 >    Vector3d COMvel_;
264 >    Vector3d COMw_;
265      int id_; /**< identification number of the snapshot */
266 +    bool hasCOM_;
267 +    bool hasVolume_;
268 +            
269    };
270  
271    typedef DataStorage (Snapshot::*DataStoragePointer);

Comparing:
trunk/src/brains/Snapshot.hpp (property svn:keywords), Revision 665 by tim, Thu Oct 13 22:26:47 2005 UTC vs.
branches/development/src/brains/Snapshot.hpp (property svn:keywords), Revision 1540 by gezelter, Mon Jan 17 21:34:36 2011 UTC

# Line 0 | Line 1
1 + Author Id Revision Date

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines