Source code for quchip.observables

"""Solve-time request for a complete accessible output field."""

from __future__ import annotations

from dataclasses import dataclass
from typing import Any

from quchip.utils.labeling import resolve_label


[docs] @dataclass(frozen=True) class OutputField: r"""Request the mean field and photon flux at an exposed output. You usually get it as ``network.expose(...).output`` and give it to ``e_ops`` when you build a simulation. Parameters ---------- exposure : str or NetworkPort Exposed network port or its label. The calculation must contain it. Attributes ---------- exposure : str Stored exposure label. See Also -------- quchip.results.results.OutputFieldTrace : Output moments, units, and conventions. quchip.chip.port_network.PortNetwork : Input-output model and physics references. """ exposure: str def __init__(self, exposure: str | Any) -> None: object.__setattr__(self, "exposure", resolve_label(exposure))
def is_output_field(value: Any) -> bool: """Return whether *value* requests a complete output-field trace.""" return isinstance(value, OutputField) __all__ = ["OutputField"]