Source code for qiskit_nature.second_q.circuit.library.ansatzes.uvccsd
# This code is part of a Qiskit project.
#
# (C) Copyright IBM 2021, 2023.
#
# This code is licensed under the Apache License, Version 2.0. You may
# obtain a copy of this license in the LICENSE.txt file in the root directory
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
#
# Any modifications or derivative works of this code must retain this
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.
"""
The UVCCSD Ansatz.
"""
from __future__ import annotations
from qiskit.circuit import QuantumCircuit
from qiskit_nature.second_q.mappers import QubitMapper
from .uvcc import UVCC
[docs]class UVCCSD(UVCC):
    """The UVCCSD Ansatz.
    This is a convenience subclass of the UVCC ansatz. For more information refer to :class:`UVCC`.
    """
    def __init__(
        self,
        num_modals: list[int] | None = None,
        qubit_mapper: QubitMapper | None = None,
        *,
        reps: int = 1,
        initial_state: QuantumCircuit | None = None,
    ) -> None:
        # pylint: disable=unused-argument
        """
        Args:
            num_modals: A list defining the number of modals per mode. E.g. for a 3-mode system
                with 4 modals per mode ``num_modals = [4, 4, 4]``.
            qubit_mapper: The :class:`~qiskit_nature.second_q.mappers.QubitMapper` which takes care
                of mapping to a qubit operator.
            reps: The number of times to repeat the evolved operators.
            initial_state: A ``QuantumCircuit`` object to prepend to the circuit.
        """
        super().__init__(
            num_modals=num_modals,
            excitations="sd",
            qubit_mapper=qubit_mapper,
            reps=reps,
            initial_state=initial_state,
        )