示例#1
0
文件: overlap.py 项目: saltball/pyRHF
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
示例#2
0
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)
示例#3
0
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)
示例#4
0
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)
示例#5
0
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)