// This function is used to balance the membrane potential to v_init (= -70 mV)
// written by Yiota Poirazi, July 2001, poirazi@LNC.usc.edu
proc current_balance() {
// print "Note: This does not account for non-specific ion currents.\n"
finitialize($1)
printf("Balancing each compartment to %d mV\n", $1)
forall {
for (x) {
if (ismembrane("na_ion") && ismembrane("ca_ion") && ismembrane("Ca_ion") && (ismembrane("k_ion"))) {
e_pas(x)=(ina(x)+ik(x)+ica(x)+iCa(x)+g_pas(x)*v(x))/g_pas(x)
} else if (ismembrane("na_ion") && ismembrane("ca_ion") && (ismembrane("k_ion"))){
e_pas(x)=(ina(x)+ik(x)+ica(x)+g_pas(x)*v(x))/g_pas(x)
} else if (ismembrane("na_ion") && (ismembrane("k_ion"))) {
e_pas(x)=(ina(x)+ik(x)+g_pas(x)*v(x))/g_pas(x)
// printf("Section %s ina: %g ik: %g\n", secname(), ina(x), ik(x))
// psection()
} else {
print "simply assigning v(x)"
e_pas(x)=v(x)
}
fcurrent()
}
}
frecord_init()
}