Example #1
0
    def test_jk_pbc_local_fit(self):
        numpy.random.seed(12)
        nao = cell.nao_nr()
        dm = numpy.random.random((nao, nao))
        dm = dm + dm.T
        jkdf = mdf.MDF(cell)
        jkdf.metric = 'S'
        jkdf.auxbasis = 'weigend'
        jkdf.approx_sr_level = 2
        jkdf.gs = (5, ) * 3
        mf = mdf_jk.density_fit(mf0, with_df=jkdf)
        vj1, vk1 = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.15904061299113, 9)
        self.assertAlmostEqual(ek1, 280.2553652304353, 9)

        jkdf = mdf.MDF(cell)
        jkdf.metric = 'T'
        jkdf.approx_sr_level = 3
        jkdf.auxbasis = 'weigend'
        jkdf.gs = (5, ) * 3
        mf = mdf_jk.density_fit(mf0, with_df=jkdf)
        vj1, vk1 = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.17554856213894, 9)
        self.assertAlmostEqual(ek1, 280.27281092754305, 9)
Example #2
0
    def test_jk_pbc_local_fit(self):
        numpy.random.seed(12)
        nao = cell.nao_nr()
        dm = numpy.random.random((nao,nao))
        dm = dm + dm.T
        jkdf = mdf.MDF(cell)
        jkdf.metric = 'S'
        jkdf.auxbasis = 'weigend'
        jkdf.approx_sr_level = 2
        jkdf.gs = (5,)*3
        mf = mdf_jk.density_fit(mf0, with_df=jkdf)
        vj1, vk1 = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.15904061299113, 9)
        self.assertAlmostEqual(ek1, 280.2553652304353, 9)

        jkdf = mdf.MDF(cell)
        jkdf.metric = 'T'
        jkdf.approx_sr_level = 3
        jkdf.auxbasis = 'weigend'
        jkdf.gs = (5,)*3
        mf = mdf_jk.density_fit(mf0, with_df=jkdf)
        vj1, vk1 = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.17554856213894, 9)
        self.assertAlmostEqual(ek1, 280.27281092754305, 9)
Example #3
0
    def test_jk_pbc_local_fit(self):
        numpy.random.seed(12)
        nao = cell.nao_nr()
        dm = numpy.random.random((nao,nao))
        dm = dm + dm.T
        jkdf = mdf.MDF(cell)
        jkdf.metric = 'S'
        jkdf.auxbasis = 'weigend'
        jkdf.approx_sr_level = 2
        jkdf.gs = (5,)*3
        mf = mdf_jk.density_fit(mf0, with_df=jkdf)
        vj1, vk1 = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.17560414134402, 8)
        self.assertAlmostEqual(ek1, 280.27525544272237, 8)

        jkdf = mdf.MDF(cell)
        jkdf.metric = 'T'
        jkdf.approx_sr_level = 3
        jkdf.auxbasis = 'weigend'
        jkdf.gs = (5,)*3
        mf = mdf_jk.density_fit(mf0, with_df=jkdf)
        vj1, vk1 = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.1790506110278, 8)
        self.assertAlmostEqual(ek1, 280.2763653230468, 8)
Example #4
0
    def test_jk_single_kpt(self):
        mf = mdf_jk.density_fit(mf0, auxbasis='weigend', mesh=(11,)*3)
        mf.with_df.mesh = [11]*3
        mf.with_df.eta = 0.3
        mf.with_df.linear_dep_threshold = 1e-7
        dm = mf.get_init_guess()
        vj, vk = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 46.698950904264514, 8)
        self.assertAlmostEqual(ek1, 31.724297945923094, 8)

        numpy.random.seed(12)
        nao = cell.nao_nr()
        dm = numpy.random.random((nao,nao))
        dm = dm + dm.T
        vj1, vk1 = mf.get_jk(cell, dm, hermi=0)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.19379703364774, 8)
        self.assertAlmostEqual(ek1, 280.28450527230103, 8)

        numpy.random.seed(1)
        kpt = numpy.random.random(3)
        mydf = mdf.MDF(cell, [kpt]).set(auxbasis='weigend')
        mydf.linear_dep_threshold = 1e-7
        mydf.mesh = [11]*3
        mydf.eta = 0.3
        vj, vk = mydf.get_jk(dm, 1, kpt, exxdiv='ewald')
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 241.29955504573206+0j, 8)
        self.assertAlmostEqual(ek1, 691.76854602384913+0j, 8)
