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
 

Typedefs

using KSChanList = std::vector< KSChan * >
 

Functions

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 KSChanListchannels
 
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 [] = {{"frac", kss_frac}, {"index", kss_index}, {nullptr, nullptr}}
 
static Member_ret_obj_func kss_omem [] = {{"gate", kss_gate}, {nullptr, nullptr}}
 
static Member_ret_str_func kss_smem [] = {{"name", kss_name}, {nullptr, nullptr}}
 
static Member_func ksg_dmem []
 
static Member_ret_obj_func ksg_omem [] = {{nullptr, nullptr}}
 
static Member_ret_str_func ksg_smem [] = {{nullptr, nullptr}}
 
static Member_func kst_dmem []
 
static Member_ret_obj_func kst_omem []
 
static Member_ret_str_func kst_smem [] = {{"ligand", kst_ligand}, {nullptr, nullptr}}
 
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 30 of file kschan.cpp.

Typedef Documentation

◆ KSChanList

using KSChanList = std::vector<KSChan*>

Definition at line 19 of file kschan.cpp.

Function Documentation

◆ check_objtype()

static void check_objtype ( Object o,
Symbol s 
)
static

Definition at line 32 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 56 of file kschan.cpp.

◆ chkobj()

static void chkobj ( void v)
static

Definition at line 50 of file kschan.cpp.

◆ hoc_create_pnt()

static void* hoc_create_pnt ( Object ho)
static

Definition at line 137 of file kschan.cpp.

◆ hoc_destroy_pnt()

static void hoc_destroy_pnt ( void v)
static

Definition at line 140 of file kschan.cpp.

◆ hoc_get_loc_pnt()

static double hoc_get_loc_pnt ( void v)
static

Definition at line 165 of file kschan.cpp.

◆ hoc_has_loc()

static double hoc_has_loc ( void v)
static

Definition at line 162 of file kschan.cpp.

◆ hoc_loc_pnt()

static double hoc_loc_pnt ( void v)
static

Definition at line 158 of file kschan.cpp.

◆ hoc_nsingle()

static double hoc_nsingle ( void v)
static

Definition at line 168 of file kschan.cpp.

◆ hoc_symbol_units()

char* hoc_symbol_units ( Symbol sym,
const char *  units 
)

Definition at line 126 of file code2.cpp.

◆ ks_add_hhstate()

static Object** ks_add_hhstate ( void v)
static

Definition at line 329 of file kschan.cpp.

◆ ks_add_ksstate()

static Object** ks_add_ksstate ( void v)
static

Definition at line 335 of file kschan.cpp.

◆ ks_add_transition()

static Object** ks_add_transition ( void v)
static

Definition at line 349 of file kschan.cpp.

◆ ks_cons()

static void* ks_cons ( Object o)
static

Definition at line 765 of file kschan.cpp.

◆ ks_destruct()

static void ks_destruct ( void )
static

Definition at line 785 of file kschan.cpp.

◆ ks_erev()

static double ks_erev ( void v)
static

Definition at line 276 of file kschan.cpp.

◆ ks_gate()

static Object** ks_gate ( void v)
static

Definition at line 395 of file kschan.cpp.

◆ ks_gmax()

static double ks_gmax ( void v)
static

Definition at line 268 of file kschan.cpp.

◆ ks_ion()

static const char** ks_ion ( void v)
static

Definition at line 411 of file kschan.cpp.

◆ ks_is_point()

static double ks_is_point ( void v)
static

Definition at line 243 of file kschan.cpp.

◆ ks_iv_type()

static double ks_iv_type ( void v)
static

Definition at line 256 of file kschan.cpp.

◆ ks_ligand()

static const char** ks_ligand ( void v)
static

Definition at line 421 of file kschan.cpp.

◆ ks_name()

static const char** ks_name ( void v)
static

Definition at line 401 of file kschan.cpp.

◆ ks_ngate()

static double ks_ngate ( void v)
static

