49 double idur,
int ID,
const char *iname,
const char* poolname)
52 tm->
initialize(
this, istart, iend, ntrig, iintv, idur, iname);
56 if(
int(
timers.size()) <= ID)
57 timers.resize(ID + 1,
nullptr);
64 const char *iname,
const char *poolname)
71 if(
int(
timers.size()) <= ID)
72 timers.resize(ID + 1,
nullptr);
79 double idur,
const char *iname,
const char *poolname)
82 tm->
initialize(
this, istart, iend, ntrig, iintv, idur, iname);
84 int ret_idx =
timers.size();
87 if(poolname)
timers[ret_idx]->assign_pool(poolname);
98 int ret_idx =
timers.size();
101 if(poolname)
timers[ret_idx]->assign_pool(poolname);
107 double iintv,
double idur,
const char *iname)
142 if (d_start < t->d_time) {
190 const double idur,
const char *iname)
203 int used_triggers = 0;
204 int max_time_less_than_current_time = 0;
205 int found_time_less_than_current_time = 0;
207 for (
size_t ii=0; ii <
trig.size(); ii++) {
210 d_trig[used_triggers++] = this_d_tm;
213 if (!found_time_less_than_current_time || this_d_tm > max_time_less_than_current_time) {
214 found_time_less_than_current_time = 1;
215 max_time_less_than_current_time = this_d_tm;
219 d_trig.resize(used_triggers);
226 for (
size_t ii=0; ii<
d_trig.size(); ii++) {
261 std::vector<double> btrig(
trig);
Basic utility structs and functions, mostly IO related.
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
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.
double start
initial time (nonzero when restarting)
long d_end
final index in multiples of dt
std::vector< base_timer * > timers
vector containing individual timers
char * dupstr(const char *old_str)
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
Timers and timer manager.