astro plan:docs

- Index
- Modules

### Navigation

- astroplan v0.7 »
- Module code »

# Source code for astroplan.moon

    # Licensed under a 3-clause BSD style license - see LICENSE.rst
    """
    This version of the `moon` module calculates lunar phase angle for a geocentric
    """

    from __future__ import (absolute_import, division, print_function,
                            unicode_literals)

    # Third-party
    import numpy as np
    from astropy.coordinates import get_moon, get_sun

    __all__ = ["moon_phase_angle", "moon_illumination"]

    def moon_phase_angle(time, ephemeris=None):
        """
        Calculate lunar orbital phase in radians.

        Parameters
        ----------
        time : `~astropy.time.Time`
            Time of observation

        ephemeris : str, optional
            Ephemeris to use.  If not given, use the one set with
            `~astropy.coordinates.solar_system_ephemeris` (which is
            set to 'builtin' by default).

        Returns
        -------
        i : float
            Phase angle of the moon [radians]
        """
        # TODO: cache these sun/moon SkyCoord objects

        sun = get_sun(time)
        moon = get_moon(time, ephemeris=ephemeris)
        elongation = sun.separation(moon)
        return np.arctan2(sun.distance*np.sin(elongation),
                          moon.distance - sun.distance*np.cos(elongation))

    def moon_illumination(time, ephemeris=None):
        """
        Calculate fraction of the moon illuminated.

        Parameters
        ----------
        time : `~astropy.time.Time`
            Time of observation

        ephemeris : str, optional
            Ephemeris to use.  If not given, use the one set with
            `~astropy.coordinates.solar_system_ephemeris` (which is
            set to 'builtin' by default).

        Returns
        -------
        k : float
            Fraction of moon illuminated
        """
        i = moon_phase_angle(time, ephemeris=ephemeris)
        k = (1 + np.cos(i))/2.0
        return k.value