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")
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")
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")
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])
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]], ]
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)
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))
def setUp(self): super().setUp() PySCFDriver(atom=self.lih)