Class ICGEMFormatReader
- java.lang.Object
-
- org.orekit.forces.gravity.potential.PotentialCoefficientsReader
-
- org.orekit.forces.gravity.potential.ICGEMFormatReader
-
- All Implemented Interfaces:
DataLoader
public class ICGEMFormatReader extends PotentialCoefficientsReader
Reader for the ICGEM gravity field format.This format is used to describe the gravity field of EIGEN models published by the GFZ Potsdam since 2004. It is described in Franz Barthelmes and Christoph Förste paper: "the ICGEM-format". The 2006-02-28 version of this paper can be found here and the 2011-06-07 version of this paper can be found here. These versions differ in time-dependent coefficients, which are linear-only prior to 2011 (up to eigen-5 model) and have also harmonic effects after that date (starting with eigen-6 model). Both versions are supported by the class.
This reader uses relaxed check on the gravity constant key so any key ending in gravity_constant is accepted and not only earth_gravity_constant as specified in the previous documents. This allows to read also non Earth gravity fields as found in ICGEM - Gravity Field Models of other Celestial Bodies page to be read.
In order to simplify implementation, some design choices have been made: the reference date and the periods of harmonic pulsations are stored globally and not on a per-coefficient basis. This has the following implications:
- all time-stamped coefficients must share the same reference date, otherwise an error will be triggered during parsing,
- in order to avoid too large memory and CPU consumption, only a few different periods should appear in the file,
- only one occurrence of each coefficient may appear in the file, otherwise an error will be triggered during parsing. Multiple occurrences with different time stamps are forbidden (both because they correspond to a duplicated entry and because they define two different reference dates as per previous design choice).
The proper way to use this class is to call the
GravityFieldFactory
which will determine which reader to use with the selected gravity field file.- Author:
- Luc Maisonobe
- See Also:
GravityFieldFactory
-
-
Constructor Summary
Constructors Constructor Description ICGEMFormatReader(String supportedNames, boolean missingCoefficientsAllowed)
Simple constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RawSphericalHarmonicsProvider
getProvider(boolean wantNormalized, int degree, int order)
Get a provider for read spherical harmonics coefficients.void
loadData(InputStream input, String name)
Load data from a stream.-
Methods inherited from class org.orekit.forces.gravity.potential.PotentialCoefficientsReader
buildRow, buildTriangularArray, extendListOfLists, getAe, getConstantProvider, getMaxAvailableDegree, getMaxAvailableOrder, getMaxParseDegree, getMaxParseOrder, getMu, getSupportedNames, getTideSystem, missingCoefficientsAllowed, parseCoefficient, parseCoefficient, parseDouble, rescale, setAe, setMaxParseDegree, setMaxParseOrder, setMu, setRawCoefficients, setReadComplete, setTideSystem, stillAcceptsData, toArray
-
-
-
-
Constructor Detail
-
ICGEMFormatReader
public ICGEMFormatReader(String supportedNames, boolean missingCoefficientsAllowed)
Simple constructor.- Parameters:
supportedNames
- regular expression for supported files namesmissingCoefficientsAllowed
- if true, allows missing coefficients in the input data
-
-
Method Detail
-
loadData
public void loadData(InputStream input, String name) throws IOException, ParseException, OrekitException
Load data from a stream.- Specified by:
loadData
in interfaceDataLoader
- Specified by:
loadData
in classPotentialCoefficientsReader
- Parameters:
input
- data input streamname
- name of the file (or zip entry)- Throws:
IOException
- if data can't be readParseException
- if data can't be parsed or if some loader specific error occursOrekitException
-
getProvider
public RawSphericalHarmonicsProvider getProvider(boolean wantNormalized, int degree, int order)
Get a provider for read spherical harmonics coefficients.ICGEM fields do include time-dependent parts which are taken into account in the returned provider.
- Specified by:
getProvider
in classPotentialCoefficientsReader
- Parameters:
wantNormalized
- if true, the provider will provide normalized coefficients, otherwise it will provide un-normalized coefficientsdegree
- maximal degreeorder
- maximal order- Returns:
- a new provider
- Since:
- 6.0
- See Also:
PotentialCoefficientsReader.getConstantProvider(boolean, int, int)
-
-