示例#1
0
文件: C.py 项目: luglio/pyscf-mp2-f12
 def __init__(self, xmol, g=None):
     if g is None:
         g = int4g(xmol)
     o = xmol.no
     v = xmol.nv
     # c = xmol.nc
     # t = o + v + c
     h = o + v
     #
     kin = int2(xmol, 0)
     nuc = int2(xmol, 1)
     j = np.einsum("piqi->pq", g[:, :o, :, :o])
     k = np.einsum("piiq->pq", g[:, :o, :o, :])
     T = kin + nuc + j
     # K = T1 + k0
     K = np.empty(np.shape(T))
     K[:o, :o] = k[:o, :o]
     K[o:, o:] = k[o:, o:]
     K[:o, o:] = T[:o, o:]
     K[o:, :o] = T[o:, :o]
     # F0ca
     self.F0ca = T[h:, o:h] - k[h:, o:h]
     # Fcx, Fca, Fcc
     self.Fcx = T[h:, :o] - k[h:, :o]
     self.Fca = self.F0ca
     self.Fcc = T[h:, h:] - k[h:, h:]
     # Ktc, Ktv
     self.Ktc = K[:, h:]
     self.Ktv = K[:, o:h]
     # Ttc, Tth, Ttx
     self.Ttc = T[:, h:]
     self.Tth = T[:, :h]
     self.Ttx = T[:, :o]
示例#2
0
文件: C.py 项目: luglio/pyscf-mp2-f12
    def __init__(self, xmol, AO):
        x = xmol.no
        v = xmol.nv
        c = xmol.nc
        h = x + v
        t = h + c
        # g
        # _g = ao2mo_4s(AO.g, xmol.Xmo_coeff)
        _g = int4g(xmol)
        # self.g_PQRS = self.g
        self.g = _g
        self.g_PQij = self.g[:, :, :x, :x]
        self.g_abij = self.g[x:h, x:h, :x, :x]
        self.g_ijab = self.g[:x, :x, x:h, x:h]
        # for QA
        self.g_pqij = self.g[:h, :h, :x, :x]
        self.g_Ajij = self.g[h:, :x, :x, :x]
        self.g_iBij = self.g[:x, h:, :x, :x]

        # r
        r_ao = np.load(AO.r)["r"]
        _r = ao2mo_4s(r_ao, xmol.Xmo_coeff)
        gc_(r_ao, "r_ao")
        r_int = _r[:x, :x, :, :]
        # Sxy
        self.r = 0.375 * r_int + 0.125 * r_int.transpose(1, 0, 2, 3)
        gc_(r_int, "r_mo_no_S")
        gc_(_r)
        # for C
        self.r_xyAb = self.r[:, :, h:, x:h]
        self.r_xyaB = self.r[:, :, x:h, h:]
        self.r_xyab = self.r[:, :, x:h, x:h]
        # for QA
        self.r_xypq = self.r[:, :, :h, :h]
        self.r_xyAj = self.r[:, :, h:, :x]
        self.r_xyiB = self.r[:, :, :x, h:]
        self.r_xyPq = self.r[:, :, :, :h]
        self.r_xypQ = self.r[:, :, :h, :]
        self.r_xyPj = self.r[:, :, :, :x]
        self.r_xyiQ = self.r[:, :, :x, :]
        # for QB
        self.r_xyAQ = self.r[:, :, h:, :]
        self.r_xyPB = self.r[:, :, h:, :]
        self.r_xyAB = self.r[:, :, h:, h:]
        self.r_xypB = self.r[:, :, :h, h:]
        self.r_xyAq = self.r[:, :, h:, :h]
        self.r_xyPb = self.r[:, :, :, x:h]
        self.r_xyaQ = self.r[:, :, x:h, :]

        # x
        x_ao = np.load(AO.x)["x"]
        _x = ao2mo_4s(x_ao, xmol.Xmo_coeff)
        gc_(x_ao, "x_ao")
        x_int = _x[:x, :x, :, :]
        # SxySvw
        self.x = 0.15625 * x_int + 0.09375 * x_int.transpose(1, 0, 2, 3)
        gc_(x_int, "x_mo_no_S")
        gc_(_x)
        # for pi
        self.x_xyPw = self.x[:, :, :, :x]
        self.x_xyvQ = self.x[:, :, :x, :]
        # for x
        self.x_xyvw = self.x[:, :, :x, :x]

        # d
        d_ao = np.load(AO.d)["d"]
        _d = ao2mo_4s(d_ao, xmol._vhf.mo_coeff)
        gc_(d_ao, "d_ao")
        d_int = _d[:x, :x, :x, :x]
        # SxySvw
        self.d_xyvw = 0.15625 * d_int + 0.09375 * d_int.transpose(1, 0, 2, 3)
        gc_(d_int, "d_mo_no_S")
        gc_(_d)

        # v
        v_ao = np.load(AO.v)["v"]
        _v = ao2mo_4s(v_ao, xmol._vhf.mo_coeff)
        v_int = _v[:x, :x, :x, :x]
        # Sxy
        self.v_xyij = 0.375 * v_int + 0.125 * v_int.transpose(1, 0, 2, 3)
        gc_(v_int, "v_mo_no_S")
        gc_(_v)
