Source code for telescope_sim.abc.coronagraph

"""Coronagraph ABC — optional pupil-plane stage between correctors and focal plane.

The pipeline always includes a coronagraph slot; the ``identity`` implementation
is a no-op that keeps the chain uniform when no coronagraph is configured. The
reference PSF (for Strehl normalization) is always generated with the identity
coronagraph regardless of what's installed.
"""

from __future__ import annotations

from abc import ABC, abstractmethod
from typing import Any


[docs] class Coronagraph(ABC): """ABC for pupil-plane coronagraph elements.""" name: str
[docs] @abstractmethod def apply(self, wf: Any) -> Any: """Apply the coronagraph to a pupil-plane wavefront, returning the modified wavefront.""" ...
__all__ = ["Coronagraph"]