TITLE svclmp.mod
COMMENT
Single electrode Voltage clamp with three levels

Series Resistance added; backards compatible, except parameters
e0,vo0,vi0,gain,rstim,tau1,tau2 that no longer exist
Clamp is on at time 0, and off at time dur[0]+dur[1]+dur[2]. When clamp is off
the injected current is 0. The clamp levels are amp[0], amp[1], amp[2]. i is
the injected current, vc measures the control voltage) Do not insert several
instances of this model at the same location in order to make level changes.
That is equivalent to independent clamps and they will have incompatible
internal state values.
The electrical circuit for the clamp is exceedingly simple:
rs Rin
vc '\/\/`o'\/\/`o
 
____ _____
 
Cm
Note that since this is an electrode current model v refers to the internal
potential which is equivalent to the membrane potential v when there is no
extracellular membrane mechanism present but is v+vext when one is present.
Also since i is an electrode current, positive values of i depolarize the
cell. (Normally, positive membrane currents are outward and thus hyperpolarize
the cell)
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
DEFINE NSTEP 3
NEURON {
POINT_PROCESS SEVClamp
ELECTRODE_CURRENT i
RANGE dur, amp, rs, vc, i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(uS) = (micromho)
}
PARAMETER {
v (mV)
rs = 1 (megohm) : series resistance
}
ASSIGNED {
i (nA)
vc (mV)
ic (nA)
tc2 (ms)
tc3 (ms)
dur[NSTEP] (ms)
amp[NSTEP] (mV)
on
}
INITIAL {
tc2 = dur[0] + dur[1]
tc3 = tc2 + dur[2]
on = 0
}
BREAKPOINT {
SOLVE vstim
if (on) {
i = (vc  v)/rs
}else{
i = 0
}
}
PROCEDURE vstim() {
on = 1
if (t < dur[0]) {
vc = amp[0]
}else if (t < tc2) {
vc = amp[1]
}else if (t < tc3) {
vc = amp[2]
}else {
vc = 0
on = 0
}
if (on) {
}else{
ic = 0
}
VERBATIM
return 0;
ENDVERBATIM
}
