Class PotentialCoefficientsReader

java.lang.Object
org.orekit.forces.gravity.potential.PotentialCoefficientsReader
All Implemented Interfaces:
DataLoader
Direct Known Subclasses:
EGMFormatReader, GRGSFormatReader, ICGEMFormatReader, SHAFormatReader, 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:
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    PotentialCoefficientsReader(String supportedNames, boolean missingCoefficientsAllowed)
    Simple constructor.
    protected
    PotentialCoefficientsReader(String supportedNames, boolean missingCoefficientsAllowed, TimeScale timeScale)
    Simple constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected static double[]
    buildFlatArray(org.orekit.forces.gravity.potential.Flattener flattener, double value)
    Build a coefficients array in flat form.
    protected static double[]
    buildRow(int degree, int order, double value)
    Build a coefficients row.
    protected double
    Get the central body reference radius.
    protected org.orekit.forces.gravity.potential.ConstantSphericalHarmonics
    getBaseProvider(boolean wantNormalized, int degree, int order)
    Get a time-independent provider containing base harmonics coefficients.
    int
    Get the maximal degree available in the last file parsed.
    int
    Get the maximal order available in the last file parsed.
    int
    Get the degree limit for the next file parsing.
    int
    Get the order limit for the next file parsing.
    protected double
    Get the central body attraction coefficient.
    getProvider(boolean wantNormalized, int degree, int order)
    Get a provider for read spherical harmonics coefficients.
    Get the regular expression for supported files names.
    protected TideSystem
    Get the TideSystem used in the gravity field.
    abstract void
    loadData(InputStream input, String name)
    Load data from a stream.
    boolean
    Check if missing coefficients are allowed in the input data.
    protected void
    parseCoefficient(String field, org.orekit.forces.gravity.potential.Flattener f, double[] array, int i, int j, String cName, String name)
    Parse a coefficient.
    protected static double
    Parse a double from a string.
    protected org.orekit.forces.gravity.potential.TimeDependentHarmonic[]
    rescale(boolean wantNormalized, org.orekit.forces.gravity.potential.Flattener rescaledFlattener, org.orekit.forces.gravity.potential.Flattener originalFlattener, org.orekit.forces.gravity.potential.TimeDependentHarmonic[] original)
    Rescale coefficients arrays.
    protected double[]
    rescale(double scale, boolean wantNormalized, org.orekit.forces.gravity.potential.Flattener rescaledFlattener, org.orekit.forces.gravity.potential.Flattener originalFlattener, double[] original)
    Rescale coefficients arrays.
    protected void
    setAe(double ae)
    Set the central body reference radius.
    void
    setMaxParseDegree(int maxParseDegree)
    Set the degree limit for the next file parsing.
    void
    setMaxParseOrder(int maxParseOrder)
    Set the order limit for the next file parsing.
    protected void
    setMu(double mu)
    Set the central body attraction coefficient.
    protected void
    setRawCoefficients(boolean rawNormalized, org.orekit.forces.gravity.potential.Flattener f, double[] c, double[] s, String name)
    Set the tesseral-sectorial coefficients matrix.
    protected void
    setReadComplete(boolean readComplete)
    Set the indicator for completed read.
    protected void
    Set the TideSystem used in the gravity field.
    boolean
    Check if the loader still accepts new data.
    protected AbsoluteDate
    toDate(DateComponents components)
    Create a date from components.
    protected AbsoluteDate
    Create a date from components.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • PotentialCoefficientsReader

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

      Build an uninitialized reader.

      This constructor uses the default data context.

      Parameters:
      supportedNames - regular expression for supported files names
      missingCoefficientsAllowed - allow missing coefficients in the input data
      See Also:
    • PotentialCoefficientsReader

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

      Build an uninitialized reader.

      Parameters:
      supportedNames - regular expression for supported files names
      missingCoefficientsAllowed - allow missing coefficients in the input data
      timeScale - to use when parsing dates.
      Since:
      10.1
  • Method Details

    • 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, org.orekit.forces.gravity.potential.Flattener f, double[] c, double[] s, String name)
      Set the tesseral-sectorial coefficients matrix.
      Parameters:
      rawNormalized - if true, raw coefficients are normalized
      f - converter from triangular to flat form
      c - raw tesseral-sectorial coefficients matrix
      s - raw tesseral-sectorial coefficients matrix
      name - name of the file (or zip entry)
      Since:
      11.1
    • 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
    • loadData

      public abstract void loadData(InputStream input, String name) throws IOException, ParseException, OrekitException
      Load data from a stream.
      Specified by:
      loadData in interface DataLoader
      Parameters:
      input - data input stream
      name - name of the file (or zip entry)
      Throws:
      IOException - if data can't be read
      ParseException - if data can't be parsed or if some loader specific error occurs
      OrekitException
    • 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
    • getBaseProvider

      protected org.orekit.forces.gravity.potential.ConstantSphericalHarmonics getBaseProvider(boolean wantNormalized, int degree, int order)
      Get a time-independent provider containing base harmonics coefficients.

      Beware that some coeefficients may be missing here, if they are managed as time-dependent piecewise models (as in ICGEM V2.0).

      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:
      11.1
      See Also:
    • buildFlatArray

      protected static double[] buildFlatArray(org.orekit.forces.gravity.potential.Flattener flattener, double value)
      Build a coefficients array in flat form.
      Parameters:
      flattener - converter from triangular to flat form
      value - initial value to put in array elements
      Returns:
      built array
      Since:
      11.1
    • 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
    • parseCoefficient

      protected void parseCoefficient(String field, org.orekit.forces.gravity.potential.Flattener f, double[] array, int i, int j, String cName, String name)
      Parse a coefficient.
      Parameters:
      field - text field to parse
      f - converter from triangular to flat form
      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
      Since:
      11.1
    • rescale

      protected double[] rescale(double scale, boolean wantNormalized, org.orekit.forces.gravity.potential.Flattener rescaledFlattener, org.orekit.forces.gravity.potential.Flattener originalFlattener, double[] original)
      Rescale coefficients arrays.

      The normalized/unnormalized nature of original coefficients is inherited from previous parsing.

      Parameters:
      scale - general scaling factor to apply to all elements
      wantNormalized - if true, the rescaled coefficients must be normalized, otherwise they must be un-normalized
      rescaledFlattener - converter from triangular to flat form
      originalFlattener - converter from triangular to flat form
      original - original coefficients
      Returns:
      rescaled coefficients
      Since:
      11.1
    • rescale

      protected org.orekit.forces.gravity.potential.TimeDependentHarmonic[] rescale(boolean wantNormalized, org.orekit.forces.gravity.potential.Flattener rescaledFlattener, org.orekit.forces.gravity.potential.Flattener originalFlattener, org.orekit.forces.gravity.potential.TimeDependentHarmonic[] original)
      Rescale coefficients arrays.

      The normalized/unnormalized nature of original coefficients is inherited from previous parsing.

      Parameters:
      wantNormalized - if true, the rescaled coefficients must be normalized, otherwise they must be un-normalized
      rescaledFlattener - converter from triangular to flat form
      originalFlattener - converter from triangular to flat form
      original - original coefficients
      Returns:
      rescaled coefficients
      Since:
      11.1
    • toDate

      protected AbsoluteDate toDate(DateComponents components)
      Create a date from components. Assumes the time part is noon.
      Parameters:
      components - year, month, day.
      Returns:
      date.
    • toDate

      protected AbsoluteDate toDate(DateComponents dc, TimeComponents tc)
      Create a date from components.
      Parameters:
      dc - dates components.
      tc - time components
      Returns:
      date.
      Since:
      11.1