示例#1
0
// Action_Average::action()
Action::RetType Action_Average::DoAction(int frameNum, Frame* currentFrame, Frame** frameAddress) 
{
  if ( CheckFrameCounter( frameNum ) ) return Action::OK;

  AvgFrame_->AddByMask(*currentFrame, Mask1_);
  ++Nframes_; 

  return Action::OK;
} 
// Action_AtomicFluct::DoAction()
Action::RetType Action_AtomicFluct::DoAction(int frameNum, Frame* currentFrame,
        Frame** frameAddress)
{
    if ( CheckFrameCounter( frameNum ) ) return Action::OK;
    SumCoords_ += *currentFrame;
    SumCoords2_ += ( (*currentFrame) * (*currentFrame) ) ;
    if (calc_adp_) {
        for (int i = 0; i < SumCoords_.size(); i+=3) {
            Cross_[i  ] += (*currentFrame)[i  ] * (*currentFrame)[i+1]; // U12
            Cross_[i+1] += (*currentFrame)[i  ] * (*currentFrame)[i+2]; // U13
            Cross_[i+2] += (*currentFrame)[i+1] * (*currentFrame)[i+2]; // U23
        }
    }
    ++sets_;
    return Action::OK;
}
示例#3
0
// Action_Matrix::DoAction()
Action::RetType Action_Matrix::DoAction(int frameNum, ActionFrame& frm) {
  // Check if this frame should be processed
  if ( CheckFrameCounter( frm.TrajoutNum() ) ) return Action::OK;
  // Increment number of snapshots
  Mat_->IncrementSnapshots();

  switch (Mat_->Meta().ScalarType()) {
    case MetaData::DIST     : CalcDistanceMatrix(frm.Frm()); break;
    case MetaData::COVAR    :
    case MetaData::MWCOVAR  : CalcCovarianceMatrix(frm.Frm()); break;
    case MetaData::CORREL   : CalcCorrelationMatrix(frm.Frm()); break;
    case MetaData::DIHCOVAR : CalcDihedralCovariance(frameNum); break;
    case MetaData::DISTCOVAR: CalcDistanceCovarianceMatrix(frm.Frm()); break;
    case MetaData::IDEA     : CalcIdeaMatrix(frm.Frm()); break;
    case MetaData::IREDMAT  : CalcIredMatrix(frameNum); break;
    default: return Action::ERR; // Sanity check
  }

  return Action::OK;
}