def test_molcas(): sys = pyopencap.System(sys_dict) pc = pyopencap.CAP(sys, cap_dict, 10) pc.read_data(es_dict) pc.compute_ao_cap(cap_dict) pc.compute_projected_cap() CAPH = CAPHamiltonian(pc=pc)
def test_heff(): sys = pyopencap.System(sys_dict) pc = pyopencap.CAP(sys, cap_dict, 10) pc.read_data(es_dict2) h0 = pc.get_H() print(h0[0][0]) assert np.isclose(h0[0][0], -109.312105)
def test_custom_grid(): s = pyopencap.System(sys_dict) pc = pyopencap.CAP(s, cap_dict, 5) pc.read_data(es_dict) pc.compute_projected_cap() e1 = get_corrected_energy(pc) pc = pyopencap.CAP(s, cap_dict, 5) pc.read_data(es_dict) import numgrid for center_index in range(len(center_coordinates_bohr)): coordinates, w = numgrid.atom_grid_bse( "aug-cc-pvtz", 1.0e-12, 590, 590, proton_charges, center_index, center_coordinates_bohr, hardness=3, ) coordinates = np.array(coordinates) x = np.array(coordinates[:, 0]) y = np.array(coordinates[:, 1]) z = np.array(coordinates[:, 2]) w = np.array(w) pc.compute_cap_on_grid(x, y, z, w) pc.compute_projected_cap() e2 = get_corrected_energy(pc) assert np.isclose(e1, e2)
def test_from_molden(): mol, myhf = get_hf() tools.molden.from_scf(myhf, "molden_file.molden") s = pyopencap.System(sys_dict) pyscf_smat = scf.hf.get_ovlp(mol) s.check_overlap_mat(pyscf_smat, "pyscf") os.remove("molden_file.molden")
def test_from_molden(): wfn, mints = get_ci_wfn() write_molden(wfn) S_mat = np.asarray(mints.ao_overlap()) s = pyopencap.System(molden_dict) s.check_overlap_mat(S_mat, "psi4") os.remove('h2.molden')
def test_numerical_integration(): s = pyopencap.System(sys_dict) pc = pyopencap.CAP(s, cap_dict, 5) pc.read_data(es_dict) pc.compute_projected_cap() e1 = get_corrected_energy(pc) pc.compute_ao_cap(cap_dict_numerical) e2 = get_corrected_energy(pc) assert np.isclose(e1, e2)
def test_custom_cap(): s = pyopencap.System(sys_dict) pc = pyopencap.CAP(s, {"cap_type": "custom"}, 5, box_cap) pc.read_data(es_dict) pc.compute_projected_cap() e1 = get_corrected_energy(pc) pc.compute_ao_cap(cap_dict) pc.compute_projected_cap() e2 = get_corrected_energy(pc) assert np.isclose(e1, e2)
def test_qchem(): sys = pyopencap.System(sys_dict) pc = pyopencap.CAP(sys, cap_dict, 5) pc.read_data(es_dict) pc.compute_ao_cap(cap_dict) pc.compute_projected_cap() W = pc.get_projected_cap() pc.compute_ao_cap(cap_dict2) pc.compute_projected_cap() W2 = pc.get_projected_cap() assert not W[0][0] == W2[0][0] CAPH = CAPHamiltonian(pc=pc)
def test_pyscf(): mol, myhf = get_hf() tools.molden.from_scf(myhf, "molden_file.molden") s = pyopencap.System(sys_dict) pc = pyopencap.CAP(s, cap_dict, 3) fs = fci.FCI(mol, myhf.mo_coeff) fs.nroots = 3 e, c = fs.kernel() for i in range(0, len(fs.ci)): for j in range(0, len(fs.ci)): dm1 = fs.trans_rdm1(fs.ci[i], fs.ci[j], myhf.mo_coeff.shape[1], mol.nelec) dm1_ao = np.einsum('pi,ij,qj->pq', myhf.mo_coeff, dm1, myhf.mo_coeff.conj()) pc.add_tdm(dm1_ao, i, j, "pyscf") pc.compute_projected_cap() os.remove("molden_file.molden")
def test_psi4(): ci_wfn, mints = get_ci_wfn() write_molden(ci_wfn) s = pyopencap.System(molden_dict) pc = pyopencap.CAP(s, cap_dict, nstates) mo_coeff = ci_wfn.Ca() S_mat = np.asarray(mints.ao_overlap()) n_bas = S_mat.shape[0] so2ao = mints.petite_list().sotoao() for i in range(0, nstates): for j in range(i, nstates): opdm_mo = ci_wfn.get_opdm(i, j, "SUM", True) opdm_so = psi4.core.triplet(ci_wfn.Ca(), opdm_mo, ci_wfn.Ca(), False, False, True) opdm_ao = psi4.core.Matrix(n_bas, n_bas) opdm_ao.remove_symmetry(opdm_so, so2ao) pc.add_tdm(opdm_ao.to_array(), i, j, "psi4") if not i == j: pc.add_tdm(opdm_ao.to_array(), j, i, "psi4") pc.compute_projected_cap() os.remove('h2.molden')
cap_dict = { "cap_type": "voronoi", "r_cut": "3.00", "radial_precision": "14", "angular_points": "590" } es_dict = { "package": "qchem", "method": "eom", "qchem_output": "../../analysis/N2/ref_outputs/qc_inp.out", "qchem_fchk": "../../analysis/N2/ref_outputs/qc_inp.fchk", } s = pyopencap.System(sys_dict) pc = pyopencap.CAP(s, cap_dict, 5) pc.read_data(es_dict) pc.compute_projected_cap() W = pc.get_projected_cap() H0 = pc.get_H() CAPH = CAPHamiltonian(pc=pc) eta_list = np.linspace(0, 5000, 201) eta_list = np.around(eta_list * 1E-5, decimals=5) CAPH.run_trajectory(eta_list) traj = CAPH.track_state(1, tracking="energy") ref_energy = -109.36195558 # Find optimal value of eta uc_energy, eta_opt = traj.find_eta_opt(start_idx=10, ref_energy=ref_energy,
ghost 0.0000000000 0.0000000000 0.7400000000; \ H 0.0000000000 0.0000000000 0.3705000000; \ H 0.0000000000 0.0000000000 -0.3705000000', basis={ 'H': H_bas, 'ghost': ghost_bas }, symmetry='d2h') mol.build() myhf = scf.RHF(mol) myhf.kernel() # create system using molden file molden_dict = {"basis_file": "molden_in.molden", "molecule": "molden"} tools.molden.from_scf(myhf, "molden_in.molden") s = pyopencap.System(molden_dict) pyscf_smat = scf.hf.get_ovlp(mol) s.check_overlap_mat(pyscf_smat, "pyscf") # run full ci fs = fci.FCI(mol, myhf.mo_coeff) fs.nroots = nstates e, c = fs.kernel() # fill density matrices h0 = np.zeros((nstates, nstates)) for i in range(0, len(e)): h0[i][i] = e[i] # compute CAP pc = pyopencap.CAP(s, cap_dict, nstates)