braincell.quad.exp_exp_euler_step

braincell.quad.exp_exp_euler_step#

braincell.quad.exp_exp_euler_step(target, t, dt, *args)[source]#

Advance a cell with exponential cable and exponential Euler channels.

Operator-splitting update inside one dt for a multi-compartment cell:

  1. Channels and concentrations. With axial currents temporarily disabled, every non-voltage DiffEqState is advanced by the coupled exponential Euler update from _exponential_euler().

  2. Cable voltage. The linear axial system \(dV/dt = A V\) is then advanced by one step of the implicit Euler solver _implicit_euler_for_axial_current(). Despite the function name, the cable update used here is the same implicit Euler solve as implicit_exp_euler_step(); the exp_exp label refers to using exponential Euler on both the channel update and (conceptually) on the linear cable equation, where one step of implicit Euler approximates \(e^{\Delta t A} V_n\).

For non-Cell targets the routine falls back to a single Newton solve.

Parameters:
  • target (DiffEqModule) – The module to advance.

  • t (Quantity[s]) – Current simulation time.

  • dt (Quantity[s]) – Time step.

  • *args – Extra positional arguments forwarded to the channel and voltage solvers.

Returns:

target’s state is updated in place.

Return type:

None

See also

implicit_exp_euler_step

Same composition under a more descriptive name.

cn_exp_euler_step

Crank-Nicolson voltage paired with exponential Euler channels.