IonosphModelPIM.h
Classes
- IonosphModelPIM -- Implements the PIM ionospheric model (full description)
Types
- IMF_INTERPOLATE
-
- IMF_FIX_NORTH
-
- IMF_RUN_TWICE
-
- IMF_ABORT
-
- PIM_F107 = 0
-
- PIM_AP = 1
-
- PIM_IMF_BZ = 2
-
- PIM_NPARAM = 3
-
Interface
- Public Members
- typedef WHATEVER_SUN_TYPEDEF(IonosphModelPIM) IMF_Fallback IMF_Fallback
- typedef WHATEVER_SUN_TYPEDEF(IonosphModelPIM) PIM_Parameter PIM_Parameter
- IonosphModelPIM ()
- virtual ~IonosphModelPIM ()
- virtual void setAlt( const Float *alt,uInt nalt )
- virtual void setAlt( const Vector<Float> &alt )
- uInt sizeAp (Int mjd1,Int mjd2)
- uInt sizeF107 (Int mjd1,Int mjd2)
- void readApF107 (Double *sf107,Double *sap,Int mjd1,Int mjd2)
- void readApF107 (Vector<Double> &sf107,Vector<Double> &sap,Int mjd1,Int mjd2)
- Bool readIMF ( Float &by,Float &bysig,Float &bz,Float &bzsig, Double mjd1,Double mjd2 )
- virtual Block<EDProfile> getED ( LogicalVector &isUniq, const SlantSet &sl_set, const Vector<uInt> &sidx, const Vector<uInt> &suniq )
- void fixParameter ( PIM_Parameter type,Float val)
-----------------------------------------------------------------------
IonosphModelPIM
(wrapper around PIM and some of ased on Bob Campbell's FORTRAN code)
-----------------------------------------------------------------------
Member Description
fallback strategies for missing IMF data
typedef WHATEVER_SUN_TYPEDEF(IonosphModelPIM) IMF_Fallback IMF_Fallback
types of external data
typedef WHATEVER_SUN_TYPEDEF(IonosphModelPIM) PIM_Parameter PIM_Parameter
default contructor and destructor
virtual void setAlt( const Float *alt,uInt nalt )
sets up the altitude grid
virtual void setAlt( const Vector<Float> &alt )
uInt sizeAp (Int mjd1,Int mjd2)
sets up a fallback strategy for missing IMF datums
IMF_Fallback getFallbackStrategy () const;
void setFallbackStrategy ( IMF_Fallback strategy );
sets up the slant separation criteria
void setMinSlantSep ( Double sep_radians );
void setMinSlantSep ( Quantity sep );
Returns the slant separation criteria. Slants closer than this
will be computed only once
Double getMinSlantSep () const; // in radians
Quantity getMinSlantSep ( Unit unit ) const; // in specified units
Returns sizes of Ap and F10.7 arrays for a given range of dates
uInt sizeF107 (Int mjd1,Int mjd2)
void readApF107 (Double *sf107,Double *sap,Int mjd1,Int mjd2)
Read in Ap and F10.7 data from global tables
the first version reads into a regular array (must be big enough,
as indicated by sizeAp() and sizeF107()). The second version stores
it into vectors, resizing as appropriate.
void readApF107 (Vector<Double> &sf107,Vector<Double> &sap,Int mjd1,Int mjd2)
Bool readIMF ( Float &by,Float &bysig,Float &bz,Float &bzsig, Double mjd1,Double mjd2 )
Obtains the IMF By and Bz values in the middle of the specified
time interval.
If IMF data is missing, uses the strategy parameter to figure out
what to do. Throws an exception if unable to handle. Returns
True if valid By/Bz values are returned, or False if the RUN_TWICE
strategy was selected and data is missing.
virtual Block<EDProfile> getED ( LogicalVector &isUniq, const SlantSet &sl_set, const Vector<uInt> &sidx, const Vector<uInt> &suniq )
Performs the actual model computations for a given slant set,
and returns the corresponding ED profile estimates.
isUniq is a vector of flags; if false, then the corresponding slant
was not actually computed, but rather copied from the nearest neighbour.
Normally, tables in /aips++/data will be read to determine the Kp/Ap,
F10.7 and IMF parameters for the given dates. If you want to use your
own values (i.e., for model computations, or if data is not available),
call this method before a getED().
Fixed parameters remian in effect for a single getED() call.
Note that when IMF Bz is >0 (north), Ap no longer matters.