public final class FramesFactory extends Object implements Serializable
Several predefined reference frames are implemented in OREKIT. They are linked together in a tree with the
International Celestial Reference Frame (ICRF) as the root of the tree. The IERS frames require a
FramesConfiguration. If no configuration is specified by the user, a default one is used. The user can create a
configuration with the FramesConfigurationBuilder
, and pass it to
the FramesFactory
with the setConfiguration(FramesConfiguration)
method.
The user can retrieve those reference frames using various static methods (
getFrame(Predefined)
, getICRF()
, getGCRF()
, getCIRF()
,
getTIRF()
, getITRF()
, getEME2000()
, getMOD(boolean)
, getTOD(boolean)
,
getGTOD(boolean)
, getITRFEquinox()
, getTEME()
and getVeis1950()
).
The frames defined by the IERS are available, and are described in the IERS conventions (2010). The are fully configurable. Using the
FramesConfigurationBuilder
, one can specify all models pertaining
to the transformations between the IERS frames.
This frame is used to define position on solid Earth. It rotates with the Earth and includes the pole motion with
respect to Earth crust as provided by the frames
configuration
. Its pole axis is the IERS Reference Pole (IRP).
The classical paradigm used prior to IERS conventions 2003 is equinox based and uses more intermediate frames. Only some of these frames are supported in Orekit.
Here is a schematic representation of the predefined reference frames tree:
ICRF │ │ GCRF │ ┌────────┴────┬────────────────────┐ │ │ Frame bias │ │ │ EME2000 │ │ │ │ │ Precession effects │ Bias, Precession and Nutation effects │ │ │ with or w/o EOP nutation correction │ MOD MOD (Mean equator Of Date) │ │ w/o EOP corrections │ ┌───────┤ Nutation effects ├───────────────────────────┐ (Celestial Intermediate Reference Frame) CIRF │ │ │ │ │ │ TOD TOD (True equator Of Date) │ Earth natural rotation │ │ │ w/o EOP corrections │ │ │ │ Sidereal Time │ │ │ │ │ │ │ (Terrestrial Intermediate Reference Frame) TIRF EOD GTOD GTOD (Green. True Of Date) EOD │ w/o EOP corrections Pole motion │ │ │ ├────────────┬─────────────┐ │ │ │ │ (International Terrestrial Reference Frame) ITRF ITRF VEIS1950 G50 (Gamma 50) equinox-based
This is a utility class, so its constructor is private.
Modifier and Type | Method and Description |
---|---|
static void |
clear()
Clear the frames tree.
|
static void |
clearConfiguration()
Clear frames configuration.
|
static CelestialBodyFrame |
getCIRF()
Get the CIRF reference frame.
|
static FramesConfiguration |
getConfiguration()
Getter for the current configuration.
|
static CelestialBodyFrame |
getEclipticJ2000()
This class implements the Ecliptic J2000 frame.
|
static CelestialBodyFrame |
getEclipticMOD(boolean applyEOPCorr)
This class implements the Ecliptic MOD frame (mean ecliptic and equinox of the epoch) (formerly called EOD).
|
static CelestialBodyFrame |
getEMB()
Get the unique Earth-Moon barycenter frame.
|
static CelestialBodyFrame |
getEME2000()
Get the unique EME2000 frame.
|
static Frame |
getFrame(Predefined factoryKey)
Get one of the predefined frames.
|
static CelestialBodyFrame |
getG50()
Get the G50 reference frame.
|
static CelestialBodyFrame |
getGCRF()
Get the unique GCRF frame.
|
static CelestialBodyFrame |
getGTOD(boolean applyEOPCorr)
Get the GTOD reference frame.
|
static Frame |
getH0MinusN(String name,
AbsoluteDate h0MinusN,
double longitude)
Get the "H0 - n" reference frame.
|
static Frame |
getH0MinusN(String name,
AbsoluteDate h0,
double n,
double longitude)
Get the "H0 - n" reference frame.
|
static CelestialBodyFrame |
getICRF()
Get the unique ICRF frame.
|
static CelestialBodyFrame |
getITRF()
Get the ITRF reference frame.
|
static CelestialBodyFrame |
getITRFEquinox()
Get the equinox-based ITRF reference frame.
|
static CelestialBodyFrame |
getMOD(boolean applyEOPCorr)
Get the MOD reference frame.
|
static CelestialBodyFrame |
getTEME()
Get the TEME reference frame.
|
static CelestialBodyFrame |
getTIRF()
Get the TIRF reference frame.
|
static CelestialBodyFrame |
getTOD(boolean applyEOPCorr)
Get the TOD reference frame.
|
static CelestialBodyFrame |
getVeis1950()
Get the VEIS 1950 reference frame.
|
static void |
setConfiguration(FramesConfiguration newCfg)
Sets a new configuration.
|
public static Frame getFrame(Predefined factoryKey) throws PatriusException
factoryKey
- key of the frame within the factoryPatriusException
- if frame cannot be built due to missing datapublic static CelestialBodyFrame getGCRF()
public static CelestialBodyFrame getEMB()
public static CelestialBodyFrame getICRF()
The ICRF frame is centered at solar system barycenter and aligned with GCRF.
The ICRF frame is the root frame in the frame tree.
public static CelestialBodyFrame getCIRF()
public static CelestialBodyFrame getTIRF() throws PatriusException
PatriusException
- if the precession-nutation model data embedded in the library
cannot be read.public static CelestialBodyFrame getITRF() throws PatriusException
PatriusException
- if the precession-nutation model data embedded in the library
cannot be read.public static CelestialBodyFrame getEME2000()
The EME2000 frame is also called the J2000 frame. The former denomination is preferred in PATRIUS.
public static CelestialBodyFrame getVeis1950() throws PatriusException
Its parent frame is the GTOD frame without EOP corrections.
PatriusException
- if data embedded in the library cannot be readpublic static CelestialBodyFrame getG50() throws PatriusException
Its parent frame is the GTOD frame without EOP corrections.
PatriusException
- if data embedded in the library cannot be readpublic static CelestialBodyFrame getITRFEquinox() throws PatriusException
PatriusException
- if data embedded in the library cannot be readpublic static CelestialBodyFrame getGTOD(boolean applyEOPCorr) throws PatriusException
The applyEOPCorr parameter is available mainly for testing purposes or for consistency with legacy software that
don't handle EOP correction parameters. Beware that setting this parameter to false
leads to crude
accuracy (order of magnitudes for errors might be above 1m in LEO and 10m in GEO).
applyEOPCorr
- if true, EOP corrections are applied (here, lod)PatriusException
- if data embedded in the library cannot be readpublic static CelestialBodyFrame getTOD(boolean applyEOPCorr) throws PatriusException
The applyEOPCorr parameter is available mainly for testing purposes or for consistency with legacy software that
don't handle EOP correction parameters. Beware that setting this parameter to false
leads to crude
accuracy (order of magnitudes for errors might be above 1m in LEO and 10m in GEO).
applyEOPCorr
- if true, EOP corrections are applied (here, nutation)PatriusException
- if data embedded in the library cannot be readpublic static CelestialBodyFrame getMOD(boolean applyEOPCorr)
The applyEOPCorr parameter is available mainly for testing purposes or for consistency with legacy software that
don't handle EOP correction parameters. Beware that setting this parameter to false
leads to crude
accuracy (order of magnitudes for errors might be above 1m in LEO and 10m in GEO).
applyEOPCorr
- if true, EOP corrections are applied (EME2000/GCRF bias compensation)public static CelestialBodyFrame getTEME() throws PatriusException
The TEME frame is used for the SGP4 model in TLE propagation. This frame has no official definition and there are some ambiguities about whether it should be used as "of date" or "of epoch". This frame should therefore be used only for TLE propagation and not for anything else, as recommended by the CCSDS Orbit Data Message blue book.
PatriusException
- if data embedded in the library cannot be readpublic static CelestialBodyFrame getEclipticMOD(boolean applyEOPCorr)
This class implements the Ecliptic MOD frame (mean ecliptic and equinox of the epoch) (formerly called EOD).
applyEOPCorr
- true to take into account EOP correctionspublic static CelestialBodyFrame getEclipticJ2000()
This class implements the Ecliptic J2000 frame.
See "Astronomical Algorithms", chapter 24 "Solar Coordinates", Jean Meeus, 1991.public static Frame getH0MinusN(String name, AbsoluteDate h0, double n, double longitude) throws PatriusException
name
- name of the frame.h0
- the H0 date.n
- the offset for the date (date = H0 - n).longitude
- the rotation angle around the ITRF Z axis (rad).PatriusException
- when the ITRF-GCRF transformation cannot be computedpublic static Frame getH0MinusN(String name, AbsoluteDate h0MinusN, double longitude) throws PatriusException
name
- name of the frame.h0MinusN
- the H0 - n date.longitude
- the rotation angle around the ITRF Z axis (rad).PatriusException
- when the ITRF-GCRF transformation cannot be computedpublic static void setConfiguration(FramesConfiguration newCfg)
newCfg
- the new configuration.public static FramesConfiguration getConfiguration()
public static void clearConfiguration()
FramesConfigurationFactory.getIERS2010Configuration()
will be used by default.public static void clear()
Caution: use this method carefully. It will clear the frames tree but does not remove objects from JVM.
Copyright © 2023 CNES. All rights reserved.