Definition at line 223 of file kschan.cpp.

◆ ks_nligand()

static double ks_nligand ( void v)
static

Definition at line 238 of file kschan.cpp.

◆ ks_nstate()

static double ks_nstate ( void v)
static

Definition at line 228 of file kschan.cpp.

◆ ks_ntrans()

static double ks_ntrans ( void v)
static

Definition at line 233 of file kschan.cpp.

◆ ks_pr()

static double ks_pr ( void v)
static

Definition at line 641 of file kschan.cpp.

◆ ks_remove_state()

static double ks_remove_state ( void v)
static

Definition at line 192 of file kschan.cpp.

◆ ks_remove_transition()

static double ks_remove_transition ( void v)
static

Definition at line 207 of file kschan.cpp.

◆ ks_rseed()

static double ks_rseed ( void v)
static

Definition at line 291 of file kschan.cpp.

◆ ks_setstructure()

static double ks_setstructure ( void v)
static

Definition at line 186 of file kschan.cpp.

◆ ks_single()

static double ks_single ( void v)
static

Definition at line 248 of file kschan.cpp.

◆ ks_state()

static Object** ks_state ( void v)
static

Definition at line 389 of file kschan.cpp.

◆ ks_trans()

static Object** ks_trans ( void v)
static

Definition at line 371 of file kschan.cpp.

◆ ks_usetable()

static double ks_usetable ( void v)
static

Definition at line 298 of file kschan.cpp.

◆ ks_vres()

static double ks_vres ( void v)
static

Definition at line 284 of file kschan.cpp.

◆ kschan_cvode_single_update()

void kschan_cvode_single_update ( )

Definition at line 182 of file kschan.cpp.

◆ KSChan_reg()

void KSChan_reg ( )

Definition at line 808 of file kschan.cpp.

◆ ksg_cons()

static void* ksg_cons ( Object o)
static

Definition at line 797 of file kschan.cpp.

◆ ksg_destruct()

static void ksg_destruct ( void )
static

Definition at line 801 of file kschan.cpp.

◆ ksg_index()

static double ksg_index ( void v)
static

Definition at line 485 of file kschan.cpp.

◆ ksg_nstate()

static double ksg_nstate ( void v)
static

Definition at line 463 of file kschan.cpp.

◆ ksg_power()

static double ksg_power ( void v)
static

Definition at line 469 of file kschan.cpp.

◆ ksg_sindex()

static double ksg_sindex ( void v)
static

Definition at line 479 of file kschan.cpp.

◆ kss_cons()

static void* kss_cons ( Object o)
static

Definition at line 792 of file kschan.cpp.

◆ kss_destruct()

static void kss_destruct ( void )
static

Definition at line 796 of file kschan.cpp.

◆ kss_frac()

static double kss_frac ( void v)
static

Definition at line 428 of file kschan.cpp.

◆ kss_gate()

static Object** kss_gate ( void v)
static

Definition at line 443 of file kschan.cpp.

◆ kss_index()

static double kss_index ( void v)
static

Definition at line 437 of file kschan.cpp.

◆ kss_name()

static const char** kss_name ( void v)
static

Definition at line 452 of file kschan.cpp.

◆ kst_ab()

static double kst_ab ( void v)
static

Definition at line 546 of file kschan.cpp.

◆ kst_cons()

static void* kst_cons ( Object o)
static

Definition at line 802 of file kschan.cpp.

◆ kst_destruct()

static void kst_destruct ( void )
static

Definition at line 806 of file kschan.cpp.

◆ kst_f()

static double kst_f ( void v)
static

Definition at line 566 of file kschan.cpp.

◆ kst_ftype()

static double kst_ftype ( void v)
static

Definition at line 531 of file kschan.cpp.

◆ kst_index()

static double kst_index ( void v)
static

Definition at line 509 of file kschan.cpp.

◆ kst_inftau()

static double kst_inftau ( void v)
static

