Journey 01 — First contact
Confirm the wheel, native libsolvsrk, license state, machine code, and the smallest successful integration (exponential decay with known exact answer).
Prerequisites: Release wheel from resonix.io/account and activated solvsrk.lic. Scenario: Version, license, and the smallest successful solve
Key APIs
solvsrk.__version__solvsrk.license_valid()solvsrk.machine_code_formatted()solvsrk.run(cfg, ndim, t0, t_end, y0, rhs_fn)
Concepts to internalize
- survived — True when t_end was reached; your go/no-go flag.
- Result dict — plain Python types (no ctypes leaking). Log it in production.
- RHS callback — Python rhs(t, y) marshalled to the C core; there is no second Python engine.
- Machine code — safe to paste in the portal when requesting a seat.
Important code
The guided tour script wraps this pattern. Copy the production shape into your pipeline:
import solvsrk
import numpy as np
cfg = solvsrk.config_defaults()
cfg.cvode_rtol = 1e-10
def rhs(t, y):
return -y # dy/dt = -y
result = solvsrk.run(cfg, ndim=1, t0=0.0, t_end=1.0, y0=(1.0,), rhs_fn=rhs)
print(result['survived'], result['y_final'])
print(np.exp(-1.0), result['y_final'][0]) # sanity checkAct-by-act walkthrough
Act 1 — What you are doing
Confirm the wheel and the native libsolvsrk load, see your license state, and run the smallest ODE that proves the solver is alive.
Act 2 — Version
Every support ticket starts with the package version.
| Field | Value | Notes |
|---|---|---|
version | 2.5.0 |
Act 3 — License
SolvSRK is gated by a machine-locked .lic file. Activate at resonix.io/account: run python -m solvsrk, paste your Machine Code, download solvsrk.lic, then python -m solvsrk activate path/to/solvsrk.lic.
| Field | Value | Notes |
|---|---|---|
license_valid | True | |
days_remaining | 18 | |
license_info | valid=1 licensee=release-stream-516228fd67d6@example.com seat_id=trial expires=2026-09-26 duration_days=30 days_remaining=18 features=uq |
Act 4 — Machine code
If activation fails, this is the fingerprint you paste into the Resonix portal to be issued a seat. It is safe to share.
| Field | Value | Notes |
|---|---|---|
machine_code | 53E9-2E74-D41B-2C82-9123-17AF-11C6-5411-B158-3C16-97AD-FD6C-0B5C-2D4C-52E7-BCA5 | |
default_license_path | ~\AppData\Roaming\solvsrk\license.dat |
Act 5 — Simplest solve
Integrate exponential decay dy/dt = -y from t=0 to t=1 with y(0)=1. The exact answer is exp(-1). This uses a tight smoke-test preset; on real stiff plants you tune knobs with SolvScout (journey 04).
| Field | Value | Notes |
|---|---|---|
survived | True | |
failure_mode | ok | |
t_reached | 1 | |
y_final | [0.367879] | |
total_rhs_evals | 220 | |
front_phase | steps=200 rhs=220 | |
stiff_phase | steps=0 rhs=0 | |
t_handoff | 1 | |
wall_s | 0.0003316 | |
expected | [0.367879] | |
max_abs_error | 2.266e-13 |
Guided tour output
Verified console capture from 01_first_contact.py:
Version, license, and the smallest successful solve
-- Act 1 - What you are doing --
-> Confirm the wheel and the native libsolvsrk load, see your license state, and run the smallest ODE that proves the solver is alive.
-- Act 2 - Version --
-> Every support ticket starts with the package version.
version: 2.5.0
-- Act 3 - License --
-> SolvSRK is gated by a machine-locked .lic file. Activate at resonix.io/account: run `python -m solvsrk`, paste your Machine Code, download solvsrk.lic, then `python -m solvsrk activate path/to/solvsrk.lic`.
license_valid: True
days_remaining: 18
license_info: valid=1 licensee=release-stream-516228fd67d6@example.com seat_id=trial expires=2026-09-26 duration_days=30 days_remaining=18 features=uq
-- Act 4 - Machine code --
-> If activation fails, this is the fingerprint you paste into the Resonix portal to be issued a seat. It is safe to share.
machine_code: 53E9-2E74-D41B-2C82-9123-17AF-11C6-5411-B158-3C16-97AD-FD6C-0B5C-2D4C-52E7-BCA5
default_license_path: ~\AppData\Roaming\solvsrk\license.dat
-- Act 5 - Simplest solve --
-> Integrate exponential decay dy/dt = -y from t=0 to t=1 with y(0)=1. The exact answer is exp(-1). This uses a tight smoke-test preset; on real stiff plants you tune knobs with SolvScout (journey 04).
survived: True
failure_mode: ok
t_reached: 1
y_final: [0.367879]
total_rhs_evals: 220
front_phase: steps=200 rhs=220
stiff_phase: steps=0 rhs=0
t_handoff: 1
wall_s: 0.0003316
expected: [0.367879]
max_abs_error: 2.266e-13
-- Run complete --
next_journey: 02_core_path.pyRun it
cd python
# Guided tour — narrated scenario walkthrough (recommended first run):
python examples/journeys/01_first_contact.py
# Production one-liner — same API call you ship:
python -c "import solvsrk as s; print(s.__version__, s.license_valid())"What comes next
Journey 02 integrates a nonlinear Rössler system with tuned knobs.