: Recrd the time at which icap has a peak.
: By Michael Hines 09-2004
NEURON {
SUFFIX capmax
POINTER icap
RANGE i,tp,debug,i1,i2,i3,lockit,i1,i2,i3,up
}
PARAMETER {
debug = 0
}
ASSIGNED {
i (milliamp/cm2)
tp (ms)
icap (milliamp/cm2)
i1
i2
i3
}
STATE {
up
lockit
}
INITIAL { i = 0
tp =0
lockit = -1
up = 0
i1= 0
i2 = 0
i3 = 0
}
BREAKPOINT {
SOLVE mx
}
PROCEDURE absmx() {
if (fabs(icap) > i) {
i = fabs(icap)
tp = t
}
}
PROCEDURE mxpos() {
if (icap > i) {
i = icap
tp = t
}
}
PROCEDURE mx() {
if (up == 1 ) {
if (lockit < 0) {
if (icap > i) {
i = icap
tp = t
}
if (debug == 1 ) {
VERBATIM
fprintf(stdout,"Lockit %f\tup: %f\tt: %f\ti: %f\n",lockit,up,t,i);
ENDVERBATIM
}
}
}
if ( (t>10) && (icap>i3) && (i3>i2) && (i2>i1) ) {
up = 1
} else {
up =0
}
if ( (icap > 0 ) && ( icap < i*0.75) && ( (t-tp) < 2) ) {
lockit = 1
}
i1 = i2
i2 = i3
i3 = icap
}