31#include <gsl/gsl_errno.h>
32#include <gsl/gsl_matrix.h>
33#include <gsl/gsl_odeiv.h>
49extern "C" int gif_cond_exp_dynamics(
double,
const double*,
double*,
void* );
214void register_gif_cond_exp(
const std::string& name );
216class gif_cond_exp :
public ArchivingNode
221 gif_cond_exp(
const gif_cond_exp& );
222 ~gif_cond_exp()
override;
230 using Node::handles_test_event;
232 size_t send_test_event( Node&,
size_t, synindex,
bool )
override;
234 void handle( SpikeEvent& )
override;
235 void handle( CurrentEvent& )
override;
236 void handle( DataLoggingRequest& )
override;
238 size_t handles_test_event( SpikeEvent&,
size_t )
override;
239 size_t handles_test_event( CurrentEvent&,
size_t )
override;
240 size_t handles_test_event( DataLoggingRequest&,
size_t )
override;
243 void get_status(
Dictionary& )
const override;
244 void set_status(
const Dictionary& )
override;
247 void init_buffers_()
override;
248 void pre_run_hook()
override;
250 void update( Time
const&,
const long,
const long )
override;
253 friend int gif_cond_exp_dynamics(
double,
const double*,
double*,
void* );
256 friend class RecordablesMap< gif_cond_exp >;
257 friend class UniversalDataLogger< gif_cond_exp >;
288 std::vector< double > tau_stc_;
291 std::vector< double > q_stc_;
294 std::vector< double > tau_sfa_;
297 std::vector< double > q_sfa_;
327 double neuron_state_[ STATE_VEC_SIZE ];
333 std::vector< double > sfa_elems_;
334 std::vector< double > stc_elems_;
339 State_(
const Parameters_& );
340 State_(
const State_& );
342 State_& operator=(
const State_& );
344 void get(
Dictionary&,
const Parameters_& )
const;
345 void set(
const Dictionary&,
const Parameters_&, Node* );
355 Buffers_( gif_cond_exp& );
356 Buffers_(
const Buffers_&, gif_cond_exp& );
359 RingBuffer spike_exc_;
360 RingBuffer spike_inh_;
361 RingBuffer currents_;
364 UniversalDataLogger< gif_cond_exp > logger_;
368 gsl_odeiv_control* c_;
369 gsl_odeiv_evolve* e_;
370 gsl_odeiv_system sys_;
376 double IntegrationStep_;
386 std::vector< double > P_sfa_;
387 std::vector< double > P_stc_;
391 unsigned int RefractoryCounts_;
397 template < State_::StateVecElems elem >
401 return S_.neuron_state_[ elem ];
433 static RecordablesMap< gif_cond_exp > recordablesMap_;
437gif_cond_exp::send_test_event( Node& target,
size_t receptor_type,
synindex,
bool )
440 e.set_sender( *
this );
442 return target.handles_test_event( e, receptor_type );
447gif_cond_exp::handles_test_event( SpikeEvent&,
size_t receptor_type )
449 if ( receptor_type != 0 )
451 throw UnknownReceptorType( receptor_type, get_name() );
457gif_cond_exp::handles_test_event( CurrentEvent&,
size_t receptor_type )
459 if ( receptor_type != 0 )
461 throw UnknownReceptorType( receptor_type, get_name() );
467gif_cond_exp::handles_test_event( DataLoggingRequest& dlr,
size_t receptor_type )
469 if ( receptor_type != 0 )
471 throw UnknownReceptorType( receptor_type, get_name() );
473 return B_.logger_.connect_logging_device( dlr, recordablesMap_ );
477gif_cond_exp::get_status(
Dictionary& d )
const
486gif_cond_exp::set_status(
const Dictionary& d )
488 Parameters_ ptmp = P_;
491 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 recordables("recordables")
const std::string gsl_error_tol("gsl_error_tol")
const std::string target("target")
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
BaseRandomGenerator * RngPtr
Definition random_generators.h:50
size_t synindex
For enumerations of synapse types.
Definition nest_types.h:115
const double e
Definition numerics.cpp:32