示例#1
0
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)
示例#2
0
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)
示例#3
0
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)
示例#4
0
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)
示例#5
0
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)
示例#6
0
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)
示例#7
0
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")
示例#8
0
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')
示例#9
0
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,
                                       units="eV")
示例#10
0
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)
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()
W = pc.get_projected_cap()

from pyopencap.analysis import CAPHamiltonian as CAPH
my_CAPH = CAPH(H0=h0, W=W)

my_CAPH.export("H2_fci_opencap.out")
示例#11
0
        if np.abs(z[i]) > cap_z:
            result += (np.abs(z[i]) - cap_z) * (np.abs(z[i]) - cap_z)
        result = w[i] * result
        cap_values.append(result)
    return cap_values


radial_precision = 1.0e-12
min_num_angular_points = 590
max_num_angular_points = 590
proton_charges = [7, 7, 1]
center_coordinates_bohr = [(0.0, 0.0, 1.03699997), (0.0, 0.0, -1.03699997),
                           (0.0, 0.0, 0.0)]

s = pyopencap.System(sys_dict)
pc = pyopencap.CAP(s, cap_dict, 5, box_cap)
pc.read_data(es_dict)

# one can use the numgrid python API (https://github.com/dftlibs/numgrid) to allocate the grid
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,
    )