![]() |
NEURON
|
#include <../../nrnconf.h>
#include <nrnmpi.h>
#include "cabcode.h"
#include "classreg.h"
#include "code.h"
#include "parse.hpp"
#include "cvodeobj.h"
#include "hoclist.h"
#include "pool.hpp"
#include "tqueue.hpp"
#include "ocobserv.h"
#include "nrnneosm.h"
#include "datapath.h"
#include "objcmd.h"
#include "kssingle.h"
#include "ocnotify.h"
#include "utils/enumerate.h"
#include "vrecitem.h"
#include "oclist.h"
#include "htlist.h"
#include "ivocvect.h"
#include "netcon.h"
#include "netcvode.h"
#include "nrn_ansi.h"
#include "nrncore_write/utils/nrncore_utils.h"
#include "nrniv_mf.h"
#include "nrnste.h"
#include "profile.h"
#include "utils/profile/profiler_interface.h"
#include "utils/formatting.hpp"
#include <array>
#include <cerrno>
#include <cstdlib>
#include <ctime>
#include <regex>
#include <unordered_set>
#include <utility>
#include "membfunc.h"
Go to the source code of this file.
Classes | |
struct | ForNetConsInfo |
class | MaxStateItem |
struct | InterThreadEvent |
Macros | |
#define | USE_MIN_DELAY 1 |
#define | PROFILE 0 |
#define | lvardtloop(i, j) |
#define | NVI_SUCCESS 0 |
#define | PP2NT(pp) ((NrnThread*) ((pp)->_vnt)) |
#define | PP2t(pp) (PP2NT(pp)->_t) |
#define | POINT_RECEIVE(type, tar, w, f) (*pnt_receive[type])(tar, w, f) |
#define | nt_dt nrn_threads->_dt |
#define | nt_t nrn_threads->_t |
#define | ITE_SIZE 10 |
#define | fifo_event event |
Typedefs | |
typedef void(* | ReceiveFunc) (Point_process *, double *, double) |
typedef std::vector< WatchCondition * > | WatchList |
using | SelfEventPool = MutexPool< SelfEvent > |
typedef std::vector< TQItem * > | TQList |
using | HocEventPool = MutexPool< HocEvent > |
Functions | |
void | single_event_run () |
void | nrn_cvfun (double t, double *y, double *ydot) |
void | nrn_cleanup_presyn (PreSyn *) |
void | nrn_pending_selfqueue (double tt, NrnThread *) |
static void | all_pending_selfqueue (double tt) |
static void * | pending_selfqueue (NrnThread *) |
int | linmod_extra_eqn_count () |
int | nrn_modeltype () |
TQueue * | net_cvode_instance_event_queue (NrnThread *) |
std::vector< PlayRecord * > * | net_cvode_instance_prl () |
void | nrn_use_busywait (int) |
void * | nrn_interthread_enqueue (NrnThread *) |
void | nrnthread_get_trajectory_requests (int tid, int &bsize, int &n_pr, void **&vpr, int &n_trajec, int *&types, int *&indices, double **&pvars, double **&varrays) |
void | nrnthread_trajectory_values (int tid, int n_pr, void **vpr, double t) |
void | nrnthread_trajectory_return (int tid, int n_pr, int bsize, int vecsz, void **vpr, double t) |
double | nrn_netcon_get_delay (NetCon *nc) |
void | nrn_netcon_set_delay (NetCon *nc, double d) |
int | nrn_netcon_weight (NetCon *nc, double **pw) |
double | nrn_event_queue_stats (double *stats) |
double | nrn_netcon_get_thresh (NetCon *nc) |
void | nrn_netcon_set_thresh (NetCon *nc, double th) |
void | nrn_netcon_event (NetCon *nc, double td) |
Point_process * | nrn_netcon_target (NetCon *nc) |
int | nrn_netcon_info (NetCon *nc, double **pw, Point_process **target, double **th, double **del) |
int | nrn_presyn_count (PreSyn *ps) |
void * | nrn_presyn_netcon (PreSyn *ps, int i) |
void | ncs2nrn_integrate (double tstop) |
static void | allthread_handle_callback () |
std::vector< PreSyn * > * | net_cvode_instance_psl () |
void | nrn_use_daspk (int b) |
static Node * | node (Object *) |
static double | nc_preloc (void *v) |
static Object ** | nc_preseg (void *v) |
static double | nc_postloc (void *v) |
static Object ** | nc_postseg (void *v) |
static Object ** | nc_syn (void *v) |
static Object ** | nc_pre (void *v) |
static Object ** | newoclist (int i, OcList *&o) |
static Object ** | nc_prelist (void *v) |
static Object ** | nc_synlist (void *v) |
static Object ** | nc_postcelllist (void *v) |
static Object ** | nc_precelllist (void *v) |
static Object ** | nc_precell (void *v) |
static Object ** | nc_postcell (void *v) |
static double | nc_setpost (void *v) |
static double | nc_valid (void *v) |
static double | nc_active (void *v) |
static double | nc_event (void *v) |
static double | nc_record (void *v) |
static double | nc_srcgid (void *v) |
static Object ** | nc_get_recordvec (void *v) |
static double | nc_wcnt (void *v) |
static void | steer_val (void *v) |
static void * | cons (Object *o) |
static void | destruct (void *v) |
void | NetCon_reg () |
static char * | escape_bracket (const char *s) |
static std::regex | get_regex (int id) |
void | nrn_net_move (Datum *v, Point_process *pnt, double tt) |
void | artcell_net_move (Datum *v, Point_process *pnt, double tt) |
void | nrn_net_send (Datum *v, double *weight, Point_process *pnt, double td, double flag) |
void | artcell_net_send (Datum *v, double *weight, Point_process *pnt, double td, double flag) |
void | artcell_net_send (void *v, double *weight, Point_process *pnt, double td, double flag) |
void | nrn_net_send (void *v, double *weight, Point_process *pnt, double td, double flag) |
void | net_event (Point_process *pnt, double time) |
void | _nrn_watch_activate (Datum *d, double(*c)(Point_process *), int i, Point_process *pnt, int r, double flag) |
void | _nrn_watch_allocate (Datum *d, double(*c)(Point_process *), int i, Point_process *pnt, double flag) |
Introduced so corenrn->nrn can request the mod file to make sure all WatchCondition are allocated. More... | |
void | nrn_watch_clear () |
Watch info corenrn->nrn transfer requires all activated WatchCondition be deactivated prior to mirroring the activation that exists on the corenrn side. More... | |
void | _nrn_free_watch (Datum *d, int offset, int n) |
Called by Point_process destructor in translated mod file. More... | |
static void | peq (const TQItem *, int) |
static void | event_info_callback (const TQItem *, int) |
int | _nrn_netcon_args (void *v, double ***argslist) |
void | _nrn_free_fornetcon (void **v) |
void | record_init_clear (const TQItem *q, int) |
double | nrn_hoc2fixed_step (void *) |
double | nrn_hoc2fun (void *v) |
double | nrn_hoc2scatter_y (void *v) |
double | nrn_hoc2gather_y (void *v) |
void | nrn_update_ps2nt () |
static void * | eval_cond (NrnThread *nt) |
static void * | chk_deliv (NrnThread *nt) |
static int | trajec_buffered (NrnThread &nt, int bsize, IvocVect *v, neuron::container::data_handle< double > pd, int i_pr, PlayRecord *pr, void **vpr, int i_trajec, int *types, int *indices, double **pvars, double **varrays) |
void | nrn2core_transfer_WatchCondition (WatchCondition *wc, void(*cb)(int, int, int, int, int)) |
In nrncore_callbacks.cpp. More... | |
void | nrn2core_transfer_WATCH (void(*cb)(int, int, int, int, int)) |
static void | lvardt_integrate (neuron::model_sorted_token const &token, NrnThread &ntr) |
static void * | deliver_for_thread (NrnThread *nt) |
Variables | |
NetCvode * | net_cvode_instance |
cTemplate ** | nrn_pnt_template_ |
double | t |
double | dt |
short * | nrn_is_artificial_ |
short * | nrn_artcell_qindex_ |
int | nrn_use_selfqueue_ |
int | nrn_use_daspk_ |
void(* | nrnthread_v_transfer_ )(NrnThread *) |
Object *(* | nrnpy_seg_from_sec_x )(Section *, double) |
bool | nrn_trajectory_request_per_time_step_ = false |
int | nrn_fornetcon_cnt_ |
int * | nrn_fornetcon_index_ |
int * | nrn_fornetcon_type_ |
void(* | nrn_allthread_handle )() |
bool | nrn_use_fifo_queue_ |
bool | nrn_use_bin_queue_ |
static unsigned long | deliver_cnt_ |
static unsigned long | net_event_cnt_ |
static TQList * | record_init_items_ |
static DiscreteEvent * | null_event_ |
static PreSyn * | unused_presyn |
static Member_func | members [] |
static Member_ret_obj_func | omembers [] |
static IvocVect * | peqvec |
static int | event_info_type_ |
static IvocVect * | event_info_tvec_ |
static IvocVect * | event_info_flagvec_ |
static OcList * | event_info_list_ |
static double | pending_selfqueue_deliver_ |
static Cvode * | eval_cv |
static double | lvardt_tout_ |
#define fifo_event event |
Definition at line 2496 of file netcvode.cpp.
#define ITE_SIZE 10 |
Definition at line 987 of file netcvode.cpp.
Definition at line 52 of file netcvode.cpp.
#define nt_dt nrn_threads->_dt |
Definition at line 73 of file netcvode.cpp.
#define nt_t nrn_threads->_t |
Definition at line 74 of file netcvode.cpp.
#define NVI_SUCCESS 0 |
Definition at line 56 of file netcvode.cpp.
#define POINT_RECEIVE | ( | type, | |
tar, | |||
w, | |||
f | |||
) | (*pnt_receive[type])(tar, w, f) |
Definition at line 61 of file netcvode.cpp.
#define PP2NT | ( | pp | ) | ((NrnThread*) ((pp)->_vnt)) |
Definition at line 57 of file netcvode.cpp.
#define PP2t | ( | pp | ) | (PP2NT(pp)->_t) |
Definition at line 58 of file netcvode.cpp.
#define PROFILE 0 |
Definition at line 29 of file netcvode.cpp.
#define USE_MIN_DELAY 1 |
Definition at line 4 of file netcvode.cpp.
using HocEventPool = MutexPool<HocEvent> |
Definition at line 3321 of file netcvode.cpp.
typedef void(* ReceiveFunc) (Point_process *, double *, double) |
Definition at line 50 of file netcvode.cpp.
using SelfEventPool = MutexPool<SelfEvent> |
Definition at line 406 of file netcvode.cpp.
Definition at line 407 of file netcvode.cpp.
typedef std::vector<WatchCondition*> WatchList |
Definition at line 405 of file netcvode.cpp.
void _nrn_free_fornetcon | ( | void ** | v | ) |
Definition at line 4110 of file netcvode.cpp.
void _nrn_free_watch | ( | Datum * | d, |
int | offset, | ||
int | n | ||
) |
Called by Point_process destructor in translated mod file.
Definition at line 2469 of file netcvode.cpp.
int _nrn_netcon_args | ( | void * | v, |
double *** | argslist | ||
) |
Definition at line 4103 of file netcvode.cpp.
void _nrn_watch_activate | ( | Datum * | d, |
double(*)(Point_process *) | c, | ||
int | i, | ||
Point_process * | pnt, | ||
int | r, | ||
double | flag | ||
) |
Definition at line 2340 of file netcvode.cpp.
void _nrn_watch_allocate | ( | Datum * | d, |
double(*)(Point_process *) | c, | ||
int | i, | ||
Point_process * | pnt, | ||
double | flag | ||
) |
Introduced so corenrn->nrn can request the mod file to make sure all WatchCondition are allocated.
When that is the case then corenrn can call nrn_watch_activate with all args filled out because the allocated WatchCondition has double (*c)(Point_process) and flag_ filled in.
Definition at line 2430 of file netcvode.cpp.
|
static |
Definition at line 3785 of file netcvode.cpp.
|
static |
Definition at line 174 of file netcvode.cpp.
void artcell_net_move | ( | Datum * | v, |
Point_process * | pnt, | ||
double | tt | ||
) |
Definition at line 2206 of file netcvode.cpp.
void artcell_net_send | ( | Datum * | v, |
double * | weight, | ||
Point_process * | pnt, | ||
double | td, | ||
double | flag | ||
) |
Definition at line 2283 of file netcvode.cpp.
void artcell_net_send | ( | void * | v, |
double * | weight, | ||
Point_process * | pnt, | ||
double | td, | ||
double | flag | ||
) |
Definition at line 2318 of file netcvode.cpp.
|
static |
Definition at line 5495 of file netcvode.cpp.
|
static |
Definition at line 802 of file netcvode.cpp.
|
static |
Definition at line 6751 of file netcvode.cpp.
|
static |
Definition at line 838 of file netcvode.cpp.
|
static |
Definition at line 865 of file netcvode.cpp.
|
static |
Definition at line 5466 of file netcvode.cpp.
|
static |
Definition at line 2871 of file netcvode.cpp.
|
static |
Definition at line 894 of file netcvode.cpp.
int linmod_extra_eqn_count | ( | ) |
|
static |
Definition at line 6631 of file netcvode.cpp.
|
static |
Definition at line 661 of file netcvode.cpp.
|
static |
Definition at line 674 of file netcvode.cpp.
|
static |
Definition at line 731 of file netcvode.cpp.
|
static |
Definition at line 607 of file netcvode.cpp.
|
static |
Definition at line 560 of file netcvode.cpp.
|
static |
Definition at line 477 of file netcvode.cpp.
|
static |
Definition at line 487 of file netcvode.cpp.
|
static |
Definition at line 507 of file netcvode.cpp.
|
static |
Definition at line 598 of file netcvode.cpp.
|
static |
Definition at line 579 of file netcvode.cpp.
|
static |
Definition at line 531 of file netcvode.cpp.
|
static |
Definition at line 417 of file netcvode.cpp.
|
static |
Definition at line 445 of file netcvode.cpp.
|
static |
Definition at line 699 of file netcvode.cpp.
|
static |
Definition at line 616 of file netcvode.cpp.
|
static |
Definition at line 722 of file netcvode.cpp.
|
static |
Definition at line 498 of file netcvode.cpp.
|
static |
Definition at line 545 of file netcvode.cpp.
|
static |
Definition at line 652 of file netcvode.cpp.
|
static |
Definition at line 740 of file netcvode.cpp.
void ncs2nrn_integrate | ( | double | tstop | ) |
Definition at line 3700 of file netcvode.cpp.
Definition at line 270 of file netcvode.cpp.
std::vector< PlayRecord * > * net_cvode_instance_prl | ( | ) |
Definition at line 278 of file netcvode.cpp.
std::vector<PreSyn*>* net_cvode_instance_psl | ( | ) |
Definition at line 274 of file netcvode.cpp.
void net_event | ( | Point_process * | pnt, |
double | time | ||
) |
Definition at line 2326 of file netcvode.cpp.
void NetCon_reg | ( | ) |
Definition at line 842 of file netcvode.cpp.
Definition at line 516 of file netcvode.cpp.
Definition at line 291 of file netcvode.cpp.
void nrn2core_transfer_WATCH | ( | void(*)(int, int, int, int, int) | cb | ) |
Definition at line 5945 of file netcvode.cpp.
void nrn2core_transfer_WatchCondition | ( | WatchCondition * | wc, |
void(*)(int, int, int, int, int) | cb | ||
) |
Definition at line 841 of file nrncore_callbacks.cpp.
void nrn_cleanup_presyn | ( | PreSyn * | ps | ) |
Definition at line 970 of file netpar.cpp.
void nrn_cvfun | ( | double | t, |
double * | y, | ||
double * | ydot | ||
) |
Definition at line 4224 of file netcvode.cpp.
double nrn_event_queue_stats | ( | double * | stats | ) |
Definition at line 126 of file netcvode.cpp.
double nrn_hoc2fixed_step | ( | void * | v | ) |
Definition at line 4229 of file netcvode.cpp.
double nrn_hoc2fun | ( | void * | v | ) |
Definition at line 4234 of file netcvode.cpp.
double nrn_hoc2gather_y | ( | void * | v | ) |
Definition at line 4269 of file netcvode.cpp.
double nrn_hoc2scatter_y | ( | void * | v | ) |
Definition at line 4253 of file netcvode.cpp.
void * nrn_interthread_enqueue | ( | NrnThread * | nt | ) |
Definition at line 6800 of file netcvode.cpp.
int nrn_modeltype | ( | ) |
Definition at line 1785 of file treeset.cpp.
void nrn_net_move | ( | Datum * | v, |
Point_process * | pnt, | ||
double | tt | ||
) |
Definition at line 2189 of file netcvode.cpp.
void nrn_net_send | ( | Datum * | v, |
double * | weight, | ||
Point_process * | pnt, | ||
double | td, | ||
double | flag | ||
) |
Definition at line 2257 of file netcvode.cpp.
void nrn_net_send | ( | void * | v, |
double * | weight, | ||
Point_process * | pnt, | ||
double | td, | ||
double | flag | ||
) |
Definition at line 2322 of file netcvode.cpp.
void nrn_netcon_event | ( | NetCon * | nc, |
double | td | ||
) |
Definition at line 147 of file netcvode.cpp.
double nrn_netcon_get_delay | ( | NetCon * | nc | ) |
Definition at line 116 of file netcvode.cpp.
double nrn_netcon_get_thresh | ( | NetCon * | nc | ) |
Definition at line 134 of file netcvode.cpp.
int nrn_netcon_info | ( | NetCon * | nc, |
double ** | pw, | ||
Point_process ** | target, | ||
double ** | th, | ||
double ** | del | ||
) |
Definition at line 157 of file netcvode.cpp.
void nrn_netcon_set_delay | ( | NetCon * | nc, |
double | d | ||
) |
Definition at line 119 of file netcvode.cpp.
void nrn_netcon_set_thresh | ( | NetCon * | nc, |
double | th | ||
) |
Definition at line 141 of file netcvode.cpp.
Point_process* nrn_netcon_target | ( | NetCon * | nc | ) |
Definition at line 152 of file netcvode.cpp.
int nrn_netcon_weight | ( | NetCon * | nc, |
double ** | pw | ||
) |
Definition at line 122 of file netcvode.cpp.
void nrn_pending_selfqueue | ( | double | tt, |
NrnThread * | nt | ||
) |
Definition at line 3759 of file netcvode.cpp.
int nrn_presyn_count | ( | PreSyn * | ps | ) |
Definition at line 165 of file netcvode.cpp.
void* nrn_presyn_netcon | ( | PreSyn * | ps, |
int | i | ||
) |
Definition at line 168 of file netcvode.cpp.
void nrn_update_ps2nt | ( | void | ) |
Definition at line 4871 of file netcvode.cpp.
void nrn_use_busywait | ( | int | b | ) |
Definition at line 1009 of file multicore.cpp.
void nrn_use_daspk | ( | int | b | ) |
Definition at line 282 of file netcvode.cpp.
void nrn_watch_clear | ( | ) |
Watch info corenrn->nrn transfer requires all activated WatchCondition be deactivated prior to mirroring the activation that exists on the corenrn side.
Definition at line 2456 of file netcvode.cpp.
void nrnthread_get_trajectory_requests | ( | int | tid, |
int & | bsize, | ||
int & | n_pr, | ||
void **& | vpr, | ||
int & | n_trajec, | ||
int *& | types, | ||
int *& | indices, | ||
double **& | pvars, | ||
double **& | varrays | ||
) |
Definition at line 5607 of file netcvode.cpp.
void nrnthread_trajectory_return | ( | int | tid, |
int | n_pr, | ||
int | bsize, | ||
int | vecsz, | ||
void ** | vpr, | ||
double | t | ||
) |
Definition at line 5881 of file netcvode.cpp.
void nrnthread_trajectory_values | ( | int | tid, |
int | n_pr, | ||
void ** | vpr, | ||
double | t | ||
) |
Definition at line 5839 of file netcvode.cpp.
|
static |
Definition at line 3754 of file netcvode.cpp.
|
static |
Definition at line 2845 of file netcvode.cpp.
void record_init_clear | ( | const TQItem * | q, |
int | |||
) |
Definition at line 4118 of file netcvode.cpp.
void single_event_run | ( | ) |
|
static |
Definition at line 773 of file netcvode.cpp.
|
static |
Definition at line 5551 of file netcvode.cpp.
|
static |
Definition at line 238 of file netcvode.cpp.
double dt |
Definition at line 70 of file netcvode.cpp.
|
static |
Definition at line 5465 of file netcvode.cpp.
|
static |
Definition at line 2867 of file netcvode.cpp.
|
static |
Definition at line 2868 of file netcvode.cpp.
|
static |
Definition at line 2866 of file netcvode.cpp.
|
static |
Definition at line 2865 of file netcvode.cpp.
|
static |
Definition at line 6629 of file netcvode.cpp.
|
static |
Definition at line 745 of file netcvode.cpp.
|
extern |
Definition at line 26 of file cvodestb.cpp.
|
static |
Definition at line 238 of file netcvode.cpp.
|
extern |
Definition at line 68 of file fadvance.cpp.
bool nrn_trajectory_request_per_time_step_ = false |
Definition at line 106 of file netcvode.cpp.
bool nrn_use_bin_queue_ |
Definition at line 225 of file netcvode.cpp.
|
extern |
Definition at line 59 of file treeset.cpp.
bool nrn_use_fifo_queue_ |
Definition at line 223 of file netcvode.cpp.
int nrn_use_selfqueue_ |
Definition at line 77 of file netcvode.cpp.
Definition at line 89 of file netcvode.cpp.
Definition at line 139 of file fadvance.cpp.
|
static |
Definition at line 413 of file netcvode.cpp.
|
static |
Definition at line 760 of file netcvode.cpp.
|
static |
Definition at line 3753 of file netcvode.cpp.
|
static |
Definition at line 2843 of file netcvode.cpp.
|
static |
Definition at line 411 of file netcvode.cpp.
|
extern |
Definition at line 57 of file cvodeobj.cpp.
|
static |
Definition at line 415 of file netcvode.cpp.