nest / nest-simulator

The NEST simulator
http://www.nest-simulator.org
GNU General Public License v2.0
527 stars 361 forks source link

Neuron Models use old GSL solvers for evolution of ODEs #616

Closed ingablundell closed 5 years ago

ingablundell commented 7 years ago

In all models that use GSL solvers for ODEs the functions have not been updated.

The functions are declared in the header file gsl_odeiv.h. But should be gsl_odeiv2.h according to the new version. Then the prefix gsl_odeiv will have to be changed to gsl_odeiv2 for all functions.

In the reference manual for GSL solvers it is

recommended over the previous gsl_odeiv implementation defined in gsl_odeiv.h

but

The old interface has been retained under the original name for backwards compatibility

See:

https://www.gnu.org/software/gsl/manual/html_node/Ordinary-Differential-Equations.html

This is relevant for the following models:

aeif_cond_alpha.cpp aeif_cond_alpha.h aeif_cond_beta_multisynapse.cpp aeif_cond_beta_multisynapse.h aeif_cond_exp.cpp aeif_cond_exp.h aeif_psc_alpha.cpp aeif_psc_alpha.h aeif_psc_exp.cpp aeif_psc_exp.h gif_cond_exp.cpp gif_cond_exp.h gif_cond_exp_multisynapse.cpp gif_cond_exp_multisynapse.h hh_cond_exp_traub.cpp hh_cond_exp_traub.h hh_psc_alpha.cpp hh_psc_alpha_gap.cpp hh_psc_alpha_gap.h hh_psc_alpha.h ht_neuron.cpp ht_neuron.h iaf_chxk_2008.cpp iaf_chxk_2008.h iaf_cond_alpha.cpp iaf_cond_alpha.h iaf_cond_alpha_mc.cpp iaf_cond_alpha_mc.h iaf_cond_exp.cpp iaf_cond_exp.h iaf_cond_exp_sfa_rr.cpp iaf_cond_exp_sfa_rr.h

heplesser commented 7 years ago

@ingablundell You are right in principle. Unfortunately, the GSL documentation does not provide any information about the reasons for and consequences of the change in the interface. My understanding is that it is purely a change in the interface with no consequences for the actual integration. Some stepping algorithms, though, are available only for the new interface.

Re-writing everything manually would be a lot of work with limited benefit. I would suggest that we keep the old interface in existing code, but generate code for the new interface with NESTML.

ingablundell commented 7 years ago

@heplesser My problem was that everything in the reference manual refers to the new version, so it is a bit annoying if you want to look up what the old version does.

But I would also say that this should be changed in the context of NESTML.

heplesser commented 5 years ago

This is addressed by NESTML code generation.