/// Process timed events. /// crnTime - The current time in Unix seconds. /// Return - Whether we did anything with it. (T/F) bool ParlourBBGame::ProcessChrono(time_t crnTime) { std::ostringstream sout; /// Yay for stream! bool retVal = false; /// Our return value (assume false) /// Iterate through our timed events. for (QVector<ChronoEvent>::iterator timeiter = chrono.begin(); timeiter != chrono.end(); timeiter++) { /// If we found an event due to be fired... if (timeiter->crnEnd <= crnTime) { /// Create a fake PRIVMSG event we probably won't need, but which DoCommand /// expects to get. sout << owner << " PRIVMSG " << channel << " :CHRONOEVENT " << timeiter->crnEnd << " " << timeiter->crnCmd << " " << timeiter->crnID; /// Create a QueueData based on that PRIVMSG. QueueData fakeData(sout.str().c_str()); /// Perform the command. The second parameter is 11 as the command token is /// CHRONOEVENT, 11 letters long. DoCommand(fakeData, 11, timeiter->crnCmd, timeiter->crnID); /// Destroy the used event. timeiter = chrono.erase(timeiter); /// We'll be returning true. retVal = true; /// Since we're inside a for loop, let's make sure we don't overstep the iterator's /// boundaries; if we're at the end, break out now. if (timeiter == chrono.end()) break; } } return retVal; /// Return our return value. }
double seissol::miniSeisSol(initializers::MemoryManager& memoryManager) { struct GlobalData* globalData = memoryManager.getGlobalData(); initializers::LTSTree ltsTree; initializers::LTS lts; lts.addTo(ltsTree); ltsTree.setNumberOfTimeClusters(1); ltsTree.fixate(); initializers::TimeCluster& cluster = ltsTree.child(0); cluster.child<Ghost>().setNumberOfCells(0); cluster.child<Copy>().setNumberOfCells(0); cluster.child<Interior>().setNumberOfCells(50000); ltsTree.allocateVariables(); ltsTree.touchVariables(); initializers::Layer& layer = cluster.child<Interior>(); layer.setBucketSize(lts.buffersDerivatives, sizeof(real) * tensor::I::size() * layer.getNumberOfCells()); ltsTree.allocateBuckets(); fakeData(lts, layer); localIntegration(globalData, lts, layer); Stopwatch stopwatch; stopwatch.start(); for (unsigned t = 0; t < 10; ++t) { localIntegration(globalData, lts, layer); } return stopwatch.stop(); }