1 #include <../../nrnconf.h> 74 int*
s =
new int[size];
75 double* r =
new double[size];
76 for (i=0; i < size; ++
i) {
93 infolist =
new SingleChanInfoList();
97 infolist->append(info);
115 current_chan->state_[
i].rate(j, rate);
124 for (i=0; i < infolist->count(); ++
i) {
125 if (infolist->item(i)->type_ == nprop_->type()) {
126 info_ = infolist->item(i);
144 info_->slist_ =
NULL;
163 int i,
n = info_->n_;
165 for (i=0; i <
n; ++
i) {
169 (*info_->f_)(v, nprop_->prop()->param, nprop_->prop()->dparam);
177 info_->n_ = m->
nrow();
180 for (i=0; i <
n(); ++
i) {
183 for (j=0; j <
n(); ++
j) {
192 assert(i <
n() && j <
n() && tau > 0.0);
195 for (k=0; k <
n(); ++
k) {
211 return state_[
i].cond_;
214 state_[
i].cond_ =
cond;
223 return cond(current_);
229 int i,
j=0,
n=state_[current_].n_;
232 for (i = 0; i <
n; ++
i) {
233 if ((t = s.
tau_[i]* (this->*erand_)()) < dt) {
246 return (*r_->rand)();
269 int i =
cond(current_);
272 }
while(
cond(current_) == i);
280 for (i=0; i <
n; ++
i) {
281 state->elem(i) = current_;
290 for (i=0; i <
n; ++
i) {
300 for (i=0; i <
n(); ++
i) {
302 for (j=0; j < s.
n_; ++
j) {
312 }
else if (
ifarg(3)) {
313 int i,
j;
double val;
345 return double(s->
cond(i));
static double set_rand(void *v)
void _nrn_single_react(int, int, double)
int hoc_is_str_arg(int narg)
Matrix * matrix_arg(int i)
void get_rates(OcMatrix *)
virtual ~SingleChanState()
void hoc_reg_singlechan(int, void(*)(...))
double state_transition()
void state_transitions(Vect *dt, Vect *state)
static double cond(void *v)
check_obj_type(o, "SectionList")
declarePtrList(SingleChanInfoList, SingleChanInfo) implementPtrList(SingleChanInfoList
static philox4x32_key_t k
virtual double * mep(int i, int j)
SingleChanInfo SingleChanInfoList * infolist
void rate(int to_state, double value)
#define implementPtrList(PtrList, T)
static double cond_transition(void *v)
static double state_transition(void *v)
int const size_t const size_t n
static double cond_transitions(void *v)
virtual double getval(int i, int j)
void class2oc(const char *, void *(*cons)(Object *), void(*destruct)(void *), Member_func *, int(*checkpoint)(void **), Member_ret_obj_func *, Member_ret_str_func *)
void hoc_obj_unref(Object *obj)
static Member_func members[]
static void * cons(Object *)
void _singlechan_declare(void(*)(double, double *, Datum *), int *, int)
static double get_rates(void *v)
void hoc_execerror(const char *, const char *)
void cond_transitions(Vect *dt, Vect *cond)
static double current_state(void *v)
static double current_cond(void *v)
void hoc_obj_ref(Object *obj)
void(* f_)(double, double *, Datum *)
static double state_transitions(void *v)
int hoc_is_object_arg(int narg)
static void destruct(void *v)
static double set_rates(void *v)
Object ** hoc_objgetarg(int)
double chkarg(int, double low, double high)
static SingleChan * current_chan
virtual void resize(int, int)