Source code for quchip.extensions.envelopes

"""Reference scheduled envelope authored through the declarative surface."""

from __future__ import annotations

from typing import Any

from quchip.declarative import Envelope, Scalar, parameter, qnp
from quchip.declarative.parameters import UNBOUND


[docs] class CosineEnvelope(Envelope): r"""Raised-cosine pulse with zero endpoints and peak amplitude at mid-pulse. .. math:: E(t) = \frac{A}{2}\left[1-\cos(2\pi t/\tau)\right] Parameters ---------- duration : float Pulse duration in ns. Must be positive. amplitude : float, default 1.0 Peak real amplitude. The returned envelope is complex with zero quadrature. References ---------- See Motzoi et al., *Phys. Rev. Lett.* 103, 110501 (2009), https://doi.org/10.1103/PhysRevLett.103.110501, for smooth pulse shaping. """ duration: Scalar = parameter(default=UNBOUND, positive=True, unit="ns") amplitude: Scalar = parameter(default=1.0)
[docs] def value(self, t: Any) -> Any: """Evaluate the envelope at local times ``t`` in ns. Parameters ---------- t : scalar or array-like Time relative to pulse start. """ return qnp.asarray( 0.5 * self.amplitude * (1.0 - qnp.cos(2.0 * qnp.pi * t / self.duration)), dtype=complex, )