Beispiel #1
0
 def test_rohf(self):
     pmol = mol.copy()
     pmol.charge = 1
     pmol.spin = 1
     pmol.build(False, False)
     mf = scf.density_fit(scf.ROHF(pmol))
     self.assertAlmostEqual(mf.scf(), -75.626515724371814, 9)
Beispiel #2
0
 def test_rohf(self):
     pmol = mol.copy()
     pmol.charge = 1
     pmol.spin = 1
     pmol.build(False, False)
     mf = scf.density_fit(scf.ROHF(pmol), auxbasis='weigend')
     self.assertAlmostEqual(mf.scf(), -75.626515724371814, 9)
Beispiel #3
0
 def test_uhf_veff(self):
     mf = scf.density_fit(scf.UHF(mol), auxbasis='weigend')
     nao = mol.nao_nr()
     numpy.random.seed(1)
     dm = numpy.random.random((2,4,nao,nao))
     vhf = mf.get_veff(mol, dm, hermi=0)
     self.assertAlmostEqual(numpy.linalg.norm(vhf), 413.82341595365853, 9)
Beispiel #4
0
def test_cc():  # pragma: nocover
    from pyscf import gto
    from pyscf import scf
    mol = gto.Mole()
    mol.atom = [[8, (0., 0., 0.)], [1, (0., -0.757, 0.587)],
                [1, (0., 0.757, 0.587)]]

    mol.basis = {
        'H': '3-21g',
        'O': '3-21g',
    }
    mol.build()
    rhf = scf.RHF(mol)
    rhf = scf.density_fit(scf.RHF(mol))
    rhf.scf()  # -76.0267656731
    from tcc.rccsd_mul import RCCSD_MUL_RI
    from tcc.rccsd_cpd import RCCSD_CPD_LS_T
    from tcc.cc_solvers import (residual_diis_solver, classic_solver,
                                root_solver)

    cc1 = RCCSD_CPD_LS_T(rhf, rankt={'t2': 20})
    cc2 = RCCSD_MUL_RI(rhf)

    converged1, energy1, amps1 = classic_solver(cc1, max_cycle=150)

    converged2, energy2, amps2 = classic_solver(cc2, max_cycle=150)
Beispiel #5
0
 def test_uhf_veff(self):
     mf = scf.density_fit(scf.UHF(mol))
     nao = mol.nao_nr()
     numpy.random.seed(1)
     dm = numpy.random.random((4,nao,nao))
     vhf = mf.get_veff(mol, dm, hermi=0)
     self.assertAlmostEqual(numpy.linalg.norm(vhf), 188.34081056589872, 9)
Beispiel #6
0
def test_cc_unit():  # pragma: nocover
    from pyscf import gto
    from pyscf import scf
    mol = gto.Mole()
    mol.atom = [[8, (0., 0., 0.)], [1, (0., -0.757, 0.587)],
                [1, (0., 0.757, 0.587)]]
    mol.basis = {
        'H': '3-21g',
        'O': '3-21g',
    }
    mol.build()
    rhf = scf.RHF(mol)
    rhf = scf.density_fit(scf.RHF(mol))
    rhf.scf()

    from tcc.rccsdt_ri import RCCSDT_UNIT_RI
    from tcc.cc_solvers import (classic_solver, update_diis_solver)
    cc = RCCSDT_UNIT_RI(rhf)

    converged, energy, amps = classic_solver(cc,
                                             conv_tol_energy=1e-8,
                                             max_cycle=100)
    cc._converged = False
    converged, energy, amps = update_diis_solver(cc,
                                                 conv_tol_energy=1e-8,
                                                 max_cycle=100)

    print('dE: {}'.format(energy - -1.304738e-01))
Beispiel #7
0
 def test_uhf_veff(self):
     mf = scf.density_fit(scf.UHF(mol), auxbasis='weigend')
     nao = mol.nao_nr()
     numpy.random.seed(1)
     dm = numpy.random.random((2, 4, nao, nao))
     vhf = mf.get_veff(mol, dm, hermi=0)
     self.assertAlmostEqual(numpy.linalg.norm(vhf), 413.82341595365853, 9)
Beispiel #8
0
 def test_uhf_veff(self):
     mf = scf.density_fit(scf.UHF(mol))
     nao = mol.nao_nr()
     numpy.random.seed(1)
     dm = numpy.random.random((4, nao, nao))
     vhf = mf.get_veff(mol, dm, hermi=0)
     self.assertAlmostEqual(numpy.linalg.norm(vhf), 199.20550115531233, 9)
Beispiel #9
0
def test_cc_t2f():  # pragma: nocover
    from pyscf import gto
    from pyscf import scf
    mol = gto.Mole()
    mol.atom = [
        [8, (0., 0., 0.)],
        [1, (0.,  -0.757, 0.587)],
        [1, (0., 0.757, 0.587)]]
    mol.basis = {'H': '3-21g',
                 'O': '3-21g', }
    mol.build()
    rhf = scf.RHF(mol)
    rhf.scf()
    rhfri = scf.density_fit(scf.RHF(mol))
    rhfri.scf()

    from tcc.rccsdt import RCCSDT, RCCSDT_UNIT
    from tcc.rccsdt_cpd import (RCCSDT_UNIT_nCPD_LS_T,
                                RCCSDT_UNIT_nCPD_T_LS_T)
    from tcc.cc_solvers import (classic_solver, step_solver)

    cc1 = RCCSDT_UNIT(rhf)
    cc2 = RCCSDT_UNIT_nCPD_T_LS_T(rhfri, rankt={'t3': 40})

    converged1, energy1, amps1 = classic_solver(
        cc1, conv_tol_energy=1e-7, lam=3,
        max_cycle=100)

    converged2, energy2, amps2 = step_solver(
        cc2, conv_tol_energy=1e-7, beta=1 - 1 / 5,
        max_cycle=100)

    print('E(full) - E(T2 CPD): {}'.format(energy2 - energy1))
Beispiel #10
0
    def test_rccsd_mul_ri(self):
        from pyscf import gto
        from pyscf import scf
        mol = gto.Mole()
        mol.atom = [[8, (0., 0., 0.)], [1, (0., -0.757, 0.587)],
                    [1, (0., 0.757, 0.587)]]

        mol.basis = {
            'H': 'sto-3g',
            'O': 'sto-3g',
        }
        mol.build(parse_arg=False)
        rhfri = scf.density_fit(scf.RHF(mol))
        rhfri.scf()  # -74.961181409648674

        from tcc.cc_solvers import classic_solver
        from tcc.rccsd_mul import RCCSD_MUL_RI
        cc = RCCSD_MUL_RI(rhfri)

        converged, energy, _ = classic_solver(cc,
                                              conv_tol_amps=1e-8,
                                              conv_tol_energy=1e-8)

        self.assertEqual(np.allclose(energy, -0.049399404240317468, 1e-6),
                         True)
