Main Page
Class Categories
Classes
Namespaces
File List
File Members
exper-sw
cosmosw
AugerSW
Offline
source
main
Utilities
Time
MoonCycle.cc
Go to the documentation of this file.
1
#include <utl/MoonCycle.h>
2
#include <utl/ModifiedJulianDate.h>
3
4
5
namespace
utl {
6
7
// "Mean" new moon of J2000 epoch: 6 Jan 2000 14:20 UT.
8
const
double
kJ2000NewMoonMJD
= 51549.59757;
9
10
// Days in a mean synodic month (new moon to new moon period):
11
const
double
kMeanSynodicMonth
= 29.530589;
12
13
14
double
15
MoonCycle::GetLunation
(
const
LunationType
type,
const
LunationEpoch
epoch)
16
const
17
{
18
// Find the lunation (new moon cycle) relative to 6 Jan 2000 using the mean
19
// synodic month. This introduces a maximum discrepancy of +/-14 hours with
20
// respect to the true lunation (checked between Jan 2000 - Dec 2030).
21
double
lunation =
22
(
ModifiedJulianDate
(
fTime
) -
kJ2000NewMoonMJD
) /
kMeanSynodicMonth
;
23
24
switch
(epoch) {
25
case
eJan2000
:
// Default: new moon of 6 Jan 2000 (first of J2000.0).
26
break
;
27
case
eJan2004
:
// Subtract the 49 lunations bet. Jan 2000 and Dec 2003.
28
lunation -= 49;
29
break
;
30
default
:
31
break
;
32
}
33
34
switch
(type) {
35
case
eNewMoon
:
// Fractional moon phase: 0 = New Moon.
36
break
;
37
case
eFirstQuarter
:
// Fractional moon phase: 0.25 = Full Moon.
38
lunation -= 0.25;
39
break
;
40
case
eFullMoon
:
// Fractional moon phase: 0.5 = Full Moon.
41
lunation -= 0.5;
42
break
;
43
case
eLastQuarter
:
// Fractional moon phase: 0.75 = Full Moon.
44
lunation -= 0.75;
45
break
;
46
default
:
47
break
;
48
}
49
50
return
lunation;
51
}
52
53
}
utl::ModifiedJulianDate
double ModifiedJulianDate(const time_t unixSecond)
Definition:
ModifiedJulianDate.cc:9
utl::MoonCycle::fTime
const TimeStamp fTime
Definition:
MoonCycle.h:44
utl::MoonCycle::eNewMoon
Definition:
MoonCycle.h:26
utl::kMeanSynodicMonth
const double kMeanSynodicMonth
Definition:
MoonCycle.cc:11
utl::MoonCycle::LunationType
LunationType
Definition:
MoonCycle.h:25
utl::MoonCycle::eJan2000
Definition:
MoonCycle.h:21
utl::kJ2000NewMoonMJD
const double kJ2000NewMoonMJD
Definition:
MoonCycle.cc:8
utl::MoonCycle::LunationEpoch
LunationEpoch
Definition:
MoonCycle.h:20
utl::MoonCycle::eJan2004
Definition:
MoonCycle.h:22
utl::MoonCycle::eLastQuarter
Definition:
MoonCycle.h:29
utl::MoonCycle::GetLunation
double GetLunation(const LunationType type=eFullMoon, const LunationEpoch epoch=eJan2004) const
Definition:
MoonCycle.cc:15
utl::MoonCycle::eFullMoon
Definition:
MoonCycle.h:28
utl::MoonCycle::eFirstQuarter
Definition:
MoonCycle.h:27
, generated on Tue Sep 26 2023.