def rangos(self, Hessii, Etot, n_interv): """ 0.5*k*DQ^2 = E_tot""" my.hess_check(Hessii) d = [dict() for n in range(len(Hessii))] DQ = [sqrt(2.0 * Etot / hii) for hii in Hessii] n1 = 0 for bond in self.bonds: n2 = 0 low = self.b0[n1] - DQ[n1] interv = 2. * DQ[n1] / float(n_interv) for i in range(n_interv): rango = (low + i * interv, low + (i + 1) * interv) d[n1][rango] = 0 n1 += 1 n1 = len(self.b0) for ang in self.angles: low = self.a0[n1 - len(self.b0)] - DQ[n1] interv = 2. * DQ[n1] / float(n_interv) for i in range(n_interv): rango = (low + i * interv, low + (i + 1) * interv) d[n1][rango] = 0 n1 += 1 n1 = len(self.b0) + len(self.a0) cte = len(self.b0) + len(self.a0) for dieh in self.dihedrals: low = self.d0[n1 - cte] - DQ[n1] interv = 2. * DQ[n1] / float(n_interv) for i in range(n_interv): rango = (low + i * interv, low + (i + 1) * interv) d[n1][rango] = 0 n1 += 1 return d