Class PotentialCoefficientsReader

  • All Implemented Interfaces:
    DataLoader
    Direct Known Subclasses:
    EGMFormatReader, GRGSFormatReader, ICGEMFormatReader, SHMFormatReader

    public abstract class PotentialCoefficientsReader
    extends Object
    implements DataLoader
    This abstract class represents a Gravitational Potential Coefficients file reader.

    As it exits many different coefficients models and containers this interface represents all the methods that should be implemented by a reader. The proper way to use this interface is to call the GravityFieldFactory which will determine which reader to use with the selected potential coefficients file.

    Author:
    Fabien Maussion
    See Also:
    GravityFieldFactory
    • Constructor Detail

      • PotentialCoefficientsReader

        protected PotentialCoefficientsReader​(String supportedNames,
                                              boolean missingCoefficientsAllowed)
        Simple constructor.

        Build an uninitialized reader.

        Parameters:
        supportedNames - regular expression for supported files names
        missingCoefficientsAllowed - allow missing coefficients in the input data
    • Method Detail

      • getSupportedNames

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

        public boolean missingCoefficientsAllowed()
        Check if missing coefficients are allowed in the input data.
        Returns:
        true if missing coefficients are allowed in the input data
      • setMaxParseDegree

        public void setMaxParseDegree​(int maxParseDegree)
        Set the degree limit for the next file parsing.
        Parameters:
        maxParseDegree - maximal degree to parse (may be safely set to Integer.MAX_VALUE to parse all available coefficients)
        Since:
        6.0
      • getMaxParseDegree

        public int getMaxParseDegree()
        Get the degree limit for the next file parsing.
        Returns:
        degree limit for the next file parsing
        Since:
        6.0
      • setMaxParseOrder

        public void setMaxParseOrder​(int maxParseOrder)
        Set the order limit for the next file parsing.
        Parameters:
        maxParseOrder - maximal order to parse (may be safely set to Integer.MAX_VALUE to parse all available coefficients)
        Since:
        6.0
      • getMaxParseOrder

        public int getMaxParseOrder()
        Get the order limit for the next file parsing.
        Returns:
        order limit for the next file parsing
        Since:
        6.0
      • 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
      • setReadComplete

        protected void setReadComplete​(boolean readComplete)
        Set the indicator for completed read.
        Parameters:
        readComplete - if true, a gravity field has been completely read
      • setAe

        protected void setAe​(double ae)
        Set the central body reference radius.
        Parameters:
        ae - central body reference radius
      • getAe

        protected double getAe()
        Get the central body reference radius.
        Returns:
        central body reference radius
      • setMu

        protected void setMu​(double mu)
        Set the central body attraction coefficient.
        Parameters:
        mu - central body attraction coefficient
      • getMu

        protected double getMu()
        Get the central body attraction coefficient.
        Returns:
        central body attraction coefficient
      • setTideSystem

        protected void setTideSystem​(TideSystem tideSystem)
        Set the TideSystem used in the gravity field.
        Parameters:
        tideSystem - tide system used in the gravity field
      • getTideSystem

        protected TideSystem getTideSystem()
        Get the TideSystem used in the gravity field.
        Returns:
        tide system used in the gravity field
      • setRawCoefficients

        protected void setRawCoefficients​(boolean rawNormalized,
                                          double[][] c,
                                          double[][] s,
                                          String name)
        Set the tesseral-sectorial coefficients matrix.
        Parameters:
        rawNormalized - if true, raw coefficients are normalized
        c - raw tesseral-sectorial coefficients matrix (a reference to the array will be stored)
        s - raw tesseral-sectorial coefficients matrix (a reference to the array will be stored)
        name - name of the file (or zip entry)
      • getMaxAvailableDegree

        public int getMaxAvailableDegree()
        Get the maximal degree available in the last file parsed.
        Returns:
        maximal degree available in the last file parsed
        Since:
        6.0
      • getMaxAvailableOrder

        public int getMaxAvailableOrder()
        Get the maximal order available in the last file parsed.
        Returns:
        maximal order available in the last file parsed
        Since:
        6.0
      • getProvider

        public abstract RawSphericalHarmonicsProvider getProvider​(boolean wantNormalized,
                                                                  int degree,
                                                                  int order)
        Get a provider for read spherical harmonics coefficients.
        Parameters:
        wantNormalized - if true, the provider will provide normalized coefficients, otherwise it will provide un-normalized coefficients
        degree - maximal degree
        order - maximal order
        Returns:
        a new provider
        Since:
        6.0
        See Also:
        getConstantProvider(boolean, int, int)
      • getConstantProvider

        protected org.orekit.forces.gravity.potential.ConstantSphericalHarmonics getConstantProvider​(boolean wantNormalized,
                                                                                                     int degree,
                                                                                                     int order)
        Get a time-independent provider for read spherical harmonics coefficients.
        Parameters:
        wantNormalized - if true, the raw provider must provide normalized coefficients, otherwise it will provide un-normalized coefficients
        degree - maximal degree
        order - maximal order
        Returns:
        a new provider, with no time-dependent parts
        Since:
        6.0
        See Also:
        getProvider(boolean, int, int)
      • buildTriangularArray

        protected static double[][] buildTriangularArray​(int degree,
                                                         int order,
                                                         double value)
        Build a coefficients triangular array.
        Parameters:
        degree - array degree
        order - array order
        value - initial value to put in array elements
        Returns:
        built array
      • parseDouble

        protected static double parseDouble​(String string)
        Parse a double from a string. Accept the Fortran convention of using a 'D' or 'd' instead of an 'E' or 'e'.
        Parameters:
        string - to be parsed.
        Returns:
        the double value of string.
      • buildRow

        protected static double[] buildRow​(int degree,
                                           int order,
                                           double value)
        Build a coefficients row.
        Parameters:
        degree - row degree
        order - row order
        value - initial value to put in array elements
        Returns:
        built row
      • extendListOfLists

        protected void extendListOfLists​(List<List<Double>> list,
                                         int degree,
                                         int order,
                                         double value)
        Extend a list of lists of coefficients if needed.
        Parameters:
        list - list of lists of coefficients
        degree - degree required to be present
        order - order required to be present
        value - initial value to put in list elements
      • toArray

        protected double[][] toArray​(List<List<Double>> list)
        Convert a list of list into an array.
        Parameters:
        list - list of lists of coefficients
        Returns:
        a new array
      • parseCoefficient

        protected void parseCoefficient​(String field,
                                        List<List<Double>> list,
                                        int i,
                                        int j,
                                        String cName,
                                        String name)
        Parse a coefficient.
        Parameters:
        field - text field to parse
        list - list where to put the coefficient
        i - first index in the list
        j - second index in the list
        cName - name of the coefficient
        name - name of the file
      • parseCoefficient

        protected void parseCoefficient​(String field,
                                        double[][] array,
                                        int i,
                                        int j,
                                        String cName,
                                        String name)
        Parse a coefficient.
        Parameters:
        field - text field to parse
        array - array where to put the coefficient
        i - first index in the list
        j - second index in the list
        cName - name of the coefficient
        name - name of the file
      • rescale

        protected static void rescale​(double scale,
                                      boolean normalizedOrigin,
                                      double[][] originC,
                                      double[][] originS,
                                      boolean wantNormalized,
                                      double[][] rescaledC,
                                      double[][] rescaledS)
        Rescale coefficients arrays.
        Parameters:
        scale - general scaling factor to apply to all elements
        normalizedOrigin - if true, the origin coefficients are normalized
        originC - cosine part of the origina coefficients
        originS - sine part of the origin coefficients
        wantNormalized - if true, the rescaled coefficients must be normalized
        rescaledC - cosine part of the rescaled coefficients to fill in (may be the originC array)
        rescaledS - sine part of the rescaled coefficients to fill in (may be the originS array)