def test_amplitudes_psi4(method): results = {"mp2": -1.1279946983462537, "cc2": -1.1344484090805054, "ccsd": None, "cc3": None} # the number might be wrong ... its definitely not what psi4 produces # however, no reason to expect projected MP2 is the same as UCC with MP2 amplitudes parameters_qc = qc.ParametersQC(geometry="data/h2.xyz", basis_set="sto-3g") do_test_amplitudes(method=method, qc_interface=qc.QuantumChemistryPsi4, parameters=parameters_qc, result=results[method])
def test_mp2_pyscf(): # the number might be wrong ... its definetely not what psi4 produces # however, no reason to expect projected MP2 is the same as UCC with MP2 amplitudes parameters_qc = qc.ParametersQC(geometry="data/h2.xyz", basis_set="sto-3g") do_test_mp2(qc_interface=qc.QuantumChemistryPySCF, parameters=parameters_qc, result=-1.1344497203826904)
def do_test_h2_hamiltonian(qc_interface): parameters = qc.ParametersQC(geometry="data/h2.xyz", basis_set="sto-3g") H = qc_interface(parameters=parameters).make_hamiltonian().to_matrix() vals = numpy.linalg.eigvalsh(H) assert (numpy.isclose(vals[0], -1.1368354639104123, atol=1.e-4)) assert (numpy.isclose(vals[1], -0.52718972, atol=1.e-4)) assert (numpy.isclose(vals[2], -0.52718972, atol=1.e-4)) assert (numpy.isclose(vals[-1], 0.9871391, atol=1.e-4))
def test_ucc_psi4(trafo, backend): if backend == "symbolic": pytest.skip("skipping for symbolic simulator ... way too slow") parameters_qc = qc.ParametersQC(geometry="data/h2.xyz", basis_set="sto-3g") do_test_ucc(qc_interface=qc.QuantumChemistryPsi4, parameters=parameters_qc, result=-1.1368354639104123, trafo=trafo, backend=backend)
def test_hamiltonian_consistency(geom: str, basis: str, trafo: str): parameters_qc = qc.ParametersQC(geometry=geom, basis_set=basis, outfile="asd") hqc1 = qc.QuantumChemistryPsi4(parameters=parameters_qc).make_hamiltonian( transformation=trafo) hqc2 = qc.QuantumChemistryPySCF(parameters=parameters_qc).make_hamiltonian( transformation=trafo) assert (hqc1.qubit_operator == hqc2.qubit_operator)
def test_ucc_pyscf(trafo): parameters_qc = qc.ParametersQC(geometry="data/h2.xyz", basis_set="sto-3g") do_test_ucc(qc_interface=qc.QuantumChemistryPySCF, parameters=parameters_qc, result=-1.1368354639104123, trafo=trafo)
def test_energies_psi4(method): parameters_qc = qc.ParametersQC(geometry="data/h2.xyz", basis_set="6-31g") psi4_interface = qc.QuantumChemistryPsi4(parameters=parameters_qc) result = psi4_interface.compute_energy(method=method) assert result is not None