casa
$Rev:20696$
|
Nutation class and calculations. More...
#include <Nutation.h>
Public Types | |
enum | NutationTypes { NONE, IAU1980, B1950, IAU2000A, IAU2000B, IAU2000, STANDARD } |
Types of known Nutation calculations (at 1995/09/04 STANDARD == IAU1980, after 2004/01/01 it will be IAU2000B)) More... | |
Public Member Functions | |
Nutation () | |
Default constructor, generates default J2000 Nutation identification. | |
Nutation (const Nutation &other) | |
Copy constructor. | |
Nutation (NutationTypes type) | |
Constructor with type. | |
Nutation & | operator= (const Nutation &other) |
Copy assignment. | |
~Nutation () | |
const Euler & | operator() (Double epoch) |
Return the Nutation angles. | |
const Euler & | derivative (Double epoch) |
Return derivative of Nutation (d-1) | |
void | init () |
Re-initialise Nutation object. | |
void | init (NutationTypes type) |
void | refresh () |
Refresh calculations. | |
Double | eqox (Double epoch) |
Get the equation of equinox. | |
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. | |
Static Public Attributes | |
static const Double | INTV |
Interval to be used for linear approximation (in days) | |
Private Member Functions | |
void | copy (const Nutation &other) |
Make a copy. | |
void | fill () |
Fill an empty copy. | |
void | calcNut (Double t, Bool calcDer=False) |
Calculate Nutation angles for time t; also derivatives if True given. | |
Private Attributes | |
NutationTypes | method_p |
Method to be used. | |
Double | checkEpoch_p |
Check epoch for linear approximation. | |
Double | checkDerEpoch_p |
Check epoch for calculation of derivatives. | |
Double | nval_p [3] |
Cached calculated angles. | |
Double | dval_p [3] |
Cached derivatives. | |
Double | eqeq_p |
Cached equation of equinoxes. | |
Double | deqeq_p |
Cached derivative equation of equinoxes. | |
Double | neval_p |
Cached complimentary terms equation of equinoxes. | |
Double | deval_p |
Cached derivative of complimentary terms equation of equinoxes. | |
Int | lres_p |
To be able to use references rather than copies, and also to use these references in simple (up to 4 terms of Nutation results) expressions, results are calculated in circulating buffer. | |
Euler | result_p [4] |
Last calculation. | |
Static Private Attributes | |
static uInt | myInterval_reg |
Interpolation interval. | |
static uInt | myUseiers_reg |
IERS use. | |
static uInt | myUsejpl_reg |
JPL use. |
Nutation class and calculations.
Public interface
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).
The calculation method is selected from one of the following:
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:
#include <measures/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.
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.
Definition at line 139 of file Nutation.h.
Types of known Nutation calculations (at 1995/09/04 STANDARD == IAU1980, after 2004/01/01 it will be IAU2000B))
Definition at line 148 of file Nutation.h.
Default constructor, generates default J2000 Nutation identification.
casa::Nutation::Nutation | ( | const Nutation & | other | ) |
Copy constructor.
casa::Nutation::Nutation | ( | NutationTypes | type | ) | [explicit] |
Constructor with type.
void casa::Nutation::calcNut | ( | Double | t, |
Bool | calcDer = False |
||
) | [private] |
Calculate Nutation angles for time t; also derivatives if True given.
void casa::Nutation::copy | ( | const Nutation & | other | ) | [private] |
Make a copy.
const Euler& casa::Nutation::derivative | ( | Double | epoch | ) |
Return derivative of Nutation (d-1)
Double casa::Nutation::derivativeEqox | ( | Double | epoch | ) |
Get the derivative of the equation of equinoxes in d-1
Double casa::Nutation::derivativeEqoxCT | ( | Double | epoch | ) |
Get the derivative of the complimentary terms of the equation of equinoxes.
Double casa::Nutation::eqox | ( | Double | epoch | ) |
Get the equation of equinox.
Double casa::Nutation::eqoxCT | ( | Double | epoch | ) |
Get the complimentary terms of the equation of equinoxes.
void casa::Nutation::fill | ( | ) | [private] |
Fill an empty copy.
Quantity casa::Nutation::getEqoxAngle | ( | Double | epoch | ) |
Quantity casa::Nutation::getEqoxAngle | ( | Double | epoch, |
const Unit & | unit | ||
) |
void casa::Nutation::init | ( | ) |
Re-initialise Nutation object.
void casa::Nutation::init | ( | NutationTypes | type | ) |
void casa::Nutation::refresh | ( | ) |
Refresh calculations.
Double casa::Nutation::checkDerEpoch_p [private] |
Check epoch for calculation of derivatives.
Definition at line 204 of file Nutation.h.
Double casa::Nutation::checkEpoch_p [private] |
Check epoch for linear approximation.
Definition at line 202 of file Nutation.h.
Double casa::Nutation::deqeq_p [private] |
Cached derivative equation of equinoxes.
Definition at line 212 of file Nutation.h.
Double casa::Nutation::deval_p [private] |
Cached derivative of complimentary terms equation of equinoxes.
Definition at line 216 of file Nutation.h.
Double casa::Nutation::dval_p[3] [private] |
Cached derivatives.
Definition at line 208 of file Nutation.h.
Double casa::Nutation::eqeq_p [private] |
Cached equation of equinoxes.
Definition at line 210 of file Nutation.h.
const Double casa::Nutation::INTV [static] |
Interval to be used for linear approximation (in days)
Definition at line 143 of file Nutation.h.
Int casa::Nutation::lres_p [private] |
To be able to use references rather than copies, and also to use these references in simple (up to 4 terms of Nutation results) expressions, results are calculated in circulating buffer.
Definition at line 220 of file Nutation.h.
NutationTypes casa::Nutation::method_p [private] |
Method to be used.
Definition at line 200 of file Nutation.h.
uInt casa::Nutation::myInterval_reg [static, private] |
Interpolation interval.
Definition at line 224 of file Nutation.h.
uInt casa::Nutation::myUseiers_reg [static, private] |
IERS use.
Definition at line 226 of file Nutation.h.
uInt casa::Nutation::myUsejpl_reg [static, private] |
JPL use.
Definition at line 228 of file Nutation.h.
Double casa::Nutation::neval_p [private] |
Cached complimentary terms equation of equinoxes.
Definition at line 214 of file Nutation.h.
Double casa::Nutation::nval_p[3] [private] |
Cached calculated angles.
Definition at line 206 of file Nutation.h.
Euler casa::Nutation::result_p[4] [private] |
Last calculation.
Definition at line 222 of file Nutation.h.