MVEarthMagnetic.h

Classes

MVEarthMagnetic -- A 3D Earth magnetic field vector (full description)

class MVEarthMagnetic : public MVPosition

Interface

Public Members
MVEarthMagnetic()
MVEarthMagnetic(const MVPosition &other)
MVEarthMagnetic(Double in0, Double in1, Double in2)
MVEarthMagnetic(Double in0)
MVEarthMagnetic(const Quantity &l)
MVEarthMagnetic(const Quantity &l, Double angle0, Double angle1)
MVEarthMagnetic(const Quantity &l, const Quantity &angle0, const Quantity &angle1)
MVEarthMagnetic(const Quantum<Vector<Double> > &angle)
MVEarthMagnetic(const Quantity &l, const Quantum<Quantum<Double> > &angle)
MVEarthMagnetic(const Vector<Double> &other)
MVEarthMagnetic(const Vector<Quantity> &other)
MVEarthMagnetic &operator=(const MVEarthMagnetic &other)
~MVEarthMagnetic()
Double operator*(const MVEarthMagnetic &other) const
Bool operator== (const MVEarthMagnetic &other) const
Bool operator!= (const MVEarthMagnetic &other) const
Bool near(const MVEarthMagnetic &other, Double tol=1e-13) const
Bool near(const MVEarthMagnetic &other, Quantity tol) const
Bool nearAbs(const MVEarthMagnetic &other, Double tol=1e-13) const
MVEarthMagnetic operator-() const
MVEarthMagnetic &operator+=(const MVEarthMagnetic &right)
MVEarthMagnetic operator+(const MVEarthMagnetic &right) const
MVEarthMagnetic &operator-=(const MVEarthMagnetic &right)
MVEarthMagnetic operator-(const MVEarthMagnetic &right) const
virtual uInt type() const
static void assure(const MeasValue &in)
virtual void adjust()
virtual void adjust(Double &res)
virtual void readjust(Double res)
virtual Double radius()
Vector<Double> get() const
const Vector<Double> &getValue() const
Quantum<Vector<Double> > getAngle() const
Quantum<Vector<Double> > getAngle(const Unit &unit) const
Quantity getLength() const
Quantity getLength(const Unit &unit) const
Double earthMagneticAngle(const MVEarthMagnetic &other) const
Quantity earthMagneticAngle(const MVEarthMagnetic &other, const Unit &unit) const
Double separation(const MVEarthMagnetic &other) const
Quantity separation(const MVEarthMagnetic &other, const Unit &unit) const
MVEarthMagnetic crossProduct(const MVEarthMagnetic &other) const
virtual void print(ostream &os) const
virtual MeasValue *clone() const
virtual Vector<Double> getVector() const
virtual void putVector(const Vector<Double> &in)
virtual Vector<Quantum<Double> > getRecordValue() const
virtual Bool putValue(const Vector<Quantum<Double> > &in)

Description

Prerequisite

Etymology

From Measure, Value and Earth Magnetic field

Synopsis

A MVEarthMagnetic is a 3-vector of the Earth's magnetic flux density in a rectangular frame with the z-axis to astronomical North pole, and x-axis towards longitude zero, in internal Units of nano tesla (== 0.00001 G).
It can be constructed with: A void adjust(Double) function normalises the vector to a length of 1; a get() returns as a Double 3-vector the length and angles of the EarthMagnetic vector; a getAngle() returns a Quantum 2-vector, (uInt) returns the indicated element, and getValue returns the vector.
EarthMagnetics can be added and subtracted.
The multiplication of two EarthMagnetics produces the in-product.

Example

See MEarthMagnetic class.

Motivation

To use in ionospheric effect calculations

To Do

Member Description

MVEarthMagnetic()

Default constructor generates a (0,0,0) EarthMagnetic

MVEarthMagnetic(const MVPosition &other)

Copy constructor

MVEarthMagnetic(Double in0, Double in1, Double in2)

