ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/brains/BlockSnapshotManager.cpp
(Generate patch)

Comparing trunk/src/brains/BlockSnapshotManager.cpp (file contents):
Revision 1793 by gezelter, Fri Aug 31 21:16:10 2012 UTC vs.
Revision 1964 by gezelter, Thu Jan 16 16:00:43 2014 UTC

# Line 35 | Line 35
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).          
38 > * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).          
39   * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).
40   * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
41   */
# Line 76 | Line 76 | namespace OpenMD {
76        // number of frames in each block given the need to hold multiple blocks
77        // in memory at the same time:
78        nSnapshotPerBlock_ = int(frameCapacity) / blockCapacity_;
79 +      if (nSnapshotPerBlock_ <= 0) {
80 +       std::cerr << "not enough memory to hold two configs!" << std::endl;
81 +      }
82        reader_ = new DumpReader(info, filename);
83        nframes_ = reader_->getNFrames();
84        int nblocks = nframes_ / nSnapshotPerBlock_;
# Line 175 | Line 178 | namespace OpenMD {
178          //in case, unloadBlock called multiple times
179          activeRefCount_[i - activeBlocks_.begin()]  = 0;
180        }
181 +
182 +      if (activeRefCount_[i-activeBlocks_.begin()] == 0) {
183 +        internalUnload(block);
184 +      }
185          
186        unloadSuccess = true;
187      } else {
# Line 198 | Line 205 | namespace OpenMD {
205    }
206  
207    void BlockSnapshotManager::internalUnload(int block) {
208 +    std::cerr << "called internal unload for block "<< block << "\n";
209      for (int i = blocks_[block].first; i < blocks_[block].second; ++i) {
210        delete snapshots_[i];
211        snapshots_[i] = NULL;
# Line 225 | Line 233 | namespace OpenMD {
233    }
234  
235    Snapshot* BlockSnapshotManager::loadFrame(int frame){
236 <    Snapshot* snapshot = new Snapshot(nAtoms_, nRigidBodies_, nCutoffGroups_,
236 >    Snapshot* snapshot = new Snapshot(nAtoms_, nRigidBodies_, nCutoffGroups_,
237                                        getStorageLayout());
238      snapshot->setID(frame);
239      snapshot->clearDerivedProperties();
240      
233    /** @todo fixed me */
241      currentSnapshot_ = snapshot;  
242      reader_->readFrame(frame);
243  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines