MVEarthMagnetic.h
Classes
- MVEarthMagnetic -- A 3D Earth magnetic field vector (full description)
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)
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:
- MVEarthMagnetic() creates (0,0,0)
- MVEarthMagnetic(MVEarthMagnetic) creates a copy
- MVEarthMagnetic(Double, Double, Double) creates (x,y,z) with
specified values in tesla
- MVEarthMagnetic(Quantity length,Double, Double) creates an
MVEarthMagnetic assuming
that the two values are (in radians) angle along 'equator'
and towards 'pole'.
- MVEarthMagnetic(Quantity length, Quantity, Quantity) creates an
MVEarthMagnetic
assuming angles as in previous, or (x,y,z) fields
- MVEarthMagnetic(Quantity, Quantum<Vector<Double> >) creates a
MVEarthMagnetic from angle vector, using first two angles, and
assuming second as zero if not present, and pole if length 0.
- MVEarthMagnetic(Quantum<Vector<Double> > creates from
angles or fields, depending on the units in the
quantum vector. In the angle case,
the data derived can be scaled with the readjust() function. If
the unit of the quantum vector is magnetic flux density,
magnetic field components are assumed.
- MVEarthMagnetic(Vector<Double> creates from angles (less than
or equal to two elements) or x,y,z (3 elements).
- MVEarthMagnetic(Vector<Quantity> creates from length+angles,
angles, or x,y,z, depending on units.
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
Default constructor generates a (0,0,0) EarthMagnetic
Copy constructor
MVEarthMagnetic(Double in0, Double in1, Double in2)
Creates a specified vector
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
Creates the EarthMagnetic from specified angles and length. or EarthMagnetics
Thrown Exceptions
- AipsError if quantities not in angle format
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
- AipsError if quantities not in angle format
Create from specified length and/or angles and/or EarthMagnetic
MVEarthMagnetic &operator=(const MVEarthMagnetic &other)
Copy assignment
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
Generate a 3-vector of coordinates (length(T), angles(rad))
Generate a 3-vector of x,y,z in tesla
Generate angle 2-vector (in rad)
and with specified units
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
Clone
Get the value in internal units
virtual void putVector(const Vector<Double> &in)
Set the value from internal units (set 0 for empty vector)
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.
Set the internal value if correct values and dimensions