bond_length = 1.45 geometry = [('Li', (0., 0., 0.)), ('H', (0., 0., bond_length))] lih_hamiltonian = openfermion.load_molecular_hamiltonian( geometry, 'sto-3g', 1, format(bond_length), 2, 2) @pytest.mark.parametrize( 'ansatz, trotter_algorithm, order, hamiltonian, atol', [ (SwapNetworkTrotterAnsatz(diag_coul_hamiltonian, iterations=1), LINEAR_SWAP_NETWORK, 1, diag_coul_hamiltonian, 5e-5), (SplitOperatorTrotterAnsatz(diag_coul_hamiltonian, iterations=1), SPLIT_OPERATOR, 1, diag_coul_hamiltonian, 5e-5), (LowRankTrotterAnsatz(h2_hamiltonian, iterations=1), LOW_RANK, 0, h2_hamiltonian, 5e-5), (LowRankTrotterAnsatz(lih_hamiltonian, iterations=1, final_rank=3), LowRankTrotterAlgorithm(final_rank=3), 0, lih_hamiltonian, 5e-5), (SwapNetworkTrotterHubbardAnsatz(2, 2, 1.0, 4.0, iterations=1), LINEAR_SWAP_NETWORK, 1, openfermion.get_diagonal_coulomb_hamiltonian( openfermion.reorder( openfermion.fermi_hubbard(2, 2, 1.0, 4.0), openfermion.up_then_down) ), 5e-5) ]) def test_trotter_ansatzes_default_initial_params_iterations_1( ansatz, trotter_algorithm, order, hamiltonian, atol): """Check that a Trotter ansatz with one iteration and default parameters is consistent with time evolution with one Trotter step.""" objective = HamiltonianObjective(hamiltonian)
(diag_coul_hamiltonian, long_time, diag_coul_initial_state, diag_coul_exact_state, 0, 6, SPLIT_OPERATOR, .999), (diag_coul_hamiltonian, long_time, diag_coul_initial_state, diag_coul_exact_state, 1, 1, SPLIT_OPERATOR, .99), (diag_coul_hamiltonian, long_time, diag_coul_initial_state, diag_coul_exact_state, 2, 1, SPLIT_OPERATOR, .99999), (hubbard_hamiltonian, long_time, hubbard_initial_state, hubbard_exact_state, 0, 3, SPLIT_OPERATOR, .999), (hubbard_hamiltonian, long_time, hubbard_initial_state, hubbard_exact_state, 0, 6, SPLIT_OPERATOR, .9999), (h2_hamiltonian, longer_time, h2_initial_state, h2_exact_state, 0, 1, LOW_RANK, .99), (h2_hamiltonian, longer_time, h2_initial_state, h2_exact_state, 0, 10, LOW_RANK, .9999), (lih_hamiltonian, longer_time, lih_initial_state, lih_exact_state, 0, 1, LowRankTrotterAlgorithm(final_rank=2), .999), (lih_hamiltonian, longer_time, lih_initial_state, lih_exact_state, 0, 10, LowRankTrotterAlgorithm(final_rank=2), .9999), ]) def test_simulate_trotter_simulate(hamiltonian, time, initial_state, exact_state, order, n_steps, algorithm, result_fidelity): n_qubits = openfermion.count_qubits(hamiltonian) qubits = cirq.LineQubit.range(n_qubits) start_state = initial_state circuit = cirq.Circuit( simulate_trotter(qubits, hamiltonian, time, n_steps, order, algorithm))