GridFire v0.7.1_rc2
General Purpose Nuclear Network
Loading...
Searching...
No Matches
gridfire::trigger::solver::CVODE::SimulationTimeTrigger Class Referencefinal

Triggers when the current simulation time advances by at least a fixed interval. More...

#include <engine_partitioning_trigger.h>

Inheritance diagram for gridfire::trigger::solver::CVODE::SimulationTimeTrigger:
[legend]
Collaboration diagram for gridfire::trigger::solver::CVODE::SimulationTimeTrigger:
[legend]

Public Member Functions

 SimulationTimeTrigger (double interval)
 Construct with a positive time interval between firings.
 
bool check (const gridfire::solver::CVODESolverStrategy::TimestepContext &ctx) const override
 Evaluate whether enough simulated time has elapsed since the last trigger.
 
void update (const gridfire::solver::CVODESolverStrategy::TimestepContext &ctx) override
 Update internal state; if check(ctx) is true, advance last_trigger_time.
 
void step (const gridfire::solver::CVODESolverStrategy::TimestepContext &ctx) override
 similar to update but intended to be run on every step not just those where the trigger triggered
 
void reset () override
 Reset counters and last trigger bookkeeping (time and delta) to zero.
 
std::string name () const override
 Stable human-readable name.
 
TriggerResult why (const gridfire::solver::CVODESolverStrategy::TimestepContext &ctx) const override
 Structured explanation of the evaluation outcome.
 
std::string describe () const override
 Textual description including configured interval.
 
size_t numTriggers () const override
 Number of true evaluations since last reset.
 
size_t numMisses () const override
 Number of false evaluations since last reset.
 
- Public Member Functions inherited from gridfire::trigger::Trigger< gridfire::solver::CVODESolverStrategy::TimestepContext >
virtual ~Trigger ()=default
 Virtual destructor for polymorphic use.
 

Private Attributes

quill::Logger * m_logger = fourdst::logging::LogManager::getInstance().getLogger("log")
 Logger used for trace/error diagnostics.
 
double m_interval
 Required time interval between successive triggers.
 
double m_last_trigger_time = 0.0
 Time at which the trigger last fired; initialized to 0.
 
double m_last_trigger_time_delta = 0.0
 Overshoot relative to interval at the last firing; for diagnostics.
 
Diagnostics counters
size_t m_hits = 0
 
size_t m_misses = 0
 
size_t m_updates = 0
 
size_t m_resets = 0
 

Detailed Description

Triggers when the current simulation time advances by at least a fixed interval.

  • check(ctx) returns true when (ctx.t - last_trigger_time) >= interval.
  • update(ctx) will, if check(ctx) is true, record ctx.t as the new last_trigger_time and store a small delta relative to the configured interval (for diagnostics/logging).
  • Counters (hits/misses/updates/resets) are maintained for diagnostics; they are mutable to allow updates from const check().
Constraints/Errors:
  • Constructing with a non-positive interval throws std::invalid_argument.
Note
Thread-safety: not thread-safe; intended for single-threaded trigger evaluation.

See also: engine_partitioning_trigger.cpp for the concrete logic and logging.

Constructor & Destructor Documentation

◆ SimulationTimeTrigger()

gridfire::trigger::solver::CVODE::SimulationTimeTrigger::SimulationTimeTrigger ( double  interval)
explicit

Construct with a positive time interval between firings.

Parameters
intervalStrictly positive time interval (simulation units) between triggers.
Exceptions
std::invalid_argumentif interval <= 0.

Member Function Documentation

◆ check()

bool gridfire::trigger::solver::CVODE::SimulationTimeTrigger::check ( const gridfire::solver::CVODESolverStrategy::TimestepContext ctx) const
overridevirtual

Evaluate whether enough simulated time has elapsed since the last trigger.

Parameters
ctxCVODE timestep context providing the current simulation time (ctx.t).
Returns
true if (ctx.t - last_trigger_time) >= interval; false otherwise.
Postcondition
increments hit/miss counters and may emit trace logs.

Implements gridfire::trigger::Trigger< gridfire::solver::CVODESolverStrategy::TimestepContext >.

◆ describe()

