NEURON
kschan.cpp File Reference
#include <../../nrnconf.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include "nrnoc2iv.h"
#include "classreg.h"
#include "kschan.h"
#include "kssingle.h"
#include "ocnotify.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_ (Memb_list *, std::size_t, Datum *, Datum *, double *, NrnThread *vnt, int type, neuron::model_sorted_token const &)
 
static void nrn_alloc (Prop *prop)
 
static void nrn_init (neuron::model_sorted_token const &, NrnThread *nt, Memb_list *ml, int type)
 
static void nrn_cur (neuron::model_sorted_token const &, NrnThread *nt, Memb_list *ml, int type)
 
static void nrn_jacob (neuron::model_sorted_token const &, NrnThread *nt, Memb_list *ml, int type)
 
static void nrn_state (neuron::model_sorted_token const &, NrnThread *nt, Memb_list *ml, int type)
 
static int ode_count (int type)
 
static void ode_map (Prop *prop, int ieq, neuron::container::data_handle< double > *pv, neuron::container::data_handle< double > *pvdot, double *atol, int type)
 
static void ode_spec (neuron::model_sorted_token const &token, NrnThread *, Memb_list *ml, int type)
 
static void ode_matsol (neuron::model_sorted_token const &token, NrnThread *nt, Memb_list *ml, int type)
 
static void singchan (NrnThread *nt, Memb_list *ml, int type)
 
static void * hoc_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 void * ks_cons (Object *o)
 
static void ks_destruct (void *)
 
static void * kss_cons (Object *o)
 
static void kss_destruct (void *)
 
static void * ksg_cons (Object *o)
 
static void ksg_destruct (void *)
 
static void * kst_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_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 26 of file kschan.cpp.

Typedef Documentation

◆ KSChanList

using KSChanList = std::vector<KSChan*>

Definition at line 15 of file kschan.cpp.

Function Documentation

◆ check_objtype()

static void check_objtype ( Object o,
Symbol s 
)
static

Definition at line 28 of file kschan.cpp.

◆ check_table_thread_()

static void check_table_thread_ ( Memb_list ,
std::size_t  ,
Datum ,
Datum ,
double *  ,
NrnThread vnt,
int  type,
neuron::model_sorted_token const &   
)
static

Definition at line 52 of file kschan.cpp.

◆ chkobj()

static void chkobj ( void *  v)
static

Definition at line 46 of file kschan.cpp.

◆ hoc_create_pnt()

static void* hoc_create_pnt ( Object ho)
static

Definition at line 126 of file kschan.cpp.

◆ hoc_destroy_pnt()

static void hoc_destroy_pnt ( void *  v)
static

Definition at line 129 of file kschan.cpp.

◆ hoc_get_loc_pnt()

static double hoc_get_loc_pnt ( void *  v)
static

Definition at line 155 of file kschan.cpp.

◆ hoc_has_loc()

static double hoc_has_loc ( void *  v)
static

Definition at line 152 of file kschan.cpp.

◆ hoc_loc_pnt()

static double hoc_loc_pnt ( void *  v)
static

Definition at line 148 of file kschan.cpp.

◆ hoc_nsingle()

static double hoc_nsingle ( void *  v)
static

Definition at line 158 of file kschan.cpp.

◆ hoc_symbol_units()

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

Definition at line 128 of file code2.cpp.

◆ ks_add_hhstate()

static Object** ks_add_hhstate ( void *  v)
static

Definition at line 321 of file kschan.cpp.

◆ ks_add_ksstate()

static Object** ks_add_ksstate ( void *  v)
static

Definition at line 327 of file kschan.cpp.

◆ ks_add_transition()

static Object** ks_add_transition ( void *  v)
static

Definition at line 341 of file kschan.cpp.

◆ ks_cons()

static void* ks_cons ( Object o)
static

Definition at line 754 of file kschan.cpp.

◆ ks_destruct()

static void ks_destruct ( void *  )
static

Definition at line 774 of file kschan.cpp.

◆ ks_erev()

