ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/brains/Snapshot.hpp
Revision: 1709
Committed: Tue May 15 13:04:08 2012 UTC (12 years, 11 months ago) by gezelter
File size: 7192 byte(s)
Log Message:
Moving silly stuff out of Stats and into Snapshot.  Most of it should go
into a not-yet-implemented FrameData class.

File Contents

# User Rev Content
1 gezelter 507 /*
2 gezelter 246 * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
3 tim 122 *
4 gezelter 246 * The University of Notre Dame grants you ("Licensee") a
5     * non-exclusive, royalty free, license to use, modify and
6     * redistribute this software in source and binary code form, provided
7     * that the following conditions are met:
8     *
9 gezelter 1390 * 1. Redistributions of source code must retain the above copyright
10 gezelter 246 * notice, this list of conditions and the following disclaimer.
11     *
12 gezelter 1390 * 2. Redistributions in binary form must reproduce the above copyright
13 gezelter 246 * notice, this list of conditions and the following disclaimer in the
14     * documentation and/or other materials provided with the
15     * distribution.
16     *
17     * This software is provided "AS IS," without a warranty of any
18     * kind. All express or implied conditions, representations and
19     * warranties, including any implied warranty of merchantability,
20     * fitness for a particular purpose or non-infringement, are hereby
21     * excluded. The University of Notre Dame and its licensors shall not
22     * be liable for any damages suffered by licensee as a result of
23     * using, modifying or distributing the software or its
24     * derivatives. In no event will the University of Notre Dame or its
25     * licensors be liable for any lost revenue, profit or data, or for
26     * direct, indirect, special, consequential, incidental or punitive
27     * damages, however caused and regardless of the theory of liability,
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 gezelter 1390 *
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 gezelter 1665 * [4] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010).
40     * [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
41 tim 122 */
42 gezelter 246
43 gezelter 507 /**
44     * @file Snapshot.hpp
45     * @author tlin
46     * @date 10/20/2004
47     * @time 23:56am
48     * @version 1.0
49     */
50 tim 146
51 tim 122 #ifndef BRAINS_SNAPSHOT_HPP
52     #define BRAINS_SNAPSHOT_HPP
53 tim 137
54     #include <vector>
55    
56 tim 155 #include "brains/DataStorage.hpp"
57 gezelter 246 #include "brains/Stats.hpp"
58 tim 137
59 gezelter 1390 namespace OpenMD{
60 tim 122
61 gezelter 507 /**
62     * @class Snapshot Snapshot.hpp "brains/Snapshot.hpp"
63     * @brief Snapshot class is a repository class for storing dynamic data during
64     * Simulation
65 gezelter 1540 * Every snapshot class will contain one DataStorage for atoms and one DataStorage
66 gezelter 507 * for rigid bodies.
67     */
68     class Snapshot {
69     public:
70 tim 146
71 gezelter 1540 Snapshot(int nAtoms, int nRigidbodies,
72     int nCutoffGroups) : atomData(nAtoms),
73     rigidbodyData(nRigidbodies),
74     cgData(nCutoffGroups, DataStorage::dslPosition),
75     currentTime_(0),
76     orthoTolerance_(1e-6),
77     orthoRhombic_(0),
78     chi_(0.0),
79     integralOfChiDt_(0.0),
80     eta_(0.0), id_(-1), hasCOM_(false),
81 gezelter 1708 volume_(0.0), hasVolume_(false) {
82 gezelter 246
83 gezelter 507 }
84 tim 137
85 gezelter 1540 Snapshot(int nAtoms, int nRigidbodies, int nCutoffGroups,
86     int storageLayout) : atomData(nAtoms, storageLayout),
87     rigidbodyData(nRigidbodies, storageLayout),
88     cgData(nCutoffGroups, DataStorage::dslPosition),
89     currentTime_(0), orthoTolerance_(1e-6),
90     orthoRhombic_(0), chi_(0.0),
91     integralOfChiDt_(0.0), eta_(0.0), id_(-1),
92 gezelter 1708 hasCOM_(false), volume_(0.0),
93     hasVolume_(false) {
94 gezelter 1540 }
95    
96 gezelter 507 /** Returns the id of this Snapshot */
97     int getID() {
98     return id_;
99     }
100 tim 137
101 gezelter 507 /** Sets the id of this Snapshot */
102     void setID(int id) {
103     id_ = id;
104     }
105 tim 137
106 gezelter 507 int getSize() {
107     return atomData.getSize() + rigidbodyData.getSize();
108     }
109 tim 152
110 gezelter 507 /** Returns the number of atoms */
111     int getNumberOfAtoms() {
112     return atomData.getSize();
113     }
114 tim 152
115 gezelter 507 /** Returns the number of rigid bodies */
116     int getNumberOfRigidBodies() {
117     return rigidbodyData.getSize();
118     }
119 tim 152
120 gezelter 1544 /** Returns the number of rigid bodies */
121     int getNumberOfCutoffGroups() {
122     return cgData.getSize();
123     }
124    
125 gezelter 507 /** Returns the H-Matrix */
126     Mat3x3d getHmat() {
127     return hmat_;
128     }
129 tim 152
130 gezelter 507 /** Sets the H-Matrix */
131     void setHmat(const Mat3x3d& m);
132 gezelter 246
133 tim 963 RealType getVolume() {
134 chuckv 1302 if (hasVolume_){
135     return volume_;
136     }else{
137     return hmat_.determinant();
138     }
139 gezelter 507 }
140 tim 152
141 chuckv 1302 void setVolume(RealType volume){
142     hasVolume_=true;
143     volume_ = volume;
144     }
145    
146 gezelter 507 /** Returns the inverse H-Matrix */
147     Mat3x3d getInvHmat() {
148     return invHmat_;
149     }
150 tim 152
151 gezelter 507 /** Wrapping the vector according to periodic boundary condition*/
152     void wrapVector(Vector3d& v);
153 gezelter 1562 /** Scaling a vector to multiples of the periodic box */
154     Vector3d scaleVector(Vector3d &v);
155    
156    
157 gezelter 1104 Vector3d getCOM();
158     Vector3d getCOMvel();
159     Vector3d getCOMw();
160 gezelter 246
161 tim 963 RealType getTime() {
162 gezelter 507 return currentTime_;
163     }
164 tim 152
165 tim 963 void increaseTime(RealType dt) {
166 gezelter 507 setTime(getTime() + dt);
167     }
168 tim 152
169 tim 963 void setTime(RealType time) {
170 gezelter 507 currentTime_ =time;
171     //time at statData is redundant
172     statData[Stats::TIME] = currentTime_;
173     }
174 tim 152
175 tim 963 RealType getChi() {
176 gezelter 507 return chi_;
177     }
178 gezelter 246
179 tim 963 void setChi(RealType chi) {
180 gezelter 507 chi_ = chi;
181     }
182 gezelter 246
183 tim 963 RealType getIntegralOfChiDt() {
184 gezelter 507 return integralOfChiDt_;
185     }
186 gezelter 246
187 tim 963 void setIntegralOfChiDt(RealType integralOfChiDt) {
188 gezelter 507 integralOfChiDt_ = integralOfChiDt;
189     }
190 gezelter 246
191 gezelter 1021
192     void setOrthoTolerance(RealType orthoTolerance) {
193     orthoTolerance_ = orthoTolerance;
194     }
195    
196 gezelter 507 Mat3x3d getEta() {
197     return eta_;
198     }
199 gezelter 246
200 gezelter 507 void setEta(const Mat3x3d& eta) {
201     eta_ = eta;
202     }
203 gezelter 1104
204 gezelter 1709 Mat3x3d getTau() {
205     return tau_;
206     }
207    
208     void setTau(const Mat3x3d& tau) {
209     tau_ = tau;
210     }
211    
212 gezelter 1104 bool hasCOM() {
213     return hasCOM_;
214     }
215    
216     void setCOMprops(const Vector3d& COM, const Vector3d& COMvel, const Vector3d& COMw) {
217     COM_ = COM;
218     COMvel_ = COMvel;
219     COMw_ = COMw;
220     hasCOM_ = true;
221     }
222 gezelter 1540
223 gezelter 507 DataStorage atomData;
224     DataStorage rigidbodyData;
225 gezelter 1540 DataStorage cgData;
226 gezelter 1541 Stats statData;
227 gezelter 1540
228 gezelter 507 private:
229 tim 963 RealType currentTime_;
230 gezelter 246
231 gezelter 507 Mat3x3d hmat_;
232     Mat3x3d invHmat_;
233 gezelter 1021 RealType orthoTolerance_;
234 gezelter 507 int orthoRhombic_;
235 chuckv 1302 RealType volume_;
236 gezelter 246
237 tim 963 RealType chi_;
238     RealType integralOfChiDt_;
239 gezelter 507 Mat3x3d eta_;
240 gezelter 1104 Vector3d COM_;
241     Vector3d COMvel_;
242     Vector3d COMw_;
243 gezelter 1287 int id_; /**< identification number of the snapshot */
244 gezelter 1104 bool hasCOM_;
245 chuckv 1302 bool hasVolume_;
246 gezelter 1709 Mat3x3d tau_;
247 gezelter 507 };
248 tim 122
249 gezelter 507 typedef DataStorage (Snapshot::*DataStoragePointer);
250 tim 122 }
251     #endif //BRAINS_SNAPSHOT_HPP

Properties

Name Value
svn:keywords Author Id Revision Date