Example #1
0
        '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]))
Example #2
0
    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)