def _create_dipole_ops(
    q_molecule: QMolecule, ) -> Tuple[FermionicOp, FermionicOp, FermionicOp]:
    x_dipole_operator = build_ferm_op_from_ints(q_molecule.x_dipole_integrals)
    y_dipole_operator = build_ferm_op_from_ints(q_molecule.y_dipole_integrals)
    z_dipole_operator = build_ferm_op_from_ints(q_molecule.z_dipole_integrals)

    return x_dipole_operator, y_dipole_operator, z_dipole_operator
Example #2
0
    def test_aux_ops_reusability(self):
        """ Test that the auxiliary operators can be reused """
        # Regression test against #1475
        solver = NumPyMinimumEigensolverFactory()
        calc = GroundStateEigensolver(self.qubit_converter, solver)

        modes = 4
        h_1 = np.eye(modes, dtype=complex)
        h_2 = np.zeros((modes, modes, modes, modes))
        aux_ops = [build_ferm_op_from_ints(h_1, h_2)]
        aux_ops_copy = copy.deepcopy(aux_ops)

        _ = calc.solve(self.electronic_structure_problem)
        assert all(frozenset(a.to_list()) == frozenset(b.to_list())
                   for a, b in zip(aux_ops, aux_ops_copy))
    def test_aux_ops_reusability(self):
        """Test that the auxiliary operators can be reused"""
        # Regression test against #1475
        solver = VQEUCCFactory(QuantumInstance(BasicAer.get_backend("statevector_simulator")))
        calc = AdaptVQE(self.qubit_converter, solver)

        modes = 4
        h_1 = np.eye(modes, dtype=complex)
        h_2 = np.zeros((modes, modes, modes, modes))
        aux_ops = [build_ferm_op_from_ints(h_1, h_2)]
        aux_ops_copy = copy.deepcopy(aux_ops)

        _ = calc.solve(self.problem)
        assert all(
            frozenset(a.to_list()) == frozenset(b.to_list()) for a, b in zip(aux_ops, aux_ops_copy)
        )
Example #4
0
    def test_build_fermionic_op_from_ints_both(self):
        """Tests that the correct FermionicOp is built from 1- and 2-body integrals."""
        expected_num_of_terms_ferm_op = 184
        expected_fermionic_op_path = self.get_resource_path(
            'H2_631g_ferm_op_two_ints', 'problems/second_quantization/'
            'electronic/resources')
        expected_fermionic_op = read_expected_file(expected_fermionic_op_path)
        driver = HDF5Driver(
            hdf5_input=self.get_resource_path('H2_631g.hdf5', 'transformers'))
        q_molecule = driver.run()
        fermionic_op = fermionic_op_builder.build_ferm_op_from_ints(
            q_molecule.one_body_integrals, q_molecule.two_body_integrals)

        with self.subTest("Check type of fermionic operator"):
            assert isinstance(fermionic_op, FermionicOp)
        with self.subTest(
                "Check expected number of terms in a fermionic operator."):
            assert len(fermionic_op) == expected_num_of_terms_ferm_op
        with self.subTest("Check expected content of a fermionic operator."):
            assert all(
                s[0] == t[0] and np.isclose(s[1], t[1])
                for s, t in zip(fermionic_op.to_list(), expected_fermionic_op))
def _create_total_particle_num_op(q_molecule: QMolecule) -> FermionicOp:
    num_modes = q_molecule.one_body_integrals.shape[0]
    return build_ferm_op_from_ints(*calc_total_particle_num_ints(num_modes))