IonosphModelPIM.h

Classes

IonosphModelPIM -- Implements the PIM ionospheric model (full description)

class IonosphModelPIM : public IonosphModel

Types

enum IMF_Fallback

IMF_INTERPOLATE
IMF_FIX_NORTH
IMF_RUN_TWICE
IMF_ABORT

enum PIM_Parameter

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)

Description

----------------------------------------------------------------------- IonosphModelPIM (wrapper around PIM and some of ased on Bob Campbell's FORTRAN code) -----------------------------------------------------------------------

Member Description

enum IMF_Fallback

fallback strategies for missing IMF data

typedef WHATEVER_SUN_TYPEDEF(IonosphModelPIM) IMF_Fallback IMF_Fallback

enum PIM_Parameter

types of external data

typedef WHATEVER_SUN_TYPEDEF(IonosphModelPIM) PIM_Parameter PIM_Parameter

IonosphModelPIM ()

default contructor and destructor

virtual ~IonosphModelPIM ()

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.

void fixParameter ( PIM_Parameter type,Float val)

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.