25 virtual double f(
double v) {
28 void f(
int cnt,
double*
v,
double* val) {
30 for (
i = 0;
i <
cnt; ++
i) {
39 static double Exp(
double x) {
42 }
else if (x < -700.) {
55 virtual double f(
double v) {
65 virtual double f(
double v) {
66 return c(0) *
Exp(
c(1) * (
v -
c(2)));
75 virtual double f(
double v) {
76 double x =
c(1) * (
v -
c(2));
78 return c(0) * x / (1 -
Exp(-x));
80 return c(0) * (1 + x / 2.);
90 virtual double f(
double v) {
91 return c(0) / (1. +
Exp(
c(1) * (
v -
c(2))));
96 #define ebykt (_e_over_k_codata2018 / (273.15 + celsius))
111 virtual double f(
double v) {
112 double x =
ebykt *
c(2) * (
v -
c(1));
113 double ap =
c(0) *
Exp(
c(3) * x);
114 double bp =
c(0) *
Exp((
c(3) - 1.) * x);
116 double inf = ap *
tau;
128 virtual double f(
double v) {
129 double x =
ebykt *
c(2) * (
v -
c(1));
130 double ap =
c(0) *
Exp(
c(3) * x);
131 double bp =
c(0) *
Exp((
c(3) - 1.) * x);
132 double tau = 1 / (ap + bp);
146 virtual double f(
double v);
172 void ab(
double v,
double& a,
double& b);
193 virtual double beta();
235 virtual double cur(
double g,
239 std::size_t instance,
244 std::size_t instance,
253 std::size_t instance,
254 std::size_t offset)
override;
258 std::size_t instance,
259 std::size_t offset)
override;
268 std::size_t instance,
269 std::size_t offset)
override;
273 std::size_t instance,
274 std::size_t offset)
override;
283 std::size_t instance,
284 std::size_t offset)
override;
288 std::size_t instance,
289 std::size_t offset)
override;
298 std::size_t instance,
299 std::size_t offset)
override;
303 std::size_t instance,
304 std::size_t offset)
override;
313 std::size_t instance,
314 std::size_t offset)
override;
318 std::size_t instance,
319 std::size_t offset)
override;
327 return name_.c_str();
395 void usetable(
bool,
int size,
double vmin,
double vmax);
409 void mulmat(
Memb_list* ml, std::size_t instance, std::size_t offset_s, std::size_t offset_ds);
virtual double f(double v)
virtual double f(double v)
virtual double f(double v)
virtual double f(double v)
static double Exp(double x)
static KSChanFunction * new_function(int type, Vect *, double, double)
virtual ~KSChanFunction()
virtual double f(double v)
void f(int cnt, double *v, double *val)
void add_channel(const char **)
void ligand_consist(int, int, Prop *, Node *)
void register_data_fields()
void alloc_schan_node_data()
int nsingle(Point_process *)
void mulmat(Memb_list *ml, std::size_t instance, std::size_t offset_s, std::size_t offset_ds)
virtual void alloc(Prop *)
void set_single(bool, bool update=true)
void fillmat(double v, Datum *pd)
virtual void jacob(NrnThread *, Memb_list *)
int trans_index(int src, int target)
void delete_schan_node_data()
KSState * add_hhstate(const char *)
KSGateComplex * gate_insert(int ig, int is, int power)
KSState * state_insert(int i, const char *name, double frac)
virtual void cv_sc_update(NrnThread *, Memb_list *)
void setname(const char *)
virtual void map(Prop *, int, neuron::container::data_handle< double > *, neuron::container::data_handle< double > *, double *)
virtual void init(NrnThread *, Memb_list *)
virtual void state(NrnThread *, Memb_list *)
void check_table_thread(NrnThread *)
KSChan(Object *, bool is_point=false)
void mat_dt(double dt, Memb_list *ml, std::size_t instance, std::size_t offset)
void setstructure(Vect *)
double conductance(double gmax, Memb_list *ml, std::size_t instance, std::size_t offset)
std::vector< double > parm_default
Prop * needion(Symbol *, Node *, Prop *)
double alpha(double v, int, int)
void power(KSGateComplex *, int)
void ion_consist()
Almost obsolete: No longer allow KSChan structure changes when instances exist.
void destroy_pnt(Point_process *)
void remove_transition(int)
void setion(const char *)
virtual void spec(Memb_list *)
KSTransition * trans_insert(int i, int src, int target)
Symbol * installsym(const char *, int, Symbol *tmplt=NULL)
virtual void cur(NrnThread *, Memb_list *)
void solvemat(Memb_list *, std::size_t instance, std::size_t offset)
void setsname(int, const char *)
KSState * add_ksstate(int igate, const char *)
void freesym(Symbol *, Symbol *tmplt=NULL)
void err_if_has_instances() const
Error if instances exist.
double beta(double v, int, int)
virtual void matsol(NrnThread *, Memb_list *)
KSTransition * add_transition(int src, int target)
int gate_index(int state_index)
void settype(KSTransition *, int type, const char *)
Symbol * looksym(const char *, Symbol *tmplt=NULL)
virtual double f(double v)
virtual double f(double v)
KSChanTable(Vect *, double vmin, double vmax)
virtual double f(double v)
double conductance(Memb_list *ml, std::size_t instance, std::size_t offset, KSState *st)
void inftau_hh_table(int i, double &inf, double &tau)
void ab(double v, double &a, double &b)
void inftau(double v, double &inf, double &tau)
void inftau_hh_table(int i, double x, double &inf, double &tau)
void hh_table_make(double dt, int size=200, double vmin=-100., double vmax=50.)
void setf(int direction, int type, Vect *vec, double vmin, double vmax)
void update(NrnThread *_nt)
static void * vmin(NrnThread *nt)
virtual double jacob(Datum *pd, double v, Memb_list *ml, std::size_t instance, std::size_t offset)
virtual double cur(double g, Datum *pd, double v, Memb_list *ml, std::size_t instance, std::size_t offset)
double jacob(Datum *pd, double v, Memb_list *ml, std::size_t instance, std::size_t offset) override
double cur(double g, Datum *pd, double v, Memb_list *ml, std::size_t instance, std::size_t offset) override
double jacob(Datum *pd, double v, Memb_list *ml, std::size_t instance, std::size_t offset) override
double cur(double g, Datum *pd, double v, Memb_list *ml, std::size_t instance, std::size_t offset) override
double cur(double g, Datum *pd, double v, Memb_list *ml, std::size_t instance, std::size_t offset) override
double jacob(Datum *pd, double v, Memb_list *ml, std::size_t instance, std::size_t offset) override
double jacob(Datum *pd, double v, Memb_list *ml, std::size_t instance, std::size_t offset) override
double cur(double g, Datum *pd, double v, Memb_list *ml, std::size_t instance, std::size_t offset) override
double cur(double g, Datum *pd, double v, Memb_list *ml, std::size_t instance, std::size_t offset) override
double jacob(Datum *pd, double v, Memb_list *ml, std::size_t instance, std::size_t offset) override
A view into a set of mechanism instances.
Represent main neuron object computed by single thread.
A point process is computed just like regular mechanisms.
Non-template stable handle to a generic value.