: $Id: optopulse.mod, v1.0 2021/04/12 11:30AM Ruben Schoeters$
COMMENT
pointprocess optic pulse
ENDCOMMENT
NEURON{
POINT_PROCESS OPTO_pulse
RANGE osstart, osprp, osdc, osdur, Amp, Io
}
UNITS {
(W) = (watt)
}
PARAMETER{
osstart = 0 (ms)
osprp = 0 (ms)
osdc = 1
osdur = -1 (ms)
Amp = 0 (W/m2)
}
ASSIGNED{
Io (W/m2)
on (1)
}
INITIAL{
on = 0
Io=0
if (osdur>0){
net_send(osstart,1)
}
}
BREAKPOINT{
if(on==1){
Io = Amp
}else{
Io=0
}
}
NET_RECEIVE(w){
if (flag == 1){
if (on==0){
if (t>(osstart+osdur)){
on = 0
}else{
on = 1
if (osdc == 1){
net_send(osdur, 1)
}else{
net_send(osprp*osdc, 1)
}
}
} else {
on = 0
if (osdc != 1){
net_send(osprp*(1-osdc), 1)
}
}
}
}