Example #5
0
    def test_jk(self):
        mf = mdf_jk.density_fit(mf0, auxbasis='weigend', gs=(5,)*3)
        dm = mf.get_init_guess()
        vj, vk = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 46.698923699173982, 9)
        self.assertAlmostEqual(ek1, 31.722934801807845, 9)

        numpy.random.seed(12)
        nao = cell.nao_nr()
        dm = numpy.random.random((nao,nao))
        dm = dm + dm.T
        vj1, vk1 = mf.get_jk(cell, dm, hermi=0)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.17738846073865, 9)
        self.assertAlmostEqual(ek1, 280.27434674577881, 9)

        numpy.random.seed(1)
        kpt = numpy.random.random(3)
        mydf = mdf.MDF(cell, [kpt])
        vj, vk = mydf.get_jk(dm, 0, kpt)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 240.96357256500787, 9)
        self.assertAlmostEqual(ek1, 691.41111361623132, 9)
Example #6
0
    def test_jk(self):
        mf = mdf_jk.density_fit(mf0, auxbasis='weigend', gs=(5,)*3)
        dm = mf.get_init_guess()
        vj, vk = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 46.698944426560104, 8)
        self.assertAlmostEqual(ek1, 31.723136985575099, 8)

        numpy.random.seed(12)
        nao = cell.nao_nr()
        dm = numpy.random.random((nao,nao))
        dm = dm + dm.T
        vj1, vk1 = mf.get_jk(cell, dm, hermi=0)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.18066893105836, 8)
        self.assertAlmostEqual(ek1, 280.27749933492305, 8)

        numpy.random.seed(1)
        kpt = numpy.random.random(3)
        mydf = mdf.MDF(cell, [kpt])
        vj, vk = mydf.get_jk(dm, 1, kpt)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 240.96370951556852, 8)
        self.assertAlmostEqual(ek1, 691.41117108086291, 8)
Example #7
0
    def test_jk_single_kpt(self):
        mf = mdf_jk.density_fit(mf0, auxbasis='weigend', gs=(5, ) * 3)
        mf.with_df.gs = [5] * 3
        mf.with_df.eta = 0.3
        dm = mf.get_init_guess()
        vj, vk = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 46.698952864035398, 8)
        self.assertAlmostEqual(ek1, 31.724297969652138, 8)

        numpy.random.seed(12)
        nao = cell.nao_nr()
        dm = numpy.random.random((nao, nao))
        dm = dm + dm.T
        vj1, vk1 = mf.get_jk(cell, dm, hermi=0)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.19367653513683, 8)
        self.assertAlmostEqual(ek1, 280.28452000317401, 8)

        numpy.random.seed(1)
        kpt = numpy.random.random(3)
        mydf = mdf.MDF(cell, [kpt]).set(auxbasis='weigend')
        mydf.gs = [5] * 3
        mydf.eta = 0.3
        vj, vk = mydf.get_jk(dm, 1, kpt)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 241.29943526257165 + 0j, 8)
        self.assertAlmostEqual(ek1, 691.76856392279456 + 0j, 8)
Example #8
0
    def test_jk(self):
        mf = mdf_jk.density_fit(mf0, auxbasis='weigend', gs=(5, ) * 3)
        dm = mf.get_init_guess()
        vj, vk = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 46.698952864038205, 8)
        self.assertAlmostEqual(ek1, 31.724297969654103, 8)

        numpy.random.seed(12)
        nao = cell.nao_nr()
        dm = numpy.random.random((nao, nao))
        dm = dm + dm.T
        vj1, vk1 = mf.get_jk(cell, dm, hermi=0)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.19367653513686, 8)
        self.assertAlmostEqual(ek1, 280.28452000317549, 8)

        numpy.random.seed(1)
        kpt = numpy.random.random(3)
        mydf = mdf.MDF(cell, [kpt])
        vj, vk = mydf.get_jk(dm, 1, kpt)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 241.29943526257196 + 0j, 8)
        self.assertAlmostEqual(ek1, 691.7685639227974 + 0j, 8)
