コード例 #1
0
ファイル: test_umc1step.py プロジェクト: pyscf/pyscf
    def test_with_x2c_scanner(self):
        mc1 = mcscf.UCASSCF(m, 4, 4).x2c().run()
        self.assertAlmostEqual(mc1.e_tot, -75.795316854668201, 6)

        mc1 = mcscf.UCASSCF(m, 4, 4).x2c().as_scanner().as_scanner()
        mc1(mol)
        self.assertAlmostEqual(mc1.e_tot, -75.795316865791847, 6)
コード例 #2
0
ファイル: test_umc1step.py プロジェクト: pyscf/pyscf
    def test_0core_0virtual(self):
        mol = gto.M(atom='He', basis='321g')
        mf = scf.UHF(mol).run()
        mc1 = mcscf.UCASSCF(mf, 2, 2).run()
        self.assertAlmostEqual(mc1.e_tot, -2.850576699649737, 9)

        mc1 = mcscf.UCASSCF(mf, 1, 2).run()
        self.assertAlmostEqual(mc1.e_tot, -2.8356798736405673, 9)

        mc1 = mcscf.UCASSCF(mf, 1, 0).run()
        self.assertAlmostEqual(mc1.e_tot, -2.8356798736405673, 9)
コード例 #3
0
def setUpModule():
    global mol, mfr, mcr, mfu, mcu, mcr_prg, mcr_prb, mfr_prg, mfr_prb, mcu_prg, mfu_prg
    b = 1.4
    mol = gto.Mole()
    mol.build(verbose=7,
              output='/dev/null',
              atom=[
                  ['N', (0.000000, 0.000000, -b / 2)],
                  ['N', (0.000000, 0.000000, b / 2)],
              ],
              basis={
                  'N': 'ccpvdz',
              },
              symmetry=1)
    mfr = scf.RHF(mol)
    mfr.scf()
    mcr = mcscf.CASSCF(mfr, 4, 4)
    mcr.conv_tol_grad = 1e-6
    mcr.mc1step()[0]

    mfu = scf.UHF(mol)
    mfu.scf()
    mcu = mcscf.UCASSCF(mfu, 4, 4)
    mcu.conv_tol_grad = 1e-6
    mcu.mc1step()[0]

    mol_prg = gto.M(verbose=0,
                    atom=[
                        ['N', (0.000000, 0.000000, -(b + 0.1) / 2)],
                        ['N', (0.000000, 0.000000, (b + 0.1) / 2)],
                    ],
                    basis='ccpvdz',
                    symmetry=1)
    mfr_prg = scf.RHF(mol_prg).set(max_cycle=1).run()
    mcr_prg = mcscf.CASSCF(mfr_prg, 4, 4).set(max_cycle_macro=1).run()
    mfu_prg = scf.UHF(mol_prg).set(max_cycle=1).run()
    mcu_prg = mcscf.UCASSCF(mfu_prg, 4, 4).set(max_cycle_macro=1).run()

    mol_prb = mol.copy()
    mol_prb.basis = {'N': 'aug-cc-pvdz'}
    mol_prb.build()
    mfr_prb = scf.RHF(mol_prb).set(max_cycle=1).run()
    mcr_prb = mcscf.CASSCF(mfr_prb, 4, 4).set(max_cycle_macro=1).run()
コード例 #4
0
ファイル: test_umc1step.py プロジェクト: zhcui/pyscf
    def test_external_fcisolver(self):
        fcisolver1 = fci.direct_uhf.FCISolver(mol)
        class FCI_as_DMRG(fci.direct_uhf.FCISolver):
            def __getattribute__(self, attr):
                """Prevent 'private' attribute access"""
                if attr in ('make_rdm1s', 'spin_square', 'contract_2e',
                            'absorb_h1e'):
                    raise AttributeError
                else:
                    return object.__getattribute__(self, attr)
            def kernel(self, *args, **kwargs):
                return fcisolver1.kernel(*args, **kwargs)
            def approx_kernel(self, *args, **kwargs):
                return fcisolver1.kernel(*args, **kwargs)

        mc = mcscf.UCASSCF(m, 5, (4,2))
        mc.fcisolver = FCI_as_DMRG(mol)
        mc.kernel()
        self.assertAlmostEqual(mc.e_tot, -75.755924721041396, 7)