Beispiel #11
0
def test_rccsd_cpd_true():
    from pyscf import gto
    from pyscf import scf
    mol = gto.Mole()
    mol.atom = [[8, (0., 0., 0.)], [1, (0., -0.757, 0.587)],
                [1, (0., 0.757, 0.587)]]

    mol.basis = '3-21g'
    mol.build()
    rhf_ri = scf.density_fit(scf.RHF(mol))
    rhf_ri.scf()

    from tcc.rccsd_cpd import (RCCSD_CPD_LS_T, RCCSD_CPD_LS_T_TRUE)

    cc1 = RCCSD_CPD_LS_T(rhf_ri, rankt={'t2': 30})
    cc2 = RCCSD_CPD_LS_T_TRUE(rhf_ri, rankt={'t2': 30})

    from tcc.cc_solvers import (update_diis_solver, classic_solver)

    converged1, energy1, amps1 = update_diis_solver(cc1,
                                                    conv_tol_energy=1e-8,
                                                    conv_tol_res=1e-8,
                                                    beta=0.666,
                                                    max_cycle=140)

    converged2, energy2, amps2 = update_diis_solver(cc2,
                                                    conv_tol_energy=1e-8,
                                                    conv_tol_res=1e-8,
                                                    beta=0.666,
                                                    max_cycle=140)
Beispiel #12
0
    def test_assign_cderi(self):
        nao = mol.nao_nr()
        w, u = scipy.linalg.eigh(mol.intor('int2e_sph', aosym='s4'))
        idx = w > 1e-9

        mf = scf.density_fit(scf.UHF(mol), auxbasis='weigend')
        mf._cderi = (u[:, idx] * numpy.sqrt(w[idx])).T.copy()
        self.assertAlmostEqual(mf.kernel(), -76.026765673110447, 9)
Beispiel #13
0
 def test_rohf_symm(self):
     pmol = mol.copy()
     pmol.charge = 1
     pmol.spin = 1
     pmol.symmetry = 1
     pmol.build(False, False)
     mf = scf.density_fit(scf.ROHF(pmol), auxbasis='weigend')
     self.assertAlmostEqual(mf.scf(), -75.626515724371814, 9)
Beispiel #14
0
    def test_assign_cderi(self):
        nao = mol.nao_nr()
        w, u = scipy.linalg.eigh(mol.intor('int2e_sph', aosym='s4'))
        idx = w > 1e-9

        mf = scf.density_fit(scf.UHF(mol), auxbasis='weigend')
        mf._cderi = (u[:,idx] * numpy.sqrt(w[idx])).T.copy()
        self.assertAlmostEqual(mf.kernel(), -76.026765673110447, 9)
Beispiel #15
0
 def test_rohf_symm(self):
     pmol = mol.copy()
     pmol.charge = 1
     pmol.spin = 1
     pmol.symmetry = 1
     pmol.build(False, False)
     mf = scf.density_fit(scf.ROHF(pmol))
     self.assertAlmostEqual(mf.scf(), -75.626515724371814, 9)
Beispiel #16
0
def run_ccsd():
    basis = BASIS
    dists = DISTS_REFERENCE.copy()
    lambdas = LAMBDAS_REFERENCE.copy()

    def make_mol(dist):
        from pyscf import gto
        mol = gto.Mole()
        mol.atom = [[7, (0., 0., 0.)], [7, (0., 0., dist)]]

        mol.basis = {'N': basis}
        mol.build()
        return mol

    mols = [make_mol(dist) for dist in dists]

    # Run all scfs here so we will have same starting points for CC
    run_scfs(mols, 'reference/{}/scfs_different_dist.p'.format(basis))
    with open('reference/{}/scfs_different_dist.p'.format(basis), 'rb') as fp:
        ref_scfs = pickle.load(fp)

    from tcc.rccsd_mul import RCCSD_MUL_RI
    energies = []
    amps = None
    for idxd, (dist, curr_scf) in enumerate(zip(dists, ref_scfs)):
        tim = time.process_time()
        rhf = scf.density_fit(scf.RHF(mols[idxd]))
        rhf.max_cycle = 1
        rhf.scf()
        e_scf, mo_coeff, mo_energy = curr_scf
        cc = RCCSD_MUL_RI(rhf, mo_coeff=mo_coeff, mo_energy=mo_energy)
        converged, energy, amps = residual_diis_solver(cc,
                                                       conv_tol_energy=1e-9,
                                                       conv_tol_res=1e-8,
                                                       max_cycle=500,
                                                       verbose=logger.NOTE,
                                                       amps=amps)

        energies.append(energy + e_scf)
        elapsed = time.process_time() - tim
        print('Step {} out of {}, dist = {}, time: {}\n'.format(
            idxd + 1, len(dists), dist, elapsed))
    np.savetxt('reference/{}/RCCSD.txt'.format(basis),
               np.column_stack((dists, energies)),
               header='U E_total')

    # Plot
    from matplotlib import pyplot as plt
    fig, ax = plt.subplots()
    plt.plot(dists, energies)
    plt.xlabel('$D, \AA$')
    plt.ylabel('$E$, H')
    plt.title('Energy in RCCSD (RI)')
    fig.show()
 def test_gto2sv_df(self):
     from pyscf import scf
     """ Test import of density-fitting Gaussian functions ... hm """
     mf = scf.density_fit(scf.RHF(mol))
     self.assertAlmostEqual(mf.scf(), -76.025936299702536, 2)
     sv = system_vars_c().init_pyscf_gto(mol)
     prod_log = prod_log_c().init_prod_log_df(mf.with_df.auxmol, sv)
     self.assertEqual(prod_log.rr[0], sv.ao_log.rr[0])
     self.assertEqual(prod_log.pp[0], sv.ao_log.pp[0])
     self.assertEqual(prod_log.nspecies, sv.ao_log.nspecies)
     self.assertEqual(prod_log.sp2charge, sv.ao_log.sp2charge)
 def test_gto2sv_df(self):
   from pyscf import scf
   """ Test import of density-fitting Gaussian functions ... hm """
   mf = scf.density_fit(scf.RHF(mol))
   self.assertAlmostEqual(mf.scf(), -76.025936299702536, 2)
   sv = nao(gto=mol)
   prod_log = prod_log_c().init_prod_log_df(mf.with_df.auxmol, sv)
   self.assertEqual(prod_log.rr[0], sv.ao_log.rr[0])
   self.assertEqual(prod_log.pp[0], sv.ao_log.pp[0])
   self.assertEqual(prod_log.nspecies, sv.ao_log.nspecies)
   self.assertEqual(prod_log.sp2charge, sv.ao_log.sp2charge)
