casa
$Rev:20696$
|
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. | |
EarthField (const EarthField &other) | |
Copy constructor. | |
EarthField (EarthFieldTypes model, Double catepoch=51544.5) | |
Constructor with epoch in MJulian days (default is J2000) | |
EarthField & | operator= (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< Double > | agh_p |
List of spherical components. | |
Vector< Double > | p_p |
Work arrays for calculations. | |
Vector< Double > | q_p |
Vector< Double > | cl_p |
Vector< Double > | sl_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< Double > | result_p [4] |
Last calculation. | |
Static Private Attributes | |
static uInt | interval_reg_p |
Interpolation interval. |
EarthField class model calculations.
Internal
<h3>Review Status</h3><dl><dt>Reviewed By:<dd>UNKNOWN<dt>Date Reviewed:<dd>before2004/08/25<dt>Test programs:<dd>tEarthField</dl>
Earth magnetic Field model
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).
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
To have a container (with history) for field calculations
Definition at line 130 of file EarthField.h.
Known EarthField calculation models.
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.
Default constructor, generates default J2000 EarthField identification.
casa::EarthField::EarthField | ( | const EarthField & | other | ) |
Copy constructor.
casa::EarthField::EarthField | ( | EarthFieldTypes | model, |
Double | catepoch = 51544.5 |
||
) | [explicit] |
Constructor with epoch in MJulian days (default is J2000)
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.
const Vector<Double>* casa::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 casa::EarthField::fillField | ( | ) | [private] |
Create correct default fixedEpoch and catalogue field data.
void casa::EarthField::init | ( | ) |
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.
void casa::EarthField::refresh | ( | ) |
Refresh calculations.
Vector<Double> casa::EarthField::agh_p [private] |
List of spherical components.
Definition at line 190 of file EarthField.h.
MVPosition casa::EarthField::checkPos_p [private] |
Check position.
Definition at line 199 of file EarthField.h.
Vector<Double> casa::EarthField::cl_p [private] |
Definition at line 195 of file EarthField.h.
Double casa::EarthField::dval_p[3][3] [private] |
Cached derivatives.
Definition at line 203 of file EarthField.h.
Double casa::EarthField::fixedEpoch_p [private] |
Fixed epoch to be used (MJD)
Definition at line 188 of file EarthField.h.
uInt casa::EarthField::interval_reg_p [static, private] |
Interpolation interval.
Definition at line 211 of file EarthField.h.
const Double casa::EarthField::INTV [static] |
Default interval to be used for linear approximation (in m)
Definition at line 136 of file EarthField.h.
Int casa::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 casa::EarthField::method_p [private] |
Method to be used.
Definition at line 186 of file EarthField.h.
Vector<Double> casa::EarthField::p_p [private] |
Work arrays for calculations.
Definition at line 193 of file EarthField.h.
Double casa::EarthField::pval_p[3] [private] |
Cached calculated field components.
Definition at line 201 of file EarthField.h.
Vector<Double> casa::EarthField::q_p [private] |
Definition at line 194 of file EarthField.h.
Vector<Double> casa::EarthField::result_p[4] [private] |
Last calculation.
Definition at line 209 of file EarthField.h.
Vector<Double> casa::EarthField::sl_p [private] |
Definition at line 196 of file EarthField.h.