#!/usr/bin/env python # # Author: Qiming Sun <*****@*****.**> # from pyscf.pbc.df import df_ao2mo from mpi4pyscf.tools import mpi comm = mpi.comm rank = mpi.rank get_eri = mpi.call_then_reduce(df_ao2mo.get_eri) general = mpi.call_then_reduce(df_ao2mo.general) if __name__ == '__main__': import numpy import pyscf.pbc.gto as pgto from mpi4pyscf.pbc import df L = 5. n = 5 cell = pgto.Cell() cell.a = numpy.diag([L,L,L]) cell.gs = numpy.array([n,n,n]) cell.atom = '''He 3. 2. 3. He 1. 1. 1.''' #cell.basis = {'He': [[0, (1.0, 1.0)]]} #cell.basis = '631g' #cell.basis = {'He': [[0, (2.4, 1)], [1, (1.1, 1)]]}
#!/usr/bin/env python # # Author: Qiming Sun <*****@*****.**> # ''' JK with analytic Fourier transformation ''' import numpy from pyscf.pbc.df import aft_jk from mpi4pyscf.tools import mpi comm = mpi.comm rank = mpi.rank get_j_kpts = mpi.call_then_reduce(aft_jk.get_j_kpts) @mpi.parallel_call def get_k_kpts(mydf, dm_kpts, hermi=1, kpts=numpy.zeros((1, 3)), kpts_band=None, exxdiv=None): if rank != 0: # to apply df_jk._ewald_exxdiv_for_G0 function once exxdiv = None vk = aft_jk.get_k_kpts(mydf, dm_kpts, hermi, kpts, kpts_band, exxdiv) vk = mpi.reduce(vk) return vk
#!/usr/bin/env python # # Author: Qiming Sun <*****@*****.**> # from pyscf.pbc.df import df_ao2mo from mpi4pyscf.tools import mpi comm = mpi.comm rank = mpi.rank get_eri = mpi.call_then_reduce(df_ao2mo.get_eri) general = mpi.call_then_reduce(df_ao2mo.general) if __name__ == '__main__': import numpy import pyscf.pbc.gto as pgto from mpi4pyscf.pbc import df L = 5. n = 11 cell = pgto.Cell() cell.a = numpy.diag([L,L,L]) cell.mesh = numpy.array([n,n,n]) cell.atom = '''He 3. 2. 3. He 1. 1. 1.''' #cell.basis = {'He': [[0, (1.0, 1.0)]]} #cell.basis = '631g' #cell.basis = {'He': [[0, (2.4, 1)], [1, (1.1, 1)]]}
kpts = mf.kpts else: kpts = numpy.reshape(mf.kpt, (1,3)) with_df = mdf.MDF(mf.cell, kpts) with_df.max_memory = mf.max_memory with_df.stdout = mf.stdout with_df.verbose = mf.verbose with_df.auxbasis = auxbasis if mesh is not None: with_df.mesh = mesh mf.with_df = with_df return mf get_j_kpts = mpi.call_then_reduce(mdf_jk.get_j_kpts) @mpi.parallel_call def get_k_kpts(mydf, dm_kpts, hermi=1, kpts=numpy.zeros((1,3)), kpts_band=None, exxdiv=None): if rank != 0: # to apply df_jk._ewald_exxdiv_for_G0 function once exxdiv = None vk = mdf_jk.get_k_kpts(mydf, dm_kpts, hermi, kpts, kpts_band, exxdiv) vk = mpi.reduce(vk) return vk ################################################## # # Single k-point #
# Author: Qiming Sun <*****@*****.**> # ''' JK with analytic Fourier transformation ''' import numpy from pyscf.pbc.df import aft_jk from mpi4pyscf.tools import mpi comm = mpi.comm rank = mpi.rank get_j_kpts = mpi.call_then_reduce(aft_jk.get_j_kpts) @mpi.parallel_call def get_k_kpts(mydf, dm_kpts, hermi=1, kpts=numpy.zeros((1,3)), kpts_band=None, exxdiv=None): if rank != 0: # to apply df_jk._ewald_exxdiv_for_G0 function once exxdiv = None vk = aft_jk.get_k_kpts(mydf, dm_kpts, hermi, kpts, kpts_band, exxdiv) vk = mpi.reduce(vk) return vk ################################################## # # Single k-point #