radiocosmology / caput

Cluster Astronomical Python Utilities
GNU General Public License v2.0
12 stars 21 forks source link

feat(time): Solar/lunar ephemerides #271

Closed ketiltrout closed 3 months ago

ketiltrout commented 3 months ago

This adds six methods to caput.time.Observer to calculate (solar/lunar) (transits/risings/settings).

These functions are originally from ch_util.ephemeris where they originally worked only on the chime Observer. They've since been enhanced to use any Observer, so there's no reason now not to have them in the Observer object directly.

CHANGE FROM CH_UTIL VERSION

There is one major change to these functions from what was in ch_util.ephemeris: instead of a diameter of 0.6 degrees = 36 arcminutes, these methods now use a diameter of 100 arcminutes.

This means these functions now compute astronomical sun/moon rise/set, which is conventionally taken to occur when the centre of the sun/moon is 50 arcminutes below the horizon.

The 50 arcminute number comes from a solar/lunar radius of 16 arcminutes plus 34 arcminutes of atmospheric refraction at the horizon.

This change fixes the 3-minute discrepancy Mateus noticed when these functions were first ported from PyEphem (which does account for atmospheric refraction) to skyfield (which does not account for the refraction), here: https://github.com/chime-experiment/ch_util_private/commit/b505cf099c1de4eb39f2e34828e8da545d3db8e0

Transit times are unchanged: the atmospheric refraction at zenith is zero.