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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)