File: constants.cpp

package info (click to toggle)
groops 0%2Bgit20250907%2Bds-1
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid
  • size: 11,140 kB
  • sloc: cpp: 135,607; fortran: 1,603; makefile: 20
file content (144 lines) | stat: -rw-r--r-- 5,243 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/***********************************************/
/**
* @file constants.cpp
*
* @brief Define constants.
*
* Constants are only valid after call of main().
* New constants must be set in inputOutput/settings.cpp.
*
* @author Torsten Mayer-Guerr
* @date 2010-03-01
*
*/
/***********************************************/

#include "base/importStd.h"
#include "base/time.h"
#include "base/constants.h"

/***** CONSTANTS *******************************/

Double LIGHT_VELOCITY;

/***** DEFAULTS ********************************/

Double DEFAULT_GRS80_a;
Double DEFAULT_GRS80_f;
Double DEFAULT_GM;
Double DEFAULT_R;
std::string STRING_DEFAULT_GRS80_a;
std::string STRING_DEFAULT_GRS80_f;
std::string STRING_DEFAULT_GM;
std::string STRING_DEFAULT_R;

/***** CONSTANTS for Planets and Tides *********/

Double GRAVITATIONALCONSTANT;
Double R_Earth;
Double R_Moon;
Double GM_Earth;
Double GM_Sun;
Double GM_Moon;
Double GM_MERCURY;
Double GM_VENUS;
Double GM_MARS;
Double GM_JUPITER;
Double GM_SATURN;

/***** TIME SHIFTS *****************************/

Double TIME_EPSILON;
Double DELTA_TAI_GPS;
Double DELTA_TT_GPS;
Double J2000;
std::string STRING_J2000;

std::vector<Int>    MJD_UTC_GPS;
std::vector<Double> DELTA_UTC_GPS;

/***** CLASS ***********************************/

// class for constants initialization,
// will be initialized before main()
class InitConstants
{
public:
  InitConstants();
};

static InitConstants initConstants;

/***********************************************/

InitConstants::InitConstants()
{
  try
  {
    LIGHT_VELOCITY = 299792458.0;

    STRING_DEFAULT_GRS80_a = "6378137.0";
    STRING_DEFAULT_GRS80_f = "298.2572221010";
    STRING_DEFAULT_GM      = "3.986004415e+14";
    STRING_DEFAULT_R       = "6378136.3";

    DEFAULT_GM      = std::atof(STRING_DEFAULT_GM.c_str());
    DEFAULT_R       = std::atof(STRING_DEFAULT_R.c_str());
    DEFAULT_GRS80_a = std::atof(STRING_DEFAULT_GRS80_a.c_str());
    DEFAULT_GRS80_f = std::atof(STRING_DEFAULT_GRS80_f.c_str());

    GRAVITATIONALCONSTANT = 6.673e-11;
    R_Earth    = DEFAULT_R;
    R_Moon     = 1738000;
    GM_Earth   = DEFAULT_GM;
    GM_Sun     = 1.32712442076e20;
    GM_Moon    = 0.49028010560e13; //GM_Earth/81.30056;
    GM_MERCURY = GM_Sun/6023600.0;
    GM_VENUS   = GM_Sun/408523.71;
    GM_MARS    = GM_Sun/3098708.0;
    GM_JUPITER = GM_Sun/1047.3486;
    GM_SATURN  = GM_Sun/3497.898;

    TIME_EPSILON  = 1e-5;
    DELTA_TAI_GPS = 19.0;
    DELTA_TT_GPS  = 51.184;
    STRING_J2000  = "51544.5";
    J2000         = std::atof(STRING_J2000.c_str());

    MJD_UTC_GPS.push_back(date2time(2017, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(-18);
    MJD_UTC_GPS.push_back(date2time(2015, 7, 1).mjdInt());  DELTA_UTC_GPS.push_back(-17);
    MJD_UTC_GPS.push_back(date2time(2012, 7, 1).mjdInt());  DELTA_UTC_GPS.push_back(-16);
    MJD_UTC_GPS.push_back(date2time(2009, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(-15);
    MJD_UTC_GPS.push_back(date2time(2006, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(-14);
    MJD_UTC_GPS.push_back(date2time(1999, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(-13);
    MJD_UTC_GPS.push_back(date2time(1997, 7, 1).mjdInt());  DELTA_UTC_GPS.push_back(-12);
    MJD_UTC_GPS.push_back(date2time(1996, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(-11);
    MJD_UTC_GPS.push_back(date2time(1994, 7, 1).mjdInt());  DELTA_UTC_GPS.push_back(-10);
    MJD_UTC_GPS.push_back(date2time(1993, 7, 1).mjdInt());  DELTA_UTC_GPS.push_back(-9);
    MJD_UTC_GPS.push_back(date2time(1992, 7, 1).mjdInt());  DELTA_UTC_GPS.push_back(-8);
    MJD_UTC_GPS.push_back(date2time(1991, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(-7);
    MJD_UTC_GPS.push_back(date2time(1990, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(-6);
    MJD_UTC_GPS.push_back(date2time(1988, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(-5);
    MJD_UTC_GPS.push_back(date2time(1985, 7, 1).mjdInt());  DELTA_UTC_GPS.push_back(-4);
    MJD_UTC_GPS.push_back(date2time(1983, 7, 1).mjdInt());  DELTA_UTC_GPS.push_back(-3);
    MJD_UTC_GPS.push_back(date2time(1982, 7, 1).mjdInt());  DELTA_UTC_GPS.push_back(-2);
    MJD_UTC_GPS.push_back(date2time(1981, 7, 1).mjdInt());  DELTA_UTC_GPS.push_back(-1);
    MJD_UTC_GPS.push_back(date2time(1980, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(0);
    MJD_UTC_GPS.push_back(date2time(1979, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(1);
    MJD_UTC_GPS.push_back(date2time(1978, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(2);
    MJD_UTC_GPS.push_back(date2time(1977, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(3);
    MJD_UTC_GPS.push_back(date2time(1976, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(4);
    MJD_UTC_GPS.push_back(date2time(1975, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(5);
    MJD_UTC_GPS.push_back(date2time(1974, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(6);
    MJD_UTC_GPS.push_back(date2time(1973, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(7);
    MJD_UTC_GPS.push_back(date2time(1972, 7, 1).mjdInt());  DELTA_UTC_GPS.push_back(8);
    MJD_UTC_GPS.push_back(date2time(1972, 1, 1).mjdInt());  DELTA_UTC_GPS.push_back(9);
    MJD_UTC_GPS.push_back(0);                               DELTA_UTC_GPS.push_back(10);
  }
  catch(std::exception &e)
  {
    GROOPS_RETHROW(e)
  }
}

/***********************************************/