objref velec,mycmd,mycmda,mycmdb,mycmdc,mycmdd velec= new VClamp(0.5) vtempdur1 = 0 // for temporary storage of vtempamp1 = 0 // VClamp[0].dur[1] and amp[1] vV0=-70 vTR=10000 vSLOPE=0.006 vDEL=1000 mycmd = new Vector() // must create object outside proc mycmda = new Vector() // must create object outside proc mycmdb = new Vector() // must create object outside proc mycmdc = new Vector() // must create object outside proc mycmdd = new Vector() // must create object outside proc // invoke the following procedures as needed from the interpreter window // to use the ramp to drive the VClamp proc mkbirampd() { local vv0, sslope, ttr, vv1, ddel1 vv0 = $1 sslope = $2 ttr = $3 ddel1=$4 vv1 = vv0 + sslope*ttr/2 mycmda.resize(ddel1/dt) mycmda.fill(vv0) mycmdb.indgen(vv0, vv1, dt*sslope) mycmdc.indgen(vv0,vv1,dt*sslope) mycmdd.resize(ddel1/dt) mycmdd.fill(vv0) mycmdc.reverse() mycmd.resize(0) mycmd.append(mycmda,mycmdb,mycmdc,mycmdd) } proc vrampdelon() { vtempdur1 = VClamp[0].dur[1] vtempamp1 = VClamp[0].amp[1] // make sure VClamp will follow the command throughout the simulation VClamp[0].dur[1] =vTR+2*vDEL mycmd.play(&VClamp[0].amp[1],dt) print "VClamp[0].amp[1] is now driven by vector mycmd" } // to "disconnect" the ramp from the SEClamp proc vrampdeloff() { // restore VClamp[0].dur[1] to previously saved value VClamp[0].dur[1] = vtempdur1 VClamp[0].amp[1] = vtempamp1 mycmd.play_remove() print "VClamp[0].amp[1] has been released from mycmd" } mkbirampd(vV0,vSLOPE,vTR,vDEL)