93 setup(inp_dt, inp_start, inp_end);
109 if(t !=
nullptr) t->update();
120 if(t !=
nullptr) t->reset();
136 int add_eq_timer(
double istart,
double iend,
int ntrig,
double iintv,
double idur,
137 const char *iname,
const char *poolname =
nullptr);
139 int add_neq_timer(
const std::vector<double> & itrig,
double idur,
const char *iname,
140 const char *poolname =
nullptr);
144 const char *poolname =
nullptr)
146 return add_eq_timer(tg, tg, 0, 0, idur, iname, poolname);
150 double idur,
int ID,
const char *iname,
const char* poolname =
nullptr);
153 const char *iname,
const char* poolname =
nullptr);
157 const char *poolname =
nullptr)
168 return ID > -1 &&
timers[ID] !=
nullptr &&
timers[ID]->triggered;
175 ((
timers[ID]->d_trigger_dur) - (
timers[ID]->active)) == 1;
188 if(ID > -1 &&
timers[ID] !=
nullptr)
189 return timers[ID]->d_trigger_dur -
timers[ID]->active - 1;
197 if(ID > -1 &&
timers[ID] !=
nullptr)
212 void setup(
double inp_dt,
double inp_start,
double inp_end);
230 double idur,
const char *iname);
243 const double idur,
const char *iname);
centralize time managment and output triggering
void setup(double inp_dt, double inp_start, double inp_end)
Initialize the timer_manager.
void initialize_neq_timer(const std::vector< double > &itrig, double idur, int ID, const char *iname, const char *poolname=nullptr)
long d_time
current time instance index
long d_start
initial index in multiples of dt
bool trigger(int ID) const
void initialize_eq_timer(double istart, double iend, int ntrig, double iintv, double idur, int ID, const char *iname, const char *poolname=nullptr)
double time_step
global reference time step
int add_neq_timer(const std::vector< double > &itrig, double idur, const char *iname, const char *poolname=nullptr)
int add_eq_timer(double istart, double iend, int ntrig, double iintv, double idur, const char *iname, const char *poolname=nullptr)
Add a equidistant step timer to the array of timers.
void reset_timers()
Reset time in timer_manager and then reset registered timers.
double start
initial time (nonzero when restarting)
int add_singlestep_timer(double tg, double idur, const char *iname, const char *poolname=nullptr)
double timer_duration(int ID) const
void initialize_singlestep_timer(double tg, double idur, int ID, const char *iname, const char *poolname=nullptr)
timer_manager(double inp_dt, double inp_start, double inp_end)
int trigger_elapse(int ID) const
size_t num_timers() const
long d_end
final index in multiples of dt
bool trigger_end(int ID) const
std::vector< base_timer * > timers
vector containing individual timers
int active_ticks(int ID) const
return number of ticks elapsed after trigger
bool triggered_now(int ID) const
io_time
The timers we always need are indexed in this enum.
t_timer
We distinguish between equidistant and non-equidistant timers with an enum.
std::string pool
label of pool (IO || TS || STIM || ...) to which timer belongs
long d_trigger_dur
discrete duration
int trigger_count
count number of triggered IO events
t_timer type
type of timer, continuous equidistant, or non-equidistant
const char * name
timer name
double trigger_dur
triggered event duration (e.g.,stim duration)
bool triggered
flag indicating trigger at current time step
void assign_pool(const char *poolname)
int numIOs
total number of triggers during simulation
int active
count down to end of a trigger with duration
long d_intv
discrete io interval in multiples of dt
double start
Time when we start I/O in mode _EQUDIST.
void initialize(const timer_manager *t, double istart, double iend, int ntrig, double iintv, double idur, const char *iname)
double nxt
next output time in ms
double end
Time when we stop I/O in mode _EQUDIST.
const timer_manager * mng
long d_end
discrete stop index in multiples of dt
long d_start
discrete start in multiples of dt
long d_nxt
next output index
double intv
io interval in ms
std::vector< double > trig
the times that the timer will trigger
void initialize(const timer_manager *t, const std::vector< double > &itrig, const double idur, const char *iname)
const timer_manager * mng
std::vector< long > d_trig
the discrete times associated to trig