23#ifndef AEIF_PSC_ALPHA_H
24#define AEIF_PSC_ALPHA_H
32#include <gsl/gsl_errno.h>
33#include <gsl/gsl_matrix.h>
34#include <gsl/gsl_odeiv.h>
58extern "C" int aeif_psc_alpha_dynamics(
double,
const double*,
double*,
void* );
189void register_aeif_psc_alpha(
const std::string& name );
191class aeif_psc_alpha :
public ArchivingNode
196 aeif_psc_alpha(
const aeif_psc_alpha& );
197 ~aeif_psc_alpha()
override;
205 using Node::handles_test_event;
207 size_t send_test_event( Node&,
size_t, synindex,
bool )
override;
209 void handle( SpikeEvent& )
override;
210 void handle( CurrentEvent& )
override;
211 void handle( DataLoggingRequest& )
override;
213 size_t handles_test_event( SpikeEvent&,
size_t )
override;
214 size_t handles_test_event( CurrentEvent&,
size_t )
override;
215 size_t handles_test_event( DataLoggingRequest&,
size_t )
override;
217 void get_status(
Dictionary& )
const override;
218 void set_status(
const Dictionary& )
override;
221 void init_buffers_()
override;
222 void pre_run_hook()
override;
223 void update( Time
const&,
const long,
const long )
override;
230 friend int aeif_psc_alpha_dynamics(
double,
const double*,
double*,
void* );
233 friend class RecordablesMap< aeif_psc_alpha >;
234 friend class UniversalDataLogger< aeif_psc_alpha >;
292 double y_[ STATE_VEC_SIZE ];
296 State_(
const Parameters_& );
297 State_(
const State_& );
299 State_& operator=(
const State_& );
302 void set(
const Dictionary&,
const Parameters_&, Node* );
312 Buffers_( aeif_psc_alpha& );
313 Buffers_(
const Buffers_&, aeif_psc_alpha& );
316 UniversalDataLogger< aeif_psc_alpha > logger_;
319 RingBuffer spike_exc_;
320 RingBuffer spike_inh_;
321 RingBuffer currents_;
325 gsl_odeiv_control* c_;
326 gsl_odeiv_evolve* e_;
327 gsl_odeiv_system sys_;
333 double IntegrationStep_;
364 unsigned int refractory_counts_;
370 template < State_::StateVecElems elem >
374 return S_.y_[ elem ];
385 static RecordablesMap< aeif_psc_alpha > recordablesMap_;
389aeif_psc_alpha::send_test_event( Node& target,
size_t receptor_type,
synindex,
bool )
392 e.set_sender( *
this );
394 return target.handles_test_event( e, receptor_type );
398aeif_psc_alpha::handles_test_event( SpikeEvent&,
size_t receptor_type )
400 if ( receptor_type != 0 )
402 throw UnknownReceptorType( receptor_type, get_name() );
408aeif_psc_alpha::handles_test_event( CurrentEvent&,
size_t receptor_type )
410 if ( receptor_type != 0 )
412 throw UnknownReceptorType( receptor_type, get_name() );
418aeif_psc_alpha::handles_test_event( DataLoggingRequest& dlr,
size_t receptor_type )
420 if ( receptor_type != 0 )
422 throw UnknownReceptorType( receptor_type, get_name() );
424 return B_.logger_.connect_logging_device( dlr, recordablesMap_ );
428aeif_psc_alpha::get_status(
Dictionary& d )
const
438aeif_psc_alpha::set_status(
const Dictionary& d )
440 Parameters_ ptmp = P_;
443 stmp.set( d, ptmp,
this );
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
void get_status(Dictionary &d) const override
Export properties of the node by setting entries in the status dictionary.
Definition archiving_node.cpp:220
void set_status(const Dictionary &d) override
Change properties of the node according to the entries in the dictionary.
Definition archiving_node.cpp:236
const std::string tau_syn_in("tau_syn_in")
const std::string E_L("E_L")
const std::string I_e("I_e")
const std::string recordables("recordables")
const std::string C_m("C_m")
const std::string gsl_error_tol("gsl_error_tol")
const std::string V_th("V_th")
const std::string V_peak("V_peak")
const std::string target("target")
const std::string tau_syn_ex("tau_syn_ex")
const std::string tau_w("tau_w")
const std::string Delta_T("Delta_T")
const std::string g_L("g_L")
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
size_t synindex
For enumerations of synapse types.
Definition nest_types.h:115
const double e
Definition numerics.cpp:32