Beispiel #19
0
 def test_gto2sv_df(self):
     from pyscf import scf
     """ Test import of density-fitting Gaussian functions ... hm """
     mf = scf.density_fit(scf.RHF(mol))
     self.assertAlmostEqual(mf.scf(), -76.025936299702536, 2)
     sv = nao(gto=mol)
     prod_log = prod_log_c(auxmol=mf.with_df.auxmol, nao=sv)
     self.assertEqual(prod_log.rr[0], sv.ao_log.rr[0])
     self.assertEqual(prod_log.pp[0], sv.ao_log.pp[0])
     self.assertEqual(prod_log.nspecies, sv.ao_log.nspecies)
     for a, b in zip(prod_log.sp2charge, sv.ao_log.sp2charge):
         self.assertEqual(a, b)
Beispiel #20
0
    def test_assign_cderi(self):
        nao = molsym.nao_nr()
        w, u = scipy.linalg.eigh(mol.intor('cint2e_sph', aosym='s4'))
        idx = w > 1e-9

        mf = scf.density_fit(scf.RHF(molsym))
        mf._cderi = (u[:,idx] * numpy.sqrt(w[idx])).T.copy()
        mf.kernel()

        mc = mcscf.DFCASSCF(mf, 6, 6)
        mc.kernel()
        self.assertAlmostEqual(mc.e_tot, -108.98010545803884, 7)
Beispiel #21
0
    def test_assign_cderi(self):
        nao = molsym.nao_nr()
        w, u = scipy.linalg.eigh(mol.intor('int2e_sph', aosym='s4'))
        idx = w > 1e-9

        mf = scf.density_fit(scf.RHF(molsym))
        mf._cderi = (u[:, idx] * numpy.sqrt(w[idx])).T.copy()
        mf.kernel()

        mc = mcscf.DFCASSCF(mf, 6, 6)
        mc.kernel()
        self.assertAlmostEqual(mc.e_tot, -108.98010545803884, 7)
Beispiel #22
0
 def test_df_ao2mo(self):
     mf = scf.density_fit(msym)
     mf.max_memory = 100
     mf.kernel()
     mc = mcscf.DFCASSCF(mf, 4, 4)
     eri0 = numpy.dot(mf._cderi.T, mf._cderi)
     nmo = mc.mo_coeff.shape[1]
     ncore = mc.ncore
     nocc = ncore + mc.ncas
     eri0 = ao2mo.restore(1, ao2mo.kernel(eri0, mc.mo_coeff), nmo)
     eris = mc.ao2mo(mc.mo_coeff)
     self.assertTrue(numpy.allclose(eri0[:,:,ncore:nocc,ncore:nocc], eris.ppaa))
     self.assertTrue(numpy.allclose(eri0[:,ncore:nocc,:,ncore:nocc], eris.papa))
Beispiel #23
0
 def test_nr_df_rohf(self):
     mol = gto.Mole()
     mol.build(
         verbose=0,
         atom=[["O", (0., 0., 0.)], [1, (0., -0.757, 0.587)],
               [1, (0., 0.757, 0.587)]],
         basis='cc-pvdz',
         charge=1,
         spin=1,
     )
     mf = scf.density_fit(scf.ROHF(mol))
     mf.conv_tol = 1e-11
     self.assertAlmostEqual(mf.scf(), -75.626515724371899, 9)
Beispiel #24
0
def run_cc_ref(workdir):
    from pyscf.lib import logger

    print('Running CC')

    # Restore RHF object
    with open(workdir + 'rhf_results.p', 'rb') as fp:
        rhf_results = pickle.load(fp)

    e_tot, mo_coeff, mo_energy, atom = rhf_results
    mol = gto.Mole()
    mol.atom = atom
    mol.basis = BASIS
    mol.build()

    rhf = scf.density_fit(scf.RHF(mol))
    rhf.max_cycle = 1
    rhf.scf()

    # Run RCCSD_RI
    from tcc.rccsd import RCCSD_DIR_RI
    from tcc.cc_solvers import residual_diis_solver

    tim = time.process_time()

    if (not isfile(workdir + 'ccsd_results.p')
            or not isfile(workdir + 'RCCSD.txt')):

        cc = RCCSD_DIR_RI(rhf,
                          mo_coeff=mo_coeff,
                          mo_energy=mo_energy)

        converged, energy, amps = residual_diis_solver(
            cc, conv_tol_energy=1e-9, conv_tol_res=1e-8,
            max_cycle=500,
            verbose=logger.INFO)

        ccsd_results = [energy, amps]
        with open(workdir + 'ccsd_results.p', 'wb') as fp:
            pickle.dump(ccsd_results, fp)

        np.savetxt(
            workdir + 'RCCSD.txt',
            np.array([energy, ]),
            header='Energy'
        )

    elapsed = time.process_time() - tim
    print('Done reference RCCSD, time: {}'.format(elapsed))
Beispiel #25
0
 def test_nr_df_rohf(self):
     mol = gto.Mole()
     mol.build(
         verbose = 0,
         atom = [
         ["O" , (0. , 0.     , 0.)],
         [1   , (0. , -0.757 , 0.587)],
         [1   , (0. , 0.757  , 0.587)] ],
         basis = 'cc-pvdz',
         charge = 1,
         spin = 1,
     )
     mf = scf.density_fit(scf.ROHF(mol))
     mf.conv_tol = 1e-11
     self.assertAlmostEqual(mf.scf(), -75.626515724371899, 9)
Beispiel #26
0
 def test_df_ao2mo(self):
     mf = scf.density_fit(msym)
     mf.max_memory = 100
     mf.kernel()
     mc = mcscf.DFCASSCF(mf, 4, 4)
     with df.load(mf._cderi) as feri:
         cderi = numpy.asarray(feri)
     eri0 = numpy.dot(cderi.T, cderi)
     nmo = mc.mo_coeff.shape[1]
     ncore = mc.ncore
     nocc = ncore + mc.ncas
     eri0 = ao2mo.restore(1, ao2mo.kernel(eri0, mc.mo_coeff), nmo)
     eris = mc.ao2mo(mc.mo_coeff)
     self.assertTrue(numpy.allclose(eri0[:,:,ncore:nocc,ncore:nocc], eris.ppaa))
     self.assertTrue(numpy.allclose(eri0[:,ncore:nocc,:,ncore:nocc], eris.papa))
Beispiel #27
0
 def test_nr_df_rohf(self):
     mol = gto.Mole()
     mol.build(
         verbose = 0,
         atom = [
         ["O" , (0. , 0.     , 0.)],
         [1   , (0. , -0.757 , 0.587)],
         [1   , (0. , 0.757  , 0.587)] ],
         basis = {"H": '6-31g',
                  "O": '6-31g',},
         charge = 1,
         spin = 1,
     )
     mf = scf.density_fit(scf.ROHF(mol))
     mf.conv_tol = 1e-11
     self.assertAlmostEqual(mf.scf(), -75.5775921401438, 9)
