38 using TimePoint = std::chrono::steady_clock::time_point;
41 std::string stage{
""};
42 std::string message{
"initializing engine"};
45 size_t initialization_n;
46 size_t initialization_k;
52 double report_granularity_p{0.1};
54 double execution_report_p;
55 TimePoint execution_report_t;
58 void init_begin(
size_t n) {
59 message =
"initializing";
60 initialization.
begin();
65 void init(
const std::string& what) {
67 message =
"initializing " + what;
69 double p =
static_cast<double>(initialization_k) /
static_cast<double>(initialization_n);
75 assert(initialization_k == initialization_n);
78 message =
"initialization done";
81 bool is_init_ended()
const {
return initialization.
is_ended(); }
84 if (is_init_ended()) {
87 return initialization.
elapsed();
93 message =
"executing simulation";
94 execution_report_p = 0;
95 execution_report_t = std::chrono::steady_clock::now();
99 void exec_update(
double p) { execution.
update_safe(p); }
103 double now_d =
static_cast<double>(now.count());
104 double eta_d =
static_cast<double>(execution_eta.count());
105 exec_update(now_d / eta_d);
111 message =
"simulation done";
115 bool is_exec_ended()
const {
return execution.
is_ended(); }
124 if (execution_report_p == 1.0) {
134 auto now = std::chrono::steady_clock::now();
137 execution_report_p = 1.0;
138 execution_report_t = now;
140 }
else if (execution.
percent() - execution_report_p > report_granularity_p) {
142 execution_report_p = execution.
percent();
143 execution_report_t = now;
145 }
else if (cast_duration(now - execution_report_t) > report_granularity_d) {
147 execution_report_p = execution.
percent();
148 execution_report_t = now;
157 {
"message", p.message},
158 {
"initialization", p.initialization},
161 j[
"execution"] = p.execution;
163 j[
"execution"] =
nullptr;
Definition: progress.hpp:35
void update_safe(double p)
Definition: progress.hpp:94
double percent() const
Definition: progress.hpp:106
Duration elapsed() const
Definition: progress.hpp:116
void update(double p)
Definition: progress.hpp:73
void end()
Definition: progress.hpp:59
bool is_ended() const
Definition: progress.hpp:68
void begin()
Definition: progress.hpp:50
Definition: simulation_progress.hpp:37
bool exec_report()
Definition: simulation_progress.hpp:122
std::chrono::nanoseconds Duration
Definition: cloe_fwd.hpp:36