static double ks_erev ( void *  v)
static

Definition at line 267 of file kschan.cpp.

◆ ks_gate()

static Object** ks_gate ( void *  v)
static

Definition at line 388 of file kschan.cpp.

◆ ks_gmax()

static double ks_gmax ( void *  v)
static

Definition at line 258 of file kschan.cpp.

◆ ks_ion()

static const char** ks_ion ( void *  v)
static

Definition at line 404 of file kschan.cpp.

◆ ks_is_point()

static double ks_is_point ( void *  v)
static

Definition at line 233 of file kschan.cpp.

◆ ks_iv_type()

static double ks_iv_type ( void *  v)
static

Definition at line 246 of file kschan.cpp.

◆ ks_ligand()

static const char** ks_ligand ( void *  v)
static

Definition at line 414 of file kschan.cpp.

◆ ks_name()

static const char** ks_name ( void *  v)
static

Definition at line 394 of file kschan.cpp.

◆ ks_ngate()

static double ks_ngate ( void *  v)
static

Definition at line 213 of file kschan.cpp.

◆ ks_nligand()

static double ks_nligand ( void *  v)
static

Definition at line 228 of file kschan.cpp.

◆ ks_nstate()

static double ks_nstate ( void *  v)
static

Definition at line 218 of file kschan.cpp.

◆ ks_ntrans()

static double ks_ntrans ( void *  v)
static

Definition at line 223 of file kschan.cpp.

◆ ks_pr()

static double ks_pr ( void *  v)
static

Definition at line 634 of file kschan.cpp.

◆ ks_remove_state()

static double ks_remove_state ( void *  v)
static

Definition at line 182 of file kschan.cpp.

◆ ks_remove_transition()

static double ks_remove_transition ( void *  v)
static

Definition at line 197 of file kschan.cpp.

◆ ks_rseed()

static double ks_rseed ( void *  v)
static

Definition at line 283 of file kschan.cpp.

◆ ks_setstructure()

static double ks_setstructure ( void *  v)
static

Definition at line 176 of file kschan.cpp.

◆ ks_single()

static double ks_single ( void *  v)
static

Definition at line 238 of file kschan.cpp.

◆ ks_state()

static Object** ks_state ( void *  v)
static

Definition at line 382 of file kschan.cpp.

◆ ks_trans()

static Object** ks_trans ( void *  v)
static

Definition at line 360 of file kschan.cpp.

◆ ks_usetable()

static double ks_usetable ( void *  v)
static

Definition at line 290 of file kschan.cpp.

◆ ks_vres()

static double ks_vres ( void *  v)
static

Definition at line 276 of file kschan.cpp.

◆ kschan_cvode_single_update()

void kschan_cvode_single_update ( )

Definition at line 172 of file kschan.cpp.

◆ KSChan_reg()

void KSChan_reg ( )

Definition at line 797 of file kschan.cpp.

◆ ksg_cons()

static void* ksg_cons ( Object o)
static

Definition at line 786 of file kschan.cpp.

◆ ksg_destruct()

static void ksg_destruct ( void *  )
static

Definition at line 790 of file kschan.cpp.

◆ ksg_index()

static double ksg_index ( void *  v)
static

Definition at line 478 of file kschan.cpp.

◆ ksg_nstate()

static double ksg_nstate ( void *  v)
static

Definition at line 456 of file kschan.cpp.

◆ ksg_power()

static double ksg_power ( void *  v)
static

Definition at line 462 of file kschan.cpp.

◆ ksg_sindex()

static double ksg_sindex ( void *  v)
static

Definition at line 472 of file kschan.cpp.

◆ kss_cons()

static void* kss_cons ( Object o)
static

Definition at line 781 of file kschan.cpp.

◆ kss_destruct()

static void kss_destruct ( void *  )
static

Definition at line 785 of file kschan.cpp.

◆ kss_frac()

static double kss_frac ( void *  v)
static

Definition at line 421 of file kschan.cpp.

◆ kss_gate()

