コード例 #1
0
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)
コード例 #2
0
        (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))