Example #9
0
    def test_jk(self):
        mf = mdf_jk.density_fit(mf0, auxbasis='weigend', gs=(5, ) * 3)
        dm = mf.get_init_guess()
        vj, vk = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 46.698944426560104, 8)
        self.assertAlmostEqual(ek1, 31.723136985575099, 8)

        numpy.random.seed(12)
        nao = cell.nao_nr()
        dm = numpy.random.random((nao, nao))
        dm = dm + dm.T
        vj1, vk1 = mf.get_jk(cell, dm, hermi=0)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.18066893105836, 8)
        self.assertAlmostEqual(ek1, 280.27749933492305, 8)

        numpy.random.seed(1)
        kpt = numpy.random.random(3)
        mydf = mdf.MDF(cell, [kpt])
        vj, vk = mydf.get_jk(dm, 1, kpt)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 240.96370951556852, 8)
        self.assertAlmostEqual(ek1, 691.41117108086291, 8)
Example #10
0
    def test_jk(self):
        mf = mdf_jk.density_fit(mf0, auxbasis='weigend', gs=(5,)*3)
        dm = mf.get_init_guess()
        vj, vk = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 46.698951249368726, 8)
        self.assertAlmostEqual(ek1, 31.724431026527277, 8)

        numpy.random.seed(12)
        nao = cell.nao_nr()
        dm = numpy.random.random((nao,nao))
        dm = dm + dm.T
        vj1, vk1 = mf.get_jk(cell, dm, hermi=0)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.19444220341163, 8)
        self.assertAlmostEqual(ek1, 280.28473250798748, 8)

        numpy.random.seed(1)
        kpt = numpy.random.random(3)
        mydf = mdf.MDF(cell, [kpt])
        vj, vk = mydf.get_jk(dm, 1, kpt)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 241.30019902835264+0j, 8)
        self.assertAlmostEqual(ek1, 691.76877471308376+0j, 8)
Example #11
0
    def test_jk(self):
        mf = mdf_jk.density_fit(mf0, auxbasis='weigend', gs=(5, ) * 3)
        dm = mf.get_init_guess()
        vj, vk = mf.get_jk(cell, dm)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 46.698923699173982, 9)
        self.assertAlmostEqual(ek1, 31.722934801807845, 9)

        numpy.random.seed(12)
        nao = cell.nao_nr()
        dm = numpy.random.random((nao, nao))
        dm = dm + dm.T
        vj1, vk1 = mf.get_jk(cell, dm, hermi=0)
        ej1 = numpy.einsum('ij,ji->', vj1, dm)
        ek1 = numpy.einsum('ij,ji->', vk1, dm)
        self.assertAlmostEqual(ej1, 242.17738846073865, 9)
        self.assertAlmostEqual(ek1, 280.27434674577881, 9)

        numpy.random.seed(1)
        kpt = numpy.random.random(3)
        mydf = mdf.MDF(cell, [kpt])
        vj, vk = mydf.get_jk(dm, 0, kpt)
        ej1 = numpy.einsum('ij,ji->', vj, dm)
        ek1 = numpy.einsum('ij,ji->', vk, dm)
        self.assertAlmostEqual(ej1, 240.96357256500787, 9)
        self.assertAlmostEqual(ek1, 691.41111361623132, 9)
Example #12
0
File: hf.py Project: pedersor/pyscf
 def mix_density_fit(self, auxbasis=None, with_df=None):
     from pyscf.pbc.df import mdf_jk
     return mdf_jk.density_fit(self, auxbasis, with_df=with_df)
Example #13
0
 def mix_density_fit(self, auxbasis=None, with_df=None):
     from pyscf.df.addons import aug_etb_for_dfbasis
     from pyscf.pbc.df import mdf_jk
     if auxbasis is None:
         auxbasis = aug_etb_for_dfbasis(self.cell, beta=1.8, start_at=0)
     return mdf_jk.density_fit(self, auxbasis, with_df)
Example #14
0
File: hf.py Project: sunqm/pyscf
 def mix_density_fit(self, auxbasis=None, with_df=None):
     from pyscf.pbc.df import mdf_jk
     return mdf_jk.density_fit(self, auxbasis, with_df=with_df)