static Object** kss_gate ( void *  v)
static

Definition at line 436 of file kschan.cpp.

◆ kss_index()

static double kss_index ( void *  v)
static

Definition at line 430 of file kschan.cpp.

◆ kss_name()

static const char** kss_name ( void *  v)
static

Definition at line 445 of file kschan.cpp.

◆ kst_ab()

static double kst_ab ( void *  v)
static

Definition at line 539 of file kschan.cpp.

◆ kst_cons()

static void* kst_cons ( Object o)
static

Definition at line 791 of file kschan.cpp.

◆ kst_destruct()

static void kst_destruct ( void *  )
static

Definition at line 795 of file kschan.cpp.

◆ kst_f()

static double kst_f ( void *  v)
static

Definition at line 559 of file kschan.cpp.

◆ kst_ftype()

static double kst_ftype ( void *  v)
static

Definition at line 524 of file kschan.cpp.

◆ kst_index()

static double kst_index ( void *  v)
static

Definition at line 502 of file kschan.cpp.

◆ kst_inftau()

static double kst_inftau ( void *  v)
static

Definition at line 549 of file kschan.cpp.

◆ kst_ligand()

static const char** kst_ligand ( void *  v)
static

Definition at line 610 of file kschan.cpp.

◆ kst_parm()

static Object** kst_parm ( void *  v)
static

Definition at line 585 of file kschan.cpp.

◆ kst_set_f()

static double kst_set_f ( void *  v)
static

Definition at line 484 of file kschan.cpp.

◆ kst_src()

static Object** kst_src ( void *  v)
static

Definition at line 571 of file kschan.cpp.

◆ kst_stoichiometry()

static double kst_stoichiometry ( void *  v)
static

Definition at line 626 of file kschan.cpp.

◆ kst_target()

static Object** kst_target ( void *  v)
static

Definition at line 578 of file kschan.cpp.

◆ kst_type()

static double kst_type ( void *  v)
static

Definition at line 508 of file kschan.cpp.

◆ ksusing()

static int ksusing ( int  type)
static

Definition at line 3151 of file kschan.cpp.

◆ nrn_alloc()

static void nrn_alloc ( Prop prop)
static

Definition at line 64 of file kschan.cpp.

◆ nrn_cur()

static void nrn_cur ( neuron::model_sorted_token const &  ,
NrnThread nt,
Memb_list ml,
int  type 
)
static

Definition at line 75 of file kschan.cpp.

◆ nrn_init()

static void nrn_init ( neuron::model_sorted_token const &  ,
NrnThread nt,
Memb_list ml,
int  type 
)
static

Definition at line 69 of file kschan.cpp.

◆ nrn_jacob()

static void nrn_jacob ( neuron::model_sorted_token const &  ,
NrnThread nt,
Memb_list ml,
int  type 
)
static

Definition at line 81 of file kschan.cpp.

◆ nrn_mk_table_check()

void nrn_mk_table_check ( void  )

Definition at line 781 of file multicore.cpp.

◆ nrn_state()

static void nrn_state ( neuron::model_sorted_token const &  ,
NrnThread nt,
Memb_list ml,
int  type 
)
static

Definition at line 87 of file kschan.cpp.

◆ ode_count()

static int ode_count ( int  type)
static

Definition at line 93 of file kschan.cpp.

◆ ode_map()

static void ode_map ( Prop prop,
int  ieq,
neuron::container::data_handle< double > *  pv,
neuron::container::data_handle< double > *  pvdot,
double *  atol,
int  type 
)
static

Definition at line 98 of file kschan.cpp.

◆ ode_matsol()

static void ode_matsol ( neuron::model_sorted_token const &  token,
NrnThread nt,
Memb_list ml,
int  type 
)
static

Definition at line 113 of file kschan.cpp.

◆ ode_spec()

static void ode_spec ( neuron::model_sorted_token const &  token,
NrnThread ,
Memb_list ml,
int  type 
)
static

Definition at line 108 of file kschan.cpp.

