register_method#
- class braintools.quad.register_method(name, fn, kind='ode', *, overwrite=False)#
Register a one-step integrator under a short name.
After registration the stepper can be selected by name in the drivers, e.g.
odeint(f, y0, t0, t1, dt, method=name), and looked up withget_method(). The stepper must follow the calling convention of the built-in steppers of its kind (for'ode':fn(f, y, t, *args, **kwargs) -> y_next, reading the step size frombrainstate.environ.get_dt()).- Parameters:
- Returns:
fnunchanged, so the call can be used inline.- Return type:
- Raises:
TypeError – If
nameis not a non-empty string orfnis not callable.ValueError – If
kindis unknown, ornameis already registered forkindandoverwriteisFalse.
See also
get_methodLook up a registered stepper.
list_methodsList the registered names.
Notes
The registry is a process-wide dictionary; registration is a host-side Python operation and has nothing to do with
jit/vmap/grad.Examples
>>> import brainstate >>> from braintools.quad import register_method, get_method >>> def forward_euler(f, y, t, *args, **kwargs): ... return y + brainstate.environ.get_dt() * f(y, t, *args, **kwargs) >>> # ``overwrite=True`` lets the example be re-run in the same process. >>> _ = register_method('my_euler', forward_euler, overwrite=True) >>> get_method('my_euler') is forward_euler True