コード例 #1
0
 def test_oh_uhf_parity_2q(self):
     """oh uhf parity 2q test"""
     driver = PySCFDriver(
         atom=self.o_h,
         unit=UnitsType.ANGSTROM,
         charge=0,
         spin=1,
         basis="sto-3g",
         method=MethodType.UHF,
     )
     result = self._run_driver(
         driver,
         converter=QubitConverter(ParityMapper(), two_qubit_reduction=True))
     self._assert_energy_and_dipole(result, "oh")
コード例 #2
0
 def test_lih_rhf_parity_2q(self):
     """lih rhf parity 2q test"""
     driver = PySCFDriver(
         atom=self.lih,
         unit=UnitsType.ANGSTROM,
         charge=0,
         spin=0,
         basis="sto-3g",
         method=MethodType.RHF,
     )
     result = self._run_driver(
         driver,
         converter=QubitConverter(ParityMapper(), two_qubit_reduction=True),
         transformers=[FreezeCoreTransformer()],
     )
     self._assert_energy_and_dipole(result, "lih")
コード例 #3
0
 def test_lih_rhf_bk(self):
     """lih rhf bk test"""
     driver = PySCFDriver(
         atom=self.lih,
         unit=UnitsType.ANGSTROM,
         charge=0,
         spin=0,
         basis="sto-3g",
         method=MethodType.RHF,
     )
     result = self._run_driver(
         driver,
         converter=QubitConverter(BravyiKitaevMapper()),
         transformers=[FreezeCoreTransformer()],
     )
     self._assert_energy_and_dipole(result, "lih")
コード例 #4
0
 def test_sector_locator_h2o(self):
     """Test sector locator."""
     driver = PySCFDriver(
         atom="O 0.0000 0.0000 0.1173; H 0.0000 0.07572 -0.4692;H 0.0000 -0.07572 -0.4692",
         basis="sto-3g",
     )
     es_problem = ElectronicStructureProblem(driver)
     qubit_conv = QubitConverter(
         mapper=ParityMapper(), two_qubit_reduction=True, z2symmetry_reduction="auto"
     )
     main_op, _ = es_problem.second_q_ops()
     qubit_conv.convert(
         main_op,
         num_particles=es_problem.num_particles,
         sector_locator=es_problem.symmetry_sector_locator,
     )
     self.assertListEqual(qubit_conv.z2symmetries.tapering_values, [1, -1])
コード例 #5
0
    def setUp(self):
        super().setUp()
        self.driver = PySCFDriver(atom="H 0 0 0.735; H 0 0 0", basis="631g")

        self.qubit_converter = QubitConverter(ParityMapper(), two_qubit_reduction=True)

        self.electronic_structure_problem = ElectronicStructureProblem(
            self.driver, [FreezeCoreTransformer()]
        )

        self.num_spin_orbitals = 8
        self.num_particles = (1, 1)

        # because we create the initial state and ansatzes early, we need to ensure the qubit
        # converter already ran such that convert_match works as expected
        main_op, _ = self.electronic_structure_problem.second_q_ops()
        _ = self.qubit_converter.convert(
            main_op,
            self.num_particles,
        )

        self.reference_energy_pUCCD = -1.1434447924298028
        self.reference_energy_UCCD0 = -1.1476045878481704
        self.reference_energy_UCCD0full = -1.1515491334334347
        # reference energy of UCCSD/VQE with tapering everywhere
        self.reference_energy_UCCSD = -1.1516142309717594
        # reference energy of UCCSD/VQE when no tapering on excitations is used
        self.reference_energy_UCCSD_no_tap_exc = -1.1516142309717594
        # excitations for succ
        self.reference_singlet_double_excitations = [
            [0, 1, 4, 5],
            [0, 1, 4, 6],
            [0, 1, 4, 7],
            [0, 2, 4, 6],
            [0, 2, 4, 7],
            [0, 3, 4, 7],
        ]
        # groups for succ_full
        self.reference_singlet_groups = [
            [[0, 1, 4, 5]],
            [[0, 1, 4, 6], [0, 2, 4, 5]],
            [[0, 1, 4, 7], [0, 3, 4, 5]],
            [[0, 2, 4, 6]],
            [[0, 2, 4, 7], [0, 3, 4, 6]],
            [[0, 3, 4, 7]],
        ]
コード例 #6
0
    def setUp(self):
        super().setUp()

        self.driver = PySCFDriver(
            atom="H .0 .0 .0; H .0 .0 0.75",
            unit=UnitsType.ANGSTROM,
            charge=0,
            spin=0,
            basis="sto3g",
        )

        self.electronic_structure_problem = ElectronicStructureProblem(
            self.driver)

        # pylint: disable=unused-argument
        def filter_criterion(eigenstate, eigenvalue, aux_values):
            return np.isclose(aux_values["ParticleNumber"][0], 2.0)

        self.k = 99
        self._numpy_eigensolver_factory = NumPyEigensolverFactory(
            filter_criterion=filter_criterion, k=self.k)
コード例 #7
0
 def test_invalid_atom_type(self):
     """Atom is string with ; separator or list of string"""
     with self.assertRaises(QiskitNatureError):
         PySCFDriver(atom=("H", 0, 0, 0))
コード例 #8
0
 def setUp(self):
     super().setUp()
     PySCFDriver(atom=self.lih)