45 |
|
#include "io/DumpReader.hpp" |
46 |
|
|
47 |
|
namespace oopse { |
48 |
< |
BlockSnapshotManager::BlockSnapshotManager(SimInfo* info, const std::string& filename, |
48 |
> |
BlockSnapshotMananger::BlockSnapshotMananger(SimInfo* info, const std::string& filename, |
49 |
|
int storageLayout, int blockCapacity) |
50 |
< |
: SnapshotManager(storageLayout), info_(info), |
51 |
< |
blockCapacity_(blockCapacity), activeBlocks(blockCapacity_, -1) { |
50 |
> |
: SnapshotManager(storageLayout), info_(info), blockCapacity_(blockCapacity), activeBlocks_(blockCapacity_, -1) { |
51 |
|
|
52 |
|
nAtoms_ = info->getNGlobalAtoms(); |
53 |
|
nRigidBodies_ = info->getNGlobalRigidBodies(); |
56 |
|
|
57 |
|
int bytesPerStuntDouble = DataStorage::getBytesPerStuntDouble(storageLayout); |
58 |
|
|
59 |
< |
int bytesPerFrame = nStuntDoubles * bytesPerStuntDouble; |
59 |
> |
int bytesPerFrame = (nRigidBodies_ + nAtoms_) * bytesPerStuntDouble; |
60 |
|
|
61 |
|
int frameCapacity = int (avalPhysMem / bytesPerFrame); |
62 |
|
|
63 |
|
nSnapshotPerBlock_ = frameCapacity /blockCapacity_ ; |
64 |
|
|
65 |
|
reader_ = new DumpReader(info, filename); |
66 |
< |
nframes_ = reader->getNFrames(); |
66 |
> |
nframes_ = reader_->getNFrames(); |
67 |
|
|
68 |
< |
int nblocks = nframes / nSnapshotPerBlock_; |
69 |
< |
if (nframes % nSnapshotPerBlock != 0) { |
68 |
> |
int nblocks = nframes_ / nSnapshotPerBlock_; |
69 |
> |
if (nframes_ % nSnapshotPerBlock_ != 0) { |
70 |
|
++nblocks; |
71 |
|
} |
72 |
|
|
74 |
|
blocks_.push_back(SnapshotBlock(i, (i+1)*nSnapshotPerBlock_); |
75 |
|
} |
76 |
|
//the last block may not have nSnapshotPerBlock frames, we need to consider this special situation |
77 |
< |
blocks.back.second = nframes; |
77 |
> |
blocks_.back.second = nframes_; |
78 |
|
|
79 |
< |
snapshots_.insert(snapshot_.begin(), nframes, NULL); |
79 |
> |
snapshots_.insert(snapshots_.begin(), nframes_, NULL); |
80 |
|
|
81 |
|
} |
82 |
|
|