Second order solver for FVM cable cell voltage.
In order to meet a similar accuracy to NEURON for a given δt, we need to have a second-order solver. Proposal:
- Strang splitting for voltage vs mechanism state.
- Voltage integration via implicit trapezoidal method, implemented as an explicit Euler step followed by an implicit Euler step.
The two can be combined by performing the explicit Euler step for voltage, then the state integration, and then finally the implicit Euler step for voltage. (See e.g. Hundsdorfer 1998 doi:10.1090/S0025-5718-98-00984-3)
When combined with second order solvers for state (via mechanism generation with modcc) we should have an overall second order integrator.
In order to avoid twice-computing the currents in each integration time step, we need to be able to apply a 'current delta' on event delivery. Work on this is ongoing in a development branch. Current status is the CPU implementation of the required modcc changes works, but incurs a small performance penalty (circa 2-3%) due to extra work required in event delivery.