Beispiel #28
0
 def test_nr_df_rohf(self):
     mol = gto.Mole()
     mol.build(
         verbose=0,
         atom=[["O", (0., 0., 0.)], [1, (0., -0.757, 0.587)],
               [1, (0., 0.757, 0.587)]],
         basis={
             "H": '6-31g',
             "O": '6-31g',
         },
         charge=1,
         spin=1,
     )
     mf = scf.density_fit(scf.ROHF(mol), 'weigend')
     mf.conv_tol = 1e-11
     self.assertAlmostEqual(mf.scf(), -75.5775921401438, 9)
Beispiel #29
0
    def __init__(self, mf):
        self.mol = mf.mol
        self.verbose = self.mol.verbose
        self.stdout = self.mol.stdout
        self.max_memory = mf.max_memory
        self.nmo = len(mf.mo_energy)
        self.nocc = self.mol.nelectron // 2
        if hasattr(mf, 'with_df') and mf.with_df:
            self._scf = mf
        else:
            self._scf = scf.density_fit(mf)
            logger.warn(self, 'The input "mf" object is not DF object. '
                        'DF-MP2 converts it to DF object with  %s  basis',
                        self._scf.auxbasis)

        self.emp2 = None
        self.t2 = None
Beispiel #30
0
def run_scfs(mols, filename):
    scf_energies = []
    scf_mos = []
    scf_mo_energies = []
    for idm, mol in enumerate(mols):
        rhf = scf.density_fit(scf.RHF(mol))
        rhf.scf()
        scf_energies.append(rhf.e_tot)
        scf_mos.append(rhf.mo_coeff)
        scf_mo_energies.append(rhf.mo_energy)

    results = tuple(
        tuple([e_tot, mo_coeff, mo_energy]) for e_tot, mo_coeff, mo_energy in
        zip(scf_energies, scf_mos, scf_mo_energies))

    with open(filename, 'wb') as fp:
        pickle.dump(results, fp)
Beispiel #31
0
def test_cpd_unf():
    from pyscf import gto
    from pyscf import scf
    mol = gto.Mole()
    mol.atom = [[8, (0., 0., 0.)], [1, (0., -0.757, 0.587)],
                [1, (0., 0.757, 0.587)]]

    mol.basis = {
        'H': '3-21g',
        'O': '3-21g',
    }
    mol.build()
    rhf_ri = scf.density_fit(scf.RHF(mol))
    rhf_ri.scf()  # -76.0267656731

    from tcc.rccsd import RCCSD, RCCSD_DIR_RI
    from tcc.rccsd_cpd import (RCCSD_nCPD_LS_T, RCCSD_CPD_LS_T)

    from tcc.cc_solvers import (classic_solver, step_solver)

    cc1 = RCCSD_DIR_RI(rhf_ri)
    cc2 = RCCSD_nCPD_LS_T(rhf_ri, rankt={'t2': 30})
    cc3 = RCCSD_CPD_LS_T(rhf_ri, rankt={'t2': 30})

    converged1, energy1, amps1 = classic_solver(
        cc1,
        conv_tol_energy=1e-8,
    )

    converged2, energy2, amps2 = classic_solver(cc2,
                                                conv_tol_energy=1e-8,
                                                max_cycle=50)

    converged2, energy2, amps2 = step_solver(cc2,
                                             conv_tol_energy=1e-8,
                                             beta=0,
                                             max_cycle=150)

    converged3, energy3, amps3 = classic_solver(cc3,
                                                conv_tol_energy=1e-8,
                                                max_cycle=50)

    converged3, energy3, amps3 = step_solver(cc3,
                                             conv_tol_energy=1e-8,
                                             beta=0,
                                             max_cycle=150)
Beispiel #32
0
def test_cc():  # pragma: nocover
    from pyscf import gto
    from pyscf import scf
    mol = gto.Mole()
    mol.atom = [[8, (0., 0., 0.)], [1, (0., -0.757, 0.587)],
                [1, (0., 0.757, 0.587)]]
    mol.basis = {
        'H': '3-21g',
        'O': '3-21g',
    }
    mol.build()
    rhf = scf.RHF(mol)
    rhf = scf.density_fit(scf.RHF(mol))
    rhf.scf()

    from tcc.rccsdt_ri import RCCSDT_RI
    from tcc.rccsdt_cpd import RCCSDT_nCPD_LS_T
    from tcc.rccsdt_cpd import RCCSDT_CPD_LS_T
    from tcc.cc_solvers import (classic_solver, step_solver)
    cc1 = RCCSDT_RI(rhf)
    cc2 = RCCSDT_nCPD_LS_T(rhf, rankt={'t2': 20, 't3': 40})
    cc3 = RCCSDT_CPD_LS_T(rhf, rankt={'t2': 20, 't3': 40})

    converged1, energy1, amps1 = classic_solver(cc1,
                                                conv_tol_energy=1e-9,
                                                conv_tol_res=1e-8,
                                                max_cycle=100)

    print('dE: {}'.format(energy1 - -1.304876e-01))

    import numpy as np
    np.seterr(all='raise')
    import warnings
    warnings.filterwarnings("error")

    converged2, energy2, amps2 = step_solver(cc2,
                                             conv_tol_energy=1e-8,
                                             max_cycle=100)

    converged3, energy3, amps3 = step_solver(cc3,
                                             conv_tol_energy=1e-8,
                                             max_cycle=100)

    print('dE: {}'.format(energy2 - -0.12621546190311517))
    print('E(CPD)-E(nCPD): {}'.format(energy3 - energy2))
Beispiel #33
0
def test_mp2_energy():  # pragma: nocover
    from pyscf import gto
    from pyscf import scf
    mol = gto.Mole()
    mol.atom = [[8, (0., 0., 0.)], [1, (0., -0.757, 0.587)],
                [1, (0., 0.757, 0.587)]]

    mol.basis = {
        'H': 'cc-pvdz',
        'O': 'cc-pvdz',
    }
    mol.build()
    rhf = scf.RHF(mol)
    rhf = scf.density_fit(scf.RHF(mol))
    rhf.scf()  # -76.0267656731
    cc = RCCSD_MUL_RI(rhf)
    h = cc.create_ham()
    a = cc.init_amplitudes(h)
    energy = cc.calculate_energy(h, a)
    print('E_mp2 - E_cc,init = {:18.12g}'.format(energy - -0.204019967288338))