Creates a specified vector

MVEarthMagnetic(Double in0)
MVEarthMagnetic(const Quantity &l)

Creates a vector with specified length towards pole

MVEarthMagnetic(const Quantity &l, Double angle0, Double angle1)

Creates the EarthMagnetic from specified (azimuth,elevation) angles and length

MVEarthMagnetic(const Quantum<Vector<Double> > &angle)

Creates the EarthMagnetic from specified angles and length. or EarthMagnetics

Thrown Exceptions

If not enough angles: pole assumed (if none), or elevation =0 (if 1)

MVEarthMagnetic(const Quantity &l, const Quantity &angle0, const Quantity &angle1)
MVEarthMagnetic(const Quantity &l, const Quantum<Quantum<Double> > &angle)

Creates the EarthMagnetic from specified angles and length. or EarthMagnetics

Thrown Exceptions

MVEarthMagnetic(const Vector<Double> &other)
MVEarthMagnetic(const Vector<Quantity> &other)

Create from specified length and/or angles and/or EarthMagnetic

MVEarthMagnetic &operator=(const MVEarthMagnetic &other)

Copy assignment

~MVEarthMagnetic()

Destructor

Double operator*(const MVEarthMagnetic &other) const

Multiplication defined as in-product

Bool operator== (const MVEarthMagnetic &other) const
Bool operator!= (const MVEarthMagnetic &other) const
Bool near(const MVEarthMagnetic &other, Double tol=1e-13) const
Bool near(const MVEarthMagnetic &other, Quantity tol) const
Bool nearAbs(const MVEarthMagnetic &other, Double tol=1e-13) const

Equality comparisons

MVEarthMagnetic operator-() const
MVEarthMagnetic &operator+=(const MVEarthMagnetic &right)
MVEarthMagnetic operator+(const MVEarthMagnetic &right) const
MVEarthMagnetic &operator-=(const MVEarthMagnetic &right)
MVEarthMagnetic operator-(const MVEarthMagnetic &right) const

Addition and subtraction

virtual uInt type() const
static void assure(const MeasValue &in)

Tell me your type

virtual void adjust()
virtual void adjust(Double &res)
virtual void readjust(Double res)

Normalise direction aspects by adjusting the length to 1

virtual Double radius()

Get modulus of EarthMagnetic

Vector<Double> get() const

Generate a 3-vector of coordinates (length(T), angles(rad))

const Vector<Double> &getValue() const

Generate a 3-vector of x,y,z in tesla

Quantum<Vector<Double> > getAngle() const

Generate angle 2-vector (in rad)

Quantum<Vector<Double> > getAngle(const Unit &unit) const

and with specified units

Quantity getLength() const

Generate the length

Quantity getLength(const Unit &unit) const

and generate it with the specified units

Double earthMagneticAngle(const MVEarthMagnetic &other) const
Quantity earthMagneticAngle(const MVEarthMagnetic &other, const Unit &unit) const

Get the EarthMagnetic angle between the directions. I.e. the angle between the direction from one to the pole, and from one to the other.

Double separation(const MVEarthMagnetic &other) const
Quantity separation(const MVEarthMagnetic &other, const Unit &unit) const

Get the angular separation between two directions.

MVEarthMagnetic crossProduct(const MVEarthMagnetic &other) const

Produce the cross product

virtual void print(ostream &os) const

Print data

virtual MeasValue *clone() const

Clone

virtual Vector<Double> getVector() const

Get the value in internal units

virtual void putVector(const Vector<Double> &in)

Set the value from internal units (set 0 for empty vector)

virtual Vector<Quantum<Double> > getRecordValue() const

Get the internal value as a Vector<Quantity>. Usable in records. The getXRecordValue() gets additional information for records. Note that the Vectors could be empty.

virtual Bool putValue(const Vector<Quantum<Double> > &in)

Set the internal value if correct values and dimensions