示例#1
0
    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