std::string gridfire::trigger::solver::CVODE::SimulationTimeTrigger::describe ( ) const
overridevirtual

Textual description including configured interval.

Implements gridfire::trigger::Trigger< gridfire::solver::CVODESolverStrategy::TimestepContext >.

◆ name()

std::string gridfire::trigger::solver::CVODE::SimulationTimeTrigger::name ( ) const
overridevirtual

◆ numMisses()

size_t gridfire::trigger::solver::CVODE::SimulationTimeTrigger::numMisses ( ) const
overridevirtual

Number of false evaluations since last reset.

Implements gridfire::trigger::Trigger< gridfire::solver::CVODESolverStrategy::TimestepContext >.

◆ numTriggers()

size_t gridfire::trigger::solver::CVODE::SimulationTimeTrigger::numTriggers ( ) const
overridevirtual

Number of true evaluations since last reset.

Implements gridfire::trigger::Trigger< gridfire::solver::CVODESolverStrategy::TimestepContext >.

◆ reset()

void gridfire::trigger::solver::CVODE::SimulationTimeTrigger::reset ( )
overridevirtual

Reset counters and last trigger bookkeeping (time and delta) to zero.

Implements gridfire::trigger::Trigger< gridfire::solver::CVODESolverStrategy::TimestepContext >.

◆ step()

void gridfire::trigger::solver::CVODE::SimulationTimeTrigger::step ( const gridfire::solver::CVODESolverStrategy::TimestepContext ctx)
overridevirtual

similar to update but intended to be run on every step not just those where the trigger triggered

Parameters
ctxContext snapshot used to update state.

Implements gridfire::trigger::Trigger< gridfire::solver::CVODESolverStrategy::TimestepContext >.

◆ update()

void gridfire::trigger::solver::CVODE::SimulationTimeTrigger::update ( const gridfire::solver::CVODESolverStrategy::TimestepContext ctx)
overridevirtual

Update internal state; if check(ctx) is true, advance last_trigger_time.

Parameters
ctxCVODE timestep context.
Note
update() calls check(ctx) and, on success, records the overshoot delta (ctx.t - last_trigger_time) - interval for diagnostics.

Implements gridfire::trigger::Trigger< gridfire::solver::CVODESolverStrategy::TimestepContext >.

◆ why()

TriggerResult gridfire::trigger::solver::CVODE::SimulationTimeTrigger::why ( const gridfire::solver::CVODESolverStrategy::TimestepContext ctx) const
overridevirtual

Structured explanation of the evaluation outcome.

Parameters
ctxCVODE timestep context.
Returns
TriggerResult including name, value, and description.

Implements gridfire::trigger::Trigger< gridfire::solver::CVODESolverStrategy::TimestepContext >.

Member Data Documentation

◆ m_hits

size_t gridfire::trigger::solver::CVODE::SimulationTimeTrigger::m_hits = 0
mutableprivate

◆ m_interval

double gridfire::trigger::solver::CVODE::SimulationTimeTrigger::m_interval
private

Required time interval between successive triggers.

◆ m_last_trigger_time

double gridfire::trigger::solver::CVODE::SimulationTimeTrigger::m_last_trigger_time = 0.0
mutableprivate

Time at which the trigger last fired; initialized to 0.

◆ m_last_trigger_time_delta

double gridfire::trigger::solver::CVODE::SimulationTimeTrigger::m_last_trigger_time_delta = 0.0
mutableprivate

Overshoot relative to interval at the last firing; for diagnostics.

◆ m_logger

quill::Logger* gridfire::trigger::solver::CVODE::SimulationTimeTrigger::m_logger = fourdst::logging::LogManager::getInstance().getLogger("log")
private

Logger used for trace/error diagnostics.

◆ m_misses

size_t gridfire::trigger::solver::CVODE::SimulationTimeTrigger::m_misses = 0
mutableprivate

◆ m_resets

size_t gridfire::trigger::solver::CVODE::SimulationTimeTrigger::m_resets = 0
mutableprivate

◆ m_updates

size_t gridfire::trigger::solver::CVODE::SimulationTimeTrigger::m_updates = 0
mutableprivate

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