casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
casacore::Precession Class Reference

Precession class and calculations. More...

#include <Precession.h>

Public Types

enum  PrecessionTypes {
  NONE,
  IAU1976,
  B1950,
  IAU2000,
  IAU2000A,
  IAU2000B,
  STANDARD
}
 Types of known precession calculations (at 1995/09/04 STANDARD == IAU1976), from 2004/01/01 will be IAU2000) More...
 

Public Member Functions

 Precession ()
 Default constructor, generates default J2000 precession identification. More...
 
 Precession (const Precession &other)
 Copy constructor (deep copy) More...
 
 Precession (PrecessionTypes type, Double catepoch=0)
 Constructor with epoch in Julian days. More...
 
Precessionoperator= (const Precession &other)
 Copy assignment (deep copy) More...
 
 ~Precession ()
 
const Euleroperator() (Double epoch)
 Return the precession angles (for IAU2000 including the IAU 2000 corrections) at the specified epoch (in MJD; TT for IAU2000). More...
 
const Eulerderivative (Double epoch)
 Return derivative of precession (d-1) More...
 
void init ()
 Re-initialise Precession object. More...
 
void init (PrecessionTypes type, Double catepoch=0)
 
void refresh ()
 Refresh calculations. More...
 

Static Public Attributes

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

Private Member Functions

void copy (const Precession &other)
 Make a copy. More...
 
void fillEpoch ()
 Create correct default fixedEpoch and catalogue epoch data. More...
 
void calcPrec (Double t)
 Calculate precession angles for time t. More...
 

Private Attributes

PrecessionTypes method_p
 Method to be used. More...
 
Double fixedEpoch_p
 Fixed epoch to be used (MJD) More...
 
Double T_p
 Fixed epoch in centuries from base epoch. More...
 
Double cent_p
 Length of century (depending on Bessel or Julian days) More...
 
Double refEpoch_p
 Reference epoch;. More...
 
Double checkEpoch_p
 Check epoch. More...
 
Polynomial< Doublezeta_p [3]
 Polynomial coefficients for zeta,z,theta. More...
 
Double pval_p [3]
 Cached calculated angles. More...
 
Double dval_p [3]
 Cached derivatives. More...
 
Int lres_p
 To reference results, and use a few in interim calculations, results are saced in a circular buffer. More...
 
Euler result_p [4]
 Last calculation. More...
 

Static Private Attributes

static uInt myInterval_reg
 Interpolation interval aipsrc registration. More...
 

Detailed Description

Precession class and calculations.

Intended use:

Public interface

Review Status

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

Prerequisite

Etymology

Precession

Synopsis

Precession forms the class for precession 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.precession.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::MJD1950 or the actual MJD), leading to the following constructors:

Actual precession for a certain Epoch (TT for IAU2000) is calculated by the () operator as Precession(epoch), with epoch Double MJD. Values returned as an Euler. The derivative (d-1) can be obtained as well by derivative(epoch).
A Precession 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

MVDirection pos(Quantity(10,"degree"),Quantity(-10.5,"degree"));
// direction RA=10; DEC=-10.5
Precession mine(Precession::IAU1976); // define precession type
RotMatrix rotat(mine(45837.0)); // rotation matrix for 84/05/17
MVDirection new = rotat*pos; // apply precession
rotat = RotMatrix(mine(45839.0)); // interpolate new precession
// assuming d_interval set large

Motivation

To calculate the precession 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 130 of file Precession.h.

Member Enumeration Documentation

Types of known precession calculations (at 1995/09/04 STANDARD == IAU1976), from 2004/01/01 will be IAU2000)

Enumerator
NONE 
IAU1976 
B1950 
IAU2000 
IAU2000A 
IAU2000B 
STANDARD 

Definition at line 140 of file Precession.h.

Constructor & Destructor Documentation

casacore::Precession::Precession ( )

Default constructor, generates default J2000 precession identification.

casacore::Precession::Precession ( const Precession other)

Copy constructor (deep copy)

casacore::Precession::Precession ( PrecessionTypes  type,
Double  catepoch = 0 
)
explicit

Constructor with epoch in Julian days.

casacore::Precession::~Precession ( )

Member Function Documentation

void casacore::Precession::calcPrec ( Double  t)
private

Calculate precession angles for time t.

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

Make a copy.

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

Return derivative of precession (d-1)

void casacore::Precession::fillEpoch ( )
private

Create correct default fixedEpoch and catalogue epoch data.

void casacore::Precession::init ( )

Re-initialise Precession object.

void casacore::Precession::init ( PrecessionTypes  type,
Double  catepoch = 0 
)
const Euler& casacore::Precession::operator() ( Double  epoch)

Return the precession angles (for IAU2000 including the IAU 2000 corrections) at the specified epoch (in MJD; TT for IAU2000).

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

Copy assignment (deep copy)

void casacore::Precession::refresh ( )

Refresh calculations.

Member Data Documentation

Double casacore::Precession::cent_p
private

Length of century (depending on Bessel or Julian days)

Definition at line 183 of file Precession.h.

Double casacore::Precession::checkEpoch_p
private

Check epoch.

Definition at line 187 of file Precession.h.

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

Cached derivatives.

Definition at line 193 of file Precession.h.

Double casacore::Precession::fixedEpoch_p
private

Fixed epoch to be used (MJD)

Definition at line 179 of file Precession.h.

const Double casacore::Precession::INTV
static

Default interval to be used for linear approximation (in days)

Definition at line 134 of file Precession.h.

Int casacore::Precession::lres_p
private

To reference results, and use a few in interim calculations, results are saced in a circular buffer.

Current result pointer

Definition at line 197 of file Precession.h.

PrecessionTypes casacore::Precession::method_p
private

Method to be used.

Definition at line 177 of file Precession.h.

uInt casacore::Precession::myInterval_reg
staticprivate

Interpolation interval aipsrc registration.

Definition at line 201 of file Precession.h.

Double casacore::Precession::pval_p[3]
private

Cached calculated angles.

Definition at line 191 of file Precession.h.

Double casacore::Precession::refEpoch_p
private

Reference epoch;.

Definition at line 185 of file Precession.h.

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

Last calculation.

Definition at line 199 of file Precession.h.

Double casacore::Precession::T_p
private

Fixed epoch in centuries from base epoch.

Definition at line 181 of file Precession.h.

Polynomial<Double> casacore::Precession::zeta_p[3]
private

Polynomial coefficients for zeta,z,theta.

Definition at line 189 of file Precession.h.


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