Commit d7c24eb8 authored by Pascal Parraud's avatar Pascal Parraud
Browse files

documented Veis 1950 definition

parent 1922ef54
......@@ -428,6 +428,7 @@ public class FramesFactory implements Serializable {
}
/** Get the VEIS 1950 reference frame.
* <p>Its parent frame is the {@link PEFFrame} without EOP corrections.<p>
* @return the selected reference frame singleton.
* @exception OrekitException if data embedded in the
* library cannot be read.
......
......@@ -64,6 +64,9 @@ class MEMEFrame extends Frame {
/** EOP history (null if EOP are ignored). */
private final EOP1980History eopHistory;
/** Flag for EOP correction application. */
private final boolean applyEOPCorrection;
/** Simple constructor, applying EOP corrections (here, EME2000/GCRF bias compensation).
* @param date the date.
* @param name name of the frame
......@@ -75,7 +78,7 @@ class MEMEFrame extends Frame {
}
/** Simple constructor.
* @param applyEOPCorr if true, EOP correction are applied (here, EME2000/GCRF bias compensation)
* @param applyEOPCorr if true, EOP correction is applied (here, EME2000/GCRF bias compensation)
* @param date the date.
* @param name name of the frame
* @exception OrekitException if EOP parameters are desired but cannot be read
......@@ -88,18 +91,18 @@ class MEMEFrame extends Frame {
eopHistory = applyEOPCorr ? FramesFactory.getEOP1980History() : null;
applyEOPCorrection = applyEOPCorr;
// everything is in place, we can now synchronize the frame
updateFrame(date);
}
/** Get the UT1-UTC value.
* <p>The data provided comes from the IERS files. It is smoothed data.</p>
* @param date date at which the value is desired
* @return UT1-UTC in seconds (0 if date is outside covered range)
/** Indicate if EOP correction is applied.
* @return true if EOP correction is applied
*/
double getUT1MinusUTC(final AbsoluteDate date) {
return (eopHistory == null) ? 0.0 : eopHistory.getUT1MinusUTC(date);
boolean isEOPCorrectionApplied() {
return applyEOPCorrection;
}
/** Get the LoD (Length of Day) value.
......
......@@ -28,7 +28,7 @@ import org.orekit.utils.Constants;
/** Pseudo Earth Fixed Frame.
* <p> This frame handles the sidereal time according to IAU-82 model.</p>
* <p> Its parent frame is the {@link TEMEFrame}.</p>
* <p>The pole motion is not applied here.</p>
* <p> The pole motion is not applied here.</p>
* @author Pascal Parraud
* @author Thierry Ceolin
* @version $Revision$ $Date$
......@@ -282,7 +282,10 @@ class PEFFrame extends Frame {
/** Cached date to avoid useless calculus. */
private AbsoluteDate cachedDate;
/** Simple constructor, applying EOP corrections (here, dut1 and lod).
/** Flag for EOP correction application. */
private final boolean applyEOPCorrection;
/** Simple constructor, applying EOP corrections (here, lod).
* @param date the date.
* @param name name of the frame
* @exception OrekitException if EOP parameters cannot be read
......@@ -293,7 +296,7 @@ class PEFFrame extends Frame {
}
/** Simple constructor.
* @param applyEOPCorr if true, EOP corrections are applied (here, dut1 and lod)
* @param applyEOPCorr if true, EOP corrections are applied (here, lod)
* @param date the current date
* @param name the string representation
* @exception OrekitException if EOP parameters are desired but cannot be read
......@@ -304,6 +307,8 @@ class PEFFrame extends Frame {
super(FramesFactory.getTEME(applyEOPCorr), null, name, false);
applyEOPCorrection = applyEOPCorr;
// set up an interpolation model on 12 points with a 1/2 day step
// this leads to an interpolation error of about 1.7e-10 arcseconds
final int n = 12;
......@@ -320,6 +325,13 @@ class PEFFrame extends Frame {
}
/** Indicate if EOP correction is applied.
* @return true if EOP correction is applied
*/
boolean isEOPCorrectionApplied() {
return applyEOPCorrection;
}
/** Update the frame to the given date.
* <p>The update considers the earth rotation from IERS data.</p>
* @param date new value of the date
......
......@@ -261,6 +261,9 @@ class TEMEFrame extends Frame {
/** Cached date to avoid useless computation. */
private AbsoluteDate cachedDate;
/** Flag for EOP correction application. */
private final boolean applyEOPCorrection;
/** Simple constructor, applying EOP corrections (here, nutation).
* @param date the date.
* @param name name of the frame
......@@ -272,13 +275,7 @@ class TEMEFrame extends Frame {
}
/** Simple constructor.
* <p>
* The applyEOPCorr parameter is available mainly for testing purposes or for
* consistency with legacy software that don't handle EOP parameters. Beware
* that setting this parameter to {@code false} leads to very crude accuracy
* (order of magnitudes are about 1m in LEO and 10m in GEO).
* </p>
* @param applyEOPCorr if true, EOP corrections are applied (here, nutation)
* @param applyEOPCorr if true, EOP correction is applied (here, nutation)
* @param date the date.
* @param name name of the frame
* @exception OrekitException if EOP parameters are desired but cannot be read
......@@ -289,6 +286,8 @@ class TEMEFrame extends Frame {
super(FramesFactory.getMEME(applyEOPCorr), null , name, true);
applyEOPCorrection = applyEOPCorr;
// set up an interpolation model on 12 points with a 1/2 day step
// this leads to an interpolation error of about 1.7e-10 arcseconds
final int n = 12;
......@@ -305,6 +304,13 @@ class TEMEFrame extends Frame {
}
/** Indicate if EOP correction is applied.
* @return true if EOP correction is applied
*/
boolean isEOPCorrectionApplied() {
return applyEOPCorrection;
}
/** Update the frame to the given date.
* <p>The update considers the nutation effects from IERS data.</p>
* @param date new value of the date
......
......@@ -25,7 +25,9 @@ import org.orekit.time.TimeScalesFactory;
import org.orekit.utils.Constants;
/** Veis 1950 Frame.
* <p>Its parent frame is the {@link PEFFrame} without EOP corrections.<p>
* <p>Its parent frame is the {@link PEFFrame} without EOP correction application.<p>
* <p>This frame is mainly provided for consistency with legacy softwares.</p>
*
* @author Pascal Parraud
* @version $Revision$ $Date$
*/
......
......@@ -22,8 +22,8 @@ Other frames not belonging to the previous set are the EME2000 frame that was us
to GCRF and which is linked to GCRF by a simple bias rotation, the MEME (mean of date) frame
which involves the IAU 1976 precession model, the TEME (true of date) frame which involves
the IAU 1980 nutation model, the PEF (pseudo earth fixed) which involves the IAU 1982
Greenwich sidereal time model and the Veis 1950 frame which involves a correction to the
Greenwich sidereal time model from PEF.
Greenwich sidereal time model and the Veis 1950 frame which involves a Veis modified sidereal
time model.
</p>
<p>
......
......@@ -77,8 +77,8 @@ Frames
Reference Frame> (GCRF) which is an inertial reference defined by IERS.
For most purposes, the recommended frames to use are ITRF 2005 for terrestrial frame and
GCRF for celestial frame. EME2000, MEME, TEME, PEF and Veis1950 could also be used for
compatibility with legacy systems.
GCRF for celestial frame. EME2000, TEME, Veis1950 could also be used for compatibility
with legacy systems.
There are also a number of planetary frames associated with the predefined celestial bodies.
......@@ -118,14 +118,17 @@ Frames
UTC!). From this frame, applying precession evolution between J2000.0 and current date
defines a Mean Equator Mean Equinox frame for current date and applying nutation defines
a True Equator Mean Equinox frame, similar in spirit to the CIRF in the new paradigm.
From this, the Greenwhich Apparent Sidereal Time is applied to reach a Pseudo Earth Fixed
From this, the Greenwich Apparent Sidereal Time is applied to reach a Pseudo Earth Fixed
frame, similar to the TIRF in the new paradigm. A final transform involving pole motion
leads to the ITRF.
leads to the ITRF.
In summary, six frames are involved along this path: GCRF, EME2000, MEME, TEME, PEF
and ITRF.
This paradigm is deprecated by IERS. It involves additional complexity, first because
The so called Veis 1950 belongs also to this path, it is defined from the PEF by the
application of a modified sidereal time.
This whole paradigm is deprecated by IERS. It involves additional complexity, first because
of the larger number of frames and second because these frames are computed by mixed models
with IAU-76 precession, correction terms to match IAU-2000, and a need to convert Earth
Orientation data from the published form to a form suitable for this model. Another
......@@ -136,18 +139,15 @@ Frames
Despite this deprecation, these frames are very important ones and lots of legacy systems
rely on them. They are therefore supported in Orekit for interoperability purposes (but not
recommended for new systems). Since some legacy systems also don't really handle the EOP
parameters that apply to these frames, it is possible to ignore these parameters. Ignoring
these parameters should however be used only when compatibility with limited systems is
mandatory since it leads to very large errors (200m errors in LEO and 1500m errors in GEO
are typical for PEF when ignoring the dut1 and lod values for example).
recommended for new systems).
*** Orekit implementation of IERS 2003 convention
*** Orekit implementation of IERS conventions
In summary, Orekit implements 12 frames from IERS 2003 convention: GCRF, CIRF 2000,
TIRF 2000 with and without tidal effects, ITRF 2005 with and without tidal effects,
MEME with and without EOP correction, TEME with and without EOP correction, PEF with
and without EOP correction.
In summary, Orekit implements the following frames:
- those related to the IERS 2003 convention: GCRF, CIRF 2000, TIRF 2000 with and without
tidal effects, ITRF 2005 with and without tidal effects,
- those related to the older IERS conventions: MEME with and without EOP correction,
TEME with and without EOP correction, PEF with and without EOP correction, Veis 1950.
**** CIO-based transformations
......@@ -189,6 +189,11 @@ Frames
[../images/pre-iers-tree.png]
The path from EME2000 to Veis1950, involving the MEME, TEME and PEF without EOP correction is
devoted to some legacy systems, whereas the MEME, TEME and PEF with EOP correction are for
compatibility with the IERS 2003 convention. The gap between the two branches can reach a few
meters, a very crude accuracy in many space systems.
The same kind of optimization used for the IAU-2000 precession-nutation model are also applied for
the older IAU-1980 precession-nutation model, despite it is much simpler.
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment