122 std::vector<double>
td;
143 for (
int psz = 0; psz < dparam_size; ++psz) {
162 for (
size_t i = 0;
i < ncte->
type.size(); ++
i) {
163 switch (ncte->
type[
i]) {
169 int ncindex = ncte->
intdata[idat++];
171 #ifndef CORENRN_DEBUG_QUEUE
172 #define CORENRN_DEBUG_QUEUE 0
174 #if CORENRN_DEBUG_QUEUE
175 printf(
"nrn2core_tqueue tid=%d i=%zd type=%d tdeliver=%g NetCon %d\n",
191 int target_type = ncte->
intdata[idat++];
192 int target_instance = ncte->
intdata[idat++];
200 target_instance = ml->
_permute[target_instance];
206 int netcon_index = ncte->
intdata[idat++];
207 int weight_index = -1;
208 if (netcon_index >= 0) {
212 double flag = ncte->
dbldata[idbldat++];
213 int is_movable = ncte->
intdata[idat++];
223 void** movable_arg = nt.
_vdata + ml->
pdata[movable_index];
225 #if CORENRN_DEBUG_QUEUE
226 printf(
"nrn2core_tqueue tid=%d i=%zd type=%d tdeliver=%g SelfEvent\n",
232 " target_type=%d pnt data index=%d flag=%g is_movable=%d netcon index "
240 net_send(movable_arg, weight_index, pnt, ncte->
td[
i], flag);
242 *movable_arg = (
void*) old_movable_arg;
249 int ps_index = ncte->
intdata[idat++];
250 #if CORENRN_DEBUG_QUEUE
251 printf(
"nrn2core_tqueue tid=%d i=%zd type=%d tdeliver=%g PreSyn %d\n",
265 int gid = ncte->
intdata[idat++];
276 #if CORENRN_DEBUG_QUEUE
277 printf(
"nrn2core_tqueue tid=%d i=%zd type=%d tdeliver=%g NetParEvent\n",
286 std::stringstream qetype;
287 qetype << ncte->
type[
i];
288 hoc_execerror(
"Unimplemented transfer queue event type:", qetype.str().c_str());
306 for (
int i = 0;
i < dparam_size; ++
i) {
307 if (semantics[
i] == -8) {
332 int type = tml->index;
343 for (
int iml = 0; iml <
nodecount; ++iml) {
344 for (
int i = first;
i <= last; ++
i) {
428 double* _p = ml->
data;
432 _ppvar += _iml * psz;
440 (*nrn2core_patternstim_)(
info);
auto & get_memb_func(size_t idx)
auto & get_prop_dparam_size()
auto & get_mech_data_layout()
auto & get_prop_param_size()
virtual void send(double sendtime, NetCvode *, NrnThread *) override
union coreneuron::NetCon::@0 u
virtual void send(double sendtime, NetCvode *, NrnThread *) override
IvocVect * discon_indices_
std::size_t ubound_index_
#define VecPlayContinuousType
THIS FILE IS AUTO GENERATED DONT MODIFY IT.
int nrn_i_layout(int icnt, int cnt, int isz, int sz, int layout)
This function return the index in a flat array of a matrix coordinate (icnt, isz).
static void setup_type2semantics()
void watch_datum_indices(int type, int &first, int &last)
return first and last datum indices of WATCH statements
static std::unordered_map< int, int > type2movable
static void nrn2core_transfer_watch_condition(int, int, int, int, int)
std::map< int, InputPreSyn * > gid2in
void nrn_thread_table_check()
void(* nrn2core_transfer_watch_)(void(*cb)(int, int, int, int, int))
Pointer to function in NEURON that iterates over activated WATCH statements, sending each item to ....
void hoc_execerror(const char *s1, const char *s2)
void(* nrn2core_patternstim_)(void **info)
int nrn_get_mechtype(const char *name)
Get mechanism type by the mechanism name.
static void watch_activate_clear()
void ** pattern_stim_info_ref(int icnt, int cnt, double *_p, Datum *_ppvar, ThreadDatum *_thread, NrnThread *_nt, Memb_list *ml, double v)
static void nrn2core_patstim_share_info()
void net_send(void **, int, Point_process *, double, double)
void nrn_spike_exchange_init()
void dt2thread(double adt)
void nrn2core_PreSyn_flag_receive(int tid)
static void nrn2core_tqueue()
Copy each thread's queue from NEURON.
void direct_mode_initialize()
All state from NEURON necessary to continue a run.
NetCvode * net_cvode_instance
static void vec_play_activate()
static void pr(N_Vector x)
std::vector< double > dbldata
std::vector< int > intdata
virtual void send(double deliverytime, NetCvode *, NrnThread *)
std::vector< int > _pnt_offset