◆ singchan()

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

Definition at line 121 of file kschan.cpp.

◆ spGetElement()

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

Definition at line 151 of file spbuild.cpp.

◆ temp_objvar()

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

Definition at line 309 of file kschan.cpp.

◆ unref()

static void unref ( Object obj)
static

Definition at line 39 of file kschan.cpp.

Variable Documentation

◆ channels

KSChanList* channels
static

Definition at line 16 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:258
static double ks_setstructure(void *v)
Definition: kschan.cpp:176
static double ks_ngate(void *v)
Definition: kschan.cpp:213
static double ks_remove_transition(void *v)
Definition: kschan.cpp:197
static double ks_rseed(void *v)
Definition: kschan.cpp:283
static double ks_single(void *v)
Definition: kschan.cpp:238
static double ks_remove_state(void *v)
Definition: kschan.cpp:182
static double ks_erev(void *v)
Definition: kschan.cpp:267
static double ks_usetable(void *v)
Definition: kschan.cpp:290
static double ks_is_point(void *v)
Definition: kschan.cpp:233
static double ks_vres(void *v)
Definition: kschan.cpp:276
static double ks_nligand(void *v)
Definition: kschan.cpp:228
static double ks_nstate(void *v)
Definition: kschan.cpp:218
static double ks_pr(void *v)
Definition: kschan.cpp:634
static double ks_iv_type(void *v)
Definition: kschan.cpp:246
static double ks_ntrans(void *v)
Definition: kschan.cpp:223

Definition at line 689 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:382
static Object ** ks_add_hhstate(void *v)
Definition: kschan.cpp:321
static Object ** ks_gate(void *v)
Definition: kschan.cpp:388
static Object ** ks_add_ksstate(void *v)
Definition: kschan.cpp:327
static Object ** ks_add_transition(void *v)
Definition: kschan.cpp:341
static Object ** ks_trans(void *v)
Definition: kschan.cpp:360

Definition at line 712 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:404
static const char ** ks_ligand(void *v)
Definition: kschan.cpp:414
static const char ** ks_name(void *v)
Definition: kschan.cpp:394

Definition at line 720 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:456
static double ksg_power(void *v)
Definition: kschan.cpp:462
static double ksg_sindex(void *v)
Definition: kschan.cpp:472
static double ksg_index(void *v)
Definition: kschan.cpp:478

Definition at line 731 of file kschan.cpp.

◆ ksgate_sym

Symbol* ksgate_sym
static

Definition at line 23 of file kschan.cpp.

◆ kss_dmem

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

Definition at line 725 of file kschan.cpp.

◆ kss_omem

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

Definition at line 727 of file kschan.cpp.

◆ kss_smem

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

Definition at line 729 of file kschan.cpp.

◆ ksstate_sym

Symbol* ksstate_sym
static

Definition at line 22 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:484
static double kst_index(void *v)
Definition: kschan.cpp:502
static double kst_ftype(void *v)
Definition: kschan.cpp:524
static double kst_inftau(void *v)
Definition: kschan.cpp:549
static double kst_stoichiometry(void *v)
Definition: kschan.cpp:626
static double kst_f(void *v)
Definition: kschan.cpp:559
static double kst_ab(void *v)
Definition: kschan.cpp:539
static double kst_type(void *v)
Definition: kschan.cpp:508

Definition at line 737 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:571
static Object ** kst_target(void *v)
Definition: kschan.cpp:578
static Object ** kst_parm(void *v)
Definition: kschan.cpp:585

Definition at line 747 of file kschan.cpp.

◆ kst_smem

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

Definition at line 752 of file kschan.cpp.

◆ kstrans_sym

Symbol* kstrans_sym
static

Definition at line 24 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:158
static double hoc_has_loc(void *v)
Definition: kschan.cpp:152
static double hoc_get_loc_pnt(void *v)
Definition: kschan.cpp:155
static double hoc_loc_pnt(void *v)
Definition: kschan.cpp:148

Definition at line 166 of file kschan.cpp.