source: Sophya/trunk/Poubelle/archTOI.old/tsid.cc@ 372

Last change on this file since 372 was 363, checked in by ansari, 26 years ago

Gestion tsid

File size: 1.6 KB
Line 
1// tsid.cc
2// Eric Aubourg CEA/DAPNIA/SPP aout 1999
3// adapted from TSid.java, E. Aubourg 1998.
4
5#include "tsid.h"
6
7const double TSid::SIDRATE = 0.9972695677;
8const double TSid::MJDRef = 1545; // 1/1/2000, 12h UT1
9
10TSid::TSid(double lg)
11: longitude(lg)
12{
13 InitDUT();
14}
15
16void TSid::InitDUT() {
17 dut1[1270.5] = 0.60846; // 1999,3,2 (april, 2 1999)
18 dut1[1299.5] = 0.57975; // 1999,4,1
19 dut1[1330.5] = 0.55305; // 1999,5,1
20 dut1[1360.5] = 0.54229; // 1999,6,1
21 dut1[1391.5] = 0.53916; // 1999,7,1
22 dut1[1422.5] = 0.52822; // 1999,8,1
23 dut1[1452.5] = 0.50279; // 1999,9,1
24 dut1[1483.5] = 0.46517; // 1999,10,1
25 dut1[1513.5] = 0.42700; // 1999,11,1
26 dut1[1544.5] = 0.39116; // 2000,0,1
27 dut1[1575.5] = 0.35876; // 2000,1,1
28 dut1[1604.5] = 0.30979; // 2000,2,1
29 dut1[1635.5] = 0.25614; // 2000,3,1
30}
31
32double TSid::getDUT1(double mjd) {
33 map<double, double>::iterator i = dut1.upper_bound(mjd);
34 if (i==dut1.end() || i==dut1.begin()) return -1;
35 map<double, double>::iterator j = i; j--;
36 double x = (mjd - (*j).first) / ((*i).first - (*j).first);
37 return (1-x)*(*j).second + x * (*i).second;
38}
39
40void TSid::setLongitude(double lg) {
41 longitude = lg;
42}
43
44double TSid::getLST(double mjd) {
45 double dut1 = getDUT1(mjd);
46 double T = ((mjd-MJDRef) + dut1/86400.)/36525.;
47 // T = siecles julien depuis 1/1/2000, 12h UT1
48 double GMST = 24110.54841 + 8640184.812866 * T +
49 0.093104 * T * T - 0.0000062 * T * T * T; // a 0h UT1
50 GMST += ((mjd-.5 - (int)(mjd-.5))*86400. + dut1);
51 double LST = GMST + (longitude/15. * 3600.);
52 LST -= 86400 * int(LST/86400);
53 if (LST<0) LST += 86400.;
54 return LST;
55}
Note: See TracBrowser for help on using the repository browser.