NEURON
kschan.cpp File Reference
#include <../../nrnconf.h>
#include <string.h>
#include <stdlib.h>
#include <OS/list.h>
#include <math.h>
#include "nrnoc2iv.h"
#include "classreg.h"
#include "kschan.h"
#include "kssingle.h"
#include "parse.hpp"
#include "nrniv_mf.h"

Go to the source code of this file.

Macros

#define NSingleIndex   0
 
#define nt_dt   nrn_threads->_dt
 

Functions

 declarePtrList (KSChanList, KSChan) implementPtrList(KSChanList
 
char * hoc_symbol_units (Symbol *, const char *)
 
void nrn_mk_table_check ()
 
spREALspGetElement (char *, int, int)
 
static void check_objtype (Object *o, Symbol *s)
 
static void unref (Object *obj)
 
static void chkobj (void *v)
 
static void check_table_thread_ (double *p, Datum *ppvar, Datum *thread, NrnThread *vnt, int type)
 
static void nrn_alloc (Prop *prop)
 
static void nrn_init (NrnThread *nt, Memb_list *ml, int type)
 
static void nrn_cur (NrnThread *nt, Memb_list *ml, int type)
 
static void nrn_jacob (NrnThread *nt, Memb_list *ml, int type)
 
static void nrn_state (NrnThread *nt, Memb_list *ml, int type)
 
static int ode_count (int type)
 
static void ode_map (int ieq, double **pv, double **pvdot, double *p, Datum *pd, double *atol, int type)
 
static void ode_spec (NrnThread *, Memb_list *ml, int type)
 
static void ode_matsol (NrnThread *nt, Memb_list *ml, int type)
 
static void singchan (NrnThread *nt, Memb_list *ml, int type)
 
static voidhoc_create_pnt (Object *ho)
 
static void hoc_destroy_pnt (void *v)
 
static double hoc_loc_pnt (void *v)
 
static double hoc_has_loc (void *v)
 
static double hoc_get_loc_pnt (void *v)
 
static double hoc_nsingle (void *v)
 
void kschan_cvode_single_update ()
 
static double ks_setstructure (void *v)
 
static double ks_remove_state (void *v)
 
static double ks_remove_transition (void *v)
 
static double ks_ngate (void *v)
 
static double ks_nstate (void *v)
 
static double ks_ntrans (void *v)
 
static double ks_nligand (void *v)
 
static double ks_is_point (void *v)
 
static double ks_single (void *v)
 
static double ks_iv_type (void *v)
 
static double ks_gmax (void *v)
 
static double ks_erev (void *v)
 
static double ks_vres (void *v)
 
static double ks_rseed (void *v)
 
static double ks_usetable (void *v)
 
static Object ** temp_objvar (const char *name, void *v, Object **obp)
 
static Object ** ks_add_hhstate (void *v)
 
static Object ** ks_add_ksstate (void *v)
 
static Object ** ks_add_transition (void *v)
 
static Object ** ks_trans (void *v)
 
static Object ** ks_state (void *v)
 
static Object ** ks_gate (void *v)
 
static const char ** ks_name (void *v)
 
static const char ** ks_ion (void *v)
 
static const char ** ks_ligand (void *v)
 
static double kss_frac (void *v)
 
static double kss_index (void *v)
 
static Object ** kss_gate (void *v)
 
static const char ** kss_name (void *v)
 
static double ksg_nstate (void *v)
 
static double ksg_power (void *v)
 
static double ksg_sindex (void *v)
 
static double ksg_index (void *v)
 
static double kst_set_f (void *v)
 
static double kst_index (void *v)
 
static double kst_type (void *v)
 
static double kst_ftype (void *v)
 
static double kst_ab (void *v)
 
static double kst_inftau (void *v)
 
static double kst_f (void *v)
 
static Object ** kst_src (void *v)
 
static Object ** kst_target (void *v)
 
static Object ** kst_parm (void *v)
 
static const char ** kst_ligand (void *v)
 
static double kst_stoichiometry (void *v)
 
static double ks_pr (void *v)
 
static voidks_cons (Object *o)
 
static void ks_destruct (void *)
 
static voidkss_cons (Object *o)
 
static void kss_destruct (void *)
 
static voidksg_cons (Object *o)
 
static void ksg_destruct (void *)
 
static voidkst_cons (Object *o)
 
static void kst_destruct (void *)
 
void KSChan_reg ()
 
static int ksusing (int type)
 

Variables

static KSChan KSChanList * channels
 
static Symbolksstate_sym
 
static Symbolksgate_sym
 
static Symbolkstrans_sym
 
static Member_func member_func []
 
static Member_func ks_dmem []
 
static Member_ret_obj_func ks_omem []
 
static Member_ret_str_func ks_smem []
 
static Member_func kss_dmem []
 
static Member_ret_obj_func kss_omem []
 
static Member_ret_str_func kss_smem []
 
static Member_func ksg_dmem []
 
static Member_ret_obj_func ksg_omem []
 
static Member_ret_str_func ksg_smem []
 
static Member_func kst_dmem []
 
static Member_ret_obj_func kst_omem []
 
static Member_ret_str_func kst_smem []
 
static const char * m_kschan_pat [] = { "0", "kschan", "gmax", 0, "g", "i", 0, 0, 0 }
 
static const char * m_kschan [9]
 

Macro Definition Documentation

◆ NSingleIndex

#define NSingleIndex   0

Definition at line 13 of file kschan.cpp.

◆ nt_dt

#define nt_dt   nrn_threads->_dt

Definition at line 32 of file kschan.cpp.

Function Documentation

◆ check_objtype()

static void check_objtype ( Object o,
Symbol s 
)
static

Definition at line 34 of file kschan.cpp.

◆ check_table_thread_()

static void check_table_thread_ ( double *  p,
Datum ppvar,
Datum thread,
NrnThread vnt,
int  type 
)
static

Definition at line 58 of file kschan.cpp.

◆ chkobj()

static void chkobj ( void v)
static

Definition at line 52 of file kschan.cpp.

◆ declarePtrList()

declarePtrList ( KSChanList  ,
KSChan   
)

◆ hoc_create_pnt()

static void* hoc_create_pnt ( Object ho)
static

Definition at line 140 of file kschan.cpp.

◆ hoc_destroy_pnt()

static void hoc_destroy_pnt ( void v)
static

Definition at line 143 of file kschan.cpp.

◆ hoc_get_loc_pnt()

static double hoc_get_loc_pnt ( void v)
static

Definition at line 168 of file kschan.cpp.

◆ hoc_has_loc()

static double hoc_has_loc ( void v)
static

Definition at line 165 of file kschan.cpp.

◆ hoc_loc_pnt()

static double hoc_loc_pnt ( void v)
static

Definition at line 161 of file kschan.cpp.

◆ hoc_nsingle()

static double hoc_nsingle ( void v)
static

Definition at line 171 of file kschan.cpp.

◆ hoc_symbol_units()

char* hoc_symbol_units ( Symbol ,
const char *   
)

Definition at line 128 of file code2.cpp.

◆ ks_add_hhstate()

static Object** ks_add_hhstate ( void v)
static

Definition at line 340 of file kschan.cpp.

◆ ks_add_ksstate()

static Object** ks_add_ksstate ( void v)
static

Definition at line 346 of file kschan.cpp.

◆ ks_add_transition()

static Object** ks_add_transition ( void v)
static

Definition at line 360 of file kschan.cpp.

◆ ks_cons()

static void* ks_cons ( Object o)
static

Definition at line 782 of file kschan.cpp.

◆ ks_destruct()

static void ks_destruct ( void )
static

Definition at line 802 of file kschan.cpp.

◆ ks_erev()

static double ks_erev ( void v)
static

Definition at line 282 of file kschan.cpp.

◆ ks_gate()

static Object** ks_gate ( void v)
static

Definition at line 406 of file kschan.cpp.

◆ ks_gmax()

static double ks_gmax ( void v)
static

Definition at line 274 of file kschan.cpp.

◆ ks_ion()

static const char** ks_ion ( void v)
static

Definition at line 422 of file kschan.cpp.

◆ ks_is_point()

static double ks_is_point ( void v)
static

Definition at line 249 of file kschan.cpp.

◆ ks_iv_type()

static double ks_iv_type ( void v)
static

Definition at line 262 of file kschan.cpp.

◆ ks_ligand()

static const char** ks_ligand ( void v)
static

Definition at line 432 of file kschan.cpp.

◆ ks_name()

static const char** ks_name ( void v)
static

Definition at line 412 of file kschan.cpp.

◆ ks_ngate()

static double ks_ngate ( void v)
static

Definition at line 229 of file kschan.cpp.

◆ ks_nligand()

static double ks_nligand ( void v)
static

Definition at line 244 of file kschan.cpp.

◆ ks_nstate()

static double ks_nstate ( void v)
static

Definition at line 234 of file kschan.cpp.

◆ ks_ntrans()

static double ks_ntrans ( void v)
static

Definition at line 239 of file kschan.cpp.

◆ ks_pr()

static double ks_pr ( void v)
static

Definition at line 649 of file kschan.cpp.

◆ ks_remove_state()

static double ks_remove_state ( void v)
static

Definition at line 198 of file kschan.cpp.

◆ ks_remove_transition()

static double ks_remove_transition ( void v)
static

Definition at line 213 of file kschan.cpp.

◆ ks_rseed()

static double ks_rseed ( void v)
static

Definition at line 299 of file kschan.cpp.

◆ ks_setstructure()

static double ks_setstructure ( void v)
static

Definition at line 192 of file kschan.cpp.

◆ ks_single()

static double ks_single ( void v)
static

Definition at line 254 of file kschan.cpp.

◆ ks_state()

static Object** ks_state ( void v)
static

Definition at line 400 of file kschan.cpp.

◆ ks_trans()

static Object** ks_trans ( void v)
static

Definition at line 382 of file kschan.cpp.

◆ ks_usetable()

static double ks_usetable ( void v)
static

Definition at line 308 of file kschan.cpp.

◆ ks_vres()

static double ks_vres ( void v)
static

Definition at line 290 of file kschan.cpp.

◆ kschan_cvode_single_update()

void kschan_cvode_single_update ( )

Definition at line 187 of file kschan.cpp.

◆ KSChan_reg()

void KSChan_reg ( )

Definition at line 828 of file kschan.cpp.

◆ ksg_cons()

static void* ksg_cons ( Object o)
static

Definition at line 815 of file kschan.cpp.

◆ ksg_destruct()

static void ksg_destruct ( void )
static

Definition at line 819 of file kschan.cpp.

◆ ksg_index()

static double ksg_index ( void v)
static

Definition at line 496 of file kschan.cpp.

◆ ksg_nstate()

static double ksg_nstate ( void v)
static

Definition at line 474 of file kschan.cpp.

◆ ksg_power()

static double ksg_power ( void v)
static

Definition at line 480 of file kschan.cpp.

◆ ksg_sindex()

static double ksg_sindex ( void v)
static

Definition at line 490 of file kschan.cpp.

◆ kss_cons()

static void* kss_cons ( Object o)
static

Definition at line 809 of file kschan.cpp.

◆ kss_destruct()

static void kss_destruct ( void )
static

Definition at line 813 of file kschan.cpp.

◆ kss_frac()

static double kss_frac ( void v)
static

Definition at line 439 of file kschan.cpp.

◆ kss_gate()

static Object** kss_gate ( void v)
static

Definition at line 454 of file kschan.cpp.

◆ kss_index()

static double kss_index ( void v)
static

Definition at line 448 of file kschan.cpp.

◆ kss_name()

static const char** kss_name ( void v)
static

Definition at line 463 of file kschan.cpp.

◆ kst_ab()

static double kst_ab ( void v)
static

Definition at line 557 of file kschan.cpp.

◆ kst_cons()

static void* kst_cons ( Object o)
static

Definition at line 821 of file kschan.cpp.

◆ kst_destruct()

static void kst_destruct ( void )
static

Definition at line 825 of file kschan.cpp.

◆ kst_f()

static double kst_f ( void v)
static

Definition at line 577 of file kschan.cpp.

◆ kst_ftype()

static double kst_ftype ( void v)
static

Definition at line 542 of file kschan.cpp.

◆ kst_index()

static double kst_index ( void v)
static

Definition at line 520 of file kschan.cpp.

◆ kst_inftau()

static double kst_inftau ( void v)
static

Definition at line 567 of file kschan.cpp.

◆ kst_ligand()

static const char** kst_ligand ( void v)
static

Definition at line 626 of file kschan.cpp.

◆ kst_parm()

static Object** kst_parm ( void v)
static

Definition at line 601 of file kschan.cpp.

◆ kst_set_f()

static double kst_set_f ( void v)
static

Definition at line 502 of file kschan.cpp.

◆ kst_src()

static Object** kst_src ( void v)
static

Definition at line 587 of file kschan.cpp.

◆ kst_stoichiometry()

static double kst_stoichiometry ( void v)
static

Definition at line 641 of file kschan.cpp.

◆ kst_target()

static Object** kst_target ( void v)
static

Definition at line 594 of file kschan.cpp.

◆ kst_type()

static double kst_type ( void v)
static

Definition at line 526 of file kschan.cpp.

◆ ksusing()

static int ksusing ( int  type)
static

Definition at line 3030 of file kschan.cpp.

◆ nrn_alloc()

static void nrn_alloc ( Prop prop)
static

Definition at line 63 of file kschan.cpp.

◆ nrn_cur()

static void nrn_cur ( NrnThread nt,
Memb_list ml,
int  type 
)
static

Definition at line 74 of file kschan.cpp.

◆ nrn_init()

static void nrn_init ( NrnThread nt,
Memb_list ml,
int  type 
)
static

Definition at line 68 of file kschan.cpp.

◆ nrn_jacob()

static void nrn_jacob ( NrnThread nt,
Memb_list ml,
int  type 
)
static

Definition at line 87 of file kschan.cpp.

◆ nrn_mk_table_check()

void nrn_mk_table_check ( )

Definition at line 1009 of file multicore.cpp.

◆ nrn_state()

static void nrn_state ( NrnThread nt,
Memb_list ml,
int  type 
)
static

Definition at line 100 of file kschan.cpp.

◆ ode_count()

static int ode_count ( int  type)
static

Definition at line 114 of file kschan.cpp.

◆ ode_map()

static void ode_map ( int  ieq,
double **  pv,
double **  pvdot,
double *  p,
Datum pd,
double *  atol,
int  type 
)
static

Definition at line 119 of file kschan.cpp.

◆ ode_matsol()

static void ode_matsol ( NrnThread nt,
Memb_list ml,
int  type 
)
static

Definition at line 130 of file kschan.cpp.

◆ ode_spec()

static void ode_spec ( NrnThread ,
Memb_list ml,
int  type 
)
static

Definition at line 125 of file kschan.cpp.

◆ singchan()

static void singchan ( NrnThread nt,
Memb_list ml,
int  type 
)
static

Definition at line 135 of file kschan.cpp.

◆ spGetElement()

spREAL* spGetElement ( char *  ,
int  ,
int   
)

Definition at line 195 of file spbuild.c.

◆ temp_objvar()

static Object** temp_objvar ( const char *  name,
void v,
Object **  obp 
)
static

Definition at line 328 of file kschan.cpp.

◆ unref()

static void unref ( Object obj)
static

Definition at line 45 of file kschan.cpp.

Variable Documentation

◆ channels

KSChan KSChanList* channels
static

Definition at line 22 of file kschan.cpp.

◆ ks_dmem

Member_func ks_dmem[]
static
Initial value:
= {
"setstructure", ks_setstructure,
"remove_state", ks_remove_state,
"remove_transition", ks_remove_transition,
"ngate", ks_ngate,
"nstate", ks_nstate,
"ntrans", ks_ntrans,
"nligand", ks_nligand,
"is_point", ks_is_point,
"single", ks_single,
"pr", ks_pr,
"iv_type", ks_iv_type,
"gmax", ks_gmax,
"erev", ks_erev,
"vres", ks_vres,
"rseed", ks_rseed,
"usetable", ks_usetable,
0, 0
}
static double ks_pr(void *v)
Definition: kschan.cpp:649
static double ks_single(void *v)
Definition: kschan.cpp:254
static double ks_is_point(void *v)
Definition: kschan.cpp:249
static double ks_remove_transition(void *v)
Definition: kschan.cpp:213
static double ks_setstructure(void *v)
Definition: kschan.cpp:192
static double ks_remove_state(void *v)
Definition: kschan.cpp:198
static double ks_vres(void *v)
Definition: kschan.cpp:290
static double ks_gmax(void *v)
Definition: kschan.cpp:274
static double ks_rseed(void *v)
Definition: kschan.cpp:299
static double ks_ngate(void *v)
Definition: kschan.cpp:229
static double ks_usetable(void *v)
Definition: kschan.cpp:308
static double ks_nligand(void *v)
Definition: kschan.cpp:244
static double ks_ntrans(void *v)
Definition: kschan.cpp:239
static double ks_nstate(void *v)
Definition: kschan.cpp:234
static double ks_iv_type(void *v)
Definition: kschan.cpp:262
static double ks_erev(void *v)
Definition: kschan.cpp:282

Definition at line 685 of file kschan.cpp.

◆ ks_omem

Member_ret_obj_func ks_omem[]
static
Initial value:
= {
"add_hhstate", ks_add_hhstate,
"add_ksstate", ks_add_ksstate,
"add_transition", ks_add_transition,
"trans", ks_trans,
"state", ks_state,
"gate", ks_gate,
0,0
}
static Object ** ks_state(void *v)
Definition: kschan.cpp:400
static Object ** ks_add_ksstate(void *v)
Definition: kschan.cpp:346
static Object ** ks_trans(void *v)
Definition: kschan.cpp:382
static Object ** ks_gate(void *v)
Definition: kschan.cpp:406
static Object ** ks_add_hhstate(void *v)
Definition: kschan.cpp:340
static Object ** ks_add_transition(void *v)
Definition: kschan.cpp:360

Definition at line 709 of file kschan.cpp.

◆ ks_smem

Member_ret_str_func ks_smem[]
static
Initial value:
= {
"name", ks_name,
"ion", ks_ion,
"ligand", ks_ligand,
0, 0
}
static const char ** ks_name(void *v)
Definition: kschan.cpp:412
static const char ** ks_ion(void *v)
Definition: kschan.cpp:422
static const char ** ks_ligand(void *v)
Definition: kschan.cpp:432

Definition at line 719 of file kschan.cpp.

◆ ksg_dmem

Member_func ksg_dmem[]
static
Initial value:
= {
"nstate", ksg_nstate,
"power", ksg_power,
"sindex", ksg_sindex,
"index", ksg_index,
0,0
}
static double ksg_index(void *v)
Definition: kschan.cpp:496
static double ksg_nstate(void *v)
Definition: kschan.cpp:474
static double ksg_sindex(void *v)
Definition: kschan.cpp:490
static double ksg_power(void *v)
Definition: kschan.cpp:480

Definition at line 742 of file kschan.cpp.

◆ ksg_omem

Member_ret_obj_func ksg_omem[]
static
Initial value:
= {
0,0
}

Definition at line 750 of file kschan.cpp.

◆ ksg_smem

Member_ret_str_func ksg_smem[]
static
Initial value:
= {
0,0
}

Definition at line 754 of file kschan.cpp.

◆ ksgate_sym

Symbol* ksgate_sym
static

Definition at line 29 of file kschan.cpp.

◆ kss_dmem

Member_func kss_dmem[]
static
Initial value:
= {
"frac", kss_frac,
"index", kss_index,
0,0
}
static double kss_index(void *v)
Definition: kschan.cpp:448
static double kss_frac(void *v)
Definition: kschan.cpp:439

Definition at line 726 of file kschan.cpp.

◆ kss_omem

Member_ret_obj_func kss_omem[]
static
Initial value:
= {
"gate", kss_gate,
0,0
}
static Object ** kss_gate(void *v)
Definition: kschan.cpp:454

Definition at line 732 of file kschan.cpp.

◆ kss_smem

Member_ret_str_func kss_smem[]
static
Initial value:
= {
"name", kss_name,
0,0
}
static const char ** kss_name(void *v)
Definition: kschan.cpp:463

Definition at line 737 of file kschan.cpp.

◆ ksstate_sym

Symbol* ksstate_sym
static

Definition at line 28 of file kschan.cpp.

◆ kst_dmem

Member_func kst_dmem[]
static
Initial value:
= {
"set_f", kst_set_f,
"index", kst_index,
"type", kst_type,
"ftype", kst_ftype,
"ab", kst_ab,
"inftau", kst_inftau,
"f", kst_f,
"stoichiometry", kst_stoichiometry,
0,0
}
static double kst_ab(void *v)
Definition: kschan.cpp:557
static double kst_set_f(void *v)
Definition: kschan.cpp:502
static double kst_f(void *v)
Definition: kschan.cpp:577
static double kst_type(void *v)
Definition: kschan.cpp:526
static double kst_index(void *v)
Definition: kschan.cpp:520
static double kst_stoichiometry(void *v)
Definition: kschan.cpp:641
static double kst_inftau(void *v)
Definition: kschan.cpp:567
static double kst_ftype(void *v)
Definition: kschan.cpp:542

Definition at line 758 of file kschan.cpp.

◆ kst_omem

Member_ret_obj_func kst_omem[]
static
Initial value:
= {
"src", kst_src,
"target", kst_target,
"parm", kst_parm,
0,0
}
static Object ** kst_target(void *v)
Definition: kschan.cpp:594
static Object ** kst_src(void *v)
Definition: kschan.cpp:587
static Object ** kst_parm(void *v)
Definition: kschan.cpp:601

Definition at line 770 of file kschan.cpp.

◆ kst_smem

Member_ret_str_func kst_smem[]
static
Initial value:
= {
"ligand", kst_ligand,
0,0
}
static const char ** kst_ligand(void *v)
Definition: kschan.cpp:626

Definition at line 777 of file kschan.cpp.

◆ kstrans_sym

Symbol* kstrans_sym
static

Definition at line 30 of file kschan.cpp.

◆ m_kschan

const char* m_kschan[9]
static

Definition at line 843 of file kschan.cpp.

◆ m_kschan_pat

const char* m_kschan_pat[] = { "0", "kschan", "gmax", 0, "g", "i", 0, 0, 0 }
static

Definition at line 842 of file kschan.cpp.

◆ member_func

Member_func member_func[]
static
Initial value:
= {
"loc", hoc_loc_pnt,
"has_loc", hoc_has_loc,
"get_loc", hoc_get_loc_pnt,
"nsingle", hoc_nsingle,
0, 0
}
static double hoc_has_loc(void *v)
Definition: kschan.cpp:165
static double hoc_nsingle(void *v)
Definition: kschan.cpp:171
static double hoc_loc_pnt(void *v)
Definition: kschan.cpp:161
static double hoc_get_loc_pnt(void *v)
Definition: kschan.cpp:168

Definition at line 179 of file kschan.cpp.