solprop.backends.host.low_storage#

The reference’s low-storage interaction-picture RK4 march (SEP 24, SEP 47).

HostLowStorageMarch replays a prescribed schedule and accepts each step in place, through the host engine (solprop.backends.low_storage.HostLowStorage), which holds the registers and makes the step’s four passes. It is owned by the NumPy reference since SEP 47 phase 2: a copy of the march the native bridge still inherits (solprop.backends.low_storage.LowStorageMarch), sharing only the stateless engine. The method, the register form and the in-flight contract are those of solprop.backends.low_storage’s module documentation.

Classes

HostLowStorageMarch(backend, method)

Replay a schedule with the low-storage RK4IP march, accepting in place.

class solprop.backends.host.low_storage.HostLowStorageMarch(backend, method)[source]#

Bases: object

Replay a schedule with the low-storage RK4IP march, accepting in place.

Follows solprop.backends.host.adams.HostAdamsMarch: it owns its registers through an engine and replays a prescribed schedule, which is the only thing it does (SEP 24 section 6.2). Each step calls the engine, applies the backend’s _finish (the hard band mask, and the split-step collar where chosen) and moves the position in one commit, then records the step through the backend.

Parameters:
backendsolprop.backends.host.driver.HostDriver

The backend whose state is marched; it owns the step history and the statistics rows.

methodsolprop.stepper.low_storage.LowStorageRungeKutta

The march.

Attributes:
source_evaluationsint

Source evaluations of the committed steps since the state was last loaded (HostDriver.set_initial, which sets it to zero), four a step: a physical count, never a logical response call (SEP 24 section 5). A step that did not commit – abandoned in flight, or diverged – adds none.

Notes

The march has no error estimate to warn on. It logs a warning, once per call of replay_to(), when the engine’s stiffness indicator passes RK4’s negative-real stability interval (LOW_STORAGE_REAL_INTERVAL): an explicitly integrated damping term the translation cannot bound in advance – plasma loss – is then near the step’s stability limit.

close()[source]#

Release the engine’s registers and table, with the backend’s buffers.

property engine: HostLowStorage[source]#

Return the engine that holds the registers.

Returns:
solprop.backends.low_storage.HostLowStorage

The host engine.

replay_step(dz, end, slack)[source]#

Take one prescribed step from the backend’s position and accept it.

The unit a lockstep batch advances each member by (solprop.backends.host.group.HostGroup), with solprop.backends.host.adams.HostAdamsMarch.replay_step()’s signature.

Parameters:
dzfloat

The step, m.

endfloat

The schedule’s edge it ends on, m.

slackfloat

How far an edge may sit from a target it lands on, m; unused, since the march restarts nothing at a kink.

Returns:
float

The norm the history records: 0.0, “not estimated”.

Raises:
BackendError

If an earlier step was abandoned in flight.

ConvergenceError

If the accepted state is not finite: the field has diverged, and a replay cannot reject the step. Raised in flight, so the state is lost with it.

replay_to(schedule, target)[source]#

Replay the schedule’s steps to target, mirroring the Adams replay.

Parameters:
schedulesolprop.stepper.schedule.FixedSchedule

The schedule to replay.

targetfloat

Position to reach, m.

Raises:
BackendError

If the schedule runs out before the target is reached.

reset()[source]#

Forget what the engine holds: the state was loaded outside the march.

snapshot()[source]#

Return nothing for a resume to continue: the march keeps no history.

A resume at a schedule edge needs no history and no recycled stage (SEP 24 section 5), as under RungeKutta().