Source code for qdk_chemistry.data.time_dependent_qubit_hamiltonian.base

"""Time-dependent qubit Hamiltonian wrapper class."""

# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See LICENSE.txt in the project root for license information.
# --------------------------------------------------------------------------------------------

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from qdk_chemistry.data.qubit_operator import QubitOperator

    from .containers.base import TimeDependentQubitHamiltonianContainer

__all__: list[str] = ["TimeDependentQubitHamiltonian"]


[docs] class TimeDependentQubitHamiltonian: """Wrapper for time-dependent qubit Hamiltonians. Delegates storage and evaluation to a :class:`~qdk_chemistry.data.time_dependent_qubit_hamiltonian.containers.base.TimeDependentQubitHamiltonianContainer`. Args: container: The container that stores and evaluates the time-dependent Hamiltonian. """
[docs] def __init__(self, container: TimeDependentQubitHamiltonianContainer) -> None: """Initialize with the given container.""" self._container = container
[docs] def get_container(self) -> TimeDependentQubitHamiltonianContainer: """Return the underlying container. Returns: The time-dependent qubit Hamiltonian container. """ return self._container
[docs] def evaluate(self, t: float) -> QubitOperator: """Return the qubit Hamiltonian at time *t*. Args: t: The time at which to evaluate the Hamiltonian. Returns: The qubit Hamiltonian at the given time. """ return self._container.evaluate(t)
[docs] @property def num_qubits(self) -> int: """Number of qubits (uniform across all times).""" return self._container.num_qubits
def __repr__(self) -> str: """Return a string representation.""" return f"{type(self).__name__}(num_qubits={self.num_qubits})"