Product documentation — installation, licensing, and integration guides.
SolvSRK-UQ
Integration

SolvSRK-UQ: Integration

Preconditions

import solvsrk
 
assert solvsrk.license_valid()
assert solvsrk.license_has_uq(), "trial or SolvSRK-UQ / Edge seat required"

Without the entitlement, emit_uq returns failure_mode=license.

Enable the terminal envelope

import numpy as np
import solvsrk
 
def rhs(t, y):
    return np.array([-y[0], -2.0 * y[1]])
 
cfg = solvsrk.config_defaults()
 
result = solvsrk.run(
    cfg, ndim=2, t0=0.0, t_end=1.0, y0=(1.0, 1.0), rhs_fn=rhs,
    emit_uq=True, noise_sigma=1e-3,
)
# Terminal y(T) ± σ(T) fields — see result keys in journey 04_diagnostics
print(result.get("uq_sigma"), result.get("uq_t_handoff"))

You can also set cfg.emit_uq = 1 and cfg.noise_sigma before run() when using the C struct directly.

C API

solvsrk_config_t cfg;
solvsrk_config_defaults(&cfg);
cfg.emit_uq = 1;
/* cfg.noise_sigma = 1e-3; */
solvsrk_run(&cfg, ndim, t0, t_end, y0, rhs_fn, ...);

Diagnostics (deep)

trace = solvsrk.uq_ek_handoff_trace(cfg, ndim, t0, t_end, y0, rhs_fn, noise_sigma=0.0)
# front-phase (t, h, y, sigma) steps — gated on the same UQ entitlement

Runnable walkthrough: journey 04_diagnostics.py in the SolvSRK examples package (also mirrored on the Examples page).

What UQ is not

  • Not a residual-bound ROM certificate
  • Not Monte Carlo — single pass only
  • Not a replacement for domain-specific validation of the underlying model
  • Not included in purchased base SolvSRK (trial and UQ/Edge seats only)

Related products

Base integrator: SolvSRK. Included on Edge: SolvSRK-Edge.