コード例 #5
0
              ['N', (0.000000, 0.000000, -b / 2)],
              ['N', (0.000000, 0.000000, b / 2)],
          ],
          basis={
              'N': 'ccpvdz',
          },
          symmetry=1)
mfr = scf.RHF(mol)
mfr.scf()
mcr = mcscf.CASSCF(mfr, 4, 4)
mcr.conv_tol_grad = 1e-6
mcr.mc1step()[0]

mfu = scf.UHF(mol)
mfu.scf()
mcu = mcscf.UCASSCF(mfu, 4, 4)
mcu.conv_tol_grad = 1e-6
mcu.mc1step()[0]


def tearDownModule():
    global mol, mfr, mcr, mfu, mcu
    mol.stdout.close()
    del mol, mfr, mcr, mfu, mcu


class KnownValues(unittest.TestCase):
    def test_spin_square(self):
        ss = mcscf.addons.spin_square(mcr)[0]
        self.assertAlmostEqual(ss, 0, 7)
コード例 #6
0
              ['N', (0.000000, 0.000000, -b / 2)],
              ['N', (0.000000, 0.000000, b / 2)],
          ],
          basis={
              'N': 'ccpvdz',
          },
          symmetry=1)
mfr = scf.RHF(mol)
mfr.scf()
mcr = mcscf.CASSCF(mfr, 4, 4)
mcr.conv_tol_grad = 1e-6
mcr.mc1step()[0]

mfu = scf.UHF(mol)
mfu.scf()
mcu = mcscf.UCASSCF(mfu, 4, 4)
mcu.conv_tol_grad = 1e-6
mcu.mc1step()[0]

mol_prg = gto.M(verbose=0,
                atom=[
                    ['N', (0.000000, 0.000000, -(b + 0.1) / 2)],
                    ['N', (0.000000, 0.000000, (b + 0.1) / 2)],
                ],
                basis='ccpvdz',
                symmetry=1)
mfr_prg = scf.RHF(mol_prg).set(max_cycle=1).run()
mcr_prg = mcscf.CASSCF(mfr_prg, 4, 4).set(max_cycle_macro=1).run()
mfu_prg = scf.UHF(mol_prg).set(max_cycle=1).run()
mcu_prg = mcscf.UCASSCF(mfu_prg, 4, 4).set(max_cycle_macro=1).run()
コード例 #7
0
ファイル: test_umc1step.py プロジェクト: pyscf/pyscf
 def test_casci_in_casscf(self):
     mc1 = mcscf.UCASSCF(m, 5, (4, 2))
     e_tot, e_ci, fcivec = mc1.casci(mc1.mo_coeff)
     self.assertAlmostEqual(e_tot, -75.733190125187946, 9)
コード例 #8
0
ファイル: test_umc1step.py プロジェクト: pyscf/pyscf
 def test_frozen(self):
     mc = mcscf.UCASSCF(m, 5, (4, 2))
     mc.frozen = 2
     mc.kernel()
     self.assertAlmostEqual(mc.e_tot, -75.753628185779561, 7)
コード例 #9
0
 def test_ucasscf_high_cost(self):
     mc = mcscf.UCASSCF(msym, 4, (3, 1))
     emc = mc.kernel()[0]
     self.assertAlmostEqual(emc, -108.80789718975041, 7)
コード例 #10
0
UHF-CASSCF does impose the degeneracy between alpha and beta orbitals
'''

mol = gto.Mole()
mol.atom = [
    ["O", (0., 0., 0.7)],
    ["O", (0., 0., -0.7)],
]
mol.basis = 'cc-pvdz'
mol.spin = 2
mol.build()

mf = scf.UHF(mol)
print('E(UHF) = %.15g' % mf.kernel())

mc = mcscf.UCASSCF(mf, 4, (4, 2))
emc1 = mc.kernel()[0]
print('* Triplet with UHF-CASSCF, E(UCAS) = %.15g' % emc1)
# Generally, 2s+1 is not 3
print('  S^2 = %.6f, 2S+1 = %.6f' % mcscf.spin_square(mc))

print('\n')
mol.spin = 0
mol.build()
mf = scf.UHF(mol)
print('E(UHF) = %.15g' % mf.kernel())

mc = mcscf.UCASSCF(mf, 4, 6)
emc1 = mc.kernel()[0]
print('* Singlet with UHF-CASSCF, E(UCAS) = %.15g' % emc1)
# Generally, 2s+1 is not 1