conatus.expert.Ensemble

class conatus.expert.Ensemble(solver, size, *, rhs)[source]

Bases: object

B members of one discretized problem advanced together (see module docstring).

Parameters:
  • size (int)

  • rhs (str)

classmethod from_solvers(solvers, *, rhs, member_of=None)[source]

Parameter ensemble: member b uses solvers[member_of[b]] (default: one member per solver). The solvers must share the discretization, scheme, dt, start-up and backend.

Parameters:
  • solvers (Sequence)

  • rhs (str)

  • member_of (Sequence[int] | None)

Return type:

Ensemble

set_states(X, t=0.0)[source]

Initial states (B, n) (global vectors, e.g. solver.X of set_state calls); resets the multistep history.

Parameters:

t (float)

Return type:

None

F(X)[source]
rk_stages(x0, dt, tableau)[source]

Stage states of one IMEX RK step for the batch: same arithmetic, same order as IVPSolver.rk_stages (stage j’s F and L X computed only if a later stage uses them).

Parameters:

dt (float)

Return type:

list

step()[source]

One step for every member (mirror of IVPSolver.step).

Return type:

None

run(steps, callback=None, every=None)[source]

Advance steps steps; callback(self) after every step whose iteration is a multiple of every (both explicit, as in IVPSolver.run).

Parameters:
  • steps (int)

  • callback (Callable[[Ensemble], None] | None)

  • every (int | None)

Return type:

None

states()[source]

Host copy of the member states (B, n): a copy on every backend (finding 68: on NumPy the live state array was returned, so writing to it changed the ensemble).

Return type:

ndarray

explain()[source]
Return type:

str