DPsim
Event.cpp
1 /* Copyright 2017-2021 Institute for Automation of Complex Power Systems,
2  * EONERC, RWTH Aachen University
3  *
4  * This Source Code Form is subject to the terms of the Mozilla Public
5  * License, v. 2.0. If a copy of the MPL was not distributed with this
6  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7  *********************************************************************************/
8 
9 #include <dpsim/Event.h>
10 
11 using namespace DPsim;
12 using namespace CPS;
13 
14 void EventQueue::addEvent(Event::Ptr e) { mEvents.push(e); }
15 
16 void EventQueue::handleEvents(Real currentTime) {
17  Event::Ptr e;
18 
19  while (!mEvents.empty()) {
20  e = mEvents.top();
21  // if current time larger or equal to event time, execute event
22  if (currentTime > e->mTime || (e->mTime - currentTime) < 100e-9) {
23  e->execute();
24  std::cout << std::scientific << currentTime << ": Handle event time"
25  << std::endl;
26  //std::cout << std::scientific << e->mTime << ": Original event time" << std::endl;
27  //std::cout << std::scientific << (e->mTime - currentTime)*1e9 << ": Difference to specified event time in ns" << std::endl;
28  mEvents.pop();
29  } else {
30  break;
31  }
32  }
33 }