def SxyzRecur(a, b, a_array, b_array, la=0, ma=0, na=0, lb=0, mb=0, nb=0, Norm=False): Na = 1 Nb = 1 if la < 0 or ma < 0 or na < 0 or lb < 0 or mb < 0 or nb < 0: return 0 if not Norm: Na = norm_GTO(a, la, ma, na) Nb = norm_GTO(b, lb, mb, nb) dAB_2 = ((a_array - b_array)**2).sum() K = K_GTO(a, b, dAB_2) p_array = b / (a + b) * b_array + a / (a + b) * a_array PA_array = p_array - a_array PB_array = p_array - b_array Ix = _Sij(a, b, PA_array[0], PB_array[0], la, lb) Iy = _Sij(a, b, PA_array[1], PB_array[1], ma, mb) Iz = _Sij(a, b, PA_array[2], PB_array[2], na, nb) return Na * Nb * K * Ix * Iy * Iz
def phi_2c1e(i, j, k, l, m, n, a, b, Kab, rPA, rPB, rPC, PC2, Norm=False): p = a + b Na = 1 Nb = 1 if not Norm: Na = norm_GTO(a, i, j, k) Nb = norm_GTO(b, l, m, n) return Na * Nb * phi_2c1e_nNorm(0, 0, 0, i, j, k, l, m, n, p, Kab, rPA, rPB, rPC, PC2)
def gabcd(la, lb, lc, ld, ma, mb, mc, md, na, nb, nc, nd, a, b, c, d, rA, rB, rC, rD, Norm=False): Na = 1 Nb = 1 Nc = 1 Nd = 1 p = a + b q = c + d rP = (a * rA + b * rB) / p rQ = (c * rC + d * rD) / q rPA = rP - rA rPB = rP - rB rQC = rQ - rC rQD = rQ - rD rAB = rA - rB rCD = rC - rD rPQ = rP - rQ AB2 = (rAB**2).sum() CD2 = (rCD**2).sum() PQ2 = (rPQ**2).sum() Kab_Kcd = K_GTO(a, b, AB2) * K_GTO(c, d, CD2) if not Norm: Na = norm_GTO(a, la, ma, na) Nb = norm_GTO(b, lb, mb, nb) Nc = norm_GTO(c, lc, mc, nc) Nd = norm_GTO(d, ld, md, nd) return Na * Nb * Nc * Nd * gabcd_nNorm(la, lb, lc, ld, ma, mb, mc, md, na, nb, nc, nd, a, b, c, d, Kab_Kcd, rPA, rPB, rQC, rQD, rPQ, PQ2)
def phi_2c1e(i, j, k, l, m, n, a, b, rA, rB, rC, Norm=False): p = a + b Na = 1 Nb = 1 rP = (a * rA + b * rB) / p rPA = rP - rA rPB = rP - rB rPC = rP - rC AB2 = ((rA - rB)**2).sum() PC2 = (rPC**2).sum() Kab = K_GTO(a, b, AB2) if not Norm: Na = norm_GTO(a, i, j, k) Nb = norm_GTO(b, l, m, n) return Na * Nb * phi_2c1e_nNorm(0, 0, 0, i, l, j, m, k, n, p, Kab, rPA, rPB, rPC, PC2)
def kinetDefold(a, b, a_array, b_array, la, ma, na, lb, mb, nb, Norm=False): """ Return Kinetic Integrate of GTO A |aAl_a m_a n_a> and B |bBl_b m_b n_b> :param a: :param b: :param a_array: numpy.array :param b_array: numpy.array :param la: :param ma: :param na: :param lb: :param mb: :param nb: :return: """ Na = 1 Nb = 1 if la < 0 or ma < 0 or na < 0 or lb < 0 or mb < 0 or nb < 0: return 0 if not Norm: Na = norm_GTO(a, la, ma, na) Nb = norm_GTO(b, lb, mb, nb) dAB_2 = ((a_array - b_array)**2).sum() K = K_GTO(a, b, dAB_2) p_array = b / (a + b) * b_array + a / (a + b) * a_array PA_array = p_array - a_array PB_array = p_array - b_array Kl = _Tij(a, b, PA_array[0], PB_array[0], la, lb) * _Sij( a, b, PA_array[1], PB_array[1], ma, mb) * _Sij(a, b, PA_array[2], PB_array[2], na, nb) Km = _Sij(a, b, PA_array[0], PB_array[0], la, lb) * _Tij( a, b, PA_array[1], PB_array[1], ma, mb) * _Sij(a, b, PA_array[2], PB_array[2], na, nb) Kn = _Sij(a, b, PA_array[0], PB_array[0], la, lb) * _Sij( a, b, PA_array[1], PB_array[1], ma, mb) * _Tij(a, b, PA_array[2], PB_array[2], na, nb) return Na * Nb * K * (Kl + Km + Kn)