solution
========

.. py:module:: solution


Functions
---------

.. autoapisummary::

   solution.solution_vector
   solution.kappas
   solution.q_integral
   solution.p_integral
   solution.rT


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

.. py:function:: solution_vector(l_max: int, order: int = 20) -> collections.abc.Callable[[jaxoplanet.types.Array, jaxoplanet.types.Array], jaxoplanet.types.Array]

.. py:function:: kappas(b: jaxoplanet.types.Array, r: jaxoplanet.types.Array) -> tuple[jaxoplanet.types.Array, jaxoplanet.types.Array]

.. py:function:: q_integral(l_max: int, lam: jaxoplanet.types.Array) -> jaxoplanet.types.Array

.. py:function:: p_integral(order: int, l_max: int, b: jaxoplanet.types.Array, r: jaxoplanet.types.Array, kappa0: jaxoplanet.types.Array) -> jaxoplanet.types.Array

   Numerical integration of the P integral using the Gauss-Legendre quadrature.

   As described in Equation D32 of Luger et al. (2019), there are 6 cases to consider.
   Empirically, we notice that the numerical integration of the first case (mu/2 even)
   is precise at very low order. Hence ``low_order=30``is used for the first case. For
   the other cases, we use the order specified by the user, renamed in the function
   ``high_order``. We also note that outside the linear limb-darkening case (i.e.
   (l,m)=(1, 0), or n=2) the integrand is symmetrical in phi, so we can evaluate the
   integral over half the range and multiply by 2.


   :param order: The order of the Gauss-Legendre quadrature.
   :type order: int
   :param l_max: The maximum degree of the spherical harmonic expansion.
   :type l_max: int
   :param b: Impact parameter.
   :type b: Array
   :param r: Occultor radius.
   :type r: Array
   :param kappa0: k0 angle.
   :type kappa0: Array

   :returns: The integral of the P function over the occultor surface.
   :rtype: Array


.. py:function:: rT(lmax: int) -> jaxoplanet.types.Array