Definition at line 556 of file kschan.cpp.

◆ kst_ligand()

static const char** kst_ligand ( void v)
static

Definition at line 617 of file kschan.cpp.

◆ kst_parm()

static Object** kst_parm ( void v)
static

Definition at line 592 of file kschan.cpp.

◆ kst_set_f()

static double kst_set_f ( void v)
static

Definition at line 491 of file kschan.cpp.

◆ kst_src()

static Object** kst_src ( void v)
static

Definition at line 578 of file kschan.cpp.

◆ kst_stoichiometry()

static double kst_stoichiometry ( void v)
static

Definition at line 633 of file kschan.cpp.

◆ kst_target()

static Object** kst_target ( void v)
static

Definition at line 585 of file kschan.cpp.

◆ kst_type()

static double kst_type ( void v)
static

Definition at line 515 of file kschan.cpp.

◆ ksusing()

static int ksusing ( int  type)
static

Definition at line 3131 of file kschan.cpp.

◆ nrn_alloc()

static void nrn_alloc ( Prop prop)
static

Definition at line 61 of file kschan.cpp.

◆ nrn_cur()

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

Definition at line 72 of file kschan.cpp.

◆ nrn_init()

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

Definition at line 66 of file kschan.cpp.

◆ nrn_jacob()

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

Definition at line 85 of file kschan.cpp.

◆ nrn_mk_table_check()

void nrn_mk_table_check ( )

Definition at line 1065 of file multicore.cpp.

◆ nrn_state()

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

Definition at line 98 of file kschan.cpp.

◆ ode_count()

static int ode_count ( int  type)
static

Definition at line 111 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 117 of file kschan.cpp.

◆ ode_matsol()

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

Definition at line 127 of file kschan.cpp.

◆ ode_spec()

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

Definition at line 122 of file kschan.cpp.

◆ singchan()

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

Definition at line 132 of file kschan.cpp.

◆ spGetElement()

spREAL* spGetElement ( char *  eMatrix,
int  Row,
int  Col 
)

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 317 of file kschan.cpp.

◆ unref()

static void unref ( Object obj)
static

Definition at line 43 of file kschan.cpp.

Variable Documentation

◆ channels

KSChanList* channels
static

Definition at line 20 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},
{nullptr, nullptr}}
static double ks_gmax(void *v)
Definition: kschan.cpp:268
static double ks_setstructure(void *v)
Definition: kschan.cpp:186
static double ks_ngate(void *v)
Definition: kschan.cpp:223
static double ks_remove_transition(void *v)
Definition: kschan.cpp:207
static double ks_rseed(void *v)
Definition: kschan.cpp:291
static double ks_single(void *v)
Definition: kschan.cpp:248
static double ks_remove_state(void *v)
Definition: kschan.cpp:192
static double ks_erev(void *v)
Definition: kschan.cpp:276
static double ks_usetable(void *v)
Definition: kschan.cpp:298
static double ks_is_point(void *v)
Definition: kschan.cpp:243
static double ks_vres(void *v)
Definition: kschan.cpp:284
static double ks_nligand(void *v)
Definition: kschan.cpp:238
static double ks_nstate(void *v)
Definition: kschan.cpp:228
static double ks_pr(void *v)
Definition: kschan.cpp:641
static double ks_iv_type(void *v)
Definition: kschan.cpp:256
static double ks_ntrans(void *v)
Definition: kschan.cpp:233

Definition at line 696 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},
{nullptr, nullptr}}
static Object ** ks_state(void *v)
Definition: kschan.cpp:389
static Object ** ks_add_hhstate(void *v)
Definition: kschan.cpp:329
static Object ** ks_gate(void *v)
Definition: kschan.cpp:395
static Object ** ks_add_ksstate(void *v)
Definition: kschan.cpp:335
static Object ** ks_add_transition(void *v)
Definition: kschan.cpp:349
static Object ** ks_trans(void *v)
Definition: kschan.cpp:371

