Bound simulation

The public way to obtain a runnable simulation is pops.bind.

compiled = pops.compile(case, backend=Production())
sim = pops.bind(compiled, state={"plasma": U0})

bind uses the case layout to select the runtime route:

  • Uniform(mesh) builds a single-level runtime;

  • AMR(mesh, ...) builds an adaptive runtime.

The returned object exposes high-level runtime actions:

sim.run(t_final=1.0, cfl=0.4)
sim.write("out", format="npz")
sim.time()
sim.mass("plasma")
sim.density("plasma")

The implementation has lower-level runtime methods because pybind and tests need them. User documentation should not use them to assemble a case.

Inputs

pops.bind accepts:

  • state: initial block arrays;

  • params: runtime parameter overrides;

  • aux: named static aux fields;

  • solvers: optional field-solver overrides;

  • cadence: optional compiled-time cadence.

The compiled handle declares required inputs through compiled.arguments(). bind validates missing inputs before mutating the runtime.

Inspection

print(sim)
compiled.arguments()
compiled.inspect()

These reports should be small and array-free.