12#ifndef OAKFIELD_SIM_CONTEXT_H
13#define OAKFIELD_SIM_CONTEXT_H
42#define SIM_CONTEXT_MAX_FIELD_ELEMENTS_DEFAULT (64U * 1024U * 1024U)
44#define SIM_CONTEXT_MAX_FIELD_BYTES_DEFAULT (512U * 1024U * 1024U)
46#define SIM_CONTEXT_MAX_FIELDS_DEFAULT 256U
48#define SIM_CONTEXT_MAX_TOTAL_FIELD_BYTES_DEFAULT (2ULL * 1024ULL * 1024ULL * 1024ULL)
50#define SIM_CONTEXT_PREFERRED_VISUAL_FIELD_CAPACITY 256U
52#define SIM_CONTEXT_MAX_SCRATCH_BYTES_PER_OPERATOR_DEFAULT (256U * 1024U * 1024U)
119 void (*log_fn)(
SimLogLevel level,
const char *message,
void *userdata),
142 uint64_t required_features,
255 size_t dependency_index);
306 struct Integrator *
const *integrators,
size_t count);
342uint32_t sim_context_field_stats_features(
const SimContext *context);
343void sim_context_reset_field_stats_profile(
SimContext *context);
344bool sim_context_field_stats_profile(
const SimContext *context,
358void sim_context_end_drift(
SimContext *context);
359bool sim_context_in_drift(
const SimContext *context);
360void sim_context_set_drift_time_override(
SimContext *context,
double time_value);
361void sim_context_clear_drift_time_override(
SimContext *context);
383 double accepted_dt,
double rms_error,
384 uint64_t step_wall_ns, uint64_t integrator_wall_ns,
385 uint64_t operator_wall_ns);
419 size_t capacity,
size_t *out_count);
457void sim_context_set_preferred_phase_mode(
SimContext *context,
int mode);
460int sim_context_preferred_phase_mode(
const SimContext *context);
463void sim_context_set_preferred_visual_auto_scale(
SimContext *context,
int enabled);
466int sim_context_preferred_visual_auto_scale(
const SimContext *context);
469void sim_context_set_preferred_visual_scale(
SimContext *context,
double scale);
472double sim_context_preferred_visual_scale(
const SimContext *context);
475void sim_context_set_preferred_visual_field_enabled(
SimContext *context,
size_t field_index,
479bool sim_context_preferred_visual_field_enabled(
const SimContext *context,
size_t field_index);
506void sim_context_flush_special_diagnostics(
SimContext *context);
510void sim_context_reset_continuity_counters(
SimContext *context);
511void sim_context_set_continuity_override(
SimContext *context,
bool enabled,
518 uint64_t *out_dirty, uint64_t *out_stable);
521size_t sim_context_operator_count(
const SimContext *context);
522size_t sim_context_plan_operator_count(
const SimContext *context);
523bool sim_context_plan_is_valid(
const SimContext *context);
Lock-free asynchronous logging facilities for libsimcore runtime.
SimLogLevel
Severity levels emitted by the asynchronous logger.
Definition async_logger.h:24
Multidimensional contiguous field abstraction with configurable layout.
SimResult
Return codes shared by libsimcore modules.
Definition field.h:29
Intermediate representation facilities for libsimcore operator fusion.
Context-level neural model registry and execution helpers.
Operator abstraction, registry, and dependency resolution for libsimcore.
SimDeterminismFlags
Determinism capability flags declared by operators.
Definition operator.h:167
SimRepresentationMode
Representation mode governing determinism guarantees.
Definition operator.h:158
void sim_context_field_continuity_counts(const SimContext *context, size_t field_index, uint64_t *out_dirty, uint64_t *out_stable)
Retrieve the dirty/stable continuity counters for a field.
SimResult sim_context_init(SimContext *context)
Initialize a simulation context with default universe parameters.
SimField * sim_context_field(SimContext *context, size_t index)
Access a field by index.
SimResult sim_context_reserve_scratch(SimContext *context, size_t bytes)
Reserve scratch bytes against the context counters.
void sim_context_set_representation_mode(SimContext *context, SimRepresentationMode mode)
Set the default representation mode for the context.
void sim_context_set_field_stats_features(SimContext *context, uint32_t feature_mask)
Configure optional field-stat feature families.
SimResult sim_context_init_with_universe(SimContext *context, const SimUniverseSpec *universe_spec)
Initialize a simulation context with universe specification.
size_t sim_context_step_metrics_history(const SimContext *context, SimStepMetrics *dest, size_t capacity)
Copy a slice of the step-metrics history ordered oldest to newest.
double sim_context_epsilon(const SimContext *context)
Get epsilon parameter from universe.
void sim_context_set_seed(SimContext *context, uint64_t seed)
Set the base seed used for deterministic RNG streams.
SimIRBuilder * sim_context_ir_builder(SimContext *context)
Access the shared IR builder.
void sim_context_memory_usage(const SimContext *context, size_t *out_fields, size_t *out_scratch, size_t *out_total)
Report current memory usage counters.
void sim_split_notify_integrator(struct SimContext *context, double dt_sub, double error_estimate)
Internal hook used by split operators to relay substep feedback.
SimResult sim_context_set_integrator_sequence(SimContext *context, struct Integrator *const *integrators, size_t count)
Assign an ordered sequence of integrators for opt-in multi-integrator stepping.
void sim_context_set_memory_limits(SimContext *context, const SimContextMemoryLimits *limits)
Configure memory limits for fields and scratch allocations.
uint64_t sim_context_seed(const SimContext *context)
Get the base seed used for deterministic RNG streams.
#define SIM_CONTEXT_PREFERRED_VISUAL_FIELD_CAPACITY
Definition sim_context.h:50
SimResult sim_context_prepare_plan(SimContext *context)
Ensure the execution plan is up to date.
void sim_context_set_logger(SimContext *context, void(*log_fn)(SimLogLevel level, const char *message, void *userdata), void *userdata)
Attach a logger callback to the context (optional).
void sim_context_get_memory_limits(const SimContext *context, SimContextMemoryLimits *out_limits)
Fetch current memory limit settings.
void sim_context_log_warning(const SimContext *context, const char *fmt,...)
Emit a warning through the context logger (or stderr fallback).
SimRepresentationMode sim_context_representation_mode(const SimContext *context)
Get the default representation mode for the context.
uint64_t sim_context_special_fault_count(const SimContext *context)
Total number of special-function faults observed so far.
void sim_context_record_step_metrics(SimContext *context, double requested_dt, double accepted_dt, double rms_error)
Capture per-step metrics (invoked by scheduler/integrators).
void sim_context_begin_drift(SimContext *context)
Enter/exit drift mode to suppress side effects during derivative evaluation.
void sim_context_clear_special_faults(SimContext *context)
Reset accumulated special-function fault statistics.
void sim_context_set_integrator(SimContext *context, struct Integrator *integrator)
Assigns the integrator responsible for advancing the context.
void sim_context_release_scratch(SimContext *context, size_t bytes)
Release previously reserved scratch bytes.
bool sim_context_allows_determinism(const SimContext *context, SimDeterminismFlags flags)
Return true when the current representation mode permits the given determinism flags.
struct Integrator * sim_context_integrator_sequence_at(const SimContext *context, size_t index)
Returns the integrator at index in the optional sequence.
struct Integrator * sim_context_integrator(SimContext *context)
Retrieves the currently bound integrator.
SimResult sim_context_add_operator_dependency(SimContext *context, size_t operator_index, size_t dependency_index)
Add an explicit dependency edge between two registered operators.
void sim_context_special_fallback_hook(const SimContext *context, SimSpecialFallbackFn *out_fallback, void **out_userdata)
Retrieve the context-managed fallback hook for safe helpers.
bool sim_context_profiler_snapshot(SimContext *context, SimProfilerSnapshot *out_snapshot)
double sim_context_time(const SimContext *context)
Returns the simulation time accumulated so far (seconds).
bool sim_context_latest_step_metrics(const SimContext *context, SimStepMetrics *out_metrics)
Fetch the most recent step metrics sample, if available.
size_t sim_context_truncation_level(const SimContext *context)
Get hyperexponential truncation level from universe.
SimResult sim_context_register_operator(SimContext *context, const SimOperatorDescriptor *descriptor, size_t *out_index)
Register a new operator within the context.
void sim_context_set_backend(SimContext *context, struct SimBackend *backend)
Assigns the backend used for kernel execution.
bool sim_context_kernel_allowed_mode(const SimContext *context, SimRepresentationMode mode, uint64_t required_features, SimDeterminismFlags determinism_flags)
Return true when a kernel-backed operator is allowed under an explicit mode.
SimResult sim_context_execute_prepared(SimContext *context)
Execute the current operator plan without re-running plan preparation.
size_t sim_context_step_index(const SimContext *context)
Returns the number of completed integration steps.
bool sim_context_profiler_counters(SimContext *context, SimProfilerCounter *out_counters, size_t capacity, size_t *out_count)
int sim_context_preferred_visual_mode(const SimContext *context)
void sim_context_set_timestep(SimContext *context, double dt)
Overrides the integration timestep stored in the context.
SimResult sim_context_execute(SimContext *context)
Execute the operator plan sequentially.
void sim_context_set_preferred_visual_mode(SimContext *context, int mode)
void sim_context_destroy(SimContext *context)
Destroy a simulation context and free owned resources.
struct SimBackend * sim_context_backend(SimContext *context)
Returns the active compute backend.
double sim_context_timestep(const SimContext *context)
Queries the integration timestep currently used by the context.
void sim_context_set_time_model(SimContext *context, SimTimeModel model)
Set the time evolution model for the simulation (continuous vs map).
SimDiagnostics * sim_context_diagnostics(SimContext *context)
Access diagnostics container.
SimResult sim_context_check_field_limits(const SimContext *context, size_t element_count, size_t field_bytes)
Check if a field allocation would violate configured limits.
size_t sim_context_field_count(const SimContext *context)
Returns the number of fields currently owned by the context.
void sim_context_record_step_metrics_with_timing(SimContext *context, double requested_dt, double accepted_dt, double rms_error, uint64_t step_wall_ns, uint64_t integrator_wall_ns, uint64_t operator_wall_ns)
Capture per-step metrics with explicit wall-time attribution.
void sim_context_set_special_fallback(SimContext *context, SimSpecialFallbackFn fallback, void *userdata)
Override the fallback invoked when special functions fail.
size_t sim_context_integrator_sequence_count(const SimContext *context)
Returns the number of integrators in the optional sequence.
bool sim_context_last_special_fault(const SimContext *context, SimSpecialEvalReport *out_report)
Copy the most recent special-function fault report, if any.
SimResult sim_context_add_field(SimContext *context, SimField *field, size_t *out_index)
Add a field to the context, transferring ownership.
bool sim_context_kernel_allowed(const SimContext *context, uint64_t required_features, SimDeterminismFlags determinism_flags)
Return true when a kernel-backed operator is allowed under the current policy.
void sim_context_accept_step(SimContext *context, double accepted_dt)
Advance runtime counters after an accepted step.
Simulation diagnostics state (faults, fallback hooks, counters).
Integrator registry and active integrator tracking.
Lightweight performance profiler for libsimcore runtime execution.
Dynamic runtime state for simulations.
SimTimeModel
Time evolution model for the simulation.
Definition sim_runtime_state.h:71
Execution plan and backend coordination state.
Seed derivation helpers for deterministic RNG streams.
Static world container coordinating fields, operators, and universe specification.
Analytic special functions, finite ladder helpers, and q-analogs.
SimResult(* SimSpecialFallbackFn)(void *userdata, const SimSpecialEvalReport *report, SimComplexDouble *value_out)
Callback signature used to provide fallback values on failure.
Definition special_functions.h:420
Integrator instance shared across schemes.
Definition integrator.h:125
Runtime backend handle shared across implementations.
Definition backend.h:115
Memory limits enforced by the simulation context.
Definition sim_context.h:59
size_t max_field_bytes
Definition sim_context.h:61
size_t max_scratch_bytes_per_operator
Definition sim_context.h:64
size_t max_total_field_bytes
Definition sim_context.h:63
size_t max_field_elements
Definition sim_context.h:60
size_t max_fields
Definition sim_context.h:62
Simulation runtime state.
Definition sim_context.h:70
SimIntegratorState integrators
Definition sim_context.h:74
SimRepresentationMode representation_mode
Definition sim_context.h:79
size_t bytes_scratch_in_use
Definition sim_context.h:82
int preferred_gui_visual_field_index
Definition sim_context.h:94
SimSchedulerPlan scheduler
Definition sim_context.h:73
bool continuity_override_enabled
Definition sim_context.h:85
SimDiagnostics diag
Definition sim_context.h:75
bool profiler_ready
Definition sim_context.h:77
int preferred_gui_visual_mode
Definition sim_context.h:90
SimContextMemoryLimits memory_limits
Definition sim_context.h:80
int preferred_gui_phase_mode
Definition sim_context.h:91
SimOperatorConfig continuity_override
Definition sim_context.h:86
size_t bytes_total_in_use
Definition sim_context.h:83
SimProfiler profiler
Definition sim_context.h:76
bool preferred_gui_visual_field_selected[SIM_CONTEXT_PREFERRED_VISUAL_FIELD_CAPACITY]
Definition sim_context.h:96
size_t bytes_fields_in_use
Definition sim_context.h:81
SimWorld world
Definition sim_context.h:71
SimRuntimeState runtime
Definition sim_context.h:72
void(* log_fn)(SimLogLevel level, const char *message, void *userdata)
Definition sim_context.h:98
uint64_t base_seed
Definition sim_context.h:78
SimNeuralModelRegistry neural_models
Definition sim_context.h:102
double preferred_gui_visual_scale
Definition sim_context.h:93
int preferred_gui_visual_auto_scale
Definition sim_context.h:92
void * log_userdata
Definition sim_context.h:101
Diagnostics container for special-function faults and fallback.
Definition sim_diagnostics.h:29
Rolling counters for runtime field-statistics requests and costs.
Definition sim_field_stats_runtime.h:86
Owning multidimensional field.
Definition field.h:157
Monotonic arena for IR node allocation.
Definition kernel_ir.h:347
Integrator registry container paired with active execution pointers.
Definition sim_integrator_state.h:20
Owning dynamic array of neural model entries.
Definition neural_models.h:99
Operator runtime configuration shared between descriptors and instances.
Definition operator.h:307
Description used when registering a new operator.
Definition operator.h:421
Operator instance stored by the registry.
Definition operator.h:344
Options controlling synthesized pole fields.
Definition sim_world.h:48
Pole singularity specification for universe geometry.
Definition sim_world.h:39
Per-operator statistics tracked during profiling.
Definition sim_profiler.h:31
Snapshot of accumulated frame statistics.
Definition sim_profiler.h:21
Profiler state used by the runtime scheduler.
Definition sim_profiler.h:41
Runtime parameters and integration state.
Definition sim_runtime_state.h:195
Scheduler-local state for plan resolution and backend dispatch.
Definition sim_scheduler_state.h:22
Structured report describing why a special-function helper failed.
Definition special_functions.h:407
Aggregated metrics captured once per completed integration step.
Definition sim_runtime_state.h:83
Universe/experiment specification defining mathematical structure.
Definition sim_world.h:62
Mutable world container that owns fields, operators, and universe data.
Definition sim_world.h:84