23#ifndef CONNECTOR_MODEL_IMPL_H
24#define CONNECTOR_MODEL_IMPL_H
63template <
typename ConnectionT >
79template <
typename ConnectionT >
93template <
typename ConnectionT >
102 default_connection_.get_status( d );
111template <
typename ConnectionT >
129 cp_.set_status( d, *
this );
130 default_connection_.set_status( d, *
this );
136 default_delay_needs_check_ =
true;
139template <
typename ConnectionT >
146 cp_.get_status( dummy );
148 for ( [[maybe_unused]]
const auto& [ key, val ] : syn_spec )
150 if ( dummy.
known( key ) )
153 String::compose(
"Synapse parameter \"%1\" can only be set via SetDefaults() or CopyModel().", key ) );
157 default_connection_.check_synapse_params( syn_spec );
161template <
typename ConnectionT >
170 if ( default_delay_needs_check_ )
176 const double d = default_connection_.get_delay();
193 throw BadDelay( default_connection_.get_delay(),
194 String::compose(
"Default delay of '%1' must be between min_delay %2 "
200 default_delay_needs_check_ =
false;
204template <
typename ConnectionT >
208 return default_connection_.get_syn_id();
211template <
typename ConnectionT >
215 default_connection_.set_syn_id( syn_id );
218template <
typename ConnectionT >
222 std::vector< ConnectorBase* >& thread_local_connectors,
226 const double weight )
238 "Parameter dictionary must not contain delay if delay is given "
256 used_default_delay();
261 ConnectionT connection = ConnectionT( default_connection_ );
265 connection.set_weight( weight );
270 connection.set_delay( delay );
277 connection.set_status( p, *
this );
283 size_t actual_receptor_type = receptor_type_;
290 add_connection_( src, tgt, thread_local_connectors, syn_id, connection, actual_receptor_type );
294template <
typename ConnectionT >
298 std::vector< ConnectorBase* >& thread_local_connectors,
300 ConnectionT& connection,
301 const size_t receptor_type )
305 if ( not thread_local_connectors[ syn_id ] )
312 ConnectorBase* connector = thread_local_connectors[ syn_id ];
314 connection.check_connection( src, tgt, receptor_type, get_common_properties() );
319 vc->
push_back( std::move( connection ) );
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
bool known(const std::string &key) const
Check whether there exists a value with specified key in the dictionary.
Definition dictionary.h:677
Exception to be thrown if an invalid delay is used in a connection.
Definition exceptions.h:583
Exception to be thrown if a parameter cannot be set.
Definition exceptions.h:717
DelayChecker & get_delay_checker()
Returns the delay checker for the current thread.
Definition connection_manager.cpp:207
Base class to allow storing Connectors for different synapse types in vectors.
Definition connector_base.h:63
Definition connector_model.h:69
bool has_property(const ConnectionModelProperties &property) const
Definition connector_model.h:132
virtual void calibrate(const TimeConverter &tc)=0
virtual void set_syn_id(synindex syn_id)=0
virtual std::unique_ptr< SecondaryEvent > get_secondary_event()=0
Homogeneous connector, contains synapses of one particular type (syn_id_).
Definition connector_base.h:221
void push_back(const ConnectionT &c)
Definition connector_base.h:270
void assert_valid_delay_ms(double)
Raise exception if delay value in milliseconds is invalid.
Definition delay_checker.cpp:149
void enable_delay_update()
This method enables the min/ max delay update in SetDefaults of connections method.
Definition delay_checker.h:127
void freeze_delay_update()
This method freezes the min/ max delay update in SetDefaults of connections method.
Definition delay_checker.h:121
Definition connector_model.h:152
void add_connection(Node &src, Node &tgt, std::vector< ConnectorBase * > &hetconn, const synindex syn_id, const Dictionary &d, const double delay, const double weight) override
Adds a connection.
Definition connector_model_impl.h:220
void used_default_delay()
Definition connector_model_impl.h:163
size_t get_syn_id() const override
Definition connector_model_impl.h:206
void add_connection_(Node &src, Node &tgt, std::vector< ConnectorBase * > &hetconn, const synindex syn_id, ConnectionT &c, const size_t receptor_type)
Definition connector_model_impl.h:296
void set_syn_id(synindex syn_id) override
Definition connector_model_impl.h:213
void calibrate(const TimeConverter &tc) override
Definition connector_model_impl.h:81
ConnectorModel * clone(std::string, synindex) const override
Definition connector_model_impl.h:65
void check_synapse_params(const Dictionary &syn_spec) const override
Checks to see if illegal parameters are given in syn_spec.
Definition connector_model_impl.h:141
void get_status(Dictionary &) const override
Definition connector_model_impl.h:95
void set_status(const Dictionary &) override
Definition connector_model_impl.h:113
size_t get_synapse_model_id(std::string model_name)
Definition model_manager.cpp:321
Base class for all NEST network objects.
Definition node.h:99
Exception to be thrown if a feature is unavailable.
Definition exceptions.h:108
double get_wfr_comm_interval() const
Get the desired communication interval for the waveform relaxation.
Definition simulation_manager.h:325
Class to convert times from one representation to another.
Definition nest_timeconverter.h:42
static double delay_steps_to_ms(long steps)
Convert between delays given in steps and milliseconds.
Definition nest_time.h:529
ConnectionManager connection_manager
Definition kernel_manager.h:239
ModelManager model_manager
Definition kernel_manager.h:243
SimulationManager simulation_manager
Definition kernel_manager.h:237
const std::string delay("delay")
const std::string receptor_type("receptor_type")
const std::string has_delay("has_delay")
const std::string synapse_modelid("synapse_modelid")
const std::string requires_symmetric("requires_symmetric")
const std::string synapse_model("synapse_model")
const std::string music_channel("music_channel")
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
constexpr synindex invalid_synindex
Definition nest_types.h:116
KernelManager & kernel()
Definition kernel_manager.h:311
size_t synindex
For enumerations of synapse types.
Definition nest_types.h:115
bool is_nan(T f)
Definition numerics.h:51