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"]
[docs]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))
[docs]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