From 059efc649d499aa1581a5b0eb7a4f692285f9156 Mon Sep 17 00:00:00 2001 From: Kevin Gasperich Date: Wed, 12 Feb 2020 08:28:41 -0600 Subject: [PATCH] working on converter find cleaner way to provide kpt_pair_num --- src/ao_basis/EZFIO.cfg | 1 + src/utils_complex/MolPyscfToQPkpts.py | 25 +++++++++------- .../create_ezfio_complex_3idx.py | 30 ++++++++++++++++++- 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/ao_basis/EZFIO.cfg b/src/ao_basis/EZFIO.cfg index b23d8b22..4b17acad 100644 --- a/src/ao_basis/EZFIO.cfg +++ b/src/ao_basis/EZFIO.cfg @@ -58,5 +58,6 @@ default: false [ao_kpt_num] type: integer doc: Number of |AOs| per kpt +default: =(ao_basis.ao_num/nuclei.kpt_num) interface: ezfio diff --git a/src/utils_complex/MolPyscfToQPkpts.py b/src/utils_complex/MolPyscfToQPkpts.py index 0a83e082..d76085d1 100644 --- a/src/utils_complex/MolPyscfToQPkpts.py +++ b/src/utils_complex/MolPyscfToQPkpts.py @@ -588,13 +588,16 @@ def pyscf2QP2(cell,mf, kpts, kmesh=None, cas_idx=None, int_threshold = 1E-8, ne_ao = ('V',v_kpts_ao,ne_threshold) ovlp_ao = ('S',np.reshape(mf.get_ovlp(cell=cell,kpts=kpts),(Nk,nao,nao)),ovlp_threshold) kin_ao = ('T',np.reshape(cell.pbc_intor('int1e_kin',1,1,kpts=kpts),(Nk,nao,nao)),kin_threshold) - - qph5.create_dataset('ao_one_e_ints/ao_integrals_kinetic', data=kin_ao[1].real) - qph5.create_dataset('ao_one_e_ints/ao_integrals_kinetic_imag',data=kin_ao[1].imag) - qph5.create_dataset('ao_one_e_ints/ao_integrals_overlap', data=ovlp_ao[1].real) - qph5.create_dataset('ao_one_e_ints/ao_integrals_overlap_imag',data=ovlp_ao[1].imag) - qph5.create_dataset('ao_one_e_ints/ao_integrals_n_e', data=v_kpts_ao.real) - qph5.create_dataset('ao_one_e_ints/ao_integrals_n_e_imag', data=v_kpts_ao.imag) + + kin_ao_blocked=scipy.linalg.block_diag(*kin_ao[1]) + ovlp_ao_blocked=scipy.linalg.block_diag(*ovlp_ao[1]) + ne_ao_blocked=scipy.linalg.block_diag(*v_kpts_ao) + qph5.create_dataset('ao_one_e_ints/ao_integrals_kinetic_real',data=kin_ao_blocked.real) + qph5.create_dataset('ao_one_e_ints/ao_integrals_kinetic_imag',data=kin_ao_blocked.imag) + qph5.create_dataset('ao_one_e_ints/ao_integrals_overlap_real',data=ovlp_ao_blocked.real) + qph5.create_dataset('ao_one_e_ints/ao_integrals_overlap_imag',data=ovlp_ao_blocked.imag) + qph5.create_dataset('ao_one_e_ints/ao_integrals_n_e_real', data=ne_ao_blocked.real) + qph5.create_dataset('ao_one_e_ints/ao_integrals_n_e_imag', data=ne_ao_blocked.imag) @@ -680,8 +683,8 @@ def pyscf2QP2(cell,mf, kpts, kmesh=None, cas_idx=None, int_threshold = 1E-8, outfile.write('%s %s %s %s %s %s\n' % (i+1,j+1,iaux+1,k+1,v.real,v.imag)) df_ao_tmp[i,j,iaux,k]=v - qph5.create_dataset('ao_two_e_ints/df_ao_array_real',data=df_ao_tmp.real) - qph5.create_dataset('ao_two_e_ints/df_ao_array_imag',data=df_ao_tmp.imag) + qph5.create_dataset('ao_two_e_ints/df_ao_integrals_real',data=df_ao_tmp.real) + qph5.create_dataset('ao_two_e_ints/df_ao_integrals_imag',data=df_ao_tmp.imag) if print_mo_ints_df: kpair_list=[] @@ -701,8 +704,8 @@ def pyscf2QP2(cell,mf, kpts, kmesh=None, cas_idx=None, int_threshold = 1E-8, if (abs(v) > bielec_int_threshold): outfile.write('%s %s %s %s %s %s\n' % (i+1,j+1,iaux+1,k+1,v.real,v.imag)) df_mo_tmp[i,j,iaux,k]=v - qph5.create_dataset('mo_two_e_ints/df_mo_array_real',data=df_mo_tmp.real) - qph5.create_dataset('mo_two_e_ints/df_mo_array_imag',data=df_mo_tmp.imag) + qph5.create_dataset('mo_two_e_ints/df_mo_integrals_real',data=df_mo_tmp.real) + qph5.create_dataset('mo_two_e_ints/df_mo_integrals_imag',data=df_mo_tmp.imag) diff --git a/src/utils_complex/create_ezfio_complex_3idx.py b/src/utils_complex/create_ezfio_complex_3idx.py index ff7fbbd7..449050e8 100755 --- a/src/utils_complex/create_ezfio_complex_3idx.py +++ b/src/utils_complex/create_ezfio_complex_3idx.py @@ -17,6 +17,8 @@ qph5=h5py.File(h5filename,'r') kpt_num = qph5['nuclei'].attrs['kpt_num'] ezfio.set_nuclei_kpt_num(kpt_num) +kpt_pair_num = (kpt_num*kpt_num + kpt_num)//2 +ezfio.set_nuclei_kpt_pair_num(kpt_pair_num) # should this be in ao_basis? ao_two_e_ints? df_num = qph5['ao_two_e_ints'].attrs['df_num'] @@ -110,4 +112,30 @@ ezfio.set_mo_basis_mo_coef_imag(qph5['mo_basis/mo_coef_imag'][()].tolist()) #maybe fix qp so we don't need this? ezfio.set_mo_basis_mo_coef([[i for i in range(mo_num)] * ao_num]) -ezfio.set_nuclei_is_periodic(True) +ezfio.set_nuclei_is_complex(True) + + +kin_ao_re=qph5['ao_one_e_ints/ao_integrals_kinetic_real'][()].T.tolist() +kin_ao_im=qph5['ao_one_e_ints/ao_integrals_kinetic_imag'][()].T.tolist() +ovlp_ao_re=qph5['ao_one_e_ints/ao_integrals_overlap_real'][()].T.tolist() +ovlp_ao_im=qph5['ao_one_e_ints/ao_integrals_overlap_imag'][()].T.tolist() +ne_ao_re=qph5['ao_one_e_ints/ao_integrals_n_e_real'][()].T.tolist() +ne_ao_im=qph5['ao_one_e_ints/ao_integrals_n_e_imag'][()].T.tolist() + +ezfio.set_ao_one_e_ints_ao_integrals_kinetic(kin_ao_re) +ezfio.set_ao_one_e_ints_ao_integrals_kinetic_imag(kin_ao_im) +ezfio.set_ao_one_e_ints_ao_integrals_overlap(ovlp_ao_re) +ezfio.set_ao_one_e_ints_ao_integrals_overlap_imag(ovlp_ao_im) +ezfio.set_ao_one_e_ints_ao_integrals_n_e(ne_ao_re) +ezfio.set_ao_one_e_ints_ao_integrals_n_e_imag(ne_ao_im) + +dfao_re=qph5['ao_two_e_ints/df_ao_integrals_real'][()].transpose((3,2,1,0)).tolist() +dfao_im=qph5['ao_two_e_ints/df_ao_integrals_imag'][()].transpose((3,2,1,0)).tolist() +ezfio.set_ao_two_e_ints_df_ao_integrals_real(dfao_re) +ezfio.set_ao_two_e_ints_df_ao_integrals_imag(dfao_im) + +#TODO: add check and only do this if ints exist +#dfmo_re=qph5['mo_two_e_ints/df_mo_integrals_real'][()].transpose((3,2,1,0)).tolist() +#dfmo_im=qph5['mo_two_e_ints/df_mo_integrals_imag'][()].transpose((3,2,1,0)).tolist() +#ezfio.set_mo_two_e_ints_df_mo_integrals_real(dfmo_re) +#ezfio.set_mo_two_e_ints_df_mo_integrals_imag(dfmo_im)