'scf_type': 'pk', 'freeze_core': 'false', 'e_convergence': 1e-12, 'd_convergence': 1e-12, 'save_jk': 'true' }) psi4.set_module_options('SCF', {'E_CONVERGENCE': 1e-12}) psi4.set_module_options('SCF', {'D_CONVERGENCE': 1e-12}) e_scf, wfn = psi4.energy('SCF', return_wfn=True) print('SCF energy: {}\n'.format(e_scf)) no_vir = wfn.nmo() - wfn.doccpi()[0] - wfn.frzcpi()[0] pert = 'mu' pno_cut = 0 local = ccsd_lpno.HelperLocal(wfn.doccpi()[0], no_vir) hcc = ccsd_lpno.HelperCCEnergy(wfn, local=local, pert=pert, pno_cut=pno_cut) # Prepare the perturbations A_list = {} B_list = {} dirn_list = ['X', 'Y', 'Z'] dipole_array = hcc.mints.ao_dipole() angular_momentum = hcc.mints.ao_angular_momentum() i = 0 for dirn in dirn_list: A_list[dirn] = np.einsum('uj,vi,uv', hcc.C_arr, hcc.C_arr, np.asarray(dipole_array[i]))
scf_e, scf_wfn = psi4.energy('scf', return_wfn=True) hcc_mo = ccsd_lpno.HelperCCEnergy(scf_wfn, local=None, pert=None) ccsd_e = hcc_mo.do_CC() contrib_mo = 2.0 * contract( 'ijab,ijab->ij', hcc_mo.MO[:hcc_mo.no_occ, :hcc_mo.no_occ, hcc_mo.no_occ:, hcc_mo.no_occ:], hcc_mo.t_ijab) contrib_mo -= contract( 'ijba,ijab->ij', hcc_mo.MO[:hcc_mo.no_occ, :hcc_mo.no_occ, hcc_mo.no_occ:, hcc_mo.no_occ:], hcc_mo.t_ijab) print("MO contributions:\n{}".format(contrib_mo)) no_occ = scf_wfn.doccpi()[0] no_vir = scf_wfn.nmo() - scf_wfn.doccpi()[0] - scf_wfn.frzcpi()[0] local_pno = ccsd_lpno.HelperLocal(no_occ, no_vir) hcc_pno = ccsd_lpno.HelperCCEnergy(scf_wfn, local=local_pno, pert=None) ccsd_e = hcc_pno.do_CC(local=local_pno) #contrib_pno = hcc_pno.e_ij #contrib_pno = contract('ijab,ijab->ij', hcc_pno.MO[:self.no_occ, :self.no_occ, self.no_occ:, self.no_occ:], hcc_pno.t_ijab) MO_pno = hcc_pno.MO[:no_occ, :no_occ, no_occ:, no_occ:].copy() for i in range(no_occ): for j in range(no_occ): ij = i + no_occ * j Q_compute_pno = local_pno.Q_list[ij] print(local_pno.Q_list[ij].shape) MO_pno[i][j] = contract('Aa,ab,bB->AB', Q_compute_pno.T, MO_pno[i][j], Q_compute_pno) hcc_pno.t_ijab[i][j] = contract('Aa,ab,bB->AB', Q_compute_pno.T, hcc_pno.t_ijab[i][j], Q_compute_pno)