Beispiel #34
0
def test_cc():  # pragma: nocover
    from pyscf import gto
    from pyscf import scf
    mol = gto.Mole()
    mol.atom = [[8, (0., 0., 0.)], [1, (0., -0.757, 0.587)],
                [1, (0., 0.757, 0.587)]]

    mol.basis = {
        'H': 'cc-pvdz',
        'O': 'cc-pvdz',
    }
    mol.build()
    rhf = scf.RHF(mol)
    rhf = scf.density_fit(scf.RHF(mol))
    rhf.scf()  # -76.0267656731

    from tcc.cc_solvers import classic_solver
    from tcc.rccsd_mul import RCCSD_MUL_RI
    cc = RCCSD_MUL_RI(rhf)
    converged, energy, _ = classic_solver(cc)
Beispiel #35
0
 def test_rhf_veff(self):
     nao = mol.nao_nr()
     numpy.random.seed(1)
     dm = numpy.random.random((2,nao,nao))
     mf = scf.density_fit(scf.RHF(mol))
     vhf1 = mf.get_veff(mol, dm, hermi=0)
     naux = mf._cderi.shape[0]
     cderi = numpy.empty((naux,nao,nao))
     for i in range(naux):
         cderi[i] = lib.unpack_tril(mf._cderi[i])
     vj0 = []
     vk0 = []
     for dmi in dm:
         v1 = numpy.einsum('kij,ij->k', cderi, dmi)
         vj0.append(numpy.einsum('kij,k->ij', cderi, v1))
         v1 = numpy.einsum('pij,jk->pki', cderi, dmi.T)
         vk0.append(numpy.einsum('pki,pkj->ij', cderi, v1))
     vj1, vk1 = scf.dfhf.get_jk_(mf, mol, dm, 0)
     self.assertTrue(numpy.allclose(vj0, vj1))
     self.assertTrue(numpy.allclose(numpy.array(vk0), vk1))
     vhf0 = vj1 - vk1 * .5
     self.assertTrue(numpy.allclose(vhf0, vhf1))
Beispiel #36
0
 def test_rhf_veff(self):
     nao = mol.nao_nr()
     numpy.random.seed(1)
     dm = numpy.random.random((2, nao, nao))
     mf = scf.density_fit(scf.RHF(mol), auxbasis='weigend')
     vhf1 = mf.get_veff(mol, dm, hermi=0)
     naux = mf._cderi.shape[0]
     cderi = numpy.empty((naux, nao, nao))
     for i in range(naux):
         cderi[i] = lib.unpack_tril(mf._cderi[i])
     vj0 = []
     vk0 = []
     for dmi in dm:
         v1 = numpy.einsum('kij,ij->k', cderi, dmi)
         vj0.append(numpy.einsum('kij,k->ij', cderi, v1))
         v1 = numpy.einsum('pij,jk->pki', cderi, dmi.T)
         vk0.append(numpy.einsum('pki,pkj->ij', cderi, v1))
     vj1, vk1 = df_jk.get_jk(mf.with_df, dm, 0)
     self.assertTrue(numpy.allclose(vj0, vj1))
     self.assertTrue(numpy.allclose(numpy.array(vk0), vk1))
     vhf0 = vj1 - vk1 * .5
     self.assertTrue(numpy.allclose(vhf0, vhf1))
Beispiel #37
0
def build_rhf(workdir):
    print('Running SCF')
    if (not isfile(workdir + 'rhf_results.p')
            or not isfile(workdir + 'rhf_results.p')):

        mol = gto.Mole()
        mol.atom = load_geom(workdir)
        mol.basis = BASIS
        mol.build()
        rhf = scf.RHF(mol)
        rhf = scf.density_fit(scf.RHF(mol))
        rhf.scf()

        rhf_results = tuple([rhf.e_tot, rhf.mo_coeff, rhf.mo_energy, mol.atom])

        with open(workdir + 'rhf_results.p', 'wb') as fp:
            pickle.dump(rhf_results, fp)

        np.savetxt(
            workdir + 'RHF.txt',
            np.array([rhf.e_tot, ]),
            header='Energy'
        )
Beispiel #38
0
def test_cc_ri():  # pragma: nocover
    from pyscf import gto
    from pyscf import scf
    mol = gto.Mole()
    mol.atom = [['O', (0., 0., 0.)], ['H', (0., -0.757, 0.587)],
                ['H', (0., 0.757, 0.587)]]

    mol.basis = 'sto-3g'
    mol.build()
    rhf = scf.RHF(mol)
    rhf.scf()  # -76.0267656731

    rhf_ri = scf.density_fit(scf.RHF(mol))
    rhf_ri.scf()

    from tcc.cc_solvers import residual_diis_solver
    from tcc.cc_solvers import classic_solver
    from tcc.rccsd import RCCSD_DIR_RI, RCCSD
    cc1 = RCCSD_DIR_RI(rhf_ri)
    cc2 = RCCSD(rhf)

    converged1, energy2, _ = classic_solver(cc1, conv_tol_energy=-1)

    converged2, energy2, _ = classic_solver(cc2, conv_tol_energy=-1)
Beispiel #39
0
 def test_nr_df_rhf(self):
     rhf = scf.density_fit(scf.RHF(mol))
     rhf.conv_tol = 1e-11
     self.assertAlmostEqual(rhf.scf(), -76.025936299701982, 9)
Beispiel #40
0
 def test_uhf_symm(self):
     mf = scf.density_fit(scf.UHF(symol))
     self.assertAlmostEqual(mf.scf(), -76.025936299702536, 9)
Beispiel #41
0
 def test_nr_df_rhf(self):
     rhf = scf.density_fit(scf.RHF(mol), 'weigend')
     rhf.conv_tol = 1e-11
     self.assertAlmostEqual(rhf.scf(), -75.983210886950, 9)
Beispiel #42
0
 def test_dhf(self):
     pmol = mol.copy()
     pmol.build(False, False)
     mf = scf.density_fit(scf.DHF(pmol), auxbasis='weigend')
     mf.conv_tol = 1e-10
     self.assertAlmostEqual(mf.scf(), -76.080738677021458, 8)
Beispiel #43
0
 def test_dhf(self):
     pmol = mol.copy()
     pmol.build(False, False)
     mf = scf.density_fit(scf.DHF(pmol))
     self.assertAlmostEqual(mf.scf(), -76.080738685142961, 9)
Beispiel #44
0
  the Hessian for the large-basis-density-fitted-scf scheme.
