void AnimatedSprite::addMessageRule(int msg, AnimateMessage* rule) { RIter p = rules.find(msg); if (p != rules.end()) { return; } rules.insert(RPair(msg, rule)); }
void NumberData::post_step() { int ntypes = Base::simData->ntypes(); if (numberData.empty()) numberData = vector<vector<RPair> >(ntypes); vector<int> nums(ntypes, 0); int size = Base::simData->size(); for (int n=0; n<size; ++n) { int type = Base::simData->Type(n); if (-1<type && type<ntypes) ++nums[type]; } // Store data RealType time = Base::gflow->getElapsedTime(); for (int i=0; i<ntypes; ++i) numberData[i].push_back(RPair(time, static_cast<RealType>(nums[i]))); }
void KineticEnergyTypesData::post_step() { // Only record if enough time has gone by if (!DataObject::_check()) return; RealType time = Base::gflow->getElapsedTime(); // Create an entry for (int ty=0; ty<ntypes; ++ty) keData[ty].push_back(RPair(time, 0)); // Get and store data RealType ke = 0; RealType **v = Base::simData->V(); RealType *im = Base::simData->Im(); int size = Base::simData->size(); for (int n=0; n<size; ++n) { int type = Base::simData->Type(n); if (-1<type && type<ntypes && im[n]>0) keData[type].rbegin()->second += sqr(v[n], sim_dimensions)/im[n]; } // Multiply by 1/2 for (int ty=0; ty<ntypes; ++ty) { keData[ty].rbegin()->second *= 0.5; if (useAve) keData[ty].rbegin()->second /= Base::simData->number(); } }