forked from openmc-dev/openmc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtimer.cpp
90 lines (77 loc) · 2.18 KB
/
timer.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "openmc/timer.h"
namespace openmc {
//==============================================================================
// Global variables
//==============================================================================
namespace simulation {
Timer time_active;
Timer time_bank;
Timer time_bank_sample;
Timer time_bank_sendrecv;
Timer time_finalize;
Timer time_inactive;
Timer time_initialize;
Timer time_read_xs;
Timer time_statepoint;
Timer time_tallies;
Timer time_total;
Timer time_transport;
Timer time_event_init;
Timer time_event_calculate_xs;
Timer time_event_advance_particle;
Timer time_event_surface_crossing;
Timer time_event_collision;
Timer time_event_death;
} // namespace simulation
//==============================================================================
// Timer implementation
//==============================================================================
void Timer::start()
{
running_ = true;
start_ = clock::now();
}
void Timer::stop()
{
elapsed_ = elapsed();
running_ = false;
}
void Timer::reset()
{
running_ = false;
elapsed_ = 0.0;
}
double Timer::elapsed()
{
if (running_) {
std::chrono::duration<double> diff = clock::now() - start_;
return elapsed_ + diff.count();
} else {
return elapsed_;
}
}
//==============================================================================
// Non-member functions
//==============================================================================
void reset_timers()
{
simulation::time_active.reset();
simulation::time_bank.reset();
simulation::time_bank_sample.reset();
simulation::time_bank_sendrecv.reset();
simulation::time_finalize.reset();
simulation::time_inactive.reset();
simulation::time_initialize.reset();
simulation::time_read_xs.reset();
simulation::time_statepoint.reset();
simulation::time_tallies.reset();
simulation::time_total.reset();
simulation::time_transport.reset();
simulation::time_event_init.reset();
simulation::time_event_calculate_xs.reset();
simulation::time_event_advance_particle.reset();
simulation::time_event_surface_crossing.reset();
simulation::time_event_collision.reset();
simulation::time_event_death.reset();
}
} // namespace openmc