MeasTable.h
Classes
- MeasTable -- MeasTable provides Measure computing database data (full description)
Types
- MERCURY = 1
-
Planetary information
- VENUS = 2
-
- EARTH = 3
-
- MARS = 4
-
- JUPITER = 5
-
- SATURN = 6
-
- URANUS = 7
-
- NEPTUNE = 8
-
- PLUTO = 9
-
- MOON = 10
-
- SUN = 11
-
- BARYSOLAR = 12
-
Solar system barycentre
- BARYEARTH = 13
-
Earth-Moon system barycentre
- NUTATION = 14
-
Nutations
- LIBRATION = 15
-
Librations
- N_Types
-
Number of types
- CAU
-
Light velocity used in AU/d
- GMS
-
Solar mass (GM0)/c2 in AU
- AU
-
AU in km
- RADS
-
Solar radius in AU
- N_JPLconst
-
# of codes
Interface
- Public Members
- static Bool useIAU2000()
- static Bool useIAU2000A()
- static Double precRate00(const uInt which)
- static RotMatrix frameBias00()
- static void precessionCoef(Double T, Polynomial<Double> result[3])
- static void precessionCoef2000(Polynomial<Double> result[3])
- static void precessionCoef1950(Double T, Polynomial<Double> result[3])
- static const Polynomial<Double> &fundArg(uInt which)
- static const Polynomial<Double> &fundArg1950(uInt which)
- static const Polynomial<Double> &fundArg2000(uInt which)
- static const Polynomial<Double> &planetaryArg2000(uInt which)
- static const Vector<Char> &mulArg(uInt which)
- static const Vector<Char> &mulArg1950(uInt which)
- static const Vector<Char> &mulArg2000A(uInt which)
- static const Vector<Char> &mulArg2000B(uInt which)
- static const Vector<Char> &mulPlanArg2000A(uInt which)
- static const Vector<Char> &mulArgEqEqCT2000(uInt which)
- static const Vector<Double> &mulSC(uInt which, Double T)
- static const Vector<Double> &mulSC1950(uInt which, Double T)
- static const Vector<Double> &mulSC2000A(uInt which, Double T)
- static const Vector<Double> &mulSC2000B(uInt which, Double T)
- static const Vector<Double> &mulPlanSC2000A(uInt which)
- static const Vector<Double> &mulSCEqEqCT2000(uInt which)
- static Double dPsiEps(uInt which, Double T)
- static const Vector<Double> &Planetary(MeasTable::Types which, Double T)
- static const Double &Planetary(MeasTable::JPLconst what)
- static void initObservatories()
- static const Vector<String> &Observatories()
- static const Bool Observatory(MPosition &obs, const String &nam)
- static void initSources()
- static const Vector<String> &Sources()
- static const Bool Source(MDirection &obs, const String &nam)
- static void initLines()
- static const Vector<String> &Lines()
- static const Bool Line(MFrequency &obs, const String &nam)
- static const Vector<Double> &IGRF(Double t)
- static const Polynomial<Double> &aberArg(uInt which)
- static const Polynomial<Double> &aber1950Arg(uInt which)
- static const Vector<Char> &mulAberArg(uInt which)
- static const Vector<Char> &mulAber1950Arg(uInt which)
- static const Vector<Char> &mulAberSunArg(uInt which)
- static const Vector<Char> &mulAberEarthArg(uInt which)
- static const Vector<Double> &mulAber(uInt which, Double T)
- static const Vector<Double> &mulAber1950(uInt which, Double T)
- static const Vector<Double> &mulSunAber(uInt which)
- static const Vector<Double> &mulEarthAber(uInt which)
- static const Vector<Double> &AberETerm(uInt which)
- static Double diurnalAber(Double radius, Double T)
- static const Vector<Double> &velocityLSRK(uInt which)
- static const Vector<Double> &velocityLSR(uInt which)
- static const Vector<Double> &velocityLSRGal(uInt which)
- static const Vector<Double> &velocityCMB(uInt which)
- static const Vector<Double> &velocityLGROUP(uInt which)
- static const Polynomial<Double> &posArg(uInt which)
- static const Vector<Char> &mulPosEarthXYArg(uInt which)
- static const Vector<Char> &mulPosEarthZArg(uInt which)
- static const Vector<Char> &mulPosSunXYArg(uInt which)
- static const Vector<Char> &mulPosSunZArg(uInt which)
- static const Vector<Double> &mulPosEarthXY(uInt which, Double T)
- static const Vector<Double> &mulPosEarthZ(uInt which, Double T)
- static const Vector<Double> &mulPosSunXY(uInt which, Double T)
- static const Vector<Double> &mulPosSunZ(uInt which, Double T)
- static const RotMatrix &posToRect()
- static const RotMatrix &rectToPos()
- static const RotMatrix &galToSupergal()
- static Double WGS84(uInt which)
- static const Euler &polarMotion(Double ut)
- static Double dUTC(Double utc)
- static Double dUT1(Double utc)
- static Double dTAI(Double tai=0.0)
- static Double dTDT(Double ut1)
- static Double dTDB(Double tai)
- static Double dTCG(Double tai)
- static Double GMST0(Double ut1)
- static Double GMST00(Double ut1, Double tt)
- static Double ERA00(Double ut1)
- static Double sprime00(Double tt)
- static Double GMUT0(Double gmst1)
- static Double UTtoST(Double ut1)
- Private Members
- MeasTable()
- MeasTable &operator=(const MeasTable &other)
- static void calcPrecesCoef(Double T, Polynomial<Double> result[3], const Double coeff[3][6])
- static void calcPrecesCoef2000(Polynomial<Double> result[3], const Double coeff[3][6])
- static void calcFundArg(Bool &need, Polynomial<Double> result[6], const Double coeff[6][4])
- static void calcFundArg00(Bool &need, Polynomial<Double> result[6], const Double coeff[6][5])
- static void calcPlanArg00(Bool &need, Polynomial<Double> result[14], const Double coeff[8][2])
- static void calcMulArg(Bool &need, Vector<Char> result[], const Char coeff[][5], Int row)
- static void calcMulPlanArg(Bool &need, Vector<Char> result[], const Char coeff[][14], Int row)
- static void calcMulSC(Bool &need, Double &check, Double T, Vector<Double> result[], Int resrow, Polynomial<Double> poly[], const Long coeffTD[][5], Int TDrow, const Short coeffSC[][2])
- static void calcMulSC2000(Bool &need, Double &check, Double T, Vector<Double> result[], uInt resrow, Polynomial<Double> poly[], const Long coeffSC[][6])
- static void calcMulSCPlan(Bool &need, Vector<Double> result[], uInt resrow, const Short coeffSC[][4])
- static void calcMulSCPlan(Bool &need, Vector<Double> result[], uInt resrow, const Double coeffSC[][2])
Review Status
- Reviewed By:
- tcornwel
- Date Reviewed:
- yyyy/mm/dd
- Programs:
- Tests:
Prerequisite
Etymology
MeasTable from Measure and Table
Synopsis
MeasTable contains the database interface for all
data necessary for precession, nutation and other
Measure related calculations.
All data are obtained by calls to a method. E.g.
fundArg(1) will provide the first fundamental argument for
nutation calculations, i.e. 'l'.
This class contains no constructors or destructors, only static
methods and (static) constants.
References:
Explanatory supplements to the Astronomical Almanac
C. Ron and J. Vondrak, Bull. Astron. Inst. Czechosl. 37, p96, 1986
M. Soma, Th. Hirayama and H. Kinoshita, Celest. Mech. 41, p389, 1988
V.S. Gubanov, Astron. Zh. 49, p1112, 1992
Where strings are passed in as arguments (observatory names, sources), they
will be case insensitive, and minimum match.
Example
Usage examples can be found in Precession
Motivation
To create a clean interface between the actual calculations and the
methods to obtain the parameters for these calculations. Note that the
tables are in general in the format and units found in the literature. This
is to be able to easy check and change them. However, in the future
re-arrangement could produce faster and more compact code.
To Do
- more database interfaces, rather than constants
Member Description
Types to be used in different calls
Codes for JPL constants: order should be same as in MeasJPL, length less
than or equal
Selection related data
Are the IAU2000 precession/nutation to be used or not (IAU1984)
Selection related data
If IAU2000 model, do we use the high precision 2000A model?
Precession related data
Get the frame bias matrix for IAU2000 model.
Precession related data
Generate the precession calculation polynomials for a fixed Epoch T
in the result area specified.
T is given in Julian centuries since J2000.0.
Precession related data
Generate the precession polynomials for IAU2000 system.
Precession related data
Generate the precession polynomials for 1950 system for a fixed Epoch T
in the area specified. T is given in Tropical centuries since B1850.0
static Double precRate00(const uInt which)
Nutation related data
Precession related data
Nutation related data
Generate the polynomial for the fundamental arguments (eps, l, l',
F, D, omega) as a function of Julian centuries
static const Vector<Char> &mulArg(uInt which)
static const Vector<Char> &mulArg1950(uInt which)
static const Vector<Char> &mulArg2000A(uInt which)
static const Vector<Char> &mulArg2000B(uInt which)
static const Vector<Char> &mulPlanArg2000A(uInt which)
Nutation related data
Generate the which' vector of the nutation series arguments
static const Vector<Double> &mulSC(uInt which, Double T)
static const Vector<Double> &mulSC1950(uInt which, Double T)
static const Vector<Double> &mulSC2000A(uInt which, Double T)
static const Vector<Double> &mulSC2000B(uInt which, Double T)
static const Vector<Double> &mulPlanSC2000A(uInt which)
Nutation related data
Generate the which' vector of the nutation series multipliers
at T, measured in Julian centuries since J2000.0, respectively B1900.0
static Double dPsiEps(uInt which, Double T)
Nutation related data
Get nutation angles corrections for UTC T in rad.
which = 0 : dPsi as given by IERS for IAU nutation theory;
= 1: dEps as same.
Nutation related data
static const Double &Planetary(MeasTable::JPLconst what)
Planetary (JPL DE) related data
Get the JPL DE constant indicated
static const Vector<Double> &Planetary(MeasTable::Types which, Double T)
Planetary (JPL DE) related data
Observatory positions
Get list of all observatories
Observatory positions
Get position of observatory nam (False if not present)
Observatory positions
Source list positions
Get list of all sources
Source list positions
get position of source nam (False if not present)
Source list positions
Rest frequencies
Get list of all frequencies
Rest frequencies
Get frequency of line name (False if not present)
Rest frequencies
static const Vector<Double> &IGRF(Double t)
Aberration related data
Earth magnetic field (IGRF) data
Aberration related data
Generate the polynomial for the fundamental arguments (l1-l8, w, D, l,
l', F) for the Ron/Vondrak aberration calculations as a function of
Julian centuries(J2000), or the comparable ones for the Gubanov expansion
(B1950).
Aberration related data
Generate the which' vector of the aberration series arguments
static const Vector<Double> &mulAber(uInt which, Double T)
static const Vector<Double> &mulAber1950(uInt which, Double T)
static const Vector<Double> &mulSunAber(uInt which)
static const Vector<Double> &mulEarthAber(uInt which)
Aberration related data
Generate the which' vector of the aberration series multipliers
at T, measured in Julian centuries since J2000.0 (or comparable for
B1950).
static const Vector<Double> &AberETerm(uInt which)
Aberration related data
static Double diurnalAber(Double radius, Double T)
Diurnal aberration factor
LSR (kinematical) velocity conversion: 0 gives J2000; 1 gives B1950.
In both cases a velocity of 20.0 km/s is assumed, and a B1900 RA/Dec
direction of (270,30) degrees. This value has been defined between
the groups doing HI radio work in the mid 1950s.
static const Vector<Double> &velocityLSR(uInt which)
LSR (dynamical, IAU definition). Velocity (9,12,7) km/s in galactic
coordinates. Or 16.552945 towards l,b = 53.13, +25.02 deg.
0 gives J2000, 1 gives B1950 velocities.
Velocity of LSR with respect to galactic centre. 220 km/s in direction
l,b = 270, +0 deg. 0 returns J2000, 1 B1950
static const Vector<Double> &velocityCMB(uInt which)
Velocity of Local Group wrt bary center (F.Ghigo): 308km/s towards
l,b = 105,-7. 0 for J2000, 1 for B1950
Velocity of CMB wrt bary center (F.Ghigo): 369.5km/s towards
l,b = 264.4,48.4. 0 for J2000, 1 for B1950
static const Polynomial<Double> &posArg(uInt which)
Earth and Sun position related data
Fundamental arguments for Soma et al. methods
Earth and Sun position related data
Generate the which' vector of the position series arguments
static const Vector<Double> &mulPosEarthXY(uInt which, Double T)
static const Vector<Double> &mulPosEarthZ(uInt which, Double T)
static const Vector<Double> &mulPosSunXY(uInt which, Double T)
static const Vector<Double> &mulPosSunZ(uInt which, Double T)
Earth and Sun position related data
Generate the which' vector of the position series multipliers
at T, measured in Julian centuries since J2000.0
Earth and Sun position related data
Get the rotation matrix to change position from rectangular to ecliptic
for Soma et al. analytical expression
Earth and Sun position related data
Get the rotation matrix from galactic to supergalactic.
Based on matrix as available in Miriad, leading to Euler Angles
of 90, 83.68, 47.34 degrees
Earth and Sun position related data
static Double WGS84(uInt which)
Position related routines
Polar motion related routines
static Double dUT1(Double utc)
Time related routines
HIGH, WARNING given if correction not obtainable
Thrown Exceptions
- AipsError if table seems to be corrupted
UT1-UTC (in s) for MJD tai TAI
static Double dTAI(Double tai=0.0)
Time related routines
HIGH, WARNING given if correction not obtainable
Thrown Exceptions
- AipsError if table seems to be corrupted
TDT-TAI (in s) for MJD tai TAI. Note this is equal to TT2000-TAI
static Double dTDT(Double ut1)
Time related routines
HIGH, WARNING given if correction not obtainable
Thrown Exceptions
- AipsError if table seems to be corrupted
TDB-TDT (in s) for MJD ut1 UT1
static Double dTDB(Double tai)
Time related routines
HIGH, WARNING given if correction not obtainable
Thrown Exceptions
- AipsError if table seems to be corrupted
TCB-TDB (in s) for MJD tai TAI
static Double dTCG(Double tai)
Time related routines
HIGH, WARNING given if correction not obtainable
Thrown Exceptions
- AipsError if table seems to be corrupted
TCG-TT (in s) for MJD tai TAI
static Double GMST0(Double ut1)
Time related routines
HIGH, WARNING given if correction not obtainable
Thrown Exceptions
- AipsError if table seems to be corrupted
GMST1 at MJD ut1 UT1
static Double GMST00(Double ut1, Double tt)
Time related routines
HIGH, WARNING given if correction not obtainable
Thrown Exceptions
- AipsError if table seems to be corrupted
GMST (IAU2000) including the ERA (IAU2000 Earth Rotation Angle) in rad
static Double ERA00(Double ut1)
Time related routines
HIGH, WARNING given if correction not obtainable
Thrown Exceptions
- AipsError if table seems to be corrupted
Earth Rotation Angle (IAU2000) in rad
static Double sprime00(Double tt)
Time related routines
HIGH, WARNING given if correction not obtainable
Thrown Exceptions
- AipsError if table seems to be corrupted
s' (IAU2000) in rad (approximate value)
static Double GMUT0(Double gmst1)
Time related routines
HIGH, WARNING given if correction not obtainable
Thrown Exceptions
- AipsError if table seems to be corrupted
UT1 at GMSD gmst1 GMST1
static Double UTtoST(Double ut1)
Time related routines
HIGH, WARNING given if correction not obtainable
Thrown Exceptions
- AipsError if table seems to be corrupted
Ratio UT1/MST at MJD ut1 UT1
static Double dUTC(Double utc)
Time related routines
HIGH, WARNING given if correction not obtainable
Thrown Exceptions
- AipsError if table seems to be corrupted
Default constructor, NOT defined
MeasTable &operator=(const MeasTable &other)
Copy assign, NOT defined
static void calcPrecesCoef(Double T, Polynomial<Double> result[3], const Double coeff[3][6])
static void calcPrecesCoef2000(Polynomial<Double> result[3], const Double coeff[3][6])
Destructor, NOT defined and not declared to stop warning
~MeasTable();
Calculate precessionCoef
static void calcFundArg(Bool &need, Polynomial<Double> result[6], const Double coeff[6][4])
static void calcFundArg00(Bool &need, Polynomial<Double> result[6], const Double coeff[6][5])
static void calcPlanArg00(Bool &need, Polynomial<Double> result[14], const Double coeff[8][2])
Calculate fundArg
static void calcMulArg(Bool &need, Vector<Char> result[], const Char coeff[][5], Int row)
static void calcMulPlanArg(Bool &need, Vector<Char> result[], const Char coeff[][14], Int row)
Calculate mulArg
static void calcMulSC(Bool &need, Double &check, Double T, Vector<Double> result[], Int resrow, Polynomial<Double> poly[], const Long coeffTD[][5], Int TDrow, const Short coeffSC[][2])
static void calcMulSC2000(Bool &need, Double &check, Double T, Vector<Double> result[], uInt resrow, Polynomial<Double> poly[], const Long coeffSC[][6])
static void calcMulSCPlan(Bool &need, Vector<Double> result[], uInt resrow, const Short coeffSC[][4])
static void calcMulSCPlan(Bool &need, Vector<Double> result[], uInt resrow, const Double coeffSC[][2])
Aipsrc registration (for speed) of use of iau2000 and if so
the 2000a version