- NONE
- IAU1980
- B1950
- IAU2000A
- IAU2000B
- IAU2000 = IAU2000A,
The calculation method is selected from one of the following:
Types of known Nutation calculations (at 1995/09/04 STANDARD == IAU1980,
after 2004/01/01 it will be IAU2000B))
Return the Nutation angles
Return derivative of Nutation (d-1)
Re-initialise Nutation object
Refresh calculations
Get the equation of equinox
Prerequisite
Etymology
Nutation
Synopsis
Nutation forms the class for Nutation calculations. It is a simple
container with the selected method, and the mean epoch.
It acts as a cache
for values and their derivatives, to enable fast calculations for time
epochs close together (see the aipsrc variable
measures.nutation.d_interval).
Epochs can be specified as the MJD (with defined constants MeasData::MJD2000
and MeasData::MJDB1950 or the actual MJD),
leading to the following constructors:
Actual Nutation for a certain Epoch is calculated by the () operator
as Nutation(epoch), with epoch Double MJD. Values are returned as an
Euler.
The derivative (d-1) can be obtained as well by
derivative(epoch).
A Nutation can be re-initialed with a different method and/or zero
epoch with the init() functions (same format as constructors).
To bypass the full calculation actual returned values are calculated
using the derivative if within about 2 hours (error less than about
10-5 mas). A call to refresh() will re-initiate calculations
from scratch.
The following details can be set with the
Aipsrc mechanism:
Example
#include <aips/Measures.h>
MVDirection pos(Quantity(10,"degree"),Quantity(-10.5,"degree"));
// direction RA=10; DEC=-10.5
Nutation mine(Nutation::IAU1980); // define nutation type
RotMatrix rotat(mine(45837.0)); // rotation matrix for 84/05/17
MVDirection new = rotat*pos; // apply nutation
The normal way to use Nutation is by using the
MeasConvert class.
Motivation
To calculate the Nutation angles. An alternate route could have been
a global function, but having a simple container allows caching of some
calculations for speed.
Using MJD (JD-2400000.5) rather than JD is for precision reasons.
To Do
Member Description
enum NutationTypes
Nutation()
Default constructor, generates default J2000 Nutation identification
Nutation(const Nutation &other)
Copy constructor
explicit Nutation(NutationTypes type)
Constructor with type
Nutation &operator=(const Nutation &other)
Copy assignment
~Nutation()
const Euler &operator()(Double epoch)
const Euler &derivative(Double epoch)
void init()
void init(NutationTypes type)
void refresh()
Double eqox(Double epoch)
Quantity getEqoxAngle(Double epoch)
Quantity getEqoxAngle(Double epoch, const Unit &unit)
Double derivativeEqox(Double epoch)
Get the derivative of the equation of equinoxes in d-1
Double eqoxCT(Double epoch)
Get the complimentary terms of the equation of equinoxes
Double derivativeEqoxCT(Double epoch)
Get the derivative of the complimentary terms of the equation of equinoxes
void copy(const Nutation &other)
Make a copy
void fill()
Fill an empty copy
void calcNut(Double t)
Calculate Nutation angles for time t