Beispiel #1
0
    def test_grad(self):
        coords = [(0.0, 0.1, 0.0)]
        charges = [1.00]
        mf = itrf.mm_charge(scf.RHF(mol), coords, charges).run()
        hfg = itrf.mm_charge_grad(grad.RHF(mf), coords, charges).run()
        self.assertAlmostEqual(numpy.linalg.norm(hfg.de), 26.978089280783195,
                               9)

        mfs = mf.as_scanner()
        e1 = mfs('''
                 H              -0.00000000   -0.000    0.001
                 H                 -0.00000000   -0.000    1.
                 H                 -0.00000000   -0.82    0.
                 H                 -0.91000000   -0.020    0.
                 ''')
        e2 = mfs('''
                 H              -0.00000000   -0.000   -0.001
                 H                 -0.00000000   -0.000    1.
                 H                 -0.00000000   -0.82    0.
                 H                 -0.91000000   -0.020    0.
                 ''')
        self.assertAlmostEqual((e1 - e2) / 0.002 * lib.param.BOHR,
                               hfg.de[0, 2], 5)

        bak = pyscf.DEBUG
        pyscf.DEBUG = 1
        ref = hfg.get_hcore()
        pyscf.DEBUG = 0
        v = hfg.get_hcore()
        self.assertAlmostEqual(abs(ref - v).max(), 0, 12)
        pyscf.DEBUG = bak
Beispiel #2
0
    def test_grad(self):
        coords = [(0.0,0.1,0.0)]
        charges = [1.00]
        mf = itrf.mm_charge(scf.RHF(mol), coords, charges).run()
        hfg = itrf.mm_charge_grad(grad.RHF(mf), coords, charges).run()
        self.assertAlmostEqual(numpy.linalg.norm(hfg.de), 26.978089280783195, 9)

        mfs = mf.as_scanner()
        e1 = mfs('''
                 H              -0.00000000   -0.000    0.001
                 H                 -0.00000000   -0.000    1.
                 H                 -0.00000000   -0.82    0.
                 H                 -0.91000000   -0.020    0.
                 ''')
        e2 = mfs('''
                 H              -0.00000000   -0.000   -0.001
                 H                 -0.00000000   -0.000    1.
                 H                 -0.00000000   -0.82    0.
                 H                 -0.91000000   -0.020    0.
                 ''')
        self.assertAlmostEqual((e1 - e2)/0.002*lib.param.BOHR, hfg.de[0,2], 5)

        bak = pyscf.DEBUG
        pyscf.DEBUG = 1
        ref = hfg.get_hcore()
        pyscf.DEBUG = 0
        v = hfg.get_hcore()
        self.assertAlmostEqual(abs(ref-v).max(), 0, 12)
        pyscf.DEBUG = bak
Beispiel #3
0
    def test_hcore_cart(self):
        coords = [(0.0, 0.1, 0.0)]
        charges = [1.00]
        mol = gto.M(verbose=0,
                    atom='''C    0.000  -0.300    0.2
                      Ne   0.310   0.820    0.1''',
                    basis='cc-pvdz',
                    cart=True)
        mf = itrf.mm_charge(scf.RHF(mol), coords, charges)
        h = mf.get_hcore()
        self.assertAlmostEqual(lib.finger(h), -147.92831183612765, 9)

        h = mf.nuc_grad_method().get_hcore()
        self.assertEqual(h.shape, (3, 30, 30))
        self.assertAlmostEqual(lib.finger(h), -178.29768724184771, 9)
Beispiel #4
0
    def test_hcore_cart(self):
        coords = [(0.0,0.1,0.0)]
        charges = [1.00]
        mol = gto.M(
            verbose = 0,
            atom = '''C    0.000  -0.300    0.2
                      Ne   0.310   0.820    0.1''',
            basis = 'cc-pvdz',
            cart = True)
        mf = itrf.mm_charge(scf.RHF(mol), coords, charges)
        h = mf.get_hcore()
        self.assertAlmostEqual(lib.finger(h), -147.92831183612765, 9)

        h = mf.nuc_grad_method().get_hcore()
        self.assertEqual(h.shape, (3,30,30))
        self.assertAlmostEqual(lib.finger(h), -178.29768724184771, 9)
Beispiel #5
0
 def test_energy(self):
     coords = [(0.0,0.1,0.0)]
     charges = [1.00]
     mf = itrf.mm_charge(scf.RHF(mol), coords, charges)
     self.assertAlmostEqual(mf.kernel(), 2.0042702433049024, 9)
Beispiel #6
0
 def test_energy(self):
     coords = [(0.0, 0.1, 0.0)]
     charges = [1.00]
     mf = itrf.mm_charge(scf.RHF(mol), coords, charges)
     self.assertAlmostEqual(mf.kernel(), 2.0042702433049024, 9)
Beispiel #7
0
 def test_grad(self):
     coords = [(0.0,0.1,0.0)]
     charges = [1.00]
     mf = itrf.mm_charge(scf.RHF(mol), coords, charges).run()
     hfg = itrf.mm_charge_grad(grad.RHF(mf), coords, charges).run()
     self.assertAlmostEqual(numpy.linalg.norm(hfg.de), 30.316453059873059, 9)
Beispiel #8
0
#!/usr/bin/python

from pyscf import gto, scf
from pyscf.qmmm import itrf

mol = gto.Mole()
mol.atom = ''' O                  0.00000000    0.00000000   -0.11081188
               H                 -0.00000000   -0.84695236    0.59109389
               H                 -0.00000000    0.89830571    0.52404783 '''
mol.basis = 'cc-pvdz'
mol.verbose = 4
mol.build()

coords = [(0.5, 0.6, 0.8)]
charges = [-0.5]
mf = itrf.mm_charge(scf.RHF(mol), coords, charges)
mf = scf.RHF(mol)
ehf = mf.kernel()