NEURON {
ARTIFICIAL_CELL IntFire1
RANGE tau, refrac, m
}
PARAMETER {
tau = 10 (ms)
refrac = 5 (ms)
}
ASSIGNED {
m
t0(ms)
refractory
}
INITIAL {
m = 0
t0 = t
refractory = 0
}
FUNCTION M() {
if (refractory == 0) {
M = m*exp(-(t - t0)/tau)
}else if (refractory == 1) {
if (t - t0 < .5) {
M = 2
}else{
M = -1
}
}
}
NET_RECEIVE (w) {
if (refractory == 0) {
m = m*exp(-(t - t0)/tau)
t0 = t
m = m + w
if (m > 1) {
refractory = 1
m = 2
net_send(refrac, refractory)
net_event(t)
}
}else if (flag == 1) {
t0 = t
refractory = 0
m = 0
}
}