SolvSRK-UQ: Integration
Preconditions
import solvsrk
assert solvsrk.license_valid()
assert solvsrk.license_has_uq(), (
"Need trial .lic, SolvSRK-UQ add-on, or Edge seat — "
"base purchased SolvSRK returns failure_mode=license"
)Check entitlement before enabling UQ in production pipelines. Without features: uq or
features: edge on the seat file, emit_uq refuses cleanly.
Choosing noise_sigma
noise_sigma is the assumed scale of input noise in the early integration window — instrument
error, actuator jitter, batch-to-batch variation. It is not a universal constant:
- Start from sensor spec or identified model mismatch
- Run Journey 05 with a bracket of values
- Use
uq_ek_handoff_trace()to audit whyuq_sigmagrew large or stayed tight
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,
)
print(result["y_final"], result.get("uq_sigma"), result.get("uq_t_handoff"))Interpretation: treat y_final[i] as the estimate and uq_sigma[i] as a ± band for
go/no-go at terminal time only — not a full trajectory cloud.
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 (audit trail)
trace = solvsrk.uq_ek_handoff_trace(
cfg, ndim, t0, t_end, y0, rhs_fn, noise_sigma=0.0,
)
# (t, h, y, sigma) samples from the noisy early window — for certification reviewRunnable walkthrough: 05 Diagnostics (hub: UQ Examples).
What UQ is not
- Not residual-bound ROM certification
- Not Monte Carlo — single pass only
- Not a substitute for validating the underlying physics model
- Not included in purchased base SolvSRK without the UQ add-on or Edge seat
Related products
Base integrator: SolvSRK. Included on Edge: SolvSRK-Edge.