/* Created by Language version: 7.7.0 */ /* NOT VECTORIZED */ #define NRN_VECTORIZED 0 #include #include #include #include "mech_api.h" #undef PI #define nil 0 #include "md1redef.h" #include "section.h" #include "nrniv_mf.h" #include "md2redef.h" #if METHOD3 extern int _method3; #endif #if !NRNGPU #undef exp #define exp hoc_Exp extern double hoc_Exp(double); #endif #define nrn_init _nrn_init__xtra #define _nrn_initial _nrn_initial__xtra #define nrn_cur _nrn_cur__xtra #define _nrn_current _nrn_current__xtra #define nrn_jacob _nrn_jacob__xtra #define nrn_state _nrn_state__xtra #define _net_receive _net_receive__xtra #define _threadargscomma_ /**/ #define _threadargsprotocomma_ /**/ #define _threadargs_ /**/ #define _threadargsproto_ /**/ /*SUPPRESS 761*/ /*SUPPRESS 762*/ /*SUPPRESS 763*/ /*SUPPRESS 765*/ extern double *getarg(int); static double *_p; static Datum *_ppvar; #define t nrn_threads->_t #define dt nrn_threads->_dt #define es _p[0] #define es_columnindex 0 #define x _p[1] #define x_columnindex 1 #define y _p[2] #define y_columnindex 2 #define z _p[3] #define z_columnindex 3 #define type _p[4] #define type_columnindex 4 #define order _p[5] #define order_columnindex 5 #define ex *_ppvar[0]._pval #define _p_ex _ppvar[0]._pval #define area *_ppvar[1]._pval #if MAC #if !defined(v) #define v _mlhv #endif #if !defined(h) #define h _mlhh #endif #endif #if defined(__cplusplus) extern "C" { #endif static int hoc_nrnpointerindex = 0; /* external NEURON variables */ /* declaration of user functions */ static int _mechtype; extern void _nrn_cacheloop_reg(int, int); extern void hoc_register_prop_size(int, int, int); extern void hoc_register_limits(int, HocParmLimits*); extern void hoc_register_units(int, HocParmUnits*); extern void nrn_promote(Prop*, int, int); extern Memb_func* memb_func; #define NMODL_TEXT 1 #if NMODL_TEXT static const char* nmodl_file_text; static const char* nmodl_filename; extern void hoc_reg_nmodl_text(int, const char*); extern void hoc_reg_nmodl_filename(int, const char*); #endif extern void _nrn_setdata_reg(int, void(*)(Prop*)); static void _setdata(Prop* _prop) { _p = _prop->param; _ppvar = _prop->dparam; } static void _hoc_setdata() { Prop *_prop, *hoc_getdata_range(int); _prop = hoc_getdata_range(_mechtype); _setdata(_prop); hoc_retpushx(1.); } /* connect user functions to hoc names */ static VoidFunc hoc_intfunc[] = { "setdata_xtra", _hoc_setdata, 0, 0 }; /* declare global and static user variables */ #define stim stim_xtra double stim = 0; /* some parameters have upper and lower limits */ static HocParmLimits _hoc_parm_limits[] = { 0,0,0 }; static HocParmUnits _hoc_parm_units[] = { "stim_xtra", "unitless", "es_xtra", "mV", "x_xtra", "1", "y_xtra", "1", "z_xtra", "1", "type_xtra", "1", "order_xtra", "1", "ex_xtra", "millivolts", 0,0 }; static double v = 0; /* connect global user variables to hoc */ static DoubScal hoc_scdoub[] = { "stim_xtra", &stim_xtra, 0,0 }; static DoubVec hoc_vdoub[] = { 0,0,0 }; static double _sav_indep; static void _ba1(Node*_nd, double* _pp, Datum* _ppd, Datum* _thread, NrnThread* _nt) ; static void nrn_alloc(Prop*); static void nrn_init(NrnThread*, _Memb_list*, int); static void nrn_state(NrnThread*, _Memb_list*, int); /* connect range variables in _p that hoc is supposed to know about */ static const char *_mechanism[] = { "7.7.0", "xtra", "es_xtra", "x_xtra", "y_xtra", "z_xtra", "type_xtra", "order_xtra", 0, 0, 0, "ex_xtra", 0}; extern Node* nrn_alloc_node_; extern Prop* need_memb(Symbol*); static void nrn_alloc(Prop* _prop) { Prop *prop_ion; double *_p; Datum *_ppvar; _p = nrn_prop_data_alloc(_mechtype, 6, _prop); /*initialize range parameters*/ es = 0; x = 0; y = 0; z = 0; type = 0; order = 0; _prop->param = _p; _prop->param_size = 6; _ppvar = nrn_prop_datum_alloc(_mechtype, 2, _prop); _prop->dparam = _ppvar; /*connect ionic variables to this model*/ _ppvar[1]._pval = &nrn_alloc_node_->_area; /* diam */ } static void _initlists(); extern Symbol* hoc_lookup(const char*); extern void _nrn_thread_reg(int, int, void(*)(Datum*)); extern void _nrn_thread_table_reg(int, void(*)(double*, Datum*, Datum*, NrnThread*, int)); extern void hoc_register_tolerance(int, HocStateTolerance*, Symbol***); extern void _cvode_abstol( Symbol**, double*, int); void _xtra_reg() { int _vectorized = 0; _initlists(); register_mech(_mechanism, nrn_alloc,(void*)0, (void*)0, (void*)0, nrn_init, hoc_nrnpointerindex, 0); _mechtype = nrn_get_mechtype(_mechanism[1]); _nrn_setdata_reg(_mechtype, _setdata); #if NMODL_TEXT hoc_reg_nmodl_text(_mechtype, nmodl_file_text); hoc_reg_nmodl_filename(_mechtype, nmodl_filename); #endif hoc_register_prop_size(_mechtype, 6, 2); hoc_register_dparam_semantics(_mechtype, 0, "pointer"); hoc_register_dparam_semantics(_mechtype, 1, "area"); hoc_reg_ba(_mechtype, _ba1, 11); hoc_register_var(hoc_scdoub, hoc_vdoub, hoc_intfunc); ivoc_help("help ?1 xtra /home/qh4os/neurenv/mech/xtra.mod\n"); hoc_register_limits(_mechtype, _hoc_parm_limits); hoc_register_units(_mechtype, _hoc_parm_units); } static int _reset; static char *modelname = ""; static int error; static int _ninits = 0; static int _match_recurse=1; static void _modl_cleanup(){ _match_recurse=1;} /* BEFORE BREAKPOINT */ static void _ba1(Node*_nd, double* _pp, Datum* _ppd, Datum* _thread, NrnThread* _nt) { _p = _pp; _ppvar = _ppd; v = NODEV(_nd); ex = stim * es ; } static void initmodel() { int _i; double _save;_ninits++; { { ex = stim * es ; } } } static void nrn_init(NrnThread* _nt, _Memb_list* _ml, int _type){ Node *_nd; double _v; int* _ni; int _iml, _cntml; #if CACHEVEC _ni = _ml->_nodeindices; #endif _cntml = _ml->_nodecount; for (_iml = 0; _iml < _cntml; ++_iml) { _p = _ml->_data[_iml]; _ppvar = _ml->_pdata[_iml]; #if CACHEVEC if (use_cachevec) { _v = VEC_V(_ni[_iml]); }else #endif { _nd = _ml->_nodelist[_iml]; _v = NODEV(_nd); } v = _v; initmodel(); }} static double _nrn_current(double _v){double _current=0.;v=_v;{ } return _current; } static void nrn_state(NrnThread* _nt, _Memb_list* _ml, int _type){ Node *_nd; double _v = 0.0; int* _ni; int _iml, _cntml; #if CACHEVEC _ni = _ml->_nodeindices; #endif _cntml = _ml->_nodecount; for (_iml = 0; _iml < _cntml; ++_iml) { _p = _ml->_data[_iml]; _ppvar = _ml->_pdata[_iml]; _nd = _ml->_nodelist[_iml]; #if CACHEVEC if (use_cachevec) { _v = VEC_V(_ni[_iml]); }else #endif { _nd = _ml->_nodelist[_iml]; _v = NODEV(_nd); } v=_v; { }} } static void terminal(){} static void _initlists() { int _i; static int _first = 1; if (!_first) return; _first = 0; } #if NMODL_TEXT static const char* nmodl_filename = "/home/qh4os/neurenv/mech/xtra.mod"; static const char* nmodl_file_text = ": $Id: xtra.mod,v 1.4 2014/08/18 23:15:25 ted Exp ted $\n" ": 2018/05/20 Modified by Aman Aberra \n" "\n" "NEURON {\n" " SUFFIX xtra\n" " RANGE es : (es = max amplitude of the potential) \n" " RANGE x, y, z, type, order\n" " GLOBAL stim : (stim = normalized waveform)\n" " POINTER ex \n" "}\n" "\n" "PARAMETER { \n" " es = 0 (mV)\n" " x = 0 (1) : spatial coords\n" " y = 0 (1)\n" " z = 0 (1) \n" " type = 0 (1) : numbering system for morphological category of section - unassigned is 0\n" " order = 0 (1) : order of branch/collateral. \n" "}\n" "\n" "ASSIGNED {\n" " v (millivolts)\n" " ex (millivolts)\n" " stim (unitless) \n" " area (micron2)\n" "}\n" "\n" "INITIAL {\n" " ex = stim*es \n" "}\n" "\n" "\n" "BEFORE BREAKPOINT { : before each cy' = f(y,t) setup\n" " ex = stim*es\n" "}\n" "\n" ; #endif