Yes, it's the former I'm looking to implement. Specifically, I'm trying to replicate some Brian2 results which implement the exponential integrator via:
https://brian2.readthedocs.io/en/stable/_modules/brian2/stateupdaters/exponential_euler.html#ExponentialEulerStateUpdater
Which I believe is just a 1st order integrator (as opposed to the higher order ERE methods) such as shown in Eqn 8 (I assume the existing forward euler looks something like Eqn 4):
https://en.wikipedia.org/wiki/Numerical_methods_for_ordinary_differential_equations#First-order_exponential_integrator_method
Assuming the processor is already splitting the equations into linear/non-linear parts (ie eqn 7), I don't think a separate solver library would be needed for the 1st order integrator.
jrd
-----Original Message-----
From: Charl Linssen <nest-users@turingbirds.com>
Sent: Monday, February 24, 2025 9:59 AM
To: users@nest-simulator.org
Subject: [NEST Users] Re: Exponential Euler Support in NESTML
[External Email]
Hi,
Thanks for writing in. Just to be clear about terminology: for numerically stiff systems of ODEs, there exists a class of (numerical) solvers called "exponential Euler", such as Exponential Rosenbrock-Euler.
There are also linear sets of ODEs, the solution of which can be calculated algebraically (with pen and paper) and will typically end up containing terms like exp(-dt/tau).
Which of these two did you wish to use? In case of the latter, the good news is that that's already implemented and should be working out-of-the-box. For the former, I would be happy to add support for an ERE (or a similar) solver if it makes sense for your
model, or you need it to reproduce results. Please let me know what you would deem a suitable ERE solver, preferably one with a C++ interface and an open-source license.
Cheers!
Charl
On Mon, Feb 24, 2025, at 15:45, justin.r.davis@essie.ufl.edu wrote:
I've got a version of the HH model (via a NESTML file) which seems to
be requiring an exponential Euler solver (ie the one commonly used for
e^x dependent biologic systems) to most efficiently solve the
equations*. From my reading of the NESTML code generator tools source,
only rk45 and forward-Euler are supported. The difference between
Euler and Exponential Euler doesn't seem that significant, so I wanted
to see if I could get the exponential version implemented....however,
what's become unclear to me is whether or not this is a limitation of
NEST, NESTML or the underlying solvers and how I'd go about getting a
different solver implemented. Are there any guides around on how one
would implement a new solver and/or information which would help me
figure this out.
thx.
jrd
*=forward Euler does work for some (might work with even smaller
timestep) cases, but it requires a time step of 0.01ms. I'm comparing
with a Brian2 version of the model running with a 0.1ms time step
with it's natively supported exponential Euler solver which is what is
making me look into other solvers for my NESTML-based code.
_______________________________________________
NEST Users mailing list -- users@nest-simulator.org To unsubscribe
send an email to users-leave@nest-simulator.org
_______________________________________________
NEST Users mailing list -- users@nest-simulator.org To unsubscribe send an email to users-leave@nest-simulator.org
_______________________________________________
NEST Users mailing list -- users@nest-simulator.org
To unsubscribe send an email to users-leave@nest-simulator.org