Class MarshallSolarActivityFutureEstimation

  • All Implemented Interfaces:
    Serializable, DataLoader, DTM2000InputParameters, NRLMSISE00InputParameters

    public class MarshallSolarActivityFutureEstimation
    extends Object
    implements DataLoader, DTM2000InputParameters, NRLMSISE00InputParameters
    This class reads and provides solar activity data needed by atmospheric models: F107 solar flux, Ap and Kp indexes.

    The data are retrieved through the NASA Marshall Solar Activity Future Estimation (MSAFE) as estimates of monthly F10.7 Mean solar flux and Ap geomagnetic parameter. The data can be retrieved at the NASA Marshall Solar Activity website. Here Kp indices are deduced from Ap indexes, which in turn are tabulated equivalent of retrieved Ap values.

    If several MSAFE files are available, some dates may appear in several files (for example August 2007 is in all files from the first one published in March 1999 to the February 2008 file). In this case, the data from the most recent file is used and the older ones are discarded. The date of the file is assumed to be 6 months after its first entry (which explains why the file having August 2007 as its first entry is the February 2008 file). This implies that MSAFE files must not be edited to change their time span, otherwise this would break the old entries overriding mechanism.

    With these data, the getInstantFlux(AbsoluteDate) and getMeanFlux(AbsoluteDate) methods return the same values and the get24HoursKp(AbsoluteDate) and getThreeHourlyKP(AbsoluteDate) methods return the same values.

    Conversion from Ap index values in the MSAFE file to Kp values used by atmosphere models is done using Jacchia's equation in [1].

    With these data, the getAp(AbsoluteDate date) method returns an array of seven times the same daily Ap value, i.e. it is suited to be used only with the NRLMSISE00 atmospheric model where the switch #9 is set to 1.

    References

    1. Jacchia, L. G. "CIRA 1972, recent atmospheric models, and improvements in progress." COSPAR, 21st Plenary Meeting. Vol. 1. 1978.
    Author:
    Bruno Revelin, Luc Maisonobe, Evan Ward, Pascal Parraud
    See Also:
    Serialized Form
    • Constructor Detail

      • MarshallSolarActivityFutureEstimation

        public MarshallSolarActivityFutureEstimation​(String supportedNames,
                                                     MarshallSolarActivityFutureEstimation.StrengthLevel strengthLevel)
        Simple constructor.

        The original file names used by NASA Marshall space center are of the form: Dec2010F10.txt or Oct1999F10.TXT. So a recommended regular expression for the supported name that work with all published files is: "(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\p{Digit}\\p{Digit}\\p{Digit}\\p{Digit}F10\\.(?:txt|TXT)"

        Parameters:
        supportedNames - regular expression for supported files names
        strengthLevel - selected strength level of activity
    • Method Detail

      • getSupportedNames

        public String getSupportedNames()
        Get the supported names for data files.
        Returns:
        regular expression for the supported names for data files
      • getInstantFlux

        public double getInstantFlux​(AbsoluteDate date)
        Get the value of the instantaneous solar flux.
        Specified by:
        getInstantFlux in interface DTM2000InputParameters
        Parameters:
        date - the current date
        Returns:
        the instantaneous solar flux
      • getMeanFlux

        public double getMeanFlux​(AbsoluteDate date)
        Get the value of the mean solar flux.
        Specified by:
        getMeanFlux in interface DTM2000InputParameters
        Parameters:
        date - the current date
        Returns:
        the mean solar flux
      • getThreeHourlyKP

        public double getThreeHourlyKP​(AbsoluteDate date)
        Get the value of the 3 hours geomagnetic index. With a delay of 3 hours at pole to 6 hours at equator using: delay=6-abs(lat)*0.033 (lat in deg.)
        Specified by:
        getThreeHourlyKP in interface DTM2000InputParameters
        Parameters:
        date - the current date
        Returns:
        the 3H geomagnetic index
      • getFileDate

        public DateComponents getFileDate​(AbsoluteDate date)
        Get the date of the file from which data at the specified date comes from.

        If several MSAFE files are available, some dates may appear in several files (for example August 2007 is in all files from the first one published in March 1999 to the February 2008 file). In this case, the data from the most recent file is used and the older ones are discarded. The date of the file is assumed to be 6 months after its first entry (which explains why the file having August 2007 as its first entry is the February 2008 file). This implies that MSAFE files must not be edited to change their time span, otherwise this would break the old entries overriding mechanism.

        Parameters:
        date - date of the solar activity data
        Returns:
        date of the file
      • get24HoursKp

        public double get24HoursKp​(AbsoluteDate date)
        The Kp index is derived from the Ap index.

        The method used is explained on NOAA website. as follows:

        The scale is 0 to 9 expressed in thirds of a unit, e.g. 5- is 4 2/3, 5 is 5 and 5+ is 5 1/3. The ap (equivalent range) index is derived from the Kp index as follows:

        Kp / Ap Conversion Table
        Kp0o0+1-1o1+2-2o2+3-3o3+4-4o4+
        ap02345679121518222732
        Kp5-5o5+6-6o6+7-7o7+8-8o8+9-9o
        ap394856678094111132154179207236300400
        Specified by:
        get24HoursKp in interface DTM2000InputParameters
        Parameters:
        date - date of the Kp data
        Returns:
        the 24H geomagnetic index
      • getDailyFlux

        public double getDailyFlux​(AbsoluteDate date)
        Get the value of the daily F10.7 solar flux for previous day.
        Specified by:
        getDailyFlux in interface NRLMSISE00InputParameters
        Parameters:
        date - the current date
        Returns:
        the daily F10.7 flux for previous day
      • getAverageFlux

        public double getAverageFlux​(AbsoluteDate date)
        Get the value of the 81 day average of F10.7 solar flux centered on current day.
        Specified by:
        getAverageFlux in interface NRLMSISE00InputParameters
        Parameters:
        date - the current date
        Returns:
        the 81 day average of F10.7 solar flux centered on current day
      • getAp

        public double[] getAp​(AbsoluteDate date)
        Get the Ap geomagnetic indices.

        Ap indices are provided as an array such as:

        • 0 → daily Ap
        • 1 → 3 hr Ap index for current time
        • 2 → 3 hr Ap index for 3 hrs before current time
        • 3 → 3 hr Ap index for 6 hrs before current time
        • 4 → 3 hr Ap index for 9 hrs before current time
        • 5 → Average of eight 3 hr Ap indices from 12 to 33 hrs prior to current time
        • 6 → Average of eight 3 hr Ap indices from 36 to 57 hrs prior to current time

        Specified by:
        getAp in interface NRLMSISE00InputParameters
        Parameters:
        date - the current date
        Returns:
        the array of Ap indices
      • stillAcceptsData

        public boolean stillAcceptsData()
        Check if the loader still accepts new data.

        This method is used to speed up data loading by interrupting crawling the data sets as soon as a loader has found the data it was waiting for. For loaders that can merge data from any number of sources (for example JPL ephemerides or Earth Orientation Parameters that are split among several files), this method should always return true to make sure no data is left over.

        Specified by:
        stillAcceptsData in interface DataLoader
        Returns:
        true while the loader still accepts new data