optixstuff.primary
==================

.. py:module:: optixstuff.primary

.. autoapi-nested-parse::

   Primary mirror abstractions.



Classes
-------

.. autoapisummary::

   optixstuff.primary.AbstractPrimary
   optixstuff.primary.SimplePrimary


Module Contents
---------------

.. py:class:: AbstractPrimary

   Bases: :py:obj:`equinox.Module`


   Abstract interface for a primary aperture.

   Any concrete implementation must provide the diameter and collecting
   area of the primary mirror as scalar values in SI units. These are
   consumed by exposure time calculators and simulation tools alike.


   .. py:attribute:: diameter_m
      :type:  equinox.AbstractVar[float]

      Primary mirror diameter in metres.



   .. py:attribute:: area_m2
      :type:  equinox.AbstractVar[float]

      Effective collecting area in square metres.



.. py:class:: SimplePrimary(diameter_m, obscuration = 0.0, shape_factor = 1.0)

   Bases: :py:obj:`AbstractPrimary`


   A simple circular primary mirror with a central obscuration.

   Args:
       diameter_m: Primary mirror diameter in metres.
       obscuration: Linear obscuration fraction (0 = no obscuration).
       shape_factor: Fraction of unobscured area that is collecting
           (accounts for struts, segment gaps, etc.). Default 1.0.


   .. py:attribute:: _diameter_m
      :type:  float


   .. py:attribute:: obscuration
      :type:  float


   .. py:attribute:: shape_factor
      :type:  float


   .. py:property:: diameter_m
      :type: float


      Primary mirror diameter in metres.



   .. py:property:: area_m2
      :type: float


      Effective collecting area in square metres.



   .. py:method:: __repr__()

      One-line summary of diameter, obscuration, and effective area.



