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::EarthField Class Reference

EarthField class model calculations. More...

#include <EarthField.h>

List of all members.

Public Types

enum  EarthFieldTypes {
  IGRF,
  NONE,
  STANDARD
}
 Known EarthField calculation models. More...

Public Member Functions

 EarthField ()
 Default constructor, generates default J2000 EarthField identification.
 EarthField (const EarthField &other)
 Copy constructor.
 EarthField (EarthFieldTypes model, Double catepoch=51544.5)
 Constructor with epoch in MJulian days (default is J2000)
EarthFieldoperator= (const EarthField &other)
 Copy assignment.
 ~EarthField ()
const Vector< Double > & operator() (const MVPosition &pos)
 Return the EarthField components.
const Vector< Double > * derivative (const MVPosition &pos)
 Return derivatives of field (to X, Y, Z).
void init ()
 Re-initialise EarthField object with specified model and epoch, or defaults STANDARD and J2000.
void init (EarthFieldTypes model, Double catepoch=51544.5)
void refresh ()
 Refresh calculations.

Static Public Attributes

static const Double INTV
 Default interval to be used for linear approximation (in m)

Private Member Functions

void copy (const EarthField &other)
 Make a copy.
void fillField ()
 Create correct default fixedEpoch and catalogue field data.
void calcField (const MVPosition &pos)
 Calculate EarthField for longitude and latitude and altitude (m)

Private Attributes

EarthFieldTypes method_p
 Method to be used.
Double fixedEpoch_p
 Fixed epoch to be used (MJD)
Vector< Doubleagh_p
 List of spherical components.
Vector< Doublep_p
 Work arrays for calculations.
Vector< Doubleq_p
Vector< Doublecl_p
Vector< Doublesl_p
MVPosition checkPos_p
 Check position.
Double pval_p [3]
 Cached calculated field components.
Double dval_p [3][3]
 Cached derivatives.
Int lres_p
 To reference results, and use a few in interim calculations, results are calculated in a circular buffer.
Vector< Doubleresult_p [4]
 Last calculation.

Static Private Attributes

static uInt interval_reg_p
 Interpolation interval.

Detailed Description

EarthField class model calculations.

Intended use:

Internal

 <h3>Review Status</h3><dl><dt>Reviewed By:<dd>UNKNOWN<dt>Date Reviewed:<dd>before2004/08/25<dt>Test programs:<dd>tEarthField</dl> 

Prerequisite

Etymology

Earth magnetic Field model

Synopsis

EarthField forms the class for Earth magnetic field calculations. It is a simple container with the selected model, and the mean epoch.
The 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 EarthField for a certain position on Earth is calculated by the () operator. Arguments can be:

The returned value is a 3D vector of the field (in nT) in ITRF coordinates. The derivative (d-1) can be obtained as well by derivative(MVPosition).
An EarthField can be re-initialised with a different method and/or other epoch with the init() functions (same format as constructors).

To bypass the full, lengthy calculation actual returned values are calculated using the derivative if within about 50 km (error less than about 10-2 G). A call to refresh() will re-initiate calculations from scratch.
The following details can be set with the Aipsrc mechanism:

The field model is assumed to be constant over the time-span the class is used.

The calculations are based on a routine provided by the IGRF community. See ftp.ngdc.noaa.gov/Solid_Earth/Mainfld_Mag/Models/IAGA, routine IGRFLIB.FOR. The values are in nT (10uG).

Example

        EarthField mine(EarthField::STANDARD,
                         45837.0);              // define EarthField type
                                                // for 84/05/17
        MPosition pos;
         MeasTable::Observatory(pos, "WSRT");   // Obervatory position
     // Make sure correct position frame used
         MVPosition x(MPosition::Convert(pos, MPosition::ITRF)().getValue());
        MVEarthMagnetic now = mine(x);          // get EarthField

Motivation

To have a container (with history) for field calculations

To Do

Definition at line 130 of file EarthField.h.


Member Enumeration Documentation

Known EarthField calculation models.

Enumerator:
IGRF 

Standard IGRF model.

NONE 

Make the field equal to zero.

STANDARD 

Standard default model if none specified.

Definition at line 140 of file EarthField.h.


Constructor & Destructor Documentation

Default constructor, generates default J2000 EarthField identification.

Copy constructor.

casa::EarthField::EarthField ( EarthFieldTypes  model,
Double  catepoch = 51544.5 
) [explicit]

Constructor with epoch in MJulian days (default is J2000)


Member Function Documentation

void casa::EarthField::calcField ( const MVPosition pos) [private]

Calculate EarthField for longitude and latitude and altitude (m)

void casa::EarthField::copy ( const EarthField other) [private]

Make a copy.

Return derivatives of field (to X, Y, Z).

Note that the value returned has only a lifetime as long as the EarthField container exists, and no new components or derivative is calculated. The returned value should not be deleted.

void casa::EarthField::fillField ( ) [private]

Create correct default fixedEpoch and catalogue field data.

Re-initialise EarthField object with specified model and epoch, or defaults STANDARD and J2000.

void casa::EarthField::init ( EarthFieldTypes  model,
Double  catepoch = 51544.5 
)
const Vector<Double>& casa::EarthField::operator() ( const MVPosition pos)

Return the EarthField components.

Note that the value returned has only a lifetime as long as the EarthField container exists, and no new derivative is asked for.

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

Copy assignment.

Refresh calculations.


Member Data Documentation

List of spherical components.

Definition at line 190 of file EarthField.h.

Check position.

Definition at line 199 of file EarthField.h.

Definition at line 195 of file EarthField.h.

Cached derivatives.

Definition at line 203 of file EarthField.h.

Fixed epoch to be used (MJD)

Definition at line 188 of file EarthField.h.

Interpolation interval.

Definition at line 211 of file EarthField.h.

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

Definition at line 136 of file EarthField.h.

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

Current result pointer

Definition at line 207 of file EarthField.h.

Method to be used.

Definition at line 186 of file EarthField.h.

Work arrays for calculations.

Definition at line 193 of file EarthField.h.

Cached calculated field components.

Definition at line 201 of file EarthField.h.

Definition at line 194 of file EarthField.h.

Last calculation.

Definition at line 209 of file EarthField.h.

Definition at line 196 of file EarthField.h.


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