skyscapes.physical_model.exojax.components.surface
==================================================

.. py:module:: skyscapes.physical_model.exojax.components.surface

.. autoapi-nested-parse::

   Surface reflectivity components.



Classes
-------

.. autoapisummary::

   skyscapes.physical_model.exojax.components.surface.WavelengthDependentSurface
   skyscapes.physical_model.exojax.components.surface.FlatSurface


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

.. py:class:: WavelengthDependentSurface

   Bases: :py:obj:`skyscapes.physical_model.exojax.components.base.AbstractSurface`


   Wavelength-dependent surface reflectivity.

   The bottom-of-atmosphere reflectivity is
   ``10**log_albedo * spectrum``: the ``log_albedo`` PyTree leaf is a
   per-planet fittable scaling, and ``spectrum`` is a fixed
   wavelength-dependent profile (vegetation red-edge, water
   absorption, snow/ice, ...) shared across planets.

   Attributes:
       log_albedo: Log10 surface albedo scaling per planet, shape ``(K,)``.
       spectrum: Wavelength-dependent reflectivity profile,
           shape ``(n_nu,)``. Defaults to flat ones for "no spectral
           shape; albedo is constant across the band".


   .. py:attribute:: log_albedo
      :type:  jaxtyping.Array


   .. py:attribute:: spectrum
      :type:  jaxtyping.Array


   .. py:method:: compute_refl(log_albedo_scalar, n_nu)

      Return wavelength-dependent surface reflectivity.

      ``n_nu`` is accepted for parity with :class:`FlatSurface` but
      unused -- the wavelength axis comes from ``self.spectrum``.



.. py:class:: FlatSurface

   Bases: :py:obj:`skyscapes.physical_model.exojax.components.base.AbstractSurface`


   Wavelength-independent (gray) Lambertian surface.

   Equivalent to ``WavelengthDependentSurface`` with a flat spectrum
   but structurally explicit; useful when callers want to document
   "I am intentionally using a featureless surface".

   Attributes:
       log_albedo: Log10 surface albedo per planet, shape ``(K,)``.


   .. py:attribute:: log_albedo
      :type:  jaxtyping.Array


   .. py:method:: compute_refl(log_albedo_scalar, n_nu)

      Return scalar albedo broadcast across the wavenumber grid.



