static void _n_trates(double _lv){ int _i, _j; double _xi, _theta; if (!usetable) { _f_trates(_lv); return; } _xi = _mfac_trates * (_lv - _tmin_trates); _i = (int) _xi; if (_xi <= 0.) { ninf = _t_ninf[0]; _znexp = _t__znexp[0]; pinf = _t_pinf[0]; _zpexp = _t__zpexp[0]; return; } if (_i >= 300) { ninf = _t_ninf[300]; _znexp = _t__znexp[300]; pinf = _t_pinf[300]; _zpexp = _t__zpexp[300]; return; } _theta = _xi - (double)_i; ninf = _t_ninf[_i] + _theta*(_t_ninf[_i+1] - _t_ninf[_i]); _znexp = _t__znexp[_i] + _theta*(_t__znexp[_i+1] - _t__znexp[_i]); pinf = _t_pinf[_i] + _theta*(_t_pinf[_i+1] - _t_pinf[_i]); _zpexp = _t__zpexp[_i] + _theta*(_t__zpexp[_i+1] - _t__zpexp[_i]); }
static void _check_trates(double* _p, Datum* _ppvar, Datum* _thread, _NrnThread* _nt) { static int _maktable=1; int _i, _j, _ix = 0; double _xi, _tmax; static double _sav_celsius; static double _sav_temp; static double _sav_Ra; static double _sav_Rb; static double _sav_tha; static double _sav_qa; if (!usetable) {return;} if (_sav_celsius != celsius) { _maktable = 1;} if (_sav_temp != temp) { _maktable = 1;} if (_sav_Ra != Ra) { _maktable = 1;} if (_sav_Rb != Rb) { _maktable = 1;} if (_sav_tha != tha) { _maktable = 1;} if (_sav_qa != qa) { _maktable = 1;} if (_maktable) { double _x, _dx; _maktable=0; _tmin_trates = vmin ; _tmax = vmax ; _dx = (_tmax - _tmin_trates)/199.; _mfac_trates = 1./_dx; for (_i=0, _x=_tmin_trates; _i < 200; _x += _dx, _i++) { _f_trates(_p, _ppvar, _thread, _nt, _x); _t_ninf[_i] = ninf; _t_ntau[_i] = ntau; } _sav_celsius = celsius; _sav_temp = temp; _sav_Ra = Ra; _sav_Rb = Rb; _sav_tha = tha; _sav_qa = qa; } }
static void _check_trates() { static int _maktable=1; int _i, _j, _ix = 0; double _xi, _tmax; static double _sav_dt; static double _sav_celsius; if (!usetable) {return;} if (_sav_dt != dt) { _maktable = 1;} if (_sav_celsius != celsius) { _maktable = 1;} if (_maktable) { double _x, _dx; _maktable=0; _tmin_trates = - 150.0 ; _tmax = 150.0 ; _dx = (_tmax - _tmin_trates)/300.; _mfac_trates = 1./_dx; for (_i=0, _x=_tmin_trates; _i < 301; _x += _dx, _i++) { _f_trates(_x); _t_ninf[_i] = ninf; _t__znexp[_i] = _znexp; _t_pinf[_i] = pinf; _t__zpexp[_i] = _zpexp; } _sav_dt = dt; _sav_celsius = celsius; } }
static void _n_trates(double* _p, Datum* _ppvar, Datum* _thread, _NrnThread* _nt, double _lv){ int _i, _j; double _xi, _theta; if (!usetable) { _f_trates(_p, _ppvar, _thread, _nt, _lv); return; } _xi = _mfac_trates * (_lv - _tmin_trates); if (isnan(_xi)) { ninf = _xi; ntau = _xi; return; } if (_xi <= 0.) { ninf = _t_ninf[0]; ntau = _t_ntau[0]; return; } if (_xi >= 199.) { ninf = _t_ninf[199]; ntau = _t_ntau[199]; return; } _i = (int) _xi; _theta = _xi - (double)_i; ninf = _t_ninf[_i] + _theta*(_t_ninf[_i+1] - _t_ninf[_i]); ntau = _t_ntau[_i] + _theta*(_t_ntau[_i+1] - _t_ntau[_i]); }