casacore
Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
casacore::Nutation Class Reference

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. More...
 
 Nutation (const Nutation &other)
 Copy constructor. More...
 
 Nutation (NutationTypes type)
 Constructor with type. More...
 
Nutationoperator= (const Nutation &other)
 Copy assignment. More...
 
 ~Nutation ()
 
const Euleroperator() (Double epoch)
 Return the Nutation angles. More...
 
const Eulerderivative (Double epoch)
 Return derivative of Nutation (d-1) More...
 
void init ()
 Re-initialise Nutation object. More...
 
void init (NutationTypes type)
 
void refresh ()
 Refresh calculations. More...
 
Double eqox (Double epoch)
 Get the equation of equinox. More...
 
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 More...
 
Double eqoxCT (Double epoch)
 Get the complimentary terms of the equation of equinoxes. More...
 
Double derivativeEqoxCT (Double epoch)
 Get the derivative of the complimentary terms of the equation of equinoxes. More...
 

Static Public Attributes

static const Double INTV
 Interval to be used for linear approximation (in days) More...
 

Private Member Functions

void copy (const Nutation &other)
 Make a copy. More...
 
void fill ()
 Fill an empty copy. More...
 
void calcNut (Double t, Bool calcDer=False)
 Calculate Nutation angles for time t; also derivatives if True given. More...
 

Private Attributes

NutationTypes method_p
 Method to be used. More...
 
Double checkEpoch_p
 Check epoch for linear approximation. More...
 
Double checkDerEpoch_p
 Check epoch for calculation of derivatives. More...
 
Double nval_p [3]
 Cached calculated angles. More...
 
Double dval_p [3]
 Cached derivatives. More...
 
Double eqeq_p
 Cached equation of equinoxes. More...
 
Double deqeq_p
 Cached derivative equation of equinoxes. More...
 
Double neval_p
 Cached complimentary terms equation of equinoxes. More...
 
Double deval_p
 Cached derivative of complimentary terms equation of equinoxes. More...
 
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. More...
 
Euler result_p [4]
 Last calculation. More...
 

Static Private Attributes

static uInt myInterval_reg
 Interpolation interval. More...
 
static uInt myUseiers_reg
 IERS use. More...
 
static uInt myUsejpl_reg
 JPL use. More...
 

Detailed Description

Nutation class and calculations

Intended use:

Public interface

Review Status

Reviewed By:
Tim Cornwell
Date Reviewed:
1996/07/01
Test programs:
tMeasMath

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).

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:

Example

#include <casacore/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
Nutation()
Default constructor, generates default J2000 Nutation identification.
Quantum< Double > Quantity
Definition: Quantum.h:38

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

Definition at line 139 of file Nutation.h.

Member Enumeration Documentation

◆ NutationTypes

Types of known Nutation calculations (at 1995/09/04 STANDARD == IAU1980, after 2004/01/01 it will be IAU2000B))

Enumerator
NONE 
IAU1980 
B1950 
IAU2000A 
IAU2000B 
IAU2000 
STANDARD 

Definition at line 148 of file Nutation.h.

Constructor & Destructor Documentation

◆ Nutation() [1/3]

casacore::Nutation::Nutation ( )

Default constructor, generates default J2000 Nutation identification.

◆ Nutation() [2/3]

casacore::Nutation::Nutation ( const Nutation other)

Copy constructor.

◆ Nutation() [3/3]

casacore::Nutation::Nutation ( NutationTypes  type)
explicit

Constructor with type.

◆ ~Nutation()

casacore::Nutation::~Nutation ( )

Member Function Documentation

◆ calcNut()

void casacore::Nutation::calcNut ( Double  t,
Bool  calcDer = False 
)
private

Calculate Nutation angles for time t; also derivatives if True given.

◆ copy()

void casacore::Nutation::copy ( const Nutation other)
private

Make a copy.

◆ derivative()

const Euler& casacore::Nutation::derivative ( Double  epoch)

Return derivative of Nutation (d-1)

◆ derivativeEqox()

Double casacore::Nutation::derivativeEqox ( Double  epoch)

Get the derivative of the equation of equinoxes in d-1

◆ derivativeEqoxCT()

Double casacore::Nutation::derivativeEqoxCT ( Double  epoch)

Get the derivative of the complimentary terms of the equation of equinoxes.

◆ eqox()

Double casacore::Nutation::eqox ( Double  epoch)

Get the equation of equinox.

◆ eqoxCT()

Double casacore::Nutation::eqoxCT ( Double  epoch)

Get the complimentary terms of the equation of equinoxes.

◆ fill()

void casacore::Nutation::fill ( )
private

Fill an empty copy.

◆ getEqoxAngle() [1/2]

Quantity casacore::Nutation::getEqoxAngle ( Double  epoch)

◆ getEqoxAngle() [2/2]

Quantity casacore::Nutation::getEqoxAngle ( Double  epoch,
const Unit unit 
)

◆ init() [1/2]

void casacore::Nutation::init ( )

Re-initialise Nutation object.

◆ init() [2/2]

void casacore::Nutation::init ( NutationTypes  type)

◆ operator()()

const Euler& casacore::Nutation::operator() ( Double  epoch)

Return the Nutation angles.

◆ operator=()

Nutation& casacore::Nutation::operator= ( const Nutation other)

Copy assignment.

◆ refresh()

void casacore::Nutation::refresh ( )

Refresh calculations.

Member Data Documentation

◆ checkDerEpoch_p

Double casacore::Nutation::checkDerEpoch_p
private

Check epoch for calculation of derivatives.

Definition at line 204 of file Nutation.h.

◆ checkEpoch_p

Double casacore::Nutation::checkEpoch_p
private

Check epoch for linear approximation.

Definition at line 202 of file Nutation.h.

◆ deqeq_p

Double casacore::Nutation::deqeq_p
private

Cached derivative equation of equinoxes.

Definition at line 212 of file Nutation.h.

◆ deval_p

Double casacore::Nutation::deval_p
private

Cached derivative of complimentary terms equation of equinoxes.

Definition at line 216 of file Nutation.h.

◆ dval_p

Double casacore::Nutation::dval_p[3]
private

Cached derivatives.

Definition at line 208 of file Nutation.h.

◆ eqeq_p

Double casacore::Nutation::eqeq_p
private

Cached equation of equinoxes.

Definition at line 210 of file Nutation.h.

◆ INTV

const Double casacore::Nutation::INTV
static

Interval to be used for linear approximation (in days)

Definition at line 143 of file Nutation.h.

◆ lres_p

Int casacore::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.

◆ method_p

NutationTypes casacore::Nutation::method_p
private

Method to be used.

Definition at line 200 of file Nutation.h.

◆ myInterval_reg

uInt casacore::Nutation::myInterval_reg
staticprivate

Interpolation interval.

Definition at line 224 of file Nutation.h.

◆ myUseiers_reg

uInt casacore::Nutation::myUseiers_reg
staticprivate

IERS use.

Definition at line 226 of file Nutation.h.

◆ myUsejpl_reg

uInt casacore::Nutation::myUsejpl_reg
staticprivate

JPL use.

Definition at line 228 of file Nutation.h.

◆ neval_p

Double casacore::Nutation::neval_p
private

Cached complimentary terms equation of equinoxes.

Definition at line 214 of file Nutation.h.

◆ nval_p

Double casacore::Nutation::nval_p[3]
private

Cached calculated angles.

Definition at line 206 of file Nutation.h.

◆ result_p

Euler casacore::Nutation::result_p[4]
private

Last calculation.

Definition at line 222 of file Nutation.h.


The documentation for this class was generated from the following file: