SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::solver::TimedObserver< Observer > Class Template Reference

Measure solves explicitly while retaining an ordinary progress or stop callback. More...

#include <observers.hpp>

Collaboration diagram for serif::solver::TimedObserver< Observer >:
[legend]

Public Member Functions

 TimedObserver (SolveTiming &timing, Observer observer={})
 Borrow the timing destination and own the user's callback.
 
void started ()
 Begin measurement when the solver starts evaluating its initial state.
 
void finished (SolveStatus status, const SolveDiagnostics &diagnostics)
 Accumulate a normally completed call independently of its convergence status.
 
decltype(auto) operator() (SolveEvent event, const auto &state, const auto &system)
 Preserve the callback's void or stop-request return type.
 

Private Attributes

SolveTiming & m_timing
 
Observer m_observer
 
std::chrono::steady_clock::time_point m_start
 

Detailed Description

template<typename Observer = NoObserver>
class serif::solver::TimedObserver< Observer >

Measure solves explicitly while retaining an ordinary progress or stop callback.

Note
Reusing the same timing record accumulates resumed solves. Timing starts before initial evaluation and ends on any returned numerical result, including a rejected initial state. Exceptions propagate normally; an interrupted call contributes no completed-solve duration.

Constructor & Destructor Documentation

◆ TimedObserver()

template<typename Observer = NoObserver>
serif::solver::TimedObserver< Observer >::TimedObserver ( SolveTiming & timing,
Observer observer = {} )
inlineexplicit

Borrow the timing destination and own the user's callback.

Member Function Documentation

◆ finished()

template<typename Observer = NoObserver>
void serif::solver::TimedObserver< Observer >::finished ( SolveStatus status,
const SolveDiagnostics & diagnostics )
inline

Accumulate a normally completed call independently of its convergence status.

◆ operator()()

template<typename Observer = NoObserver>
decltype(auto) serif::solver::TimedObserver< Observer >::operator() ( SolveEvent event,
const auto & state,
const auto & system )
inline

Preserve the callback's void or stop-request return type.

◆ started()

template<typename Observer = NoObserver>
void serif::solver::TimedObserver< Observer >::started ( )
inline

Begin measurement when the solver starts evaluating its initial state.

Member Data Documentation

◆ m_observer

template<typename Observer = NoObserver>
Observer serif::solver::TimedObserver< Observer >::m_observer
private

◆ m_start

template<typename Observer = NoObserver>
std::chrono::steady_clock::time_point serif::solver::TimedObserver< Observer >::m_start
private

◆ m_timing

template<typename Observer = NoObserver>
SolveTiming& serif::solver::TimedObserver< Observer >::m_timing
private

The documentation for this class was generated from the following file: