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

EarthField class model calculations. More...

#include <EarthField.h>

Public Types

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

Public Member Functions

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

Static Public Attributes

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

Private Member Functions

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

Private Attributes

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

Static Private Attributes

static uInt interval_reg_p
 Interpolation interval. More...
 

Detailed Description

EarthField class model calculations.

Intended use:

Internal

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25
Test programs:
tEarthField

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

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

casacore::EarthField::EarthField ( )

Default constructor, generates default J2000 EarthField identification.

casacore::EarthField::EarthField ( const EarthField other)

Copy constructor.

casacore::EarthField::EarthField ( EarthFieldTypes  model,
Double  catepoch = 51544.5 
)
explicit

Constructor with epoch in MJulian days (default is J2000)

casacore::EarthField::~EarthField ( )

Member Function Documentation

void casacore::EarthField::calcField ( const MVPosition pos)
private

Calculate EarthField for longitude and latitude and altitude (m)

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

Make a copy.

const Vector<Double>* casacore::EarthField::derivative ( const MVPosition pos)

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 casacore::EarthField::fillField ( )
private

Create correct default fixedEpoch and catalogue field data.

void casacore::EarthField::init ( )

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

void casacore::EarthField::init ( EarthFieldTypes  model,
Double  catepoch = 51544.5 
)
const Vector<Double>& casacore::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& casacore::EarthField::operator= ( const EarthField other)

Copy assignment.

void casacore::EarthField::refresh ( )

Refresh calculations.

Member Data Documentation

Vector<Double> casacore::EarthField::agh_p
private

List of spherical components.

Definition at line 190 of file EarthField.h.

MVPosition casacore::EarthField::checkPos_p
private

Check position.

Definition at line 199 of file EarthField.h.

Vector<Double> casacore::EarthField::cl_p
private

Definition at line 195 of file EarthField.h.

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

Cached derivatives.

Definition at line 203 of file EarthField.h.

Double casacore::EarthField::fixedEpoch_p
private

Fixed epoch to be used (MJD)

Definition at line 188 of file EarthField.h.

uInt casacore::EarthField::interval_reg_p
staticprivate

Interpolation interval.

Definition at line 211 of file EarthField.h.

const Double casacore::EarthField::INTV
static

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

Definition at line 136 of file EarthField.h.

Int casacore::EarthField::lres_p
private

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.

EarthFieldTypes casacore::EarthField::method_p
private

Method to be used.

Definition at line 186 of file EarthField.h.

Vector<Double> casacore::EarthField::p_p
private

Work arrays for calculations.

Definition at line 193 of file EarthField.h.

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

Cached calculated field components.

Definition at line 201 of file EarthField.h.

Vector<Double> casacore::EarthField::q_p
private

Definition at line 194 of file EarthField.h.

Vector<Double> casacore::EarthField::result_p[4]
private

Last calculation.

Definition at line 209 of file EarthField.h.

Vector<Double> casacore::EarthField::sl_p
private

Definition at line 196 of file EarthField.h.


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