NEURON
passive0.cpp
Go to the documentation of this file.
1 #include <../../nrnconf.h>
2 /* /local/src/master/nrn/src/nrnoc/passive0.cpp,v 1.2 1997/03/13 14:18:02 hines Exp */
3 
4 #include "section.h"
5 #include "membdef.h"
6 #include "nrniv_mf.h"
7 
8 #define nparm 2
9 static const char *mechanism[] = {
10  "0", "fastpas", "g_fastpas", "e_fastpas", 0,0,0
11 };
12 static void pas_alloc(Prop* p);
13 static void pas_cur(NrnThread* nt, Memb_list* ml, int type);
14 static void pas_jacob(NrnThread* nt, Memb_list* ml, int type);
15 
16 extern "C" void passive0_reg_(void) {
17  int mechtype;
19  mechtype = nrn_get_mechtype(mechanism[1]);
20  hoc_register_prop_size(mechtype, nparm, 0);
21 }
22 
23 #define g vdata[i][0]
24 #define e vdata[i][1]
25 #define v NODEV(vnode[i])
26 
27 static void pas_cur(NrnThread* nt, Memb_list* ml, int type) {
28  int count = ml->nodecount;
29  Node **vnode = ml->nodelist;
30  double **vdata = ml->data;
31  Datum **vpdata = ml->pdata;
32  int i;
33 #if _CRAY
34 #pragma _CRI ivdep
35 #endif
36  for (i=0; i < count; ++i) {
37  NODERHS(vnode[i]) -= g * (v - e);
38  }
39 }
40 
41 static void pas_jacob(NrnThread* nt, Memb_list* ml, int type) {
42  int count = ml->nodecount;
43  Node **vnode = ml->nodelist;
44  double **vdata = ml->data;
45  Datum **vpdata = ml->pdata;
46  int i;
47 #if _CRAY
48 #pragma _CRI ivdep
49 #endif
50  for (i=0; i < count; ++i) {
51  NODED(vnode[i]) += g;
52  }
53 }
54 
55 /* the rest can be constructed automatically from the above info*/
56 
57 static void pas_alloc(Prop* p)
58 {
59  double *pd;
60  pd = nrn_prop_data_alloc(p->type, nparm, p);
61  p->param_size = nparm;
62 #if defined(__MWERKS__)
63  pd[0] = 5.e-4;/*DEF_g;*/
64 #else
65  pd[0] = DEF_g;
66 #endif
67  pd[1] = DEF_e;
68  p->param = pd;
69 }
70 
int param_size
Definition: section.h:217
void passive0_reg_(void)
Definition: passive0.cpp:16
double * param
Definition: section.h:218
short type
Definition: cabvars.h:10
#define DEF_g
Definition: membdef.h:32
#define NODED(n)
Definition: section.h:103
#define g
Definition: passive0.cpp:23
#define DEF_e
Definition: membdef.h:31
size_t p
Represent main neuron object computed by single thread.
Definition: multicore.h:58
void hoc_register_prop_size(int, int, int)
Definition: init.cpp:721
static void pas_alloc(Prop *p)
Definition: passive0.cpp:57
double ** data
Definition: nrnoc_ml.h:14
#define e
Definition: passive0.cpp:24
short type
Definition: section.h:215
#define nparm
Definition: passive0.cpp:8
int nrn_get_mechtype(const char *mechname)
Definition: cabcode.cpp:2017
int nodecount
Definition: nrnoc_ml.h:18
static void pas_cur(NrnThread *nt, Memb_list *ml, int type)
Definition: passive0.cpp:27
void(* Pvmi)(struct NrnThread *, Memb_list *, int)
Definition: membfunc.h:18
Datum ** pdata
Definition: nrnoc_ml.h:15
Definition: section.h:213
static const char * mechanism[]
Definition: passive0.cpp:9
#define NODERHS(n)
Definition: section.h:104
void register_mech(const char **, Pvmp, Pvmi, Pvmi, Pvmi, Pvmi, int, int)
Definition: init.cpp:688
Node ** nodelist
Definition: nrnoc_ml.h:5
double * nrn_prop_data_alloc(int type, int count, Prop *p)
Definition: cxprop.cpp:262
#define i
Definition: md1redef.h:12
static void pas_jacob(NrnThread *nt, Memb_list *ml, int type)
Definition: passive0.cpp:41
Definition: section.h:132
Definition: hocdec.h:176
#define v
Definition: passive0.cpp:25