"""

mol = gto.Mole()
mol.build(
    verbose=0,
    atom="""8  0  0.     0
              1  0  -0.757 0.587
              1  0  0.757  0.587""",
    basis="ccpvdz",
)

#
# 1. spin-free X2C-HF with density fitting approximation on 2E integrals
#
mf = scf.density_fit(scf.sfx2c(scf.RHF(mol)))
energy = mf.kernel()
print("E = %.12f, ref = -76.075115837941" % energy)

#
# 2. spin-free X2C correction for density-fitting HF.  Since X2C correction is
# commutable with density fitting operation, it is fully equivalent to case 1.
#
mf = scf.sfx2c(scf.density_fit(scf.RHF(mol)))
energy = mf.kernel()
print("E = %.12f, ref = -76.075115837941" % energy)

#
# 3. Newton method for non-relativistic HF
#
mo_init = mf.eig(mf.get_hcore(), mf.get_ovlp())[1]
Beispiel #45
0
 def test_rhf(self):
     mf = scf.density_fit(scf.RHF(mol))
     self.assertAlmostEqual(mf.scf(), -76.025936299702536, 9)
Beispiel #46
0
 def test_rhf_symm(self):
     mf = scf.density_fit(scf.RHF(symol), auxbasis='weigend')
     self.assertAlmostEqual(mf.scf(), -76.025936299702536, 9)
Beispiel #47
0
  the Hessian for the large-basis-density-fitted-scf scheme.
'''

mol = gto.Mole()
mol.build(
    verbose = 0,
    atom = '''8  0  0.     0
              1  0  -0.757 0.587
              1  0  0.757  0.587''',
    basis = 'ccpvdz',
)

#
# 1. spin-free X2C-HF with density fitting approximation on 2E integrals
#
mf = scf.density_fit(scf.sfx2c1e(scf.RHF(mol)))
mf = scf.RHF(mol).x2c().density_fit()  # Stream style
energy = mf.kernel()
print('E = %.12f, ref = -76.075408156180' % energy)

#
# 2. spin-free X2C correction for density-fitting HF.  Since X2C correction is
# commutable with density fitting operation, it is fully equivalent to case 1.
#
mf = scf.sfx2c1e(scf.density_fit(scf.RHF(mol)))
mf = scf.RHF(mol).density_fit().x2c()  # Stream style
energy = mf.kernel()
print('E = %.12f, ref = -76.075408156180' % energy)

#
# 3. The order to apply X2C or newton method matters.  If relativistic effects
int3c = df.incore.cholesky_eri(mol, auxbasis='ccpvdz-fit')

# Integrals on disk
ftmp = tempfile.NamedTemporaryFile()
df.outcore.cholesky_eri(mol, ftmp.name, auxbasis='ccpvdz-fit')


fake_mol = gto.M()
fake_mol.nelectron = 10  # Note: you need define the problem size

#
# Redefine the 2-electron integrals by overwriting mf._cderi with the given
# 3-center intagrals.  You need create density-fitting SCF object.  The
# regulare SCF object cannot hold the 3-center integrals.
#
mf = scf.density_fit(scf.RHF(fake_mol))
mf.get_hcore = lambda *args: (mol.intor('cint1e_kin_sph') +
                              mol.intor('cint1e_nuc_sph'))
mf.get_ovlp = lambda *args: mol.intor('cint1e_ovlp_sph')
mf._cderi = int3c
mf.init_guess = '1e'  # Initial guess from Hcore
mf.kernel()


#
# Assuming the 3-center integrals happens too huge to be held in memory, there
# is a hacky way to input the integrals.  The h5py dataset can be accessed in
# the same way as the numpy ndarray.
#
with h5py.File(ftmp.name, 'r') as file1:
    mf = scf.density_fit(scf.RHF(fake_mol))
Beispiel #49
0
 def test_nr_df_rhf(self):
     rhf = scf.density_fit(scf.RHF(mol), 'weigend')
     rhf.conv_tol = 1e-11
     self.assertAlmostEqual(rhf.scf(), -75.983210886950, 9)
Beispiel #50
0
        [8 , (0. , 0.     , 0.)],
        [1 , (0. , -0.757 , 0.587)],
        [1 , (0. , 0.757  , 0.587)]]

    mol.basis = 'cc-pvdz'
    mol.build()
    mf = scf.RHF(mol).run()
    pt = DFMP2(mf)
    emp2, t2 = pt.kernel()
    print(emp2 - -0.204004830285)

    pt.with_df = df.DF(mol)
    pt.with_df.auxbasis = 'weigend'
    emp2, t2 = pt.kernel()
    print(emp2 - -0.204254500453)

    mf = scf.density_fit(scf.RHF(mol), 'weigend')
    mf.kernel()
    pt = DFMP2(mf)
    emp2, t2 = pt.kernel()
    print(emp2 - -0.203986171133)

    pt.with_df = df.DF(mol)
    pt.with_df.auxbasis = df.make_auxbasis(mol, mp2fit=True)
    emp2, t2 = pt.kernel()
    print(emp2 - -0.203738031827)

    pt.frozen = 2
    emp2, t2 = pt.kernel()
    print(emp2 - -0.14433975122418313)
Beispiel #51
0
    def test_init(self):
        from pyscf import dft
        from pyscf import x2c
        mol_r = mol
        mol_u = gto.M(atom='Li', spin=1, verbose=0)
        mol_r1 = gto.M(atom='H', spin=1, verbose=0)
        sym_mol_r = molsym
        sym_mol_u = gto.M(atom='Li', spin=1, symmetry=1, verbose=0)
        sym_mol_r1 = gto.M(atom='H', spin=1, symmetry=1, verbose=0)
        self.assertTrue(isinstance(scf.RKS(mol_r), dft.rks.RKS))
        self.assertTrue(isinstance(scf.RKS(mol_u), dft.roks.ROKS))
        self.assertTrue(isinstance(scf.UKS(mol_r), dft.uks.UKS))
        self.assertTrue(isinstance(scf.ROKS(mol_r), dft.roks.ROKS))
        self.assertTrue(isinstance(scf.GKS(mol_r), dft.gks.GKS))
        self.assertTrue(isinstance(scf.KS(mol_r), dft.rks.RKS))
        self.assertTrue(isinstance(scf.KS(mol_u), dft.uks.UKS))

        self.assertTrue(isinstance(scf.RHF(mol_r), scf.hf.RHF))
        self.assertTrue(isinstance(scf.RHF(mol_u), scf.rohf.ROHF))
        self.assertTrue(isinstance(scf.RHF(mol_r1), scf.rohf.ROHF))
        self.assertTrue(isinstance(scf.UHF(mol_r), scf.uhf.UHF))
        self.assertTrue(isinstance(scf.UHF(mol_u), scf.uhf.UHF))
        self.assertTrue(isinstance(scf.UHF(mol_r1), scf.uhf.UHF))
        self.assertTrue(isinstance(scf.ROHF(mol_r), scf.rohf.ROHF))
        self.assertTrue(isinstance(scf.ROHF(mol_u), scf.rohf.ROHF))
        self.assertTrue(isinstance(scf.ROHF(mol_r1), scf.rohf.ROHF))
        self.assertTrue(isinstance(scf.HF(mol_r), scf.hf.RHF))
        self.assertTrue(isinstance(scf.HF(mol_u), scf.uhf.UHF))
        self.assertTrue(isinstance(scf.HF(mol_r1), scf.rohf.ROHF))
        self.assertTrue(isinstance(scf.GHF(mol_r), scf.ghf.GHF))
        self.assertTrue(isinstance(scf.GHF(mol_u), scf.ghf.GHF))
        self.assertTrue(isinstance(scf.GHF(mol_r1), scf.ghf.GHF))
        self.assertTrue(not isinstance(scf.DHF(mol_r), scf.dhf.RHF))
        self.assertTrue(isinstance(scf.DHF(mol_u), scf.dhf.UHF))
        self.assertTrue(isinstance(scf.DHF(mol_r1), scf.dhf.HF1e))

        self.assertTrue(isinstance(scf.RHF(sym_mol_r), scf.hf_symm.RHF))
        self.assertTrue(isinstance(scf.RHF(sym_mol_u), scf.hf_symm.ROHF))
        self.assertTrue(isinstance(scf.RHF(sym_mol_r1), scf.hf_symm.ROHF))
        self.assertTrue(isinstance(scf.UHF(sym_mol_r), scf.uhf_symm.UHF))
        self.assertTrue(isinstance(scf.UHF(sym_mol_u), scf.uhf_symm.UHF))
        self.assertTrue(isinstance(scf.UHF(sym_mol_r1), scf.uhf_symm.UHF))
        self.assertTrue(isinstance(scf.ROHF(sym_mol_r), scf.hf_symm.ROHF))
        self.assertTrue(isinstance(scf.ROHF(sym_mol_u), scf.hf_symm.ROHF))
        self.assertTrue(isinstance(scf.ROHF(sym_mol_r1), scf.hf_symm.ROHF))
        self.assertTrue(isinstance(scf.HF(sym_mol_r), scf.hf_symm.RHF))
        self.assertTrue(isinstance(scf.HF(sym_mol_u), scf.uhf_symm.UHF))
        self.assertTrue(isinstance(scf.HF(sym_mol_r1), scf.hf_symm.ROHF))
        self.assertTrue(isinstance(scf.GHF(sym_mol_r), scf.ghf_symm.GHF))
        self.assertTrue(isinstance(scf.GHF(sym_mol_u), scf.ghf_symm.GHF))
        self.assertTrue(isinstance(scf.GHF(sym_mol_r1), scf.ghf_symm.GHF))

        self.assertTrue(isinstance(scf.X2C(mol_r), x2c.x2c.UHF))
        self.assertTrue(isinstance(scf.sfx2c1e(scf.HF(mol_r)), scf.rhf.RHF))
        self.assertTrue(isinstance(scf.sfx2c1e(scf.HF(mol_u)), scf.uhf.UHF))
        self.assertTrue(isinstance(scf.sfx2c1e(scf.HF(mol_r1)), scf.rohf.ROHF))
        self.assertTrue(isinstance(scf.sfx2c1e(scf.HF(sym_mol_r)), scf.rhf_symm.RHF))
        self.assertTrue(isinstance(scf.sfx2c1e(scf.HF(sym_mol_u)), scf.uhf_symm.UHF))
        self.assertTrue(isinstance(scf.sfx2c1e(scf.HF(sym_mol_r1)), scf.hf_symm.ROHF))
        self.assertTrue(isinstance(scf.density_fit(scf.HF(mol_r)), scf.rhf.RHF))
        self.assertTrue(isinstance(scf.density_fit(scf.HF(mol_u)), scf.uhf.UHF))
        self.assertTrue(isinstance(scf.density_fit(scf.HF(mol_r1)), scf.rohf.ROHF))
        self.assertTrue(isinstance(scf.density_fit(scf.HF(sym_mol_r)), scf.rhf_symm.RHF))
        self.assertTrue(isinstance(scf.density_fit(scf.HF(sym_mol_u)), scf.uhf_symm.UHF))
        self.assertTrue(isinstance(scf.density_fit(scf.HF(sym_mol_r1)), scf.hf_symm.ROHF))
        self.assertTrue(isinstance(scf.newton(scf.HF(mol_r)), scf.rhf.RHF))
        self.assertTrue(isinstance(scf.newton(scf.HF(mol_u)), scf.uhf.UHF))
        self.assertTrue(isinstance(scf.newton(scf.HF(mol_r1)), scf.rohf.ROHF))
        self.assertTrue(isinstance(scf.newton(scf.HF(sym_mol_r)), scf.rhf_symm.RHF))
        self.assertTrue(isinstance(scf.newton(scf.HF(sym_mol_u)), scf.uhf_symm.UHF))
        self.assertTrue(isinstance(scf.newton(scf.HF(sym_mol_r1)), scf.hf_symm.ROHF))
Beispiel #52
0
    m = scf.RHF(mol)
    ehf = m.scf()
    mc = density_fit(mcscf.CASSCF(m, 6, 4))
    mc.verbose = 4
    mo = addons.sort_mo(mc, m.mo_coeff, (3,4,6,7,8,9), 1)
    emc = mc.kernel(mo)[0]
    print(ehf, emc, emc-ehf)
    #-76.0267656731 -76.0873922924 -0.0606266193028
    print(emc - -76.0873923174, emc - -76.0926176464)

    mc = density_fit(mcscf.CASSCF(m, 6, (3,1)))
    mc.verbose = 4
    emc = mc.mc2step(mo)[0]
    print(emc - -75.7155632535814)

    mf = scf.density_fit(m)
    mf.kernel()
    #mc = density_fit(mcscf.CASSCF(mf, 6, 4))
    #mc = mcscf.CASSCF(mf, 6, 4)
    mc = mcscf.DFCASSCF(mf, 6, 4)
    mc.verbose = 4
    mo = addons.sort_mo(mc, mc.mo_coeff, (3,4,6,7,8,9), 1)
    emc = mc.kernel(mo)[0]
    print(emc, 'ref = -76.0917567904955', emc - -76.0917567904955)

    #mc = density_fit(mcscf.CASCI(mf, 6, 4))
    #mc = mcscf.CASCI(mf, 6, 4)
    mc = mcscf.DFCASCI(mf, 6, 4)
    mo = addons.sort_mo(mc, mc.mo_coeff, (3,4,6,7,8,9), 1)
    emc = mc.kernel(mo)[0]
    print(emc, 'ref = -76.0476686258461', emc - -76.0476686258461)
Beispiel #53
0
    nocc = mol.nelectron // 2
    nmo = mf.mo_energy.size
    nvir = nmo - nocc

    co = mf.mo_coeff[:, :nocc]
    cv = mf.mo_coeff[:, nocc:]
    g = ao2mo.incore.general(mf._eri, (co, cv, co, cv)).ravel()
    eia = mf.mo_energy[:nocc, None] - mf.mo_energy[nocc:]
    t2ref0 = g / (eia.reshape(-1, 1) + eia.reshape(-1)).ravel()
    t2ref0 = t2ref0.reshape(nocc, nvir, nocc, nvir).transpose(0, 2, 1, 3)

    pt = MP2(mf)
    emp2, t2 = pt.kernel()
    print(emp2 - -0.204019967288338)
    print("incore", numpy.allclose(t2, t2ref0))
    pt.max_memory = 1
    print("direct", numpy.allclose(pt.kernel()[1], t2ref0))

    rdm1 = make_rdm1_ao(pt, mf.mo_energy, mf.mo_coeff)
    print(numpy.allclose(reduce(numpy.dot, (mf.mo_coeff, pt.make_rdm1(), mf.mo_coeff.T)), rdm1))

    eri = ao2mo.restore(1, ao2mo.kernel(mf._eri, mf.mo_coeff), nmo)
    rdm2 = pt.make_rdm2()
    e1 = numpy.einsum("ij,ij", mf.make_rdm1(), mf.get_hcore())
    e2 = 0.5 * numpy.dot(eri.flatten(), rdm2.flatten())
    print(e1 + e2 + mf.energy_nuc() - mf.e_tot - -0.204019976381)

    pt = MP2(scf.density_fit(mf))
    print(pt.kernel()[0] - -0.204254500454)
Beispiel #54
0
    for i in range(start, end, step):
        yield i, min(i+step, end)

if __name__ == '__main__':
    from pyscf import scf
    from pyscf import gto
    mol = gto.Mole()
    mol.verbose = 0
    mol.atom = [
        [8 , (0. , 0.     , 0.)],
        [1 , (0. , -0.757 , 0.587)],
        [1 , (0. , 0.757  , 0.587)]]

    mol.basis = 'cc-pvdz'
    mol.build()
    mf = scf.RHF(mol)
    mf.scf()
    pt = MP2(mf)
    pt.max_memory = .05
    emp2, t2 = pt.kernel()
    print(emp2 - -0.204254491987)

    mf = scf.density_fit(scf.RHF(mol))
    mf.scf()
    pt = MP2(mf)
    pt.max_memory = .05
    pt.ioblk = .05
    pt.verbose = 5
    emp2, t2 = pt.kernel()
    print(emp2 - -0.203986171133)
Beispiel #55
0
 def test_nr_df_uhf(self):
     uhf = scf.density_fit(scf.UHF(mol))
     uhf.conv_tol = 1e-11
     self.assertAlmostEqual(uhf.scf(), -76.025936299702096, 9)
from pyscf import gto, df, scf, mcscf

'''
Input Cholesky decomposed integrals for CASSCF

See also examples/df/40-precompute_df_ints.py
'''

mol = gto.M(atom='H 0 0 0; F 0 0 1', basis='ccpvdz')

#
# Integrals in memory. The size of the integral array is (M,N*(N+1)/2), where
# the last two AO indices are compressed due to the symmetry
#
int3c = df.incore.cholesky_eri(mol, auxbasis='ccpvdz-fit')
mf = scf.density_fit(scf.RHF(mol))
mf.with_df._cderi = int3c
mf.kernel()

# 3-cetner DF or Cholesky decomposed integrals need to be initialized once in
# mf.with_df._cderi.  DFCASSCF method automatically use the approximate integrals
mc = mcscf.DFCASSCF(mf, 8, 8)
mc.kernel()


#
# Integrals on disk
#
ftmp = tempfile.NamedTemporaryFile()
df.outcore.cholesky_eri(mol, ftmp.name, auxbasis='ccpvdz-fit')
Beispiel #57
0
    m.max_cycle = 1
    #m.verbose = 5
    m.scf()
    e1 = kernel(newton(m), m.mo_coeff, m.mo_occ, max_cycle=50, verbose=5)[1]

    m = scf.UHF(mol)
    m.max_cycle = 1
    #m.verbose = 5
    m.scf()
    e2 = kernel(newton(m), m.mo_coeff, m.mo_occ, max_cycle=50, verbose=5)[1]

    m = scf.UHF(mol)
    m.max_cycle = 1
    #m.verbose = 5
    m.scf()
    nrmf = scf.density_fit(newton(m))
    nrmf.max_cycle = 50
    nrmf.conv_tol = 1e-8
    nrmf.conv_tol_grad = 1e-5
    #nrmf.verbose = 5
    e4 = nrmf.kernel()

    m = scf.density_fit(scf.UHF(mol))
    m.max_cycle = 1
    #m.verbose = 5
    m.scf()
    nrmf = scf.density_fit(newton(m))
    nrmf.max_cycle = 50
    nrmf.conv_tol_grad = 1e-5
    e5 = nrmf.kernel()
Beispiel #58
0
    time0 = log.timer('mp2 ao2mo_ovov pass2', *time0)
    return h5dat

del(WITH_T2)


if __name__ == '__main__':
    from pyscf import scf
    from pyscf import gto
    mol = gto.Mole()
    mol.atom = [
        [8 , (0. , 0.     , 0.)],
        [1 , (0. , -0.757 , 0.587)],
        [1 , (0. , 0.757  , 0.587)]]

    mol.basis = 'cc-pvdz'
    mol.build()
    mf = scf.RHF(mol).run()
    mp = MP2(mf)
    mp.verbose = 5

    pt = MP2(mf)
    emp2, t2 = pt.kernel()
    print(emp2 - -0.204019967288338)
    pt.max_memory = 1
    emp2, t2 = pt.kernel()
    print(emp2 - -0.204019967288338)

    pt = MP2(scf.density_fit(mf, 'weigend'))
    print(pt.kernel()[0] - -0.204254500454)
Beispiel #59
0
                                         *time1)

    time0 = log.timer('mp2 ao2mo_ovov pass2', *time0)
    return h5dat


del (WITH_T2)

if __name__ == '__main__':
    from pyscf import scf
    from pyscf import gto
    mol = gto.Mole()
    mol.atom = [[8, (0., 0., 0.)], [1, (0., -0.757, 0.587)],
                [1, (0., 0.757, 0.587)]]

    mol.basis = 'cc-pvdz'
    mol.build()
    mf = scf.RHF(mol).run()
    mp = MP2(mf)
    mp.verbose = 5

    pt = MP2(mf)
    emp2, t2 = pt.kernel()
    print(emp2 - -0.204019967288338)
    pt.max_memory = 1
    emp2, t2 = pt.kernel()
    print(emp2 - -0.204019967288338)

    pt = MP2(scf.density_fit(mf, 'weigend'))
    print(pt.kernel()[0] - -0.204254500454)
Beispiel #60
0
 def test_nr_df_uhf(self):
     uhf = scf.density_fit(scf.UHF(mol))
     uhf.conv_tol = 1e-11
     self.assertAlmostEqual(uhf.scf(), -75.983210886950, 9)