Definition at line 719 of file kschan.cpp.

◆ ks_smem

Member_ret_str_func ks_smem[]
static
Initial value:
= {{"name", ks_name},
{"ion", ks_ion},
{"ligand", ks_ligand},
{nullptr, nullptr}}
static const char ** ks_ion(void *v)
Definition: kschan.cpp:411
static const char ** ks_ligand(void *v)
Definition: kschan.cpp:421
static const char ** ks_name(void *v)
Definition: kschan.cpp:401

Definition at line 727 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},
{nullptr, nullptr}}
static double ksg_nstate(void *v)
Definition: kschan.cpp:463
static double ksg_power(void *v)
Definition: kschan.cpp:469
static double ksg_sindex(void *v)
Definition: kschan.cpp:479
static double ksg_index(void *v)
Definition: kschan.cpp:485

Definition at line 738 of file kschan.cpp.

◆ ksg_omem

Member_ret_obj_func ksg_omem[] = {{nullptr, nullptr}}
static

Definition at line 744 of file kschan.cpp.

◆ ksg_smem

Member_ret_str_func ksg_smem[] = {{nullptr, nullptr}}
static

Definition at line 746 of file kschan.cpp.

◆ ksgate_sym

Symbol* ksgate_sym
static

Definition at line 27 of file kschan.cpp.

◆ kss_dmem

Member_func kss_dmem[] = {{"frac", kss_frac}, {"index", kss_index}, {nullptr, nullptr}}
static

Definition at line 732 of file kschan.cpp.

◆ kss_omem

Member_ret_obj_func kss_omem[] = {{"gate", kss_gate}, {nullptr, nullptr}}
static

Definition at line 734 of file kschan.cpp.

◆ kss_smem

Member_ret_str_func kss_smem[] = {{"name", kss_name}, {nullptr, nullptr}}
static

Definition at line 736 of file kschan.cpp.

◆ ksstate_sym

Symbol* ksstate_sym
static

Definition at line 26 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},
{nullptr, nullptr}}
static double kst_set_f(void *v)
Definition: kschan.cpp:491
static double kst_index(void *v)
Definition: kschan.cpp:509
static double kst_ftype(void *v)
Definition: kschan.cpp:531
static double kst_inftau(void *v)
Definition: kschan.cpp:556
static double kst_stoichiometry(void *v)
Definition: kschan.cpp:633
static double kst_f(void *v)
Definition: kschan.cpp:566
static double kst_ab(void *v)
Definition: kschan.cpp:546
static double kst_type(void *v)
Definition: kschan.cpp:515

Definition at line 748 of file kschan.cpp.

◆ kst_omem

Member_ret_obj_func kst_omem[]
static
Initial value:
= {{"src", kst_src},
{"target", kst_target},
{"parm", kst_parm},
{nullptr, nullptr}}
static Object ** kst_src(void *v)
Definition: kschan.cpp:578
static Object ** kst_target(void *v)
Definition: kschan.cpp:585
static Object ** kst_parm(void *v)
Definition: kschan.cpp:592

Definition at line 758 of file kschan.cpp.

◆ kst_smem

Member_ret_str_func kst_smem[] = {{"ligand", kst_ligand}, {nullptr, nullptr}}
static

Definition at line 763 of file kschan.cpp.

◆ kstrans_sym

Symbol* kstrans_sym
static

Definition at line 28 of file kschan.cpp.

◆ m_kschan

const char* m_kschan[9]
static

Definition at line 823 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 822 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},
{nullptr, nullptr}}
static double hoc_nsingle(void *v)
Definition: kschan.cpp:168
static double hoc_has_loc(void *v)
Definition: kschan.cpp:162
static double hoc_get_loc_pnt(void *v)
Definition: kschan.cpp:165
static double hoc_loc_pnt(void *v)
Definition: kschan.cpp:158

Definition at line 176 of file kschan.cpp.