void AbstractAnalysisArrayData::valuesReady() { GMX_RELEASE_ASSERT(isAllocated(), "There must be some data"); if (bReady_) { return; } bReady_ = true; std::vector<AnalysisDataValue>::const_iterator valueIter = value_.begin(); AnalysisDataModuleManager &modules = moduleManager(); modules.notifyDataStart(this); for (int i = 0; i < rowCount(); ++i, valueIter += columnCount()) { AnalysisDataFrameHeader header(i, xvalue(i), 0); modules.notifyFrameStart(header); modules.notifyPointsAdd( AnalysisDataPointSetRef( header, pointSetInfo_, constArrayRefFromVector<AnalysisDataValue>(valueIter, valueIter + columnCount()))); modules.notifyFrameFinish(header); } modules.notifyDataFinish(); }
void AnalysisDataDisplacementModule::frameFinished(const AnalysisDataFrameHeader & /*header*/) { if (_impl->nstored <= 1) { return; } int step, i; if (_impl->nstored == 2) { if (_impl->histm) { _impl->histm->init(histogramFromBins(0, _impl->max_store / _impl->nmax, _impl->dt).integerBins()); } notifyDataStart(); } AnalysisDataFrameHeader header(_impl->nstored - 2, _impl->t, 0); notifyFrameStart(header); for (i = _impl->ci - _impl->nmax, step = 1; step < _impl->nstored && i != _impl->ci; i -= _impl->nmax, ++step) { if (i < 0) { i += _impl->max_store; } _impl->currValues_.clear(); _impl->currValues_.push_back(AnalysisDataValue(step * _impl->dt)); int k = 1; for (int j = 0; j < _impl->nmax; j += _impl->ndim, ++k) { real dist2 = 0.0; for (int d = 0; d < _impl->ndim; ++d) { real displ = _impl->oldval[_impl->ci + j + d] - _impl->oldval[i + j + d]; dist2 += displ * displ; } _impl->currValues_.push_back(AnalysisDataValue(dist2)); } notifyPointsAdd(AnalysisDataPointSetRef(header, _impl->currValues_)); } notifyFrameFinish(header); }