// 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_balancecb() {
finitialize($1)
fcurrent()
printf("Balancing each compartment to %d mV\n", $1)
forsec cbcell_list{
for (x) {
if (ismembrane("na_ion")) {e_pas(x)=v(x)+ina(x)/g_pas(x)}
if (ismembrane("k_ion")) {e_pas(x)=e_pas(x)+ik(x)/g_pas(x)}
if (ismembrane("ca_ion")) {e_pas(x)=e_pas(x)+ica(x)/g_pas(x)}
// if (ismembrane("Ca_ion")) {e_pas(x)=e_pas(x)+iCa(x)/g_pas(x)}
if (ismembrane("in_ion")) {e_pas(x)=e_pas(x)+in(x)/g_pas(x)} //ican
if (ismembrane("h")) {e_pas(x)=e_pas(x)+ihi(x)/g_pas(x)}
// d = distance(1,x)
// xdist = find_vector_distance_precise(secname(),x) // calc. perpedicular distance
// printf("x = %e, xdist = %e, d = %e, e_pas = %e mV, rm = %e mA/(mVcm2)\n", x, xdist, d, e_pas(x), 1./g_pas(x))
// fcurrent()
}
}
//finitialize(v_init)
fcurrent()
}
/*
if (cvode.active()) {
cvode.re_init()
} else {
fcurrent()
}
frecord_init()
*/