示例#3
0
文件: A.py 项目: luglio/pyscf-mp2-f12
    def __init__(self, xmol, AO):
        x = xmol.no
        v = xmol.nv
        c = xmol.nc
        h = x + v
        t = h + c
        # g
        #_g = ao2mo_4s(AO.g, xmol.Xmo_coeff)
        _g = int4g(xmol)
        # self.g_PQRS = self.g
        self.g = _g
#        self.g_PQij = self.g[:, :, :x, :x]
#        self.g_abij = self.g[x:h, x:h, :x, :x]
#        self.g_ijab = self.g[:x, :x, x:h, x:h]
        # for QA
        self.g_pqij = self.g[:h, :h, :x, :x]
        self.g_Ajij = self.g[h:, :x, :x, :x]
        self.g_iBij = self.g[:x, h:, :x, :x]
        
        # r
        r_ao = np.load(AO.r)['r']
        r_int = ao2mo_4s(r_ao, xmol.Xmo_coeff)
        gc_(r_ao, 'r_ao')
        # Sxy
        self.r = 0.375 * r_int + 0.125 * r_int.transpose(1,0,2,3)
        gc_(r_int, 'r_mo_no_S')
        # for QA
        self.r_xypq = self.r[:x, :x, :h, :h]
        self.r_xyAj = self.r[:x, :x, h:, :x]
        self.r_xyiB = self.r[:x, :x, :x, h:]
        self.r_xyPq = self.r[:x, :x, :, :h]
        self.r_xypQ = self.r[:x, :x, :h, :]
        self.r_xyPj = self.r[:x, :x, :, :x]
        self.r_xyiQ = self.r[:x, :x, :x, :]
        self.r_xyAQ = self.r[:x, :x, h:, :]
        self.r_xyPB = self.r[:x, :x, :, h:]
        # for t with QA
        self.r_Pypq = self.r[:, :x, :h, :h]
        self.r_xQpq = self.r[:x, :, :h, :h]
        self.r_PyAj = self.r[:, :x, h:, :x]
        self.r_xQAj = self.r[:x, :, h:, :x]
        self.r_PyiB = self.r[:, :x, :x, h:]
        self.r_xQiB = self.r[:x, :, :x, h:]
        
        # x
        '''
        x_ao = np.load(AO.x)['x']
        _x = ao2mo_4s(x_ao, xmol._vhf.mo_coeff)
        gc_(x_ao, 'x_ao')
        x_int = _x[:x, :x, :x, :x]
        # SxySvw
        self.x_xyvw = 0.15625 * x_int + 0.09375 * x_int.transpose(1,0,2,3)
        gc_(x_int, 'x_mo_no_S')
        gc_(_x)
        '''
        
        # d
        d_ao = np.load(AO.d)['d']
        _d = ao2mo_4s(d_ao, xmol._vhf.mo_coeff)
        gc_(d_ao, 'd_ao')
        d_int = _d[:x, :x, :x, :x]
        # SxySvw
        self.d_xyvw = 0.15625 * d_int + 0.09375 * d_int.transpose(1,0,2,3)
        gc_(d_int, 'd_mo_no_S')
        gc_(_d)
        
        # v
        v_ao = np.load(AO.v)['v']
        _v = ao2mo_4s(v_ao, xmol._vhf.mo_coeff)
        v_int = _v[:x, :x, :x, :x]
        # Sxy
        self.v_xyij = 0.375 * v_int + 0.125 * v_int.transpose(1,0,2,3)
        gc_(v_int, 'v_mo_no_S')
        gc_(_v)