23#ifndef HH_PSC_ALPHA_CLOPATH_H
24#define HH_PSC_ALPHA_CLOPATH_H
32#include <gsl/gsl_errno.h>
33#include <gsl/gsl_matrix.h>
34#include <gsl/gsl_odeiv.h>
35#include <gsl/gsl_sf_exp.h>
58extern "C" int hh_psc_alpha_clopath_dynamics(
double,
const double*,
double*,
void* );
174void register_hh_psc_alpha_clopath(
const std::string& name );
176class hh_psc_alpha_clopath :
public ClopathArchivingNode
180 hh_psc_alpha_clopath();
181 hh_psc_alpha_clopath(
const hh_psc_alpha_clopath& );
182 ~hh_psc_alpha_clopath()
override;
190 using Node::handles_test_event;
192 size_t send_test_event( Node&,
size_t, synindex,
bool )
override;
194 void handle( SpikeEvent& )
override;
195 void handle( CurrentEvent& )
override;
196 void handle( DataLoggingRequest& )
override;
198 size_t handles_test_event( SpikeEvent&,
size_t )
override;
199 size_t handles_test_event( CurrentEvent&,
size_t )
override;
200 size_t handles_test_event( DataLoggingRequest&,
size_t )
override;
202 void get_status(
Dictionary& )
const override;
203 void set_status(
const Dictionary& )
override;
206 void init_buffers_()
override;
207 void pre_run_hook()
override;
208 void update( Time
const&,
const long,
const long )
override;
215 friend int hh_psc_alpha_clopath_dynamics(
double,
const double*,
double*,
void* );
218 friend class RecordablesMap< hh_psc_alpha_clopath >;
219 friend class UniversalDataLogger< hh_psc_alpha_clopath >;
281 double y_[ STATE_VEC_SIZE ];
284 State_(
const Parameters_& );
285 State_(
const State_& );
287 State_& operator=(
const State_& );
301 Buffers_( hh_psc_alpha_clopath& );
302 Buffers_(
const Buffers_&, hh_psc_alpha_clopath& );
305 UniversalDataLogger< hh_psc_alpha_clopath > logger_;
308 RingBuffer spike_exc_;
309 RingBuffer spike_inh_;
310 RingBuffer currents_;
314 gsl_odeiv_control* c_;
315 gsl_odeiv_evolve* e_;
316 gsl_odeiv_system sys_;
322 double IntegrationStep_;
342 double PSCurrInit_E_;
345 double PSCurrInit_I_;
347 int RefractoryCounts_;
353 template < State_::StateVecElems elem >
357 return S_.y_[ elem ];
368 static RecordablesMap< hh_psc_alpha_clopath > recordablesMap_;
373hh_psc_alpha_clopath::send_test_event( Node& target,
size_t receptor_type,
synindex,
bool )
376 e.set_sender( *
this );
378 return target.handles_test_event( e, receptor_type );
383hh_psc_alpha_clopath::handles_test_event( SpikeEvent&,
size_t receptor_type )
385 if ( receptor_type != 0 )
387 throw UnknownReceptorType( receptor_type, get_name() );
393hh_psc_alpha_clopath::handles_test_event( CurrentEvent&,
size_t receptor_type )
395 if ( receptor_type != 0 )
397 throw UnknownReceptorType( receptor_type, get_name() );
403hh_psc_alpha_clopath::handles_test_event( DataLoggingRequest& dlr,
size_t receptor_type )
405 if ( receptor_type != 0 )
407 throw UnknownReceptorType( receptor_type, get_name() );
409 return B_.logger_.connect_logging_device( dlr, recordablesMap_ );
413hh_psc_alpha_clopath::get_status(
Dictionary& d )
const
423hh_psc_alpha_clopath::set_status(
const Dictionary& d )
425 Parameters_ ptmp = P_;
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 clopath_archiving_node.cpp:77
void set_status(const Dictionary &d) override
Change properties of the node according to the entries in the dictionary.
Definition clopath_archiving_node.cpp:91
const std::string tau_u_bar_plus("tau_u_bar_plus")
const std::string E_L("E_L")
const std::string I_e("I_e")
const std::string E_K("E_K")
const std::string recordables("recordables")
const std::string C_m("C_m")
const std::string g_Na("g_Na")
const std::string E_Na("E_Na")
const std::string g_K("g_K")
const std::string target("target")
const std::string tau_u_bar_minus("tau_u_bar_minus")
const std::string tau_u_bar_bar("tau_u_bar_bar")
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