solve
experimental.network_dynamics.solve
Solving system for network architecture.
This module provides the prepare-solve pattern for Network with multi-coupling support. The prepare() function sets up the integration with all coupling state management, and returns a pure function for execution.
Functions
| Name | Description |
|---|---|
| prepare | Prepare a bare dynamics model for simulation using Diffrax. |
| solve | Main entry point for simulation. |
prepare
experimental.network_dynamics.solve.prepare(
dynamics,
solver,
t0=0.0,
t1=1.0,
dt=0.1,
n_nodes=1,
noise=None,
externals=None,
)Prepare a bare dynamics model for simulation using Diffrax.
Lightweight alternative to the Network-based prepare() for uncoupled simulations with adaptive time stepping. Coupling inputs are set to zero.
Parameters
| Name | Type | Description | Default |
|---|---|---|---|
| dynamics | AbstractDynamics | Dynamics model instance (e.g. JansenRit, ReducedWongWang) | required |
| solver | DiffraxSolver | Diffrax integration method (Tsit5, Dopri5, etc.) | required |
| t0 | float | Start time, by default 0.0 | 0.0 |
| t1 | float | End time, by default 1.0 | 1.0 |
| dt | float | Initial step size (dt0) for adaptive controller, by default 0.1 | 0.1 |
| n_nodes | int | Number of uncoupled nodes, by default 1 | 1 |
| noise | AbstractNoise | Noise process (e.g. AdditiveNoise, MultiplicativeNoise) | None |
| externals | dict | External inputs as {name: AbstractExternalInput} |
None |
Returns
| Name | Type | Description |
|---|---|---|
| solve_function | Callable | Pure JAX function: solve_function(config) -> results |
| config | Bunch | Configuration PyTree with dynamics params and initial state |
solve
experimental.network_dynamics.solve.solve(
model,
solver,
t0=0.0,
t1=100.0,
dt=0.1,
**kwargs,
)Main entry point for simulation.
Accepts either a Network or a bare AbstractDynamics instance. Dispatches to the appropriate prepare() overload via plum.
Args: model: Network or AbstractDynamics instance solver: NativeSolver or DiffraxSolver instance t0: Start time t1: End time dt: Time step **kwargs: Additional arguments forwarded to prepare() (e.g. n_nodes for bare dynamics)
Returns: Simulation results wrapped in result object
Examples: >>> # With Network >>> result = solve(network, Euler(), t0=0, t1=10, dt=0.01)
>>> # With bare dynamics (single node)
>>> result = solve(JansenRit(), Heun(), t0=0, t1=1.0, dt=0.001)
>>> # With bare dynamics (multi-node uncoupled)
>>> result = solve(JansenRit(), Heun(), t0=0, t1=1.0, dt=0.001, n_nodes=3)