Class: Astronoby::Nutation

Inherits:
Object
  • Object
show all
Defined in:
lib/astronoby/nutation.rb

Overview

Computes nutation using the IAU 2000B model (77-term series). Provides both the nutation matrix and the individual nutation angles (in longitude and obliquity).

Constant Summary collapse

IAU2000B_DPSI_CORRECTION =

IAU 2000B model corrections (in microarcseconds)

-0.000135e7
IAU2000B_DEPS_CORRECTION =
0.000388e7
NUTATION_TERMS =

Nutation terms from IAU 2000B model: 77 most significant terms from the IAU 2000A model 0..4: fundamental argument coefficients 5..7: longitude coefficients 8..10: obliquity coefficients

[
  [0, 0, 0, 0, 1, -172064161, -174666, 33386, 92052331, 9086, 15377],
  [0, 0, 2, -2, 2, -13170906, -1675, -13696, 5730336, -3015, -4587],
  [0, 0, 2, 0, 2, -2276413, -234, 2796, 978459, -485, 1374],
  [0, 0, 0, 0, 2, 2074554, 207, -698, -897492, 470, -291],
  [0, 1, 0, 0, 0, 1475877, -3633, 11817, 73871, -184, -1924],
  [0, 1, 2, -2, 2, -516821, 1226, -524, 224386, -677, -174],
  [1, 0, 0, 0, 0, 711159, 73, -872, -6750, 0, 358],
  [0, 0, 2, 0, 1, -387298, -367, 380, 200728, 18, 318],
  [1, 0, 2, 0, 2, -301461, -36, 816, 129025, -63, 367],
  [0, -1, 2, -2, 2, 215829, -494, 111, -95929, 299, 132],
  [0, 0, 2, -2, 1, 128227, 137, 181, -68982, -9, 39],
  [-1, 0, 2, 0, 2, 123457, 11, 19, -53311, 32, -4],
  [-1, 0, 0, 2, 0, 156994, 10, -168, -1235, 0, 82],
  [1, 0, 0, 0, 1, 63110, 63, 27, -33228, 0, -9],
  [-1, 0, 0, 0, 1, -57976, -63, -189, 31429, 0, -75],
  [-1, 0, 2, 2, 2, -59641, -11, 149, 25543, -11, 66],
  [1, 0, 2, 0, 1, -51613, -42, 129, 26366, 0, 78],
  [-2, 0, 2, 0, 1, 45893, 50, 31, -24236, -10, 20],
  [0, 0, 0, 2, 0, 63384, 11, -150, -1220, 0, 29],
  [0, 0, 2, 2, 2, -38571, -1, 158, 16452, -11, 68],
  [0, -2, 2, -2, 2, 32481, 0, 0, -13870, 0, 0],
  [-2, 0, 0, 2, 0, -47722, 0, -18, 477, 0, -25],
  [2, 0, 2, 0, 2, -31046, -1, 131, 13238, -11, 59],
  [1, 0, 2, -2, 2, 28593, 0, -1, -12338, 10, -3],
  [-1, 0, 2, 0, 1, 20441, 21, 10, -10758, 0, -3],
  [2, 0, 0, 0, 0, 29243, 0, -74, -609, 0, 13],
  [0, 0, 2, 0, 0, 25887, 0, -66, -550, 0, 11],
  [0, 1, 0, 0, 1, -14053, -25, 79, 8551, -2, -45],
  [-1, 0, 0, 2, 1, 15164, 10, 11, -8001, 0, -1],
  [0, 2, 2, -2, 2, -15794, 72, -16, 6850, -42, -5],
  [0, 0, -2, 2, 0, 21783, 0, 13, -167, 0, 13],
  [1, 0, 0, -2, 1, -12873, -10, -37, 6953, 0, -14],
  [0, -1, 0, 0, 1, -12654, 11, 63, 6415, 0, 26],
  [-1, 0, 2, 2, 1, -10204, 0, 25, 5222, 0, 15],
  [0, 2, 0, 0, 0, 16707, -85, -10, 168, -1, 10],
  [1, 0, 2, 2, 2, -7691, 0, 44, 3268, 0, 19],
  [-2, 0, 2, 0, 0, -11024, 0, -14, 104, 0, 2],
  [0, 1, 2, 0, 2, 7566, -21, -11, -3250, 0, -5],
  [0, 0, 2, 2, 1, -6637, -11, 25, 3353, 0, 14],
  [0, -1, 2, 0, 2, -7141, 21, 8, 3070, 0, 4],
  [0, 0, 0, 2, 1, -6302, -11, 2, 3272, 0, 4],
  [1, 0, 2, -2, 1, 5800, 10, 2, -3045, 0, -1],
  [2, 0, 2, -2, 2, 6443, 0, -7, -2768, 0, -4],
  [-2, 0, 0, 2, 1, -5774, -11, -15, 3041, 0, -5],
  [2, 0, 2, 0, 1, -5350, 0, 21, 2695, 0, 12],
  [0, -1, 2, -2, 1, -4752, -11, -3, 2719, 0, -3],
  [0, 0, 0, -2, 1, -4940, -11, -21, 2720, 0, -9],
  [-1, -1, 0, 2, 0, 7350, 0, -8, -51, 0, 4],
  [2, 0, 0, -2, 1, 4065, 0, 6, -2206, 0, 1],
  [1, 0, 0, 2, 0, 6579, 0, -24, -199, 0, 2],
  [0, 1, 2, -2, 1, 3579, 0, 5, -1900, 0, 1],
  [1, -1, 0, 0, 0, 4725, 0, -6, -41, 0, 3],
  [-2, 0, 2, 0, 2, -3075, 0, -2, 1313, 0, -1],
  [3, 0, 2, 0, 2, -2904, 0, 15, 1233, 0, 7],
  [0, -1, 0, 2, 0, 4348, 0, -10, -81, 0, 2],
  [1, -1, 2, 0, 2, -2878, 0, 8, 1232, 0, 4],
  [0, 0, 0, 1, 0, -4230, 0, 5, -20, 0, -2],
  [-1, -1, 2, 2, 2, -2819, 0, 7, 1207, 0, 3],
  [-1, 0, 2, 0, 0, -4056, 0, 5, 40, 0, -2],
  [0, -1, 2, 2, 2, -2647, 0, 11, 1129, 0, 5],
  [-2, 0, 0, 0, 1, -2294, 0, -10, 1266, 0, -4],
  [1, 1, 2, 0, 2, 2481, 0, -7, -1062, 0, -3],
  [2, 0, 0, 0, 1, 2179, 0, -2, -1129, 0, -2],
  [-1, 1, 0, 1, 0, 3276, 0, 1, -9, 0, 0],
  [1, 1, 0, 0, 0, -3389, 0, 5, 35, 0, -2],
  [1, 0, 2, 0, 0, 3339, 0, -13, -107, 0, 1],
  [-1, 0, 2, -2, 1, -1987, 0, -6, 1073, 0, -2],
  [1, 0, 0, 0, 2, -1981, 0, 0, 854, 0, 0],
  [-1, 0, 0, 1, 0, 4026, 0, -353, -553, 0, -139],
  [0, 0, 2, 1, 2, 1660, 0, -5, -710, 0, -2],
  [-1, 0, 2, 4, 2, -1521, 0, 9, 647, 0, 4],
  [-1, 1, 0, 1, 1, 1314, 0, 0, -700, 0, 0],
  [0, -2, 2, -2, 1, -1283, 0, 0, 672, 0, 0],
  [1, 0, 2, 2, 1, -1331, 0, 8, 663, 0, 4],
  [-2, 0, 2, 2, 2, 1383, 0, -2, -594, 0, -2],
  [-1, 0, 0, 0, 2, 1405, 0, 4, -610, 0, 2],
  [1, 1, 2, -2, 2, 1290, 0, 0, -556, 0, 0]
]

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(instant:) ⇒ Nutation

Returns a new instance of Nutation.

Parameters:



104
105
106
# File 'lib/astronoby/nutation.rb', line 104

def initialize(instant:)
  @instant = instant
end

Class Method Details

.matrix_for(instant) ⇒ Matrix

Returns The nutation matrix.

Parameters:

Returns:

  • (Matrix)

    The nutation matrix



99
100
101
# File 'lib/astronoby/nutation.rb', line 99

def self.matrix_for(instant)
  new(instant: instant).matrix
end

Instance Method Details

#matrixMatrix

Returns The nutation matrix.

Returns:

  • (Matrix)

    The nutation matrix



109
110
111
112
113
114
115
116
117
# File 'lib/astronoby/nutation.rb', line 109

def matrix
  mean_obliquity = MeanObliquity.at(@instant)
  true_obliquity = mean_obliquity + nutation_in_obliquity
  build_nutation_matrix(
    mean_obliquity: mean_obliquity,
    true_obliquity: true_obliquity,
    psi: nutation_in_longitude
  )
end

#nutation_in_longitudeAstronoby::Angle

Returns Nutation angle in longitude.

Returns:



120
121
122
# File 'lib/astronoby/nutation.rb', line 120

def nutation_in_longitude
  iau2000b_angles.first
end

#nutation_in_obliquityAstronoby::Angle

Returns Nutation angle in obliquity.

Returns:



125
126
127
# File 'lib/astronoby/nutation.rb', line 125

def nutation_in_obliquity
  iau2000b_angles.last
end