// $Header: /usr/site/nrniv/simctrl/hoc/RCS/local.hoc,v 1.11 2001/09/21 21:01:50 billl Exp $ // // This file contains local modifications to nrnoc.hoc and default.hoc // // Users should not edit nrnoc.hoc or default.hoc. Any local // changes to these files should be made in this file. // ------------------------------------------------------------ //* MODIFICATIONS TO NRNOC.HOC // The procedures declared here will overwrite any duplicate // procedures in nrnoc.hoc. // ------------------------------------------------------------ //** proc initMech: initialization of mechanism variables proc initMech() { // Initialization of mechanism variables // NOTE: if any changes are made to the NEURON block of any local mod // file, the user must add the necessary inits to initMisc1() // Range variables forall { if (ismembrane("na_ion")) { nai = na_init nai0_na_ion = na_init } if (ismembrane("k_ion")) { ki = k_init ki0_k_ion = k_init } if (ismembrane("ca_ion")) { cai = ca_init cai0_ca_ion = ca_init } } } //** proc setMemb proc setMemb() { local isum, aca, prevwarn prevwarn = 1e10 // flag for previous warning given forall { isum = 0.0 if (ismembrane("Pass")) { if (ismembrane("na_ion")) { isum = isum + ina } if (ismembrane("k_ion")) { isum = isum + ik } if (ismembrane("ca_ion")) { isum = isum + ica } if (ismembrane("other_ion")){ isum = isum + iother} if (isum == 0) { /* passive cmp so set erev = vrest */ erev_Pass = v } else { /* assume that g has been set and determine erev */ if (g_Pass > 0) { erev_Pass = v + isum/g_Pass } else { if (erev_Pass != v) { g_Pass = isum/(erev_Pass - v) } } } /* pick out the screw ups */ if (g_Pass <= 0) { sectionname(section) printf("ERROR: bad g (%g) in segment %s.\n",g_Pass, section) } if ((erev_Pass < -100 || erev_Pass > -50) && erev_Pass!=prevwarn) { sectionname(section) printf("WARNING: erev (%g) out of bounds in segment %s.\n",erev_Pass, section) prevwarn = erev_Pass } } /* Alain's M-M pump */ if (ismembrane("cad")) { kd_cad = cai*(-(cai * depth_cad *FARADAY) + cainf_cad * depth_cad * FARADAY - \ 5000*ica*taur_cad - depth_cad * FARADAY*kt_cad * taur_cad) kd_cad = kd_cad/(cai*depth_cad*FARADAY - cainf_cad * depth_cad * FARADAY + \ 5000*ica*taur_cad) } /* handle ca using cadecay */ if (ismembrane("cadecay")) { k0_cadecay = ica } if (ismembrane("cadxp")) { /* steady state : aca=pumpca/pump */ icaex_cadxp = 0.0 /* temporary to compare with old neuron */ aca = (k4_cadxp*cao + k1_cadxp*cai)/(k2_cadxp + k3_cadxp) /* set pump density to allow it to compensate incoming currents */ pump_cadxp = -(ica+icaex_cadxp)/((1e3)*2*FARADAY*(k3_cadxp*aca - k4_cadxp*cao)) pumpca_cadxp = aca*pump_cadxp printf("CA pump init: %g %g %g %g %g\n",aca,pump_cadxp,pumpca_cadxp,ica,icaex_cadxp) } } } //------------------------------------------------------------ //*MODIFICATIONS TO DEFAULT.HOC // // Vars added here may not be handled properly within nrnoc.hoc //------------------------------------------------------------ //** String defaults //** Simulation defaults long_dt = .001 // msec objref sfunc,tmpfile sfunc = new StringFunctions() // needed to use is_name() tmpfile = new File() // check for existence before opening a user's local.hoc file proc write_comment () { tmpfile.aopen("index") tmpfile.printf("%s\n",$s1) tmpfile.close() } func asin () { return atan($1/sqrt(1-$1*$1)) } func acos () { return atan(sqrt(1-$1*$1)/$1) } condor_run = 0 // define for compatability