casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes
casa::Nutation Class Reference

Nutation class and calculations. More...

#include <Nutation.h>

List of all members.

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.
Nutationoperator= (const Nutation &other)
 Copy assignment.
 ~Nutation ()
const Euleroperator() (Double epoch)
 Return the Nutation angles.
const Eulerderivative (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.

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

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

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

Default constructor, generates default J2000 Nutation identification.

casa::Nutation::Nutation ( const Nutation other)

Copy constructor.

Constructor with type.


Member Function Documentation

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.

Return derivative of Nutation (d-1)

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

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

Get the equation of equinox.

Get the complimentary terms of the equation of equinoxes.

void casa::Nutation::fill ( ) [private]

Fill an empty copy.

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

Re-initialise Nutation object.

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

Return the Nutation angles.

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

Copy assignment.

Refresh calculations.


Member Data Documentation

Check epoch for calculation of derivatives.

Definition at line 204 of file Nutation.h.

Check epoch for linear approximation.

Definition at line 202 of file Nutation.h.

Cached derivative equation of equinoxes.

Definition at line 212 of file Nutation.h.

Cached derivative of complimentary terms equation of equinoxes.

Definition at line 216 of file Nutation.h.

Cached derivatives.

Definition at line 208 of file Nutation.h.

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.

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 to be used.

Definition at line 200 of file Nutation.h.

Interpolation interval.

Definition at line 224 of file Nutation.h.

IERS use.

Definition at line 226 of file Nutation.h.

JPL use.

Definition at line 228 of file Nutation.h.

Cached complimentary terms equation of equinoxes.

Definition at line 214 of file Nutation.h.

Cached calculated angles.

Definition at line 206 of file Nutation.h.

Last calculation.

Definition at line 222 of file Nutation.h.


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