From 36643fc47a8b5fec79d09a1dbd10eaae9ad433b4 Mon Sep 17 00:00:00 2001 From: Don Cross Date: Sun, 14 Apr 2019 16:42:50 -0400 Subject: [PATCH] Fixed #2 - use finer-grained delta-t values without discontinuities. Using historic, recent, and predicted values of TT-UT instead of UTC leap seconds. With linear interpolation, there are no longer discrete jumps in the calculated TT values. Hopefully, this will make event solvers (rise, set, etc) more well-behaved. --- generate/codegen.c | 104 ++++ generate/delta_t/README.md | 8 + generate/delta_t/historic.txt | 658 +++++++++++++++++++++++++ generate/delta_t/predicted.txt | 37 ++ generate/delta_t/recent.txt | 552 +++++++++++++++++++++ generate/template/astronomy.js | 86 ++-- source/js/astronomy.js | 868 +++++++++++++++++++++++++++++++-- 7 files changed, 2216 insertions(+), 97 deletions(-) create mode 100644 generate/delta_t/README.md create mode 100644 generate/delta_t/historic.txt create mode 100644 generate/delta_t/predicted.txt create mode 100644 generate/delta_t/recent.txt diff --git a/generate/codegen.c b/generate/codegen.c index 7a1a083c..67f247f7 100644 --- a/generate/codegen.c +++ b/generate/codegen.c @@ -25,12 +25,15 @@ #include #include #include +#include "novas.h" #include "codegen.h" #include "vsop.h" #include "ephfile.h" #define CG_MAX_LINE_LENGTH 200 +static const double MJD_BASIS = 2400000.5; + typedef struct { FILE *outfile; @@ -314,6 +317,106 @@ fail: return error; } +static int JsDeltaT(cg_context_t *context) +{ + FILE *infile; + int error=1, lnum, count=0; + const char *filename; + char line[100]; + char dt_text[20]; + int year, frac_year, month, day; + double dt, ignore; + double mjd = 0.0; + double last_mjd; + + filename = "delta_t/historic.txt"; + infile = fopen(filename, "rt"); + if (infile == NULL) goto fail; + lnum = 0; + while (fgets(line, sizeof(line), infile)) + { + ++lnum; + if (lnum < 3) continue; /* first 2 lines are headers */ + if (3 != sscanf(line, "%d.%d %20s", &year, &frac_year, dt_text) || 1 != sscanf(dt_text, "%lf", &dt)) + { + error = LogError(context, "Line %d of file %s has invalid format.\n", lnum, filename); + goto fail; + } + + if (frac_year == 0) + { + mjd = julian_date((short)year, 1, 1, 0.0) - MJD_BASIS; + ++count; + fprintf(context->outfile, "%s\n", (count==1) ? "[" : ","); + fprintf(context->outfile, "{ mjd:%0.1lf, dt:%s }", mjd, dt_text); + } + } + fclose(infile); + + filename = "delta_t/recent.txt"; + infile = fopen(filename, "rt"); + if (infile == NULL) goto fail; + lnum = 0; + last_mjd = mjd; + while (fgets(line, sizeof(line), infile)) + { + ++lnum; + if (4 != sscanf(line, "%d %d %d %20s", &year, &month, &day, dt_text) || 1 != sscanf(dt_text, "%lf", &dt)) + { + error = LogError(context, "Line %d of file %s has invalid format.", lnum, filename); + goto fail; + } + + mjd = julian_date((short)year, (short)month, (short)day, 0.0) - MJD_BASIS; + if (mjd > last_mjd) + { + ++count; + fprintf(context->outfile, "%s\n", (count==1) ? "[" : ","); + fprintf(context->outfile, "{ mjd:%0.1lf, dt:%s }", mjd, dt_text); + } + } + fclose(infile); + + filename = "delta_t/predicted.txt"; + infile = fopen(filename, "rt"); + if (infile == NULL) goto fail; + last_mjd = mjd; + lnum = 0; + while (fgets(line, sizeof(line), infile)) + { + ++lnum; + if (lnum < 2) continue; /* skip header line */ + if (3 != sscanf(line, "%lf %lf %20s", &mjd, &ignore, dt_text) || 1 != sscanf(dt_text, "%lf", &dt)) + { + error = LogError(context, "Line %d of file %s has invalid format.", lnum, filename); + goto fail; + } + + if (mjd > last_mjd) + { + ++count; + fprintf(context->outfile, "%s\n", (count==1) ? "[" : ","); + fprintf(context->outfile, "{ mjd:%0.1lf, dt:%s }", mjd, dt_text); + } + } + fprintf(context->outfile, "\n]"); + + if (count < 2) + { + error = LogError(context, "There must be at least 2 delta_t data!"); + goto fail; + } + + error = 0; + +fail: + if (infile == NULL) + error = LogError(context, "Cannot open input file: %s", filename); + else + fclose(infile); + return error; +} + static int LogError(const cg_context_t *context, const char *format, ...) { va_list v; @@ -329,6 +432,7 @@ static const cg_directive_entry DirectiveTable[] = { { "JS_VSOP", JsVsop }, { "JS_CHEBYSHEV", JsChebyshev }, + { "JS_DELTA_T", JsDeltaT }, { NULL, NULL } }; diff --git a/generate/delta_t/README.md b/generate/delta_t/README.md new file mode 100644 index 00000000..12641804 --- /dev/null +++ b/generate/delta_t/README.md @@ -0,0 +1,8 @@ +# Delta-T values + +Historical and predicted values of TT-UT1 from the +United States Naval Observatory. + +http://maia.usno.navy.mil/ser7/ + + diff --git a/generate/delta_t/historic.txt b/generate/delta_t/historic.txt new file mode 100644 index 00000000..25f6abc5 --- /dev/null +++ b/generate/delta_t/historic.txt @@ -0,0 +1,658 @@ + Year TDT-UT1 error LOD error + (s) (s) (ms) (ms) +1657.000 44 12 -4 41 +1657.500 43 15 -5 48 +1658.000 43 10 -6 58 +1658.500 41 10 -6 38 +1659.000 40 12 -6 37 +1659.500 39 14 -5 45 +1660.000 38 15 -4 53 +1660.500 37 16 -3 59 +1661.000 37 16 -2 62 +1661.500 36 16 -1 63 +1662.000 36 15 1 62 +1662.500 36 15 2 60 +1663.000 37 9 2 59 +1663.500 37 9 0 33 +1664.000 38 7 -1 35 +1664.500 37 7 -3 27 +1665.000 36 9 -4 28 +1665.500 36 11 -4 35 +1666.000 35 13 -3 43 +1666.500 35 14 -3 49 +1667.000 34 15 -3 54 +1667.500 33 15 -3 58 +1668.000 33 15 -3 60 +1668.500 32 15 -3 59 +1669.000 32 14 -3 58 +1669.500 31 13 -3 55 +1670.000 31 12 -3 51 +1670.500 30 11 -3 47 +1671.000 30 6 -2 44 +1671.500 29 7 -1 24 +1672.000 29 6 -1 29 +1672.500 29 11 -1 22 +1673.000 29 10 -1 44 +1673.500 29 11 -2 37 +1674.000 28 9 -3 44 +1674.500 28 9 -3 36 +1675.000 27 10 -3 33 +1675.500 27 12 -3 40 +1676.000 26 8 -3 47 +1676.500 26 9 -2 31 +1677.000 25 11 -1 34 +1677.500 25 12 0 41 +1678.000 25 8 1 46 +1678.500 26 11 1 30 +1679.000 26 9 0 42 +1679.500 26 11 -1 34 +1680.000 26 9 -2 41 +1680.500 25 9 -2 33 +1681.000 25 11 -2 36 +1681.500 25 12 -1 42 +1682.000 24 8 -1 48 +1682.500 24 10 -1 31 +1683.000 24 8 -1 40 +1683.500 24 10 -1 32 +1684.000 24 8 0 40 +1684.500 24 11 0 32 +1685.000 24 8 0 41 +1685.500 24 10 0 33 +1686.000 24 8 -1 40 +1686.500 24 9 -1 32 +1687.000 23 9 -2 33 +1687.500 23 11 -1 36 +1688.000 23 12 -1 41 +1688.500 23 13 -1 46 +1689.000 22 14 -1 51 +1689.500 22 15 -1 56 +1690.000 22 16 -1 60 +1690.500 22 17 -1 64 +1691.000 22 18 -1 67 +1691.500 21 18 -1 69 +1692.000 21 19 -1 71 +1692.500 21 19 -1 73 +1693.000 21 19 -1 74 +1693.500 21 19 -1 74 +1694.000 21 19 -1 74 +1694.500 21 18 0 73 +1695.000 21 18 0 71 +1695.500 20 17 0 69 +1696.000 20 17 0 67 +1696.500 20 16 0 65 +1697.000 20 15 0 62 +1697.500 20 15 0 59 +1698.000 20 14 0 57 +1698.500 20 14 0 55 +1699.000 20 8 0 55 +1699.500 20 8 0 32 +1700.000 21 10 0 33 +1700.500 21 12 0 38 +1701.000 21 8 -1 45 +1701.500 20 7 -1 31 +1702.000 20 8 -1 27 +1702.500 20 10 -1 33 +1703.000 20 11 -1 38 +1703.500 20 11 -1 41 +1704.000 19 11 -1 42 +1704.500 19 11 -1 43 +1705.000 19 6 0 43 +1705.500 19 7 1 24 +1706.000 19 6 1 28 +1706.500 20 9 0 22 +1707.000 20 7 0 34 +1707.500 20 7 0 28 +1708.000 20 8 0 27 +1708.500 19 10 1 32 +1709.000 20 6 1 37 +1709.500 20 7 1 24 +1710.000 20 6 1 28 +1710.500 20 8 1 23 +1711.000 20 6 1 30 +1711.500 20 8 1 24 +1712.000 21 6 1 30 +1712.500 21 8 0 24 +1713.000 21 7 0 31 +1713.500 21 8 0 25 +1714.000 21 7 0 33 +1714.500 21 9 0 26 +1715.000 21 7 0 33 +1715.500 21 8 0 27 +1716.000 21 9 0 29 +1716.500 21 10 1 35 +1717.000 21 7 1 39 +1717.500 21 8 0 26 +1718.000 21 6 0 30 +1718.500 21 8 0 24 +1719.000 21 6 0 29 +1719.500 21 7 0 23 +1720.000 21.1 5.7 -0.2 27.4 +1720.500 21.0 5.1 -0.3 22.2 +1721.000 21.0 5.5 -0.3 19.6 +1721.500 21.0 6.0 -0.3 21.3 +1722.000 20.9 6.6 -0.4 23.4 +1722.500 20.8 7.1 -0.6 25.5 +1723.000 20.7 7.5 -0.8 27.4 +1723.500 20.6 7.8 -0.9 29.0 +1724.000 20.4 8.1 -1.1 30.3 +1724.500 20.2 8.3 -1.3 31.3 +1725.000 20.0 8.4 -1.4 32.1 +1725.500 19.7 8.6 -1.6 32.7 +1726.000 19.4 8.8 -1.9 33.2 +1726.500 19.1 9.0 -2.1 33.9 +1727.000 18.7 4.9 -2.3 34.9 +1727.500 18.3 4.4 -2.3 18.9 +1728.000 17.8 5.2 -2.1 17.0 +1728.500 17.4 6.3 -1.8 20.2 +1729.000 17.0 4.1 -1.5 24.4 +1729.500 16.8 3.3 -1.3 15.8 +1730.000 16.6 3.6 -1.2 12.8 +1730.500 16.4 3.9 -1.2 13.8 +1731.000 16.1 4.3 -1.2 15.1 +1731.500 15.9 4.7 -1.2 16.5 +1732.000 15.7 5.1 -1.2 18.1 +1732.500 15.5 5.6 -1.4 19.8 +1733.000 15.3 3.2 -1.5 21.6 +1733.500 15.0 2.8 -1.4 12.4 +1734.000 14.7 3.3 -1.2 10.8 +1734.500 14.5 3.7 -1.0 12.8 +1735.000 14.3 4.1 -0.6 14.5 +1735.500 14.2 4.3 -0.3 15.7 +1736.000 14.1 2.5 -0.2 16.8 +1736.500 14.1 2.4 -0.4 9.7 +1737.000 14.1 1.8 -0.7 9.3 +1737.500 13.9 1.8 -0.8 7.0 +1738.000 13.7 1.4 -0.6 7.0 +1738.500 13.6 1.6 -0.4 5.3 +1739.000 13.5 1.3 -0.3 6.2 +1739.500 13.5 2.8 -0.2 5.0 +1740.000 13.5 3.5 -0.1 10.8 +1740.500 13.5 4.3 -0.2 13.6 +1741.000 13.4 4.9 -0.2 16.6 +1741.500 13.4 5.4 -0.2 19.1 +1742.000 13.4 5.7 -0.2 21.0 +1742.500 13.4 5.9 -0.2 22.2 +1743.000 13.3 5.8 -0.2 22.7 +1743.500 13.3 5.6 -0.2 22.6 +1744.000 13.2 5.2 -0.2 21.7 +1744.500 13.2 4.8 -0.2 20.3 +1745.000 13.2 4.2 -0.2 18.4 +1745.500 13.1 3.8 -0.2 16.3 +1746.000 13.1 2.4 -0.1 14.6 +1746.500 13.1 2.9 0.1 9.3 +1747.000 13.0 2.3 0.4 11.2 +1747.500 13.2 2.5 0.6 9.1 +1748.000 13.3 3.1 0.7 9.6 +1748.500 13.4 3.6 0.6 11.8 +1749.000 13.5 4.1 0.6 14.1 +1749.500 13.6 4.4 0.5 15.9 +1750.000 13.7 4.6 0.5 17.2 +1750.500 13.8 4.6 0.4 17.8 +1751.000 13.9 4.5 0.4 17.9 +1751.500 14.0 4.3 0.3 17.4 +1752.000 14.0 4.0 0.3 16.6 +1752.500 14.1 3.8 0.2 15.6 +1753.000 14.1 2.2 0.2 14.8 +1753.500 14.1 2.3 0.3 8.4 +1754.000 14.1 1.8 0.4 9.1 +1754.500 14.2 1.9 0.4 7.1 +1755.000 14.3 2.2 0.4 7.2 +1755.500 14.4 2.5 0.4 8.6 +1756.000 14.4 2.6 0.3 9.6 +1756.500 14.5 2.8 0.3 10.2 +1757.000 14.6 1.7 0.3 10.7 +1757.500 14.6 1.9 0.2 6.4 +1758.000 14.7 1.6 0.2 7.5 +1758.500 14.7 1.9 0.2 6.0 +1759.000 14.7 2.3 0.2 7.3 +1759.500 14.8 2.8 0.2 9.1 +1760.000 14.8 3.2 0.3 10.9 +1760.500 14.9 3.4 0.3 12.3 +1761.000 14.9 3.6 0.3 13.3 +1761.500 15.0 3.5 0.4 13.7 +1762.000 15.0 3.4 0.4 13.7 +1762.500 15.1 3.2 0.4 13.3 +1763.000 15.2 3.0 0.5 12.5 +1763.500 15.3 2.8 0.5 11.6 +1764.000 15.4 1.6 0.5 10.8 +1764.500 15.5 1.9 0.4 6.4 +1765.000 15.6 1.5 0.4 7.5 +1765.500 15.6 1.9 0.5 6.0 +1766.000 15.6 1.5 0.7 7.4 +1766.500 15.8 1.4 0.5 6.0 +1767.000 15.9 1.0 0.1 5.3 +1767.500 15.9 1.2 -0.2 3.8 +1768.000 15.9 0.9 -0.3 4.5 +1768.500 15.8 1.2 -0.3 3.5 +1769.000 15.7 0.9 -0.1 4.5 +1769.500 15.8 1.2 -0.1 3.6 +1770.000 15.7 0.9 -0.2 4.5 +1770.500 15.7 1.1 0.0 3.6 +1771.000 15.7 0.9 0.3 4.4 +1771.500 15.8 1.2 0.6 3.5 +1772.000 15.9 1.0 0.7 4.7 +1772.500 16.1 1.1 0.3 3.8 +1773.000 16.1 0.9 -0.3 4.3 +1773.500 16.0 0.8 -0.5 3.4 +1774.000 15.9 0.6 -0.6 3.2 +1774.500 15.9 1.2 -0.8 2.3 +1775.000 15.7 1.0 -1.0 4.7 +1775.500 15.4 1.4 -0.6 3.9 +1776.000 15.3 1.2 0.0 5.6 +1776.500 15.4 1.8 0.4 4.6 +1777.000 15.5 1.5 0.4 6.9 +1777.500 15.6 1.8 0.2 5.7 +1778.000 15.6 1.4 0.1 7.0 +1778.500 15.6 1.8 0.0 5.6 +1779.000 15.6 1.5 0.0 6.9 +1779.500 15.6 1.6 -0.1 5.6 +1780.000 15.6 1.9 -0.1 6.1 +1780.500 15.6 2.2 -0.2 7.4 +1781.000 15.5 2.3 -0.3 8.4 +1781.500 15.5 2.4 -0.4 9.1 +1782.000 15.4 2.4 -0.5 9.3 +1782.500 15.3 2.4 -0.6 9.2 +1783.000 15.2 1.4 -0.7 9.1 +1783.500 15.1 1.7 -0.8 5.4 +1784.000 14.9 1.3 -0.9 6.5 +1784.500 14.8 1.7 -0.9 5.2 +1785.000 14.6 1.4 -0.9 6.7 +1785.500 14.4 1.8 -0.8 5.3 +1786.000 14.3 1.5 -0.6 7.0 +1786.500 14.2 1.7 -0.1 5.7 +1787.000 14.1 1.3 0.3 6.5 +1787.500 14.2 1.1 -0.2 5.1 +1788.000 14.2 0.7 -1.1 4.2 +1788.500 13.9 1.0 -1.3 2.8 +1789.000 13.7 0.8 -1.2 3.7 +1789.500 13.5 1.0 -1.0 3.0 +1790.000 13.3 0.8 -0.7 3.9 +1790.500 13.1 1.3 -0.3 3.2 +1791.000 13.0 1.1 0.0 5.0 +1791.500 13.2 1.8 0.0 4.1 +1792.000 13.2 1.5 0.0 7.0 +1792.500 13.1 1.8 0.1 5.9 +1793.000 13.1 1.4 0.4 7.0 +1793.500 13.2 1.8 0.6 5.6 +1794.000 13.3 1.5 0.5 7.0 +1794.500 13.5 1.9 0.1 5.6 +1795.000 13.5 1.5 -0.3 7.3 +1795.500 13.4 2.3 -0.5 5.8 +1796.000 13.2 1.9 -0.4 9.0 +1796.500 13.2 2.4 -0.3 7.4 +1797.000 13.1 1.9 -0.4 9.3 +1797.500 13.1 2.3 -0.6 7.5 +1798.000 13.0 1.9 -0.8 9.1 +1798.500 12.8 2.1 -0.7 7.2 +1799.000 12.6 1.7 -0.6 8.3 +1799.500 12.7 2.4 -0.7 6.5 +1800.000 12.6 1.9 -0.9 9.2 +1800.500 12.3 2.4 -1.1 7.5 +1801.000 12.0 2.0 -1.0 9.4 +1801.500 11.9 2.4 -0.9 7.6 +1802.000 11.8 1.9 -0.9 9.3 +1802.500 11.6 2.5 -1.0 7.4 +1803.000 11.4 2.0 -0.9 9.8 +1803.500 11.2 2.3 -0.6 7.9 +1804.000 11.1 1.8 -0.2 9.0 +1804.500 11.1 2.2 0.0 7.0 +1805.000 11.1 1.8 0.1 8.5 +1805.500 11.1 1.8 0.1 6.8 +1806.000 11.1 2.1 0.1 6.9 +1806.500 11.2 2.4 0.1 8.2 +1807.000 11.1 1.5 0.2 9.4 +1807.500 11.1 2.0 0.5 6.0 +1808.000 11.2 1.6 0.8 7.7 +1808.500 11.4 1.5 0.3 6.2 +1809.000 11.5 1.1 -0.2 5.7 +1809.500 11.3 1.2 -0.2 4.2 +1810.000 11.2 1.5 0.5 4.8 +1810.500 11.4 1.0 0.9 5.9 +1811.000 11.7 2.1 0.8 4.1 +1811.500 11.9 1.8 0.4 8.3 +1812.000 11.9 2.6 -0.1 7.0 +1812.500 11.9 2.2 -0.2 10.2 +1813.000 11.8 2.6 -0.1 8.3 +1813.500 11.7 2.1 0.0 10.3 +1814.000 11.8 2.6 0.0 8.2 +1814.500 11.8 2.1 -0.1 10.2 +1815.000 11.8 2.7 -0.2 8.3 +1815.500 11.7 3.1 -0.3 10.4 +1816.000 11.6 3.5 -0.4 12.2 +1816.500 11.6 2.4 -0.4 13.7 +1817.000 11.5 3.0 -0.3 9.3 +1817.500 11.5 2.4 -0.3 11.5 +1818.000 11.4 2.9 -0.2 9.2 +1818.500 11.4 2.3 -0.3 11.2 +1819.000 11.3 2.8 -0.4 8.9 +1819.500 11.3 2.2 -0.3 10.8 +1820.000 11.13 2.15 -0.48 8.61 +1820.500 11.16 1.60 -0.86 8.34 +1821.000 10.94 1.86 -1.48 6.21 +1821.500 10.72 1.47 -1.85 7.20 +1822.000 10.29 1.14 -1.38 5.68 +1822.500 10.04 0.75 -0.62 4.42 +1823.000 9.94 0.68 -0.28 2.92 +1823.500 9.91 0.48 -0.20 2.62 +1824.000 9.88 1.07 -0.28 1.86 +1824.500 9.86 0.91 -0.43 4.14 +1825.000 9.72 1.16 -0.34 3.54 +1825.500 9.67 0.93 -0.17 4.49 +1826.000 9.66 1.04 -0.25 3.60 +1826.500 9.64 0.81 -0.51 4.04 +1827.000 9.51 1.31 -0.74 3.13 +1827.500 9.40 1.10 -0.96 5.09 +1828.000 9.21 1.06 -1.37 4.25 +1828.500 9.00 0.79 -1.76 4.11 +1829.000 8.60 0.96 -1.84 3.05 +1829.500 8.29 0.77 -1.65 3.73 +1830.000 7.95 0.88 -1.28 2.98 +1830.500 7.73 0.69 -0.89 3.41 +1831.000 7.59 1.11 -0.67 2.66 +1831.500 7.49 0.92 -0.64 4.29 +1832.000 7.36 1.53 -0.66 3.55 +1832.500 7.26 1.27 -0.68 5.91 +1833.000 7.10 1.59 -0.64 4.93 +1833.500 7.00 1.27 -0.56 6.14 +1834.000 6.89 1.56 -0.49 4.91 +1834.500 6.82 1.25 -0.49 6.05 +1835.000 6.73 1.27 -0.80 4.84 +1835.500 6.64 0.97 -1.11 4.92 +1836.000 6.39 0.52 -0.74 3.75 +1836.500 6.28 0.12 -0.09 2.01 +1837.000 6.25 0.24 -0.02 0.48 +1837.500 6.27 0.21 0.01 0.94 +1838.000 6.25 0.28 -0.03 0.80 +1838.500 6.27 0.23 -0.10 1.08 +1839.000 6.22 0.27 -0.04 0.87 +1839.500 6.24 0.21 0.04 1.03 +1840.000 6.22 0.28 0.13 0.81 +1840.500 6.27 0.23 0.28 1.08 +1841.000 6.30 0.22 0.19 0.87 +1841.500 6.36 0.16 0.08 0.86 +1842.000 6.35 0.59 -0.02 0.61 +1842.500 6.37 0.51 -0.10 2.28 +1843.000 6.32 0.64 -0.04 1.98 +1843.500 6.33 0.51 0.07 2.49 +1844.000 6.33 0.72 0.11 1.99 +1844.500 6.37 0.59 0.11 2.81 +1845.000 6.37 0.69 0.09 2.30 +1845.500 6.41 0.54 0.07 2.66 +1846.000 6.40 0.47 0.11 2.11 +1846.500 6.44 0.33 0.20 1.81 +1847.000 6.46 0.41 0.13 1.28 +1847.500 6.51 0.33 0.01 1.59 +1848.000 6.48 0.41 0.06 1.27 +1848.500 6.51 0.33 0.17 1.61 +1849.000 6.53 0.57 0.14 1.28 +1849.500 6.58 0.47 0.07 2.20 +1850.000 6.55 0.70 0.22 1.84 +1850.500 6.61 0.58 0.45 2.71 +1851.000 6.69 0.73 0.48 2.23 +1851.500 6.80 0.58 0.41 2.82 +1852.000 6.84 0.76 0.44 2.26 +1852.500 6.94 0.61 0.49 2.95 +1853.000 7.03 0.87 0.42 2.37 +1853.500 7.13 0.71 0.29 3.38 +1854.000 7.15 0.84 0.26 2.77 +1854.500 7.22 0.66 0.26 3.23 +1855.000 7.26 0.81 0.09 2.55 +1855.500 7.30 0.65 -0.16 3.14 +1856.000 7.23 0.74 -0.14 2.50 +1856.500 7.22 0.58 0.03 2.87 +1857.000 7.21 0.49 -0.27 2.26 +1857.500 7.20 0.34 -0.82 1.91 +1858.000 6.99 0.37 -0.17 1.33 +1858.500 6.98 0.28 0.72 1.45 +1859.000 7.19 0.71 0.73 1.08 +1859.500 7.36 0.61 0.25 2.74 +1860.000 7.35 0.70 0.12 2.36 +1860.500 7.39 0.51 0.19 2.70 +1861.000 7.41 0.49 0.07 1.97 +1861.500 7.45 0.44 -0.41 1.89 +1862.000 7.36 0.32 -1.04 1.71 +1862.500 7.18 0.18 -1.18 1.24 +1863.000 6.95 0.06 -1.34 0.69 +1863.500 6.72 0.08 -1.37 0.22 +1864.000 6.45 0.06 -1.30 0.29 +1864.500 6.24 0.22 -1.60 0.22 +1865.000 5.92 0.19 -1.92 0.84 +1865.500 5.59 0.21 -2.30 0.73 +1866.000 5.15 0.16 -2.78 0.80 +1866.500 4.67 0.14 -2.95 0.62 +1867.000 4.11 0.09 -3.27 0.53 +1867.500 3.52 0.26 -3.06 0.36 +1868.000 2.94 0.22 -2.72 1.00 +1868.500 2.47 0.24 -2.64 0.86 +1869.000 1.97 0.18 -2.56 0.93 +1869.500 1.52 0.28 -2.54 0.72 +1870.000 1.04 0.23 -2.52 1.08 +1870.500 0.60 0.38 -2.54 0.89 +1871.000 0.11 0.31 -2.58 1.45 +1871.500 -0.34 0.36 -2.52 1.21 +1872.000 -0.82 0.29 -2.45 1.41 +1872.500 -1.25 0.37 -2.34 1.11 +1873.000 -1.70 0.30 -2.22 1.44 +1873.500 -2.08 0.38 -2.10 1.16 +1874.000 -2.48 0.31 -1.96 1.48 +1874.500 -2.82 0.24 -1.89 1.19 +1875.000 -3.19 0.16 -1.85 0.95 +1875.500 -3.50 0.22 -1.75 0.63 +1876.000 -3.84 0.18 -1.73 0.86 +1876.500 -4.14 0.25 -1.45 0.69 +1877.000 -4.43 0.20 -1.05 0.95 +1877.500 -4.59 0.16 -0.96 0.78 +1878.000 -4.79 0.10 -0.84 0.61 +1878.500 -4.92 0.11 -0.80 0.40 +1879.000 -5.09 0.08 -0.91 0.41 +1879.500 -5.24 0.14 -0.55 0.31 +1880.000 -5.36 0.12 -0.04 0.55 +1880.500 -5.34 0.11 0.01 0.46 +1881.000 -5.37 0.08 0.13 0.44 +1881.500 -5.32 0.12 0.02 0.33 +1882.000 -5.34 0.10 -0.08 0.45 +1882.500 -5.33 0.11 -0.24 0.37 +1883.000 -5.40 0.09 -0.51 0.43 +1883.500 -5.47 0.12 -0.48 0.33 +1884.000 -5.58 0.10 -0.57 0.46 +1884.500 -5.66 0.12 -0.28 0.37 +1885.000 -5.74 0.09 0.15 0.46 +1885.500 -5.68 0.08 0.12 0.36 +1886.000 -5.69 0.06 0.09 0.32 +1886.500 -5.65 0.05 -0.01 0.23 +1887.000 -5.67 0.03 -0.17 0.19 +1887.500 -5.68 0.08 -0.15 0.12 +1888.000 -5.73 0.07 -0.11 0.33 +1888.500 -5.72 0.10 -0.15 0.28 +1889.000 -5.78 0.08 -0.19 0.39 +1889.500 -5.79 0.08 -0.27 0.32 +1890.000 -5.86 0.06 -0.31 0.30 +1890.500 -5.89 0.07 -0.49 0.22 +1891.000 -6.01 0.06 -0.78 0.27 +1891.500 -6.13 0.11 -0.74 0.22 +1892.000 -6.28 0.09 -0.84 0.41 +1892.500 -6.41 0.12 -0.47 0.34 +1893.000 -6.53 0.10 0.03 0.47 +1893.500 -6.49 0.11 0.12 0.38 +1894.000 -6.50 0.08 0.11 0.42 +1894.500 -6.45 0.08 0.38 0.33 +1895.000 -6.41 0.06 0.67 0.32 +1895.500 -6.26 0.12 0.94 0.23 +1896.000 -6.11 0.10 1.04 0.45 +1896.500 -5.90 0.11 1.65 0.38 +1897.000 -5.63 0.09 2.55 0.43 +1897.500 -5.13 0.09 2.59 0.34 +1898.000 -4.68 0.07 2.60 0.35 +1898.500 -4.19 0.05 2.67 0.27 +1899.000 -3.72 0.02 2.66 0.18 +1899.500 -3.21 0.08 2.93 0.10 +1900.000 -2.70 0.07 3.21 0.31 +1900.500 -2.09 0.06 3.46 0.27 +1901.000 -1.48 0.04 3.89 0.23 +1901.500 -0.75 0.07 3.81 0.16 +1902.000 -0.08 0.05 3.69 0.25 +1902.500 0.62 0.06 3.65 0.21 +1903.000 1.26 0.04 3.61 0.22 +1903.500 1.95 0.06 3.63 0.17 +1904.000 2.59 0.05 3.69 0.23 +1904.500 3.28 0.12 3.62 0.19 +1905.000 3.92 0.11 3.61 0.48 +1905.500 4.61 0.18 3.36 0.41 +1906.000 5.20 0.15 2.83 0.70 +1906.500 5.73 0.20 3.19 0.59 +1907.000 6.29 0.17 3.75 0.79 +1907.500 7.00 0.13 3.85 0.64 +1908.000 7.68 0.09 4.10 0.50 +1908.500 8.45 0.09 3.83 0.33 +1909.000 9.13 0.06 3.45 0.33 +1909.500 9.78 0.12 3.43 0.25 +1910.000 10.38 0.10 3.22 0.47 +1910.500 10.99 0.16 3.67 0.39 +1911.000 11.64 0.13 4.41 0.62 +1911.500 12.47 0.13 4.27 0.51 +1912.000 13.23 0.10 4.13 0.51 +1912.500 14.00 0.09 3.91 0.39 +1913.000 14.69 0.06 3.65 0.33 +1913.500 15.38 0.06 3.49 0.23 +1914.000 16.00 0.04 3.38 0.22 +1914.500 16.64 0.06 3.13 0.16 +1915.000 17.19 0.05 2.79 0.24 +1915.500 17.72 0.05 2.70 0.20 +1916.000 18.19 0.03 2.52 0.18 +1916.500 18.67 0.10 2.62 0.13 +1917.000 19.13 0.08 2.94 0.37 +1917.500 19.69 0.18 2.57 0.32 +1918.000 20.14 0.16 2.09 0.70 +1918.500 20.54 0.13 1.85 0.60 +1919.000 20.86 0.09 1.46 0.51 +1919.500 21.14 0.21 1.59 0.35 +1920.000 21.41 0.18 1.90 0.82 +1920.500 21.78 0.22 1.64 0.70 +1921.000 22.06 0.17 1.21 0.84 +1921.500 22.30 0.15 1.26 0.67 +1922.000 22.51 0.11 1.40 0.58 +1922.500 22.79 0.07 1.33 0.42 +1923.000 23.01 0.04 1.41 0.28 +1923.500 23.29 0.05 1.04 0.16 +1924.000 23.46 0.04 0.39 0.19 +1924.500 23.55 0.05 0.57 0.15 +1925.000 23.63 0.04 0.76 0.20 +1925.500 23.80 0.07 0.95 0.16 +1926.000 23.95 0.06 1.54 0.27 +1926.500 24.25 0.09 0.88 0.22 +1927.000 24.39 0.07 0.01 0.34 +1927.500 24.42 0.05 -0.27 0.29 +1928.000 24.34 0.03 -0.79 0.19 +1928.500 24.22 0.02 -0.56 0.10 +1929.000 24.10 0.02 -0.23 0.09 +1929.500 24.08 0.01 -0.19 0.06 +1930.000 24.02 0.00 -0.05 0.04 +1930.500 24.04 0.01 -0.15 0.01 +1931.000 23.98 0.01 -0.54 0.06 +1931.500 23.91 0.02 0.00 0.05 +1932.000 23.89 0.02 0.20 0.08 +1932.500 23.95 0.02 0.06 0.07 +1933.000 23.93 0.02 -0.22 0.08 +1933.500 23.92 0.02 -0.10 0.06 +1934.000 23.88 0.02 0.21 0.08 +1934.500 23.94 0.03 -0.04 0.06 +1935.000 23.91 0.02 -0.62 0.10 +1935.500 23.82 0.03 -0.21 0.08 +1936.000 23.76 0.02 0.48 0.11 +1936.500 23.87 0.02 0.34 0.09 +1937.000 23.91 0.02 0.13 0.09 +1937.500 23.95 0.02 0.17 0.06 +1938.000 23.96 0.01 0.08 0.06 +1938.500 24.00 0.04 0.38 0.05 +1939.000 24.04 0.04 0.83 0.05 +1939.500 24.20 0.04 0.95 0.11 +1940.000 24.35 0.03 1.29 0.08 +1940.500 24.61 0.02 1.30 0.04 +1941.000 24.82 0.01 1.30 0.08 +1941.500 25.09 0.01 1.29 0.07 +1942.000 25.30 0.01 1.23 0.17 +1942.500 25.56 0.01 1.30 0.21 +1943.000 25.77 0.01 1.38 0.11 +1943.500 26.05 0.02 1.43 0.19 +1944.000 26.27 0.01 1.52 0.19 +1944.500 26.54 0.02 1.44 0.24 +1945.000 26.76 0.01 1.16 0.81 +1945.500 27.04 0.02 1.29 0.85 +1946.000 27.27 0.01 1.25 0.94 +1946.500 27.55 0.01 1.40 1.07 +1947.000 27.77 0.01 1.30 1.20 +1947.500 28.03 0.01 1.24 0.84 +1948.000 28.25 0.01 1.22 0.87 +1948.500 28.50 0.01 1.19 0.93 +1949.000 28.70 0.01 1.23 1.04 +1949.500 28.95 0.01 1.13 1.13 +1950.000 29.15 0.01 1.21 0.74 +1950.500 29.38 0.01 1.19 0.81 +1951.000 29.57 0.01 1.24 0.84 +1951.500 29.80 0.01 1.04 0.89 +1952.000 29.97 0.01 1.05 1.12 +1952.500 30.19 0.01 0.94 0.89 +1953.000 30.36 0.01 1.10 0.97 +1953.500 30.57 0.01 1.03 0.12 +1954.000 30.72 0.01 0.91 0.09 +1954.500 30.93 0.01 0.64 0.10 +1955.000 31.07 0.01 0.74 0.11 +1955.500 31.24 0.01 1.37 0.01 +1956.000 31.349 0.003 0.27 0.03 +1956.500 31.516 0.003 0.99 0.12 +1957.000 31.677 0.003 0.99 0.15 +1957.500 31.923 0.003 1.36 0.16 +1958.000 32.166 0.003 1.57 0.11 +1958.500 32.449 0.003 1.37 0.18 +1959.000 32.671 0.003 1.42 0.12 +1959.500 32.919 0.003 1.39 0.08 +1960.000 33.150 0.003 1.26 0.10 +1960.500 33.397 0.003 1.06 0.11 +1961.000 33.584 0.003 1.01 0.19 +1961.500 33.804 0.003 1.29 0.10 +1962.000 33.992 0.001 1.15 0.07 +1962.500 34.240 0.001 1.23 0.03 +1963.000 34.466 0.001 1.05 0.03 +1963.500 34.731 0.001 1.41 0.05 +1964.000 35.030 0.001 1.92 0.02 +1964.500 35.400 0.001 1.82 0.03 +1965.000 35.738 0.001 1.88 0.03 +1965.500 36.147 0.001 2.30 0.02 +1966.000 36.546 0.001 2.23 0.03 +1966.500 36.995 0.001 2.38 0.03 +1967.000 37.429 0.001 2.22 0.03 +1967.500 37.879 0.001 2.36 0.02 +1968.000 38.291 0.001 2.44 0.03 +1968.500 38.753 0.001 2.64 0.03 +1969.000 39.204 0.001 2.38 0.03 +1969.500 39.707 0.001 2.66 0.02 +1970.000 40.182 0.001 2.74 0.02 +1970.500 40.706 0.001 2.64 0.02 +1971.000 41.170 0.001 2.43 0.03 +1971.500 41.686 0.001 3.10 0.03 +1972.000 42.227 0.001 2.94 0.03 +1972.500 42.825 0.001 3.19 0.02 +1973.000 43.373 0.001 3.04 0.02 +1973.500 43.959 0.001 3.08 0.02 +1974.000 44.486 0.001 2.41 0.03 +1974.500 44.997 0.001 2.71 0.02 +1975.000 45.477 0.001 2.62 0.03 +1975.500 45.983 0.001 2.64 0.03 +1976.000 46.458 0.001 2.65 0.03 +1976.500 46.997 0.001 3.02 0.05 +1977.000 47.521 0.001 2.63 0.03 +1977.500 48.034 0.001 2.59 0.03 +1978.000 48.535 0.001 2.99 0.03 +1978.500 49.099 0.001 2.60 0.04 +1979.000 49.589 0.001 2.73 0.02 +1979.500 50.102 0.001 2.66 0.02 +1980.000 50.540 0.001 2.34 0.02 +1980.500 50.975 0.001 2.33 0.02 +1981.000 51.382 0.001 2.19 0.02 +1981.500 51.810 0.001 2.11 0.02 +1982.000 52.168 0.001 1.95 0.02 +1982.500 52.572 0.001 2.12 0.03 +1983.000 52.957 0.001 2.60 0.03 +1983.500 53.434 0.001 2.14 0.04 +1984.000 53.789 0.001 1.46 0.03 +1984.500 54.087 0.001 1.45 0.04 diff --git a/generate/delta_t/predicted.txt b/generate/delta_t/predicted.txt new file mode 100644 index 00000000..7a65c88d --- /dev/null +++ b/generate/delta_t/predicted.txt @@ -0,0 +1,37 @@ + MJD YEAR TT-UT Pred UT1-UTC Pred ERROR + 58484.000 2019.00 69.34 -0.152 0.117 + 58575.000 2019.25 69.48 -0.295 0.162 + 58666.000 2019.50 69.62 -0.440 0.215 + 58758.000 2019.75 69.71 -0.527 0.273 + 58849.000 2020.00 69.87 0.335 + 58940.000 2020.25 70.03 0.399 + 59032.000 2020.50 70.16 0.465 + 59123.000 2020.75 70.24 0.532 + 59214.000 2021.00 70.39 0.600 + 59306.000 2021.25 70.55 0.668 + 59397.000 2021.50 70.68 0.736 + 59488.000 2021.75 70.76 0.803 + 59580.000 2022.00 70.91 0.870 + 59671.000 2022.25 71.06 0.936 + 59762.000 2022.50 71.18 1.000 + 59853.000 2022.75 71.25 1.064 + 59945.000 2023.00 71.40 1.126 + 60036.000 2023.25 71.54 1.186 + 60127.000 2023.50 71.67 1.245 + 60219.000 2023.75 71.74 1.302 + 60310.000 2024.00 71.88 1.358 + 60401.000 2024.25 72.03 1.411 + 60493.000 2024.50 72.15 1.463 + 60584.000 2024.75 72.22 1.514 + 60675.000 2025.00 72.36 1.562 + 60767.000 2025.25 72.50 1.609 + 60858.000 2025.50 72.62 1.654 + 60949.000 2025.75 72.69 1.697 + 61041.000 2026.00 72.83 1.738 + 61132.000 2026.25 72.98 1.778 + 61223.000 2026.50 73.10 1.816 + 61314.000 2026.75 73.17 1.853 + 61406.000 2027.00 73.32 1.887 + 61497.000 2027.25 73.46 1.921 + 61588.000 2027.50 73.58 1.953 + 61680.000 2027.75 73.66 1.983 diff --git a/generate/delta_t/recent.txt b/generate/delta_t/recent.txt new file mode 100644 index 00000000..d3a2ecbb --- /dev/null +++ b/generate/delta_t/recent.txt @@ -0,0 +1,552 @@ + 1973 2 1 43.4724 + 1973 3 1 43.5648 + 1973 4 1 43.6737 + 1973 5 1 43.7782 + 1973 6 1 43.8763 + 1973 7 1 43.9562 + 1973 8 1 44.0315 + 1973 9 1 44.1132 + 1973 10 1 44.1982 + 1973 11 1 44.2952 + 1973 12 1 44.3936 + 1974 1 1 44.4841 + 1974 2 1 44.5646 + 1974 3 1 44.6425 + 1974 4 1 44.7386 + 1974 5 1 44.8370 + 1974 6 1 44.9302 + 1974 7 1 44.9986 + 1974 8 1 45.0584 + 1974 9 1 45.1284 + 1974 10 1 45.2064 + 1974 11 1 45.2980 + 1974 12 1 45.3897 + 1975 1 1 45.4761 + 1975 2 1 45.5632 + 1975 3 1 45.6450 + 1975 4 1 45.7375 + 1975 5 1 45.8284 + 1975 6 1 45.9133 + 1975 7 1 45.9820 + 1975 8 1 46.0407 + 1975 9 1 46.1067 + 1975 10 1 46.1825 + 1975 11 1 46.2789 + 1975 12 1 46.3713 + 1976 1 1 46.4567 + 1976 2 1 46.5445 + 1976 3 1 46.6311 + 1976 4 1 46.7302 + 1976 5 1 46.8284 + 1976 6 1 46.9247 + 1976 7 1 46.9970 + 1976 8 1 47.0709 + 1976 9 1 47.1450 + 1976 10 1 47.2362 + 1976 11 1 47.3413 + 1976 12 1 47.4319 + 1977 1 1 47.5214 + 1977 2 1 47.6049 + 1977 3 1 47.6837 + 1977 4 1 47.7781 + 1977 5 1 47.8771 + 1977 6 1 47.9687 + 1977 7 1 48.0348 + 1977 8 1 48.0942 + 1977 9 1 48.1608 + 1977 10 1 48.2460 + 1977 11 1 48.3439 + 1977 12 1 48.4355 + 1978 1 1 48.5344 + 1978 2 1 48.6324 + 1978 3 1 48.7294 + 1978 4 1 48.8365 + 1978 5 1 48.9353 + 1978 6 1 49.0319 + 1978 7 1 49.1013 + 1978 8 1 49.1591 + 1978 9 1 49.2286 + 1978 10 1 49.3070 + 1978 11 1 49.4018 + 1978 12 1 49.4945 + 1979 1 1 49.5861 + 1979 2 1 49.6805 + 1979 3 1 49.7602 + 1979 4 1 49.8556 + 1979 5 1 49.9489 + 1979 6 1 50.0347 + 1979 7 1 50.1019 + 1979 8 1 50.1622 + 1979 9 1 50.2260 + 1979 10 1 50.2968 + 1979 11 1 50.3831 + 1979 12 1 50.4599 + 1980 1 1 50.5387 + 1980 2 1 50.6160 + 1980 3 1 50.6866 + 1980 4 1 50.7658 + 1980 5 1 50.8454 + 1980 6 1 50.9187 + 1980 7 1 50.9761 + 1980 8 1 51.0278 + 1980 9 1 51.0843 + 1980 10 1 51.1538 + 1980 11 1 51.2319 + 1980 12 1 51.3063 + 1981 1 1 51.3808 + 1981 2 1 51.4526 + 1981 3 1 51.5160 + 1981 4 1 51.5985 + 1981 5 1 51.6809 + 1981 6 1 51.7573 + 1981 7 1 51.8133 + 1981 8 1 51.8532 + 1981 9 1 51.9014 + 1981 10 1 51.9603 + 1981 11 1 52.0328 + 1981 12 1 52.0985 + 1982 1 1 52.1668 + 1982 2 1 52.2316 + 1982 3 1 52.2938 + 1982 4 1 52.3680 + 1982 5 1 52.4465 + 1982 6 1 52.5180 + 1982 7 1 52.5751 + 1982 8 1 52.6178 + 1982 9 1 52.6668 + 1982 10 1 52.7340 + 1982 11 1 52.8056 + 1982 12 1 52.8792 + 1983 1 1 52.9565 + 1983 2 1 53.0445 + 1983 3 1 53.1268 + 1983 4 1 53.2197 + 1983 5 1 53.3024 + 1983 6 1 53.3747 + 1983 7 1 53.4335 + 1983 8 1 53.4778 + 1983 9 1 53.5300 + 1983 10 1 53.5845 + 1983 11 1 53.6523 + 1983 12 1 53.7256 + 1984 1 1 53.7882 + 1984 2 1 53.8367 + 1984 3 1 53.8830 + 1984 4 1 53.9443 + 1984 5 1 54.0042 + 1984 6 1 54.0536 + 1984 7 1 54.0856 + 1984 8 1 54.1084 + 1984 9 1 54.1463 + 1984 10 1 54.1914 + 1984 11 1 54.2452 + 1984 12 1 54.2958 + 1985 1 1 54.3427 + 1985 2 1 54.3911 + 1985 3 1 54.4320 + 1985 4 1 54.4898 + 1985 5 1 54.5456 + 1985 6 1 54.5977 + 1985 7 1 54.6355 + 1985 8 1 54.6532 + 1985 9 1 54.6776 + 1985 10 1 54.7174 + 1985 11 1 54.7741 + 1985 12 1 54.8253 + 1986 1 1 54.8712 + 1986 2 1 54.9161 + 1986 3 1 54.9581 + 1986 4 1 54.9997 + 1986 5 1 55.0476 + 1986 6 1 55.0912 + 1986 7 1 55.1132 + 1986 8 1 55.1328 + 1986 9 1 55.1532 + 1986 10 1 55.1898 + 1986 11 1 55.2416 + 1986 12 1 55.2838 + 1987 1 1 55.3222 + 1987 2 1 55.3613 + 1987 3 1 55.4063 + 1987 4 1 55.4629 + 1987 5 1 55.5111 + 1987 6 1 55.5524 + 1987 7 1 55.5812 + 1987 8 1 55.6004 + 1987 9 1 55.6262 + 1987 10 1 55.6656 + 1987 11 1 55.7168 + 1987 12 1 55.7698 + 1988 1 1 55.8197 + 1988 2 1 55.8615 + 1988 3 1 55.9130 + 1988 4 1 55.9663 + 1988 5 1 56.0220 + 1988 6 1 56.0700 + 1988 7 1 56.0939 + 1988 8 1 56.1105 + 1988 9 1 56.1314 + 1988 10 1 56.1611 + 1988 11 1 56.2068 + 1988 12 1 56.2582 + 1989 1 1 56.3000 + 1989 2 1 56.3399 + 1989 3 1 56.3790 + 1989 4 1 56.4283 + 1989 5 1 56.4804 + 1989 6 1 56.5352 + 1989 7 1 56.5697 + 1989 8 1 56.5983 + 1989 9 1 56.6328 + 1989 10 1 56.6739 + 1989 11 1 56.7332 + 1989 12 1 56.7972 + 1990 1 1 56.8553 + 1990 2 1 56.9111 + 1990 3 1 56.9755 + 1990 4 1 57.0471 + 1990 5 1 57.1136 + 1990 6 1 57.1738 + 1990 7 1 57.2226 + 1990 8 1 57.2597 + 1990 9 1 57.3073 + 1990 10 1 57.3643 + 1990 11 1 57.4334 + 1990 12 1 57.5016 + 1991 1 1 57.5653 + 1991 2 1 57.6333 + 1991 3 1 57.6973 + 1991 4 1 57.7711 + 1991 5 1 57.8407 + 1991 6 1 57.9058 + 1991 7 1 57.9576 + 1991 8 1 57.9975 + 1991 9 1 58.0425 + 1991 10 1 58.1043 + 1991 11 1 58.1679 + 1991 12 1 58.2389 + 1992 1 1 58.3092 + 1992 2 1 58.3833 + 1992 3 1 58.4537 + 1992 4 1 58.5401 + 1992 5 1 58.6228 + 1992 6 1 58.6917 + 1992 7 1 58.7410 + 1992 8 1 58.7836 + 1992 9 1 58.8406 + 1992 10 1 58.8986 + 1992 11 1 58.9714 + 1992 12 1 59.0438 + 1993 1 1 59.1218 + 1993 2 1 59.2003 + 1993 3 1 59.2747 + 1993 4 1 59.3574 + 1993 5 1 59.4434 + 1993 6 1 59.5242 + 1993 7 1 59.5850 + 1993 8 1 59.6343 + 1993 9 1 59.6928 + 1993 10 1 59.7588 + 1993 11 1 59.8386 + 1993 12 1 59.9111 + 1994 1 1 59.9845 + 1994 2 1 60.0564 + 1994 3 1 60.1231 + 1994 4 1 60.2042 + 1994 5 1 60.2804 + 1994 6 1 60.3530 + 1994 7 1 60.4012 + 1994 8 1 60.4440 + 1994 9 1 60.4900 + 1994 10 1 60.5578 + 1994 11 1 60.6324 + 1994 12 1 60.7059 + 1995 1 1 60.7853 + 1995 2 1 60.8663 + 1995 3 1 60.9387 + 1995 4 1 61.0277 + 1995 5 1 61.1103 + 1995 6 1 61.1870 + 1995 7 1 61.2454 + 1995 8 1 61.2881 + 1995 9 1 61.3378 + 1995 10 1 61.4036 + 1995 11 1 61.4760 + 1995 12 1 61.5525 + 1996 1 1 61.6287 + 1996 2 1 61.6846 + 1996 3 1 61.7433 + 1996 4 1 61.8132 + 1996 5 1 61.8823 + 1996 6 1 61.9497 + 1996 7 1 61.9969 + 1996 8 1 62.0343 + 1996 9 1 62.0714 + 1996 10 1 62.1202 + 1996 11 1 62.1809 + 1996 12 1 62.2382 + 1997 1 1 62.2950 + 1997 2 1 62.3506 + 1997 3 1 62.3995 + 1997 4 1 62.4754 + 1997 5 1 62.5463 + 1997 6 1 62.6136 + 1997 7 1 62.6571 + 1997 8 1 62.6942 + 1997 9 1 62.7383 + 1997 10 1 62.7926 + 1997 11 1 62.8567 + 1997 12 1 62.9146 + 1998 1 1 62.9659 + 1998 2 1 63.0217 + 1998 3 1 63.0807 + 1998 4 1 63.1462 + 1998 5 1 63.2053 + 1998 6 1 63.2599 + 1998 7 1 63.2844 + 1998 8 1 63.2961 + 1998 9 1 63.3126 + 1998 10 1 63.3422 + 1998 11 1 63.3871 + 1998 12 1 63.4339 + 1999 1 1 63.4673 + 1999 2 1 63.4979 + 1999 3 1 63.5319 + 1999 4 1 63.5679 + 1999 5 1 63.6104 + 1999 6 1 63.6444 + 1999 7 1 63.6642 + 1999 8 1 63.6739 + 1999 9 1 63.6926 + 1999 10 1 63.7147 + 1999 11 1 63.7518 + 1999 12 1 63.7927 + 2000 1 1 63.8285 + 2000 2 1 63.8557 + 2000 3 1 63.8804 + 2000 4 1 63.9075 + 2000 5 1 63.9393 + 2000 6 1 63.9691 + 2000 7 1 63.9799 + 2000 8 1 63.9833 + 2000 9 1 63.9938 + 2000 10 1 64.0093 + 2000 11 1 64.0400 + 2000 12 1 64.0670 + 2001 1 1 64.0908 + 2001 2 1 64.1068 + 2001 3 1 64.1282 + 2001 4 1 64.1584 + 2001 5 1 64.1833 + 2001 6 1 64.2094 + 2001 7 1 64.2117 + 2001 8 1 64.2073 + 2001 9 1 64.2116 + 2001 10 1 64.2223 + 2001 11 1 64.2500 + 2001 12 1 64.2761 + 2002 1 1 64.2998 + 2002 2 1 64.3192 + 2002 3 1 64.3450 + 2002 4 1 64.3735 + 2002 5 1 64.3943 + 2002 6 1 64.4151 + 2002 7 1 64.4132 + 2002 8 1 64.4118 + 2002 9 1 64.4097 + 2002 10 1 64.4168 + 2002 11 1 64.4329 + 2002 12 1 64.4511 + 2003 1 1 64.4734 + 2003 2 1 64.4893 + 2003 3 1 64.5053 + 2003 4 1 64.5269 + 2003 5 1 64.5471 + 2003 6 1 64.5597 + 2003 7 1 64.5512 + 2003 8 1 64.5371 + 2003 9 1 64.5359 + 2003 10 1 64.5415 + 2003 11 1 64.5544 + 2003 12 1 64.5654 + 2004 1 1 64.5736 + 2004 2 1 64.5891 + 2004 3 1 64.6015 + 2004 4 1 64.6176 + 2004 5 1 64.6374 + 2004 6 1 64.6549 + 2004 7 1 64.6530 + 2004 8 1 64.6379 + 2004 9 1 64.6372 + 2004 10 1 64.6400 + 2004 11 1 64.6543 + 2004 12 1 64.6723 + 2005 1 1 64.6876 + 2005 2 1 64.7052 + 2005 3 1 64.7313 + 2005 4 1 64.7575 + 2005 5 1 64.7811 + 2005 6 1 64.8001 + 2005 7 1 64.7995 + 2005 8 1 64.7876 + 2005 9 1 64.7831 + 2005 10 1 64.7921 + 2005 11 1 64.8096 + 2005 12 1 64.8311 + 2006 1 1 64.8452 + 2006 2 1 64.8597 + 2006 3 1 64.8850 + 2006 4 1 64.9175 + 2006 5 1 64.9480 + 2006 6 1 64.9794 + 2006 7 1 64.9895 + 2006 8 1 65.0028 + 2006 9 1 65.0138 + 2006 10 1 65.0371 + 2006 11 1 65.0773 + 2006 12 1 65.1122 + 2007 1 1 65.1464 + 2007 2 1 65.1833 + 2007 3 1 65.2145 + 2007 4 1 65.2494 + 2007 5 1 65.2921 + 2007 6 1 65.3279 + 2007 7 1 65.3413 + 2007 8 1 65.3452 + 2007 9 1 65.3496 + 2007 10 1 65.3711 + 2007 11 1 65.3972 + 2007 12 1 65.4296 + 2008 1 1 65.4573 + 2008 2 1 65.4868 + 2008 3 1 65.5152 + 2008 4 1 65.5450 + 2008 5 1 65.5781 + 2008 6 1 65.6127 + 2008 7 1 65.6287 + 2008 8 1 65.6370 + 2008 9 1 65.6493 + 2008 10 1 65.6760 + 2008 11 1 65.7097 + 2008 12 1 65.7461 + 2009 1 1 65.7768 + 2009 2 1 65.8025 + 2009 3 1 65.8237 + 2009 4 1 65.8595 + 2009 5 1 65.8973 + 2009 6 1 65.9323 + 2009 7 1 65.9509 + 2009 8 1 65.9534 + 2009 9 1 65.9628 + 2009 10 1 65.9839 + 2009 11 1 66.0147 + 2009 12 1 66.0420 + 2010 1 1 66.0699 + 2010 2 1 66.0961 + 2010 3 1 66.1310 + 2010 4 1 66.1683 + 2010 5 1 66.2072 + 2010 6 1 66.2356 + 2010 7 1 66.2409 + 2010 8 1 66.2335 + 2010 9 1 66.2349 + 2010 10 1 66.2441 + 2010 11 1 66.2751 + 2010 12 1 66.3054 + 2011 1 1 66.3246 + 2011 2 1 66.3406 + 2011 3 1 66.3624 + 2011 4 1 66.3957 + 2011 5 1 66.4289 + 2011 6 1 66.4619 + 2011 7 1 66.4749 + 2011 8 1 66.4751 + 2011 9 1 66.4829 + 2011 10 1 66.5056 + 2011 11 1 66.5383 + 2011 12 1 66.5706 + 2012 1 1 66.6030 + 2012 2 1 66.6340 + 2012 3 1 66.6569 + 2012 4 1 66.6925 + 2012 5 1 66.7289 + 2012 6 1 66.7579 + 2012 7 1 66.7708 + 2012 8 1 66.7740 + 2012 9 1 66.7846 + 2012 10 1 66.8103 + 2012 11 1 66.8400 + 2012 12 1 66.8779 + 2013 1 1 66.9069 + 2013 2 1 66.9443 + 2013 3 1 66.9762 + 2013 4 1 67.0258 + 2013 5 1 67.0716 + 2013 6 1 67.1100 + 2013 7 1 67.1266 + 2013 8 1 67.1331 + 2013 9 1 67.1458 + 2013 10 1 67.1717 + 2013 11 1 67.2091 + 2013 12 1 67.2460 + 2014 1 1 67.2810 + 2014 2 1 67.3136 + 2014 3 1 67.3457 + 2014 4 1 67.3890 + 2014 5 1 67.4318 + 2014 6 1 67.4666 + 2014 7 1 67.4858 + 2014 8 1 67.4989 + 2014 9 1 67.5111 + 2014 10 1 67.5353 + 2014 11 1 67.5711 + 2014 12 1 67.6070 + 2015 1 1 67.6439 + 2015 2 1 67.6765 + 2015 3 1 67.7117 + 2015 4 1 67.7591 + 2015 5 1 67.8012 + 2015 6 1 67.8402 + 2015 7 1 67.8606 + 2015 8 1 67.8822 + 2015 9 1 67.9120 + 2015 10 1 67.9546 + 2015 11 1 68.0055 + 2015 12 1 68.0514 + 2016 1 1 68.1024 + 2016 2 1 68.1577 + 2016 3 1 68.2044 + 2016 4 1 68.2664 + 2016 5 1 68.3188 + 2016 6 1 68.3704 + 2016 7 1 68.3964 + 2016 8 1 68.4094 + 2016 9 1 68.4305 + 2016 10 1 68.4630 + 2016 11 1 68.5078 + 2016 12 1 68.5537 + 2017 1 1 68.5927 + 2017 2 1 68.6298 + 2017 3 1 68.6671 + 2017 4 1 68.7135 + 2017 5 1 68.7623 + 2017 6 1 68.8033 + 2017 7 1 68.8245 + 2017 8 1 68.8373 + 2017 9 1 68.8477 + 2017 10 1 68.8689 + 2017 11 1 68.9006 + 2017 12 1 68.9355 + 2018 1 1 68.9676 + 2018 2 1 68.9875 + 2018 3 1 69.0175 + 2018 4 1 69.0499 + 2018 5 1 69.0823 + 2018 6 1 69.1070 + 2018 7 1 69.1134 + 2018 8 1 69.1142 + 2018 9 1 69.1207 + 2018 10 1 69.1356 + 2018 11 1 69.1646 + 2018 12 1 69.1964 + 2019 1 1 69.2201 diff --git a/generate/template/astronomy.js b/generate/template/astronomy.js index 17aac02a..e61b924e 100644 --- a/generate/template/astronomy.js +++ b/generate/template/astronomy.js @@ -5,6 +5,7 @@ 'use strict'; const j2000 = new Date('2000-01-01T12:00:00Z'); const T0 = 2451545.0; +const MJD_BASIS = 2400000.5; // mjd + MJD_BASIS = jd const PI2 = 2 * Math.PI; const ARC = 3600 * (180 / Math.PI); // arcseconds per radian const ERAD = 6378136.6; // mean earth radius @@ -35,7 +36,7 @@ Astronomy.Bodies = [ 'Pluto' ]; -var vsop = { +const vsop = { Mercury: $ASTRO_JS_VSOP(Mercury), Venus: $ASTRO_JS_VSOP(Venus), Earth: $ASTRO_JS_VSOP(Earth), @@ -46,57 +47,44 @@ var vsop = { Neptune: $ASTRO_JS_VSOP(Neptune) }; -var cheb = { +const cheb = { Pluto: $ASTRO_JS_CHEBYSHEV(8) }; -/* - The following table is adapted from: - https://www.ietf.org/timezones/data/leap-seconds.list - It has the number of seconds since 1900 where each - leap second was added starting with 1972. - This list will need to be updated every now and then. -*/ -var LeapSecondTable = [ - 0.0, /* placeholder for all dates earlier than 1972 */ - 2272060800.0, /* 10 # 1 Jan 1972 */ - 2287785600.0, /* 11 # 1 Jul 1972 */ - 2303683200.0, /* 12 # 1 Jan 1973 */ - 2335219200.0, /* 13 # 1 Jan 1974 */ - 2366755200.0, /* 14 # 1 Jan 1975 */ - 2398291200.0, /* 15 # 1 Jan 1976 */ - 2429913600.0, /* 16 # 1 Jan 1977 */ - 2461449600.0, /* 17 # 1 Jan 1978 */ - 2492985600.0, /* 18 # 1 Jan 1979 */ - 2524521600.0, /* 19 # 1 Jan 1980 */ - 2571782400.0, /* 20 # 1 Jul 1981 */ - 2603318400.0, /* 21 # 1 Jul 1982 */ - 2634854400.0, /* 22 # 1 Jul 1983 */ - 2698012800.0, /* 23 # 1 Jul 1985 */ - 2776982400.0, /* 24 # 1 Jan 1988 */ - 2840140800.0, /* 25 # 1 Jan 1990 */ - 2871676800.0, /* 26 # 1 Jan 1991 */ - 2918937600.0, /* 27 # 1 Jul 1992 */ - 2950473600.0, /* 28 # 1 Jul 1993 */ - 2982009600.0, /* 29 # 1 Jul 1994 */ - 3029443200.0, /* 30 # 1 Jan 1996 */ - 3076704000.0, /* 31 # 1 Jul 1997 */ - 3124137600.0, /* 32 # 1 Jan 1999 */ - 3345062400.0, /* 33 # 1 Jan 2006 */ - 3439756800.0, /* 34 # 1 Jan 2009 */ - 3550089600.0, /* 35 # 1 Jul 2012 */ - 3644697600.0, /* 36 # 1 Jul 2015 */ - 3692217600.0, /* 37 # 1 Jan 2017 */ - 1.0e+99 /* marks end of list */ -]; +const DT = $ASTRO_JS_DELTA_T(); -function LeapSeconds(jd_utc) { - var LS = (jd_utc - 2415020.5) * 86400.0; - for (var i=0; LeapSecondTable[i] < 1.0e+20; ++i) - if (LS >= LeapSecondTable[i] && LS < LeapSecondTable[i+1]) - return 9 + i; +function DeltaT(mjd) { + // Calculate the difference TT-UT for the given date/time, expressed + // as a Modified Julian Date. + // DT[i] = { mjd: 58484.0, dt: 69.34 } + // Check end ranges. If outside the known bounds, clamp to the closest known value. - return 0; + if (mjd <= DT[0].mjd) { + return DT[0].dt; + } + + if (mjd >= DT[DT.length-1].mjd) { + return DT[DT.length-1].dt; + } + + // Do a binary search to find the pair of indexes this mjd lies between. + + let lo = 0; + let hi = DT.length-2; // make sure there is always an array element after the one we are looking at + while (lo <= hi) { + let c = (lo + hi) >> 1; + if (mjd < DT[c].mjd) { + hi = c-1; + } else if (mjd > DT[c+1].mjd) { + lo = c+1; + } else { + let frac = (mjd - DT[c].mjd) / (DT[c+1].mjd - DT[c].mjd); + return DT[c].dt + frac*(DT[c+1].dt - DT[c].dt); + } + } + + // This should never happen if the binary search algorithm is correct. + throw `Could not find Delta-T value for MJD=${mjd}`; } function Time(date) { @@ -110,7 +98,7 @@ function Time(date) { this.jd_utc = (date - j2000) / MillisPerDay + T0; // Convert UTC to Terrestrial Time (TT) by adjusting for leap seconds. - this.jd_tt = this.jd_utc + (LeapSeconds(this.jd_utc) + 32.184) / 86400.0; + this.jd_tt = this.jd_utc + DeltaT(this.jd_utc - MJD_BASIS) / 86400.0; return; } @@ -118,7 +106,7 @@ function Time(date) { if (typeof date === 'number') { this.date = new Date(j2000 - (T0 - date)*MillisPerDay); this.jd_utc = date; - this.jd_tt = this.jd_utc + (LeapSeconds(this.jd_utc) + 32.184) / 86400.0; + this.jd_tt = this.jd_utc + DeltaT(this.jd_utc - MJD_BASIS) / 86400.0; return; } diff --git a/source/js/astronomy.js b/source/js/astronomy.js index 20c885e5..bc60c17c 100644 --- a/source/js/astronomy.js +++ b/source/js/astronomy.js @@ -5,6 +5,7 @@ 'use strict'; const j2000 = new Date('2000-01-01T12:00:00Z'); const T0 = 2451545.0; +const MJD_BASIS = 2400000.5; // mjd + MJD_BASIS = jd const PI2 = 2 * Math.PI; const ARC = 3600 * (180 / Math.PI); // arcseconds per radian const ERAD = 6378136.6; // mean earth radius @@ -35,7 +36,7 @@ Astronomy.Bodies = [ 'Pluto' ]; -var vsop = { +const vsop = { Mercury: [ [ [ @@ -590,7 +591,7 @@ var vsop = { ] }; -var cheb = { +const cheb = { Pluto: [ { jd:2415019.500000, ndays:36707.500000, coeff:[ [-25.617936668549514678, 26.146776896480282915, 15.874874123535136050], @@ -650,53 +651,824 @@ var cheb = { }] }; -/* - The following table is adapted from: - https://www.ietf.org/timezones/data/leap-seconds.list - It has the number of seconds since 1900 where each - leap second was added starting with 1972. - This list will need to be updated every now and then. -*/ -var LeapSecondTable = [ - 0.0, /* placeholder for all dates earlier than 1972 */ - 2272060800.0, /* 10 # 1 Jan 1972 */ - 2287785600.0, /* 11 # 1 Jul 1972 */ - 2303683200.0, /* 12 # 1 Jan 1973 */ - 2335219200.0, /* 13 # 1 Jan 1974 */ - 2366755200.0, /* 14 # 1 Jan 1975 */ - 2398291200.0, /* 15 # 1 Jan 1976 */ - 2429913600.0, /* 16 # 1 Jan 1977 */ - 2461449600.0, /* 17 # 1 Jan 1978 */ - 2492985600.0, /* 18 # 1 Jan 1979 */ - 2524521600.0, /* 19 # 1 Jan 1980 */ - 2571782400.0, /* 20 # 1 Jul 1981 */ - 2603318400.0, /* 21 # 1 Jul 1982 */ - 2634854400.0, /* 22 # 1 Jul 1983 */ - 2698012800.0, /* 23 # 1 Jul 1985 */ - 2776982400.0, /* 24 # 1 Jan 1988 */ - 2840140800.0, /* 25 # 1 Jan 1990 */ - 2871676800.0, /* 26 # 1 Jan 1991 */ - 2918937600.0, /* 27 # 1 Jul 1992 */ - 2950473600.0, /* 28 # 1 Jul 1993 */ - 2982009600.0, /* 29 # 1 Jul 1994 */ - 3029443200.0, /* 30 # 1 Jan 1996 */ - 3076704000.0, /* 31 # 1 Jul 1997 */ - 3124137600.0, /* 32 # 1 Jan 1999 */ - 3345062400.0, /* 33 # 1 Jan 2006 */ - 3439756800.0, /* 34 # 1 Jan 2009 */ - 3550089600.0, /* 35 # 1 Jul 2012 */ - 3644697600.0, /* 36 # 1 Jul 2015 */ - 3692217600.0, /* 37 # 1 Jan 2017 */ - 1.0e+99 /* marks end of list */ +const DT = [ +{ mjd:-73733.0, dt:44 }, +{ mjd:-73368.0, dt:43 }, +{ mjd:-73003.0, dt:40 }, +{ mjd:-72638.0, dt:38 }, +{ mjd:-72272.0, dt:37 }, +{ mjd:-71907.0, dt:36 }, +{ mjd:-71542.0, dt:37 }, +{ mjd:-71177.0, dt:38 }, +{ mjd:-70811.0, dt:36 }, +{ mjd:-70446.0, dt:35 }, +{ mjd:-70081.0, dt:34 }, +{ mjd:-69716.0, dt:33 }, +{ mjd:-69350.0, dt:32 }, +{ mjd:-68985.0, dt:31 }, +{ mjd:-68620.0, dt:30 }, +{ mjd:-68255.0, dt:29 }, +{ mjd:-67889.0, dt:29 }, +{ mjd:-67524.0, dt:28 }, +{ mjd:-67159.0, dt:27 }, +{ mjd:-66794.0, dt:26 }, +{ mjd:-66428.0, dt:25 }, +{ mjd:-66063.0, dt:25 }, +{ mjd:-65698.0, dt:26 }, +{ mjd:-65333.0, dt:26 }, +{ mjd:-64967.0, dt:25 }, +{ mjd:-64602.0, dt:24 }, +{ mjd:-64237.0, dt:24 }, +{ mjd:-63872.0, dt:24 }, +{ mjd:-63506.0, dt:24 }, +{ mjd:-63141.0, dt:24 }, +{ mjd:-62776.0, dt:23 }, +{ mjd:-62411.0, dt:23 }, +{ mjd:-62045.0, dt:22 }, +{ mjd:-61680.0, dt:22 }, +{ mjd:-61315.0, dt:22 }, +{ mjd:-60950.0, dt:21 }, +{ mjd:-60584.0, dt:21 }, +{ mjd:-60219.0, dt:21 }, +{ mjd:-59854.0, dt:21 }, +{ mjd:-59489.0, dt:20 }, +{ mjd:-59123.0, dt:20 }, +{ mjd:-58758.0, dt:20 }, +{ mjd:-58393.0, dt:20 }, +{ mjd:-58028.0, dt:21 }, +{ mjd:-57663.0, dt:21 }, +{ mjd:-57298.0, dt:20 }, +{ mjd:-56933.0, dt:20 }, +{ mjd:-56568.0, dt:19 }, +{ mjd:-56202.0, dt:19 }, +{ mjd:-55837.0, dt:19 }, +{ mjd:-55472.0, dt:20 }, +{ mjd:-55107.0, dt:20 }, +{ mjd:-54741.0, dt:20 }, +{ mjd:-54376.0, dt:20 }, +{ mjd:-54011.0, dt:20 }, +{ mjd:-53646.0, dt:21 }, +{ mjd:-53280.0, dt:21 }, +{ mjd:-52915.0, dt:21 }, +{ mjd:-52550.0, dt:21 }, +{ mjd:-52185.0, dt:21 }, +{ mjd:-51819.0, dt:21 }, +{ mjd:-51454.0, dt:21 }, +{ mjd:-51089.0, dt:21 }, +{ mjd:-50724.0, dt:21.1 }, +{ mjd:-50358.0, dt:21.0 }, +{ mjd:-49993.0, dt:20.9 }, +{ mjd:-49628.0, dt:20.7 }, +{ mjd:-49263.0, dt:20.4 }, +{ mjd:-48897.0, dt:20.0 }, +{ mjd:-48532.0, dt:19.4 }, +{ mjd:-48167.0, dt:18.7 }, +{ mjd:-47802.0, dt:17.8 }, +{ mjd:-47436.0, dt:17.0 }, +{ mjd:-47071.0, dt:16.6 }, +{ mjd:-46706.0, dt:16.1 }, +{ mjd:-46341.0, dt:15.7 }, +{ mjd:-45975.0, dt:15.3 }, +{ mjd:-45610.0, dt:14.7 }, +{ mjd:-45245.0, dt:14.3 }, +{ mjd:-44880.0, dt:14.1 }, +{ mjd:-44514.0, dt:14.1 }, +{ mjd:-44149.0, dt:13.7 }, +{ mjd:-43784.0, dt:13.5 }, +{ mjd:-43419.0, dt:13.5 }, +{ mjd:-43053.0, dt:13.4 }, +{ mjd:-42688.0, dt:13.4 }, +{ mjd:-42323.0, dt:13.3 }, +{ mjd:-41958.0, dt:13.2 }, +{ mjd:-41592.0, dt:13.2 }, +{ mjd:-41227.0, dt:13.1 }, +{ mjd:-40862.0, dt:13.0 }, +{ mjd:-40497.0, dt:13.3 }, +{ mjd:-40131.0, dt:13.5 }, +{ mjd:-39766.0, dt:13.7 }, +{ mjd:-39401.0, dt:13.9 }, +{ mjd:-39036.0, dt:14.0 }, +{ mjd:-38670.0, dt:14.1 }, +{ mjd:-38305.0, dt:14.1 }, +{ mjd:-37940.0, dt:14.3 }, +{ mjd:-37575.0, dt:14.4 }, +{ mjd:-37209.0, dt:14.6 }, +{ mjd:-36844.0, dt:14.7 }, +{ mjd:-36479.0, dt:14.7 }, +{ mjd:-36114.0, dt:14.8 }, +{ mjd:-35748.0, dt:14.9 }, +{ mjd:-35383.0, dt:15.0 }, +{ mjd:-35018.0, dt:15.2 }, +{ mjd:-34653.0, dt:15.4 }, +{ mjd:-34287.0, dt:15.6 }, +{ mjd:-33922.0, dt:15.6 }, +{ mjd:-33557.0, dt:15.9 }, +{ mjd:-33192.0, dt:15.9 }, +{ mjd:-32826.0, dt:15.7 }, +{ mjd:-32461.0, dt:15.7 }, +{ mjd:-32096.0, dt:15.7 }, +{ mjd:-31731.0, dt:15.9 }, +{ mjd:-31365.0, dt:16.1 }, +{ mjd:-31000.0, dt:15.9 }, +{ mjd:-30635.0, dt:15.7 }, +{ mjd:-30270.0, dt:15.3 }, +{ mjd:-29904.0, dt:15.5 }, +{ mjd:-29539.0, dt:15.6 }, +{ mjd:-29174.0, dt:15.6 }, +{ mjd:-28809.0, dt:15.6 }, +{ mjd:-28443.0, dt:15.5 }, +{ mjd:-28078.0, dt:15.4 }, +{ mjd:-27713.0, dt:15.2 }, +{ mjd:-27348.0, dt:14.9 }, +{ mjd:-26982.0, dt:14.6 }, +{ mjd:-26617.0, dt:14.3 }, +{ mjd:-26252.0, dt:14.1 }, +{ mjd:-25887.0, dt:14.2 }, +{ mjd:-25521.0, dt:13.7 }, +{ mjd:-25156.0, dt:13.3 }, +{ mjd:-24791.0, dt:13.0 }, +{ mjd:-24426.0, dt:13.2 }, +{ mjd:-24060.0, dt:13.1 }, +{ mjd:-23695.0, dt:13.3 }, +{ mjd:-23330.0, dt:13.5 }, +{ mjd:-22965.0, dt:13.2 }, +{ mjd:-22599.0, dt:13.1 }, +{ mjd:-22234.0, dt:13.0 }, +{ mjd:-21869.0, dt:12.6 }, +{ mjd:-21504.0, dt:12.6 }, +{ mjd:-21139.0, dt:12.0 }, +{ mjd:-20774.0, dt:11.8 }, +{ mjd:-20409.0, dt:11.4 }, +{ mjd:-20044.0, dt:11.1 }, +{ mjd:-19678.0, dt:11.1 }, +{ mjd:-19313.0, dt:11.1 }, +{ mjd:-18948.0, dt:11.1 }, +{ mjd:-18583.0, dt:11.2 }, +{ mjd:-18217.0, dt:11.5 }, +{ mjd:-17852.0, dt:11.2 }, +{ mjd:-17487.0, dt:11.7 }, +{ mjd:-17122.0, dt:11.9 }, +{ mjd:-16756.0, dt:11.8 }, +{ mjd:-16391.0, dt:11.8 }, +{ mjd:-16026.0, dt:11.8 }, +{ mjd:-15661.0, dt:11.6 }, +{ mjd:-15295.0, dt:11.5 }, +{ mjd:-14930.0, dt:11.4 }, +{ mjd:-14565.0, dt:11.3 }, +{ mjd:-14200.0, dt:11.13 }, +{ mjd:-13834.0, dt:10.94 }, +{ mjd:-13469.0, dt:10.29 }, +{ mjd:-13104.0, dt:9.94 }, +{ mjd:-12739.0, dt:9.88 }, +{ mjd:-12373.0, dt:9.72 }, +{ mjd:-12008.0, dt:9.66 }, +{ mjd:-11643.0, dt:9.51 }, +{ mjd:-11278.0, dt:9.21 }, +{ mjd:-10912.0, dt:8.60 }, +{ mjd:-10547.0, dt:7.95 }, +{ mjd:-10182.0, dt:7.59 }, +{ mjd:-9817.0, dt:7.36 }, +{ mjd:-9451.0, dt:7.10 }, +{ mjd:-9086.0, dt:6.89 }, +{ mjd:-8721.0, dt:6.73 }, +{ mjd:-8356.0, dt:6.39 }, +{ mjd:-7990.0, dt:6.25 }, +{ mjd:-7625.0, dt:6.25 }, +{ mjd:-7260.0, dt:6.22 }, +{ mjd:-6895.0, dt:6.22 }, +{ mjd:-6529.0, dt:6.30 }, +{ mjd:-6164.0, dt:6.35 }, +{ mjd:-5799.0, dt:6.32 }, +{ mjd:-5434.0, dt:6.33 }, +{ mjd:-5068.0, dt:6.37 }, +{ mjd:-4703.0, dt:6.40 }, +{ mjd:-4338.0, dt:6.46 }, +{ mjd:-3973.0, dt:6.48 }, +{ mjd:-3607.0, dt:6.53 }, +{ mjd:-3242.0, dt:6.55 }, +{ mjd:-2877.0, dt:6.69 }, +{ mjd:-2512.0, dt:6.84 }, +{ mjd:-2146.0, dt:7.03 }, +{ mjd:-1781.0, dt:7.15 }, +{ mjd:-1416.0, dt:7.26 }, +{ mjd:-1051.0, dt:7.23 }, +{ mjd:-685.0, dt:7.21 }, +{ mjd:-320.0, dt:6.99 }, +{ mjd:45.0, dt:7.19 }, +{ mjd:410.0, dt:7.35 }, +{ mjd:776.0, dt:7.41 }, +{ mjd:1141.0, dt:7.36 }, +{ mjd:1506.0, dt:6.95 }, +{ mjd:1871.0, dt:6.45 }, +{ mjd:2237.0, dt:5.92 }, +{ mjd:2602.0, dt:5.15 }, +{ mjd:2967.0, dt:4.11 }, +{ mjd:3332.0, dt:2.94 }, +{ mjd:3698.0, dt:1.97 }, +{ mjd:4063.0, dt:1.04 }, +{ mjd:4428.0, dt:0.11 }, +{ mjd:4793.0, dt:-0.82 }, +{ mjd:5159.0, dt:-1.70 }, +{ mjd:5524.0, dt:-2.48 }, +{ mjd:5889.0, dt:-3.19 }, +{ mjd:6254.0, dt:-3.84 }, +{ mjd:6620.0, dt:-4.43 }, +{ mjd:6985.0, dt:-4.79 }, +{ mjd:7350.0, dt:-5.09 }, +{ mjd:7715.0, dt:-5.36 }, +{ mjd:8081.0, dt:-5.37 }, +{ mjd:8446.0, dt:-5.34 }, +{ mjd:8811.0, dt:-5.40 }, +{ mjd:9176.0, dt:-5.58 }, +{ mjd:9542.0, dt:-5.74 }, +{ mjd:9907.0, dt:-5.69 }, +{ mjd:10272.0, dt:-5.67 }, +{ mjd:10637.0, dt:-5.73 }, +{ mjd:11003.0, dt:-5.78 }, +{ mjd:11368.0, dt:-5.86 }, +{ mjd:11733.0, dt:-6.01 }, +{ mjd:12098.0, dt:-6.28 }, +{ mjd:12464.0, dt:-6.53 }, +{ mjd:12829.0, dt:-6.50 }, +{ mjd:13194.0, dt:-6.41 }, +{ mjd:13559.0, dt:-6.11 }, +{ mjd:13925.0, dt:-5.63 }, +{ mjd:14290.0, dt:-4.68 }, +{ mjd:14655.0, dt:-3.72 }, +{ mjd:15020.0, dt:-2.70 }, +{ mjd:15385.0, dt:-1.48 }, +{ mjd:15750.0, dt:-0.08 }, +{ mjd:16115.0, dt:1.26 }, +{ mjd:16480.0, dt:2.59 }, +{ mjd:16846.0, dt:3.92 }, +{ mjd:17211.0, dt:5.20 }, +{ mjd:17576.0, dt:6.29 }, +{ mjd:17941.0, dt:7.68 }, +{ mjd:18307.0, dt:9.13 }, +{ mjd:18672.0, dt:10.38 }, +{ mjd:19037.0, dt:11.64 }, +{ mjd:19402.0, dt:13.23 }, +{ mjd:19768.0, dt:14.69 }, +{ mjd:20133.0, dt:16.00 }, +{ mjd:20498.0, dt:17.19 }, +{ mjd:20863.0, dt:18.19 }, +{ mjd:21229.0, dt:19.13 }, +{ mjd:21594.0, dt:20.14 }, +{ mjd:21959.0, dt:20.86 }, +{ mjd:22324.0, dt:21.41 }, +{ mjd:22690.0, dt:22.06 }, +{ mjd:23055.0, dt:22.51 }, +{ mjd:23420.0, dt:23.01 }, +{ mjd:23785.0, dt:23.46 }, +{ mjd:24151.0, dt:23.63 }, +{ mjd:24516.0, dt:23.95 }, +{ mjd:24881.0, dt:24.39 }, +{ mjd:25246.0, dt:24.34 }, +{ mjd:25612.0, dt:24.10 }, +{ mjd:25977.0, dt:24.02 }, +{ mjd:26342.0, dt:23.98 }, +{ mjd:26707.0, dt:23.89 }, +{ mjd:27073.0, dt:23.93 }, +{ mjd:27438.0, dt:23.88 }, +{ mjd:27803.0, dt:23.91 }, +{ mjd:28168.0, dt:23.76 }, +{ mjd:28534.0, dt:23.91 }, +{ mjd:28899.0, dt:23.96 }, +{ mjd:29264.0, dt:24.04 }, +{ mjd:29629.0, dt:24.35 }, +{ mjd:29995.0, dt:24.82 }, +{ mjd:30360.0, dt:25.30 }, +{ mjd:30725.0, dt:25.77 }, +{ mjd:31090.0, dt:26.27 }, +{ mjd:31456.0, dt:26.76 }, +{ mjd:31821.0, dt:27.27 }, +{ mjd:32186.0, dt:27.77 }, +{ mjd:32551.0, dt:28.25 }, +{ mjd:32917.0, dt:28.70 }, +{ mjd:33282.0, dt:29.15 }, +{ mjd:33647.0, dt:29.57 }, +{ mjd:34012.0, dt:29.97 }, +{ mjd:34378.0, dt:30.36 }, +{ mjd:34743.0, dt:30.72 }, +{ mjd:35108.0, dt:31.07 }, +{ mjd:35473.0, dt:31.349 }, +{ mjd:35839.0, dt:31.677 }, +{ mjd:36204.0, dt:32.166 }, +{ mjd:36569.0, dt:32.671 }, +{ mjd:36934.0, dt:33.150 }, +{ mjd:37300.0, dt:33.584 }, +{ mjd:37665.0, dt:33.992 }, +{ mjd:38030.0, dt:34.466 }, +{ mjd:38395.0, dt:35.030 }, +{ mjd:38761.0, dt:35.738 }, +{ mjd:39126.0, dt:36.546 }, +{ mjd:39491.0, dt:37.429 }, +{ mjd:39856.0, dt:38.291 }, +{ mjd:40222.0, dt:39.204 }, +{ mjd:40587.0, dt:40.182 }, +{ mjd:40952.0, dt:41.170 }, +{ mjd:41317.0, dt:42.227 }, +{ mjd:41683.0, dt:43.373 }, +{ mjd:42048.0, dt:44.486 }, +{ mjd:42413.0, dt:45.477 }, +{ mjd:42778.0, dt:46.458 }, +{ mjd:43144.0, dt:47.521 }, +{ mjd:43509.0, dt:48.535 }, +{ mjd:43874.0, dt:49.589 }, +{ mjd:44239.0, dt:50.540 }, +{ mjd:44605.0, dt:51.382 }, +{ mjd:44970.0, dt:52.168 }, +{ mjd:45335.0, dt:52.957 }, +{ mjd:45700.0, dt:53.789 }, +{ mjd:45731.0, dt:53.8367 }, +{ mjd:45760.0, dt:53.8830 }, +{ mjd:45791.0, dt:53.9443 }, +{ mjd:45821.0, dt:54.0042 }, +{ mjd:45852.0, dt:54.0536 }, +{ mjd:45882.0, dt:54.0856 }, +{ mjd:45913.0, dt:54.1084 }, +{ mjd:45944.0, dt:54.1463 }, +{ mjd:45974.0, dt:54.1914 }, +{ mjd:46005.0, dt:54.2452 }, +{ mjd:46035.0, dt:54.2958 }, +{ mjd:46066.0, dt:54.3427 }, +{ mjd:46097.0, dt:54.3911 }, +{ mjd:46125.0, dt:54.4320 }, +{ mjd:46156.0, dt:54.4898 }, +{ mjd:46186.0, dt:54.5456 }, +{ mjd:46217.0, dt:54.5977 }, +{ mjd:46247.0, dt:54.6355 }, +{ mjd:46278.0, dt:54.6532 }, +{ mjd:46309.0, dt:54.6776 }, +{ mjd:46339.0, dt:54.7174 }, +{ mjd:46370.0, dt:54.7741 }, +{ mjd:46400.0, dt:54.8253 }, +{ mjd:46431.0, dt:54.8712 }, +{ mjd:46462.0, dt:54.9161 }, +{ mjd:46490.0, dt:54.9581 }, +{ mjd:46521.0, dt:54.9997 }, +{ mjd:46551.0, dt:55.0476 }, +{ mjd:46582.0, dt:55.0912 }, +{ mjd:46612.0, dt:55.1132 }, +{ mjd:46643.0, dt:55.1328 }, +{ mjd:46674.0, dt:55.1532 }, +{ mjd:46704.0, dt:55.1898 }, +{ mjd:46735.0, dt:55.2416 }, +{ mjd:46765.0, dt:55.2838 }, +{ mjd:46796.0, dt:55.3222 }, +{ mjd:46827.0, dt:55.3613 }, +{ mjd:46855.0, dt:55.4063 }, +{ mjd:46886.0, dt:55.4629 }, +{ mjd:46916.0, dt:55.5111 }, +{ mjd:46947.0, dt:55.5524 }, +{ mjd:46977.0, dt:55.5812 }, +{ mjd:47008.0, dt:55.6004 }, +{ mjd:47039.0, dt:55.6262 }, +{ mjd:47069.0, dt:55.6656 }, +{ mjd:47100.0, dt:55.7168 }, +{ mjd:47130.0, dt:55.7698 }, +{ mjd:47161.0, dt:55.8197 }, +{ mjd:47192.0, dt:55.8615 }, +{ mjd:47221.0, dt:55.9130 }, +{ mjd:47252.0, dt:55.9663 }, +{ mjd:47282.0, dt:56.0220 }, +{ mjd:47313.0, dt:56.0700 }, +{ mjd:47343.0, dt:56.0939 }, +{ mjd:47374.0, dt:56.1105 }, +{ mjd:47405.0, dt:56.1314 }, +{ mjd:47435.0, dt:56.1611 }, +{ mjd:47466.0, dt:56.2068 }, +{ mjd:47496.0, dt:56.2582 }, +{ mjd:47527.0, dt:56.3000 }, +{ mjd:47558.0, dt:56.3399 }, +{ mjd:47586.0, dt:56.3790 }, +{ mjd:47617.0, dt:56.4283 }, +{ mjd:47647.0, dt:56.4804 }, +{ mjd:47678.0, dt:56.5352 }, +{ mjd:47708.0, dt:56.5697 }, +{ mjd:47739.0, dt:56.5983 }, +{ mjd:47770.0, dt:56.6328 }, +{ mjd:47800.0, dt:56.6739 }, +{ mjd:47831.0, dt:56.7332 }, +{ mjd:47861.0, dt:56.7972 }, +{ mjd:47892.0, dt:56.8553 }, +{ mjd:47923.0, dt:56.9111 }, +{ mjd:47951.0, dt:56.9755 }, +{ mjd:47982.0, dt:57.0471 }, +{ mjd:48012.0, dt:57.1136 }, +{ mjd:48043.0, dt:57.1738 }, +{ mjd:48073.0, dt:57.2226 }, +{ mjd:48104.0, dt:57.2597 }, +{ mjd:48135.0, dt:57.3073 }, +{ mjd:48165.0, dt:57.3643 }, +{ mjd:48196.0, dt:57.4334 }, +{ mjd:48226.0, dt:57.5016 }, +{ mjd:48257.0, dt:57.5653 }, +{ mjd:48288.0, dt:57.6333 }, +{ mjd:48316.0, dt:57.6973 }, +{ mjd:48347.0, dt:57.7711 }, +{ mjd:48377.0, dt:57.8407 }, +{ mjd:48408.0, dt:57.9058 }, +{ mjd:48438.0, dt:57.9576 }, +{ mjd:48469.0, dt:57.9975 }, +{ mjd:48500.0, dt:58.0425 }, +{ mjd:48530.0, dt:58.1043 }, +{ mjd:48561.0, dt:58.1679 }, +{ mjd:48591.0, dt:58.2389 }, +{ mjd:48622.0, dt:58.3092 }, +{ mjd:48653.0, dt:58.3833 }, +{ mjd:48682.0, dt:58.4537 }, +{ mjd:48713.0, dt:58.5401 }, +{ mjd:48743.0, dt:58.6228 }, +{ mjd:48774.0, dt:58.6917 }, +{ mjd:48804.0, dt:58.7410 }, +{ mjd:48835.0, dt:58.7836 }, +{ mjd:48866.0, dt:58.8406 }, +{ mjd:48896.0, dt:58.8986 }, +{ mjd:48927.0, dt:58.9714 }, +{ mjd:48957.0, dt:59.0438 }, +{ mjd:48988.0, dt:59.1218 }, +{ mjd:49019.0, dt:59.2003 }, +{ mjd:49047.0, dt:59.2747 }, +{ mjd:49078.0, dt:59.3574 }, +{ mjd:49108.0, dt:59.4434 }, +{ mjd:49139.0, dt:59.5242 }, +{ mjd:49169.0, dt:59.5850 }, +{ mjd:49200.0, dt:59.6343 }, +{ mjd:49231.0, dt:59.6928 }, +{ mjd:49261.0, dt:59.7588 }, +{ mjd:49292.0, dt:59.8386 }, +{ mjd:49322.0, dt:59.9111 }, +{ mjd:49353.0, dt:59.9845 }, +{ mjd:49384.0, dt:60.0564 }, +{ mjd:49412.0, dt:60.1231 }, +{ mjd:49443.0, dt:60.2042 }, +{ mjd:49473.0, dt:60.2804 }, +{ mjd:49504.0, dt:60.3530 }, +{ mjd:49534.0, dt:60.4012 }, +{ mjd:49565.0, dt:60.4440 }, +{ mjd:49596.0, dt:60.4900 }, +{ mjd:49626.0, dt:60.5578 }, +{ mjd:49657.0, dt:60.6324 }, +{ mjd:49687.0, dt:60.7059 }, +{ mjd:49718.0, dt:60.7853 }, +{ mjd:49749.0, dt:60.8663 }, +{ mjd:49777.0, dt:60.9387 }, +{ mjd:49808.0, dt:61.0277 }, +{ mjd:49838.0, dt:61.1103 }, +{ mjd:49869.0, dt:61.1870 }, +{ mjd:49899.0, dt:61.2454 }, +{ mjd:49930.0, dt:61.2881 }, +{ mjd:49961.0, dt:61.3378 }, +{ mjd:49991.0, dt:61.4036 }, +{ mjd:50022.0, dt:61.4760 }, +{ mjd:50052.0, dt:61.5525 }, +{ mjd:50083.0, dt:61.6287 }, +{ mjd:50114.0, dt:61.6846 }, +{ mjd:50143.0, dt:61.7433 }, +{ mjd:50174.0, dt:61.8132 }, +{ mjd:50204.0, dt:61.8823 }, +{ mjd:50235.0, dt:61.9497 }, +{ mjd:50265.0, dt:61.9969 }, +{ mjd:50296.0, dt:62.0343 }, +{ mjd:50327.0, dt:62.0714 }, +{ mjd:50357.0, dt:62.1202 }, +{ mjd:50388.0, dt:62.1809 }, +{ mjd:50418.0, dt:62.2382 }, +{ mjd:50449.0, dt:62.2950 }, +{ mjd:50480.0, dt:62.3506 }, +{ mjd:50508.0, dt:62.3995 }, +{ mjd:50539.0, dt:62.4754 }, +{ mjd:50569.0, dt:62.5463 }, +{ mjd:50600.0, dt:62.6136 }, +{ mjd:50630.0, dt:62.6571 }, +{ mjd:50661.0, dt:62.6942 }, +{ mjd:50692.0, dt:62.7383 }, +{ mjd:50722.0, dt:62.7926 }, +{ mjd:50753.0, dt:62.8567 }, +{ mjd:50783.0, dt:62.9146 }, +{ mjd:50814.0, dt:62.9659 }, +{ mjd:50845.0, dt:63.0217 }, +{ mjd:50873.0, dt:63.0807 }, +{ mjd:50904.0, dt:63.1462 }, +{ mjd:50934.0, dt:63.2053 }, +{ mjd:50965.0, dt:63.2599 }, +{ mjd:50995.0, dt:63.2844 }, +{ mjd:51026.0, dt:63.2961 }, +{ mjd:51057.0, dt:63.3126 }, +{ mjd:51087.0, dt:63.3422 }, +{ mjd:51118.0, dt:63.3871 }, +{ mjd:51148.0, dt:63.4339 }, +{ mjd:51179.0, dt:63.4673 }, +{ mjd:51210.0, dt:63.4979 }, +{ mjd:51238.0, dt:63.5319 }, +{ mjd:51269.0, dt:63.5679 }, +{ mjd:51299.0, dt:63.6104 }, +{ mjd:51330.0, dt:63.6444 }, +{ mjd:51360.0, dt:63.6642 }, +{ mjd:51391.0, dt:63.6739 }, +{ mjd:51422.0, dt:63.6926 }, +{ mjd:51452.0, dt:63.7147 }, +{ mjd:51483.0, dt:63.7518 }, +{ mjd:51513.0, dt:63.7927 }, +{ mjd:51544.0, dt:63.8285 }, +{ mjd:51575.0, dt:63.8557 }, +{ mjd:51604.0, dt:63.8804 }, +{ mjd:51635.0, dt:63.9075 }, +{ mjd:51665.0, dt:63.9393 }, +{ mjd:51696.0, dt:63.9691 }, +{ mjd:51726.0, dt:63.9799 }, +{ mjd:51757.0, dt:63.9833 }, +{ mjd:51788.0, dt:63.9938 }, +{ mjd:51818.0, dt:64.0093 }, +{ mjd:51849.0, dt:64.0400 }, +{ mjd:51879.0, dt:64.0670 }, +{ mjd:51910.0, dt:64.0908 }, +{ mjd:51941.0, dt:64.1068 }, +{ mjd:51969.0, dt:64.1282 }, +{ mjd:52000.0, dt:64.1584 }, +{ mjd:52030.0, dt:64.1833 }, +{ mjd:52061.0, dt:64.2094 }, +{ mjd:52091.0, dt:64.2117 }, +{ mjd:52122.0, dt:64.2073 }, +{ mjd:52153.0, dt:64.2116 }, +{ mjd:52183.0, dt:64.2223 }, +{ mjd:52214.0, dt:64.2500 }, +{ mjd:52244.0, dt:64.2761 }, +{ mjd:52275.0, dt:64.2998 }, +{ mjd:52306.0, dt:64.3192 }, +{ mjd:52334.0, dt:64.3450 }, +{ mjd:52365.0, dt:64.3735 }, +{ mjd:52395.0, dt:64.3943 }, +{ mjd:52426.0, dt:64.4151 }, +{ mjd:52456.0, dt:64.4132 }, +{ mjd:52487.0, dt:64.4118 }, +{ mjd:52518.0, dt:64.4097 }, +{ mjd:52548.0, dt:64.4168 }, +{ mjd:52579.0, dt:64.4329 }, +{ mjd:52609.0, dt:64.4511 }, +{ mjd:52640.0, dt:64.4734 }, +{ mjd:52671.0, dt:64.4893 }, +{ mjd:52699.0, dt:64.5053 }, +{ mjd:52730.0, dt:64.5269 }, +{ mjd:52760.0, dt:64.5471 }, +{ mjd:52791.0, dt:64.5597 }, +{ mjd:52821.0, dt:64.5512 }, +{ mjd:52852.0, dt:64.5371 }, +{ mjd:52883.0, dt:64.5359 }, +{ mjd:52913.0, dt:64.5415 }, +{ mjd:52944.0, dt:64.5544 }, +{ mjd:52974.0, dt:64.5654 }, +{ mjd:53005.0, dt:64.5736 }, +{ mjd:53036.0, dt:64.5891 }, +{ mjd:53065.0, dt:64.6015 }, +{ mjd:53096.0, dt:64.6176 }, +{ mjd:53126.0, dt:64.6374 }, +{ mjd:53157.0, dt:64.6549 }, +{ mjd:53187.0, dt:64.6530 }, +{ mjd:53218.0, dt:64.6379 }, +{ mjd:53249.0, dt:64.6372 }, +{ mjd:53279.0, dt:64.6400 }, +{ mjd:53310.0, dt:64.6543 }, +{ mjd:53340.0, dt:64.6723 }, +{ mjd:53371.0, dt:64.6876 }, +{ mjd:53402.0, dt:64.7052 }, +{ mjd:53430.0, dt:64.7313 }, +{ mjd:53461.0, dt:64.7575 }, +{ mjd:53491.0, dt:64.7811 }, +{ mjd:53522.0, dt:64.8001 }, +{ mjd:53552.0, dt:64.7995 }, +{ mjd:53583.0, dt:64.7876 }, +{ mjd:53614.0, dt:64.7831 }, +{ mjd:53644.0, dt:64.7921 }, +{ mjd:53675.0, dt:64.8096 }, +{ mjd:53705.0, dt:64.8311 }, +{ mjd:53736.0, dt:64.8452 }, +{ mjd:53767.0, dt:64.8597 }, +{ mjd:53795.0, dt:64.8850 }, +{ mjd:53826.0, dt:64.9175 }, +{ mjd:53856.0, dt:64.9480 }, +{ mjd:53887.0, dt:64.9794 }, +{ mjd:53917.0, dt:64.9895 }, +{ mjd:53948.0, dt:65.0028 }, +{ mjd:53979.0, dt:65.0138 }, +{ mjd:54009.0, dt:65.0371 }, +{ mjd:54040.0, dt:65.0773 }, +{ mjd:54070.0, dt:65.1122 }, +{ mjd:54101.0, dt:65.1464 }, +{ mjd:54132.0, dt:65.1833 }, +{ mjd:54160.0, dt:65.2145 }, +{ mjd:54191.0, dt:65.2494 }, +{ mjd:54221.0, dt:65.2921 }, +{ mjd:54252.0, dt:65.3279 }, +{ mjd:54282.0, dt:65.3413 }, +{ mjd:54313.0, dt:65.3452 }, +{ mjd:54344.0, dt:65.3496 }, +{ mjd:54374.0, dt:65.3711 }, +{ mjd:54405.0, dt:65.3972 }, +{ mjd:54435.0, dt:65.4296 }, +{ mjd:54466.0, dt:65.4573 }, +{ mjd:54497.0, dt:65.4868 }, +{ mjd:54526.0, dt:65.5152 }, +{ mjd:54557.0, dt:65.5450 }, +{ mjd:54587.0, dt:65.5781 }, +{ mjd:54618.0, dt:65.6127 }, +{ mjd:54648.0, dt:65.6287 }, +{ mjd:54679.0, dt:65.6370 }, +{ mjd:54710.0, dt:65.6493 }, +{ mjd:54740.0, dt:65.6760 }, +{ mjd:54771.0, dt:65.7097 }, +{ mjd:54801.0, dt:65.7461 }, +{ mjd:54832.0, dt:65.7768 }, +{ mjd:54863.0, dt:65.8025 }, +{ mjd:54891.0, dt:65.8237 }, +{ mjd:54922.0, dt:65.8595 }, +{ mjd:54952.0, dt:65.8973 }, +{ mjd:54983.0, dt:65.9323 }, +{ mjd:55013.0, dt:65.9509 }, +{ mjd:55044.0, dt:65.9534 }, +{ mjd:55075.0, dt:65.9628 }, +{ mjd:55105.0, dt:65.9839 }, +{ mjd:55136.0, dt:66.0147 }, +{ mjd:55166.0, dt:66.0420 }, +{ mjd:55197.0, dt:66.0699 }, +{ mjd:55228.0, dt:66.0961 }, +{ mjd:55256.0, dt:66.1310 }, +{ mjd:55287.0, dt:66.1683 }, +{ mjd:55317.0, dt:66.2072 }, +{ mjd:55348.0, dt:66.2356 }, +{ mjd:55378.0, dt:66.2409 }, +{ mjd:55409.0, dt:66.2335 }, +{ mjd:55440.0, dt:66.2349 }, +{ mjd:55470.0, dt:66.2441 }, +{ mjd:55501.0, dt:66.2751 }, +{ mjd:55531.0, dt:66.3054 }, +{ mjd:55562.0, dt:66.3246 }, +{ mjd:55593.0, dt:66.3406 }, +{ mjd:55621.0, dt:66.3624 }, +{ mjd:55652.0, dt:66.3957 }, +{ mjd:55682.0, dt:66.4289 }, +{ mjd:55713.0, dt:66.4619 }, +{ mjd:55743.0, dt:66.4749 }, +{ mjd:55774.0, dt:66.4751 }, +{ mjd:55805.0, dt:66.4829 }, +{ mjd:55835.0, dt:66.5056 }, +{ mjd:55866.0, dt:66.5383 }, +{ mjd:55896.0, dt:66.5706 }, +{ mjd:55927.0, dt:66.6030 }, +{ mjd:55958.0, dt:66.6340 }, +{ mjd:55987.0, dt:66.6569 }, +{ mjd:56018.0, dt:66.6925 }, +{ mjd:56048.0, dt:66.7289 }, +{ mjd:56079.0, dt:66.7579 }, +{ mjd:56109.0, dt:66.7708 }, +{ mjd:56140.0, dt:66.7740 }, +{ mjd:56171.0, dt:66.7846 }, +{ mjd:56201.0, dt:66.8103 }, +{ mjd:56232.0, dt:66.8400 }, +{ mjd:56262.0, dt:66.8779 }, +{ mjd:56293.0, dt:66.9069 }, +{ mjd:56324.0, dt:66.9443 }, +{ mjd:56352.0, dt:66.9762 }, +{ mjd:56383.0, dt:67.0258 }, +{ mjd:56413.0, dt:67.0716 }, +{ mjd:56444.0, dt:67.1100 }, +{ mjd:56474.0, dt:67.1266 }, +{ mjd:56505.0, dt:67.1331 }, +{ mjd:56536.0, dt:67.1458 }, +{ mjd:56566.0, dt:67.1717 }, +{ mjd:56597.0, dt:67.2091 }, +{ mjd:56627.0, dt:67.2460 }, +{ mjd:56658.0, dt:67.2810 }, +{ mjd:56689.0, dt:67.3136 }, +{ mjd:56717.0, dt:67.3457 }, +{ mjd:56748.0, dt:67.3890 }, +{ mjd:56778.0, dt:67.4318 }, +{ mjd:56809.0, dt:67.4666 }, +{ mjd:56839.0, dt:67.4858 }, +{ mjd:56870.0, dt:67.4989 }, +{ mjd:56901.0, dt:67.5111 }, +{ mjd:56931.0, dt:67.5353 }, +{ mjd:56962.0, dt:67.5711 }, +{ mjd:56992.0, dt:67.6070 }, +{ mjd:57023.0, dt:67.6439 }, +{ mjd:57054.0, dt:67.6765 }, +{ mjd:57082.0, dt:67.7117 }, +{ mjd:57113.0, dt:67.7591 }, +{ mjd:57143.0, dt:67.8012 }, +{ mjd:57174.0, dt:67.8402 }, +{ mjd:57204.0, dt:67.8606 }, +{ mjd:57235.0, dt:67.8822 }, +{ mjd:57266.0, dt:67.9120 }, +{ mjd:57296.0, dt:67.9546 }, +{ mjd:57327.0, dt:68.0055 }, +{ mjd:57357.0, dt:68.0514 }, +{ mjd:57388.0, dt:68.1024 }, +{ mjd:57419.0, dt:68.1577 }, +{ mjd:57448.0, dt:68.2044 }, +{ mjd:57479.0, dt:68.2664 }, +{ mjd:57509.0, dt:68.3188 }, +{ mjd:57540.0, dt:68.3704 }, +{ mjd:57570.0, dt:68.3964 }, +{ mjd:57601.0, dt:68.4094 }, +{ mjd:57632.0, dt:68.4305 }, +{ mjd:57662.0, dt:68.4630 }, +{ mjd:57693.0, dt:68.5078 }, +{ mjd:57723.0, dt:68.5537 }, +{ mjd:57754.0, dt:68.5927 }, +{ mjd:57785.0, dt:68.6298 }, +{ mjd:57813.0, dt:68.6671 }, +{ mjd:57844.0, dt:68.7135 }, +{ mjd:57874.0, dt:68.7623 }, +{ mjd:57905.0, dt:68.8033 }, +{ mjd:57935.0, dt:68.8245 }, +{ mjd:57966.0, dt:68.8373 }, +{ mjd:57997.0, dt:68.8477 }, +{ mjd:58027.0, dt:68.8689 }, +{ mjd:58058.0, dt:68.9006 }, +{ mjd:58088.0, dt:68.9355 }, +{ mjd:58119.0, dt:68.9676 }, +{ mjd:58150.0, dt:68.9875 }, +{ mjd:58178.0, dt:69.0175 }, +{ mjd:58209.0, dt:69.0499 }, +{ mjd:58239.0, dt:69.0823 }, +{ mjd:58270.0, dt:69.1070 }, +{ mjd:58300.0, dt:69.1134 }, +{ mjd:58331.0, dt:69.1142 }, +{ mjd:58362.0, dt:69.1207 }, +{ mjd:58392.0, dt:69.1356 }, +{ mjd:58423.0, dt:69.1646 }, +{ mjd:58453.0, dt:69.1964 }, +{ mjd:58484.0, dt:69.2201 }, +{ mjd:58575.0, dt:69.48 }, +{ mjd:58666.0, dt:69.62 }, +{ mjd:58758.0, dt:69.71 }, +{ mjd:58849.0, dt:69.87 }, +{ mjd:58940.0, dt:70.03 }, +{ mjd:59032.0, dt:70.16 }, +{ mjd:59123.0, dt:70.24 }, +{ mjd:59214.0, dt:70.39 }, +{ mjd:59306.0, dt:70.55 }, +{ mjd:59397.0, dt:70.68 }, +{ mjd:59488.0, dt:70.76 }, +{ mjd:59580.0, dt:70.91 }, +{ mjd:59671.0, dt:71.06 }, +{ mjd:59762.0, dt:71.18 }, +{ mjd:59853.0, dt:71.25 }, +{ mjd:59945.0, dt:71.40 }, +{ mjd:60036.0, dt:71.54 }, +{ mjd:60127.0, dt:71.67 }, +{ mjd:60219.0, dt:71.74 }, +{ mjd:60310.0, dt:71.88 }, +{ mjd:60401.0, dt:72.03 }, +{ mjd:60493.0, dt:72.15 }, +{ mjd:60584.0, dt:72.22 }, +{ mjd:60675.0, dt:72.36 }, +{ mjd:60767.0, dt:72.50 }, +{ mjd:60858.0, dt:72.62 }, +{ mjd:60949.0, dt:72.69 }, +{ mjd:61041.0, dt:72.83 }, +{ mjd:61132.0, dt:72.98 }, +{ mjd:61223.0, dt:73.10 }, +{ mjd:61314.0, dt:73.17 }, +{ mjd:61406.0, dt:73.32 }, +{ mjd:61497.0, dt:73.46 }, +{ mjd:61588.0, dt:73.58 }, +{ mjd:61680.0, dt:73.66 } ]; -function LeapSeconds(jd_utc) { - var LS = (jd_utc - 2415020.5) * 86400.0; - for (var i=0; LeapSecondTable[i] < 1.0e+20; ++i) - if (LS >= LeapSecondTable[i] && LS < LeapSecondTable[i+1]) - return 9 + i; +function DeltaT(mjd) { + // Calculate the difference TT-UT for the given date/time, expressed + // as a Modified Julian Date. + // DT[i] = { mjd: 58484.0, dt: 69.34 } + // Check end ranges. If outside the known bounds, clamp to the closest known value. - return 0; + if (mjd <= DT[0].mjd) { + return DT[0].dt; + } + + if (mjd >= DT[DT.length-1].mjd) { + return DT[DT.length-1].dt; + } + + // Do a binary search to find the pair of indexes this mjd lies between. + + let lo = 0; + let hi = DT.length-2; // make sure there is always an array element after the one we are looking at + while (lo <= hi) { + let c = (lo + hi) >> 1; + if (mjd < DT[c].mjd) { + hi = c-1; + } else if (mjd > DT[c+1].mjd) { + lo = c+1; + } else { + let frac = (mjd - DT[c].mjd) / (DT[c+1].mjd - DT[c].mjd); + return DT[c].dt + frac*(DT[c+1].dt - DT[c].dt); + } + } + + // This should never happen if the binary search algorithm is correct. + throw `Could not find Delta-T value for MJD=${mjd}`; } function Time(date) { @@ -710,7 +1482,7 @@ function Time(date) { this.jd_utc = (date - j2000) / MillisPerDay + T0; // Convert UTC to Terrestrial Time (TT) by adjusting for leap seconds. - this.jd_tt = this.jd_utc + (LeapSeconds(this.jd_utc) + 32.184) / 86400.0; + this.jd_tt = this.jd_utc + DeltaT(this.jd_utc - MJD_BASIS) / 86400.0; return; } @@ -718,7 +1490,7 @@ function Time(date) { if (typeof date === 'number') { this.date = new Date(j2000 - (T0 - date)*MillisPerDay); this.jd_utc = date; - this.jd_tt = this.jd_utc + (LeapSeconds(this.jd_utc) + 32.184) / 86400.0; + this.jd_tt = this.jd_utc + DeltaT(this.jd_utc - MJD_BASIS) / 86400.0; return; }