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 963 by tim, Wed May 17 21:51:42 2006 UTC vs.
branches/development/src/brains/Snapshot.hpp (file contents), Revision 1544 by gezelter, Fri Mar 18 19:31:52 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 103 | Line 118 | namespace oopse{
118        return rigidbodyData.getSize();
119      }
120  
121 +    /** Returns the number of rigid bodies */
122 +    int getNumberOfCutoffGroups() {
123 +      return cgData.getSize();
124 +    }
125 +
126      /** Returns the H-Matrix */
127      Mat3x3d getHmat() {
128        return hmat_;
# Line 112 | Line 132 | namespace oopse{
132      void setHmat(const Mat3x3d& m);
133              
134      RealType getVolume() {
135 <      return hmat_.determinant();
135 >      if (hasVolume_){
136 >        return volume_;
137 >      }else{
138 >        return hmat_.determinant();
139 >      }
140      }
141  
142 +    void setVolume(RealType volume){
143 +      hasVolume_=true;
144 +      volume_ = volume;
145 +    }
146 +
147      /** Returns the inverse H-Matrix */
148      Mat3x3d getInvHmat() {
149        return invHmat_;
# Line 122 | Line 151 | namespace oopse{
151  
152      /** Wrapping the vector according to periodic boundary condition*/
153      void wrapVector(Vector3d& v);
154 <
154 >    Vector3d getCOM();
155 >    Vector3d getCOMvel();
156 >    Vector3d getCOMw();
157              
158      RealType getTime() {
159        return currentTime_;
# Line 154 | Line 185 | namespace oopse{
185        integralOfChiDt_ = integralOfChiDt;
186      }
187              
188 +
189 +    void setOrthoTolerance(RealType orthoTolerance) {
190 +      orthoTolerance_ = orthoTolerance;
191 +    }
192 +
193      Mat3x3d getEta() {
194        return eta_;
195      }
# Line 161 | Line 197 | namespace oopse{
197      void setEta(const Mat3x3d& eta) {
198        eta_ = eta;
199      }
200 <            
200 >
201 >    bool hasCOM() {
202 >      return hasCOM_;
203 >    }
204 >
205 >    void setCOMprops(const Vector3d& COM, const Vector3d& COMvel, const Vector3d& COMw) {
206 >      COM_ = COM;
207 >      COMvel_ = COMvel;
208 >      COMw_ = COMw;
209 >      hasCOM_ = true;
210 >    }
211 >
212 >    Vector3d getAtomPosByIindex(int iIndex) {
213 > #ifdef IS_MPI
214 >      return atomIData.position[iIndex];
215 > #else
216 >      return atomData.position[iIndex];
217 > #endif
218 >    }
219 >    Vector3d getAtomPosByJindex(int jIndex) {
220 > #ifdef IS_MPI
221 >      return atomJData.position[jIndex];
222 > #else
223 >      return atomData.position[jIndex];
224 > #endif
225 >    }
226 >
227 >    Vector3d getCutoffGroupPosByIindex(int iIndex) {
228 > #ifdef IS_MPI
229 >      return cgIData.position[iIndex];
230 > #else
231 >      return cgData.position[iIndex];
232 > #endif
233 >    }
234 >    Vector3d getCutoffGroupPosByJindex(int jIndex) {
235 > #ifdef IS_MPI
236 >      return cgJData.position[jIndex];
237 > #else
238 >      return cgData.position[jIndex];
239 > #endif
240 >    }
241 >
242      DataStorage atomData;
243      DataStorage rigidbodyData;
244 +    DataStorage cgData;
245      Stats statData;
246 +
247 + #ifdef IS_MPI
248 +    DataStorage atomIData;
249 +    DataStorage atomJData;
250 +    DataStorage cgIData;
251 +    DataStorage cgJData;
252 + #endif
253 +  
254              
255    private:
256      RealType currentTime_;
257  
258      Mat3x3d hmat_;
259      Mat3x3d invHmat_;
260 +    RealType orthoTolerance_;
261      int orthoRhombic_;
262 +    RealType volume_;
263  
264      RealType chi_;
265      RealType integralOfChiDt_;
266      Mat3x3d eta_;
267 <            
267 >    Vector3d COM_;
268 >    Vector3d COMvel_;
269 >    Vector3d COMw_;
270      int id_; /**< identification number of the snapshot */
271 +    bool hasCOM_;
272 +    bool hasVolume_;
273 +            
274    };
275  
276    typedef DataStorage (Snapshot::*DataStoragePointer);

Comparing:
trunk/src/brains/Snapshot.hpp (property svn:keywords), Revision 963 by tim, Wed May 17 21:51:42 2006 UTC vs.
branches/development/src/brains/Snapshot.hpp (property svn:keywords), Revision 1544 by gezelter, Fri Mar 18 19:31:52 2011 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines