The MASL IORB flag is an integer flag that specifies a particular set of orbital elements from over 3700 possible combinations. It is well known that six independent orbital quantities are necessary and sufficient to describe an orbit. Classical orbital elements (semi-major axis, eccentricity, inclination, longitude of the ascending node, argument of periapsis, and mean anomaly), are an example of such a set, as are the six elements of a Cartesian state vector (x, y, z, vx, vy, and vz). Nevertheless, the orbital period can be substituted for semi-major axis in a set of classical elements, since the semi-major axis can easily be derived from the period. Similarly, many other simple substitutions are possible. The IORB flag is a scheme for specifying, in a single multi-digit integer number, which of the various useful substitutions is to be applied. Besides various quantities that can be substituted, various coordinate systems can be chosen, and many subsets can be expressed in either a Cartesian or a spherical form. Furthermore, an effort has been made to keep the substitutions controlled by different digits independent, and somewhat intuitive, although the user must realize that any scheme, as flexible and all encompassing as this one, is necessarily somewhat complex.
Because the IORB flag can be quite complex, on all supported Unix boxes, there is a graphical X-based tool for going back and forth between the various combinations of orbital elements and the corresponding IORB flag. This tool is called "xiorb". An attempt will also be made here to explain the relationships between the IORB flag and all of the various combinations of orbital elements.
To begin with, integer IORB is a 7-digit flag of the form GFEDCBA. It is anticipated that the more significant digits of the flag will tend to be zero, and since leading zeros can be omitted from an integer, this will tend to simplify the IORB flag actually used.
| G | F | E | D | C | B | A |
The A digit selects the orbital element category, i.e. the initial standard form of elements upon which substitutions, if any, will be based. There are currently five such categories.
| A=1 | Classical Elements |
| A=2 | Cartesian State Elements |
| A=3 | Hyperbolic Elements |
| A=4 | Launch Body and Date Elements |
| A=5 | Ground Station Elements |
Because A=0 is undefined, an IORB flag set exactly equal to zero is also undefined.
The B digit controls the coordinate system to which the orbital elements refer. The various values of the the B digit are presented in the following table. For the record, B=0 is VECTOR standard coordinates, which is a JPL software infrastructure frame associated with the Multi-mission Analysis Software Library (MASL), which has already been revised once since its inception around 1970. The idea that it implements is to make all internal geometric calculations be frame-independent, i.e. MASL software converts all inputs to a standard frame, lives in that standard frame throughout all calculations with support routines always providing ephemeris data in that standard frame, and then converts from that standard frame to the output frame of choice. VECTOR standard coordinates is that standard frame in MASL. So, don't bother to ask what frame it currently corresponds to, although it is easy to discern, because (a) you don't really need to know and (b) it will undoubtedly change again in the future, which means you should not start relying upon it despite its convenience as the zeroth frame.
| B=0 | VECTOR standard coordinate system |
| B=1 | Earth equator and equinox of B1950 |
| B=2 | Central body equator and equinox of Epoch |
| B=3 | Central body equator and prime meridian of Epoch |
| B=4 | Central body equator and prime meridian of Date |
| B=5 | Earth equator and equinox of J2000 |
| B=6 | Earth ecliptic and equinox of B1950 |
| B=7 | Central body orbit plane and equinox of Epoch |
| B=8 | Earth ecliptic and equinox of J2000 |
The "of epoch" of the B=2, B=3, and B=7 frames refers to the "epoch of the orbit" as specified through the first argument of routine CBODYN or the first argument of routine CPLANN, not the current "standard epoch". In other words, unless J2000 is the epoch specified to CPLANN or CBODYN, the epoch is not J2000. The "of date" of the B=4 frame refers to the date created by a propagation time offset from this same epoch. The propagation time offset is specified by the DT argument of routines like OSCOUT. When the routine in question has no DT argument, e.g. ORBOUT, then the date in question is the epoch. Likewise, the "central body" of the B=2, B=3, B=4, and B=7 frames is the one specified by the second and third arguments of routine CBODYN or the second argument of routine CPLANN.
The B=3 frame is an inertial coordinate frame aligned with the prime meridian and equator on the epoch given or implied. The B=4 frame is a rotating frame aligned with the prime meridian and equator on the date implied by the epoch above, plus any propagation time. Velocity quantities are also corrected by the rotation rate of the central body in B=4, but not in B=3. In addition, if the sign of IORB is negative, then B=2, B=3, B=4, and B=7 will use the IAU definition of the central body North Pole. The JPL infrastructure software maintained by MASL defines the North Pole of all bodies to be the spin angular momentum vector. The IAU defines the North Pole to be that end of the spin vector that is in the North Ecliptic Hemisphere. For the planets, this has the effect of flipping which pole is north and which pole is south on Venus, Uranus, and Pluto. If the sign of IORB is negative and B=7, the coordinate frame is interpreted to be the Central Body Equator and Ascending Node of the Central Body Equator on Earth's Equator. For all other coordinate frames, the sign of IORB is ignored.
| A=1 | A=2 | A=3 | A=4 | A=5 | |
|---|---|---|---|---|---|
| Element Number | Classical Elements | Cartesian State Elements | Hyperbolic Elements | Launch Body and Date Elements | Ground Station Elements |
| Element (1) | semi-major axis [km] | radius [km] | periapsis altitude [km] | launch body number | radius [km] |
| Element (2) | eccentricity [] | latitude [deg] | B-plane angle [deg] | calendar date [yymmdd] | latitude [deg] |
| Element (3) | inclination [deg] | longitude [deg] | time since periapsis [s] | calendar time [hhmmss.ff] | longitude [deg] |
| Element (4) | longitude of ascending node [deg] | velocity magnitude [km/s] | Vinfinity magnitude [km/s] | Vinfinity magnitude [km/s] | |
| Element (5) | argument of periapsis [deg] | flight path angle [deg] | asymptote declination/latitude [deg] | asymptote declination/latitude [deg] | |
| Element (6) | mean anomaly [deg] | flight path azimuth [deg] | asymptote right_ascension/longitude [deg] | asymptote right_ascension/longitude [deg] | |
| A=1 | A=2 | A=3 | A=4 | A=5 | |
| C Substitutions | Substitute for Element (1) | Substitute for Elements (1)-(6) | Substitute for Elements (4)-(6) | Substitute for Elements (4)-(6) | Substitute for Elements (1)-(3) |
| C=0 (Default) | semi-major axis [km] | spherical state [km,deg,deg,km/s,deg,deg] | spherical Vinfinity vector [km/s,deg,deg] | spherical Vinfinity vector [km/s,deg,deg] | latitudinal [km,deg,deg] |
| C=1 | period [s] | rectangular state [km,km,km,km/s,km/s,km/s] | rectangular Vinfinity vector [km/s,km/s,km/s] | rectangular Vinfinity vector [km/s,km/s,km/s] | rectangular [km,km,km] |
| C=2 | C3 [km²/s²] | spherical with (4)=C3 [km²/s²] | spherical C3 vector [km²/s²,deg,deg] | spherical C3 vector [km²/s²,deg,deg] | cylindrical [km,km,deg] |
| C=3 | apoapsis altitude [km] | latitudinal with (1)=altitude [km] | |||
| C=4 | apoapsis radius [km] | ||||
| C=5 | specific angular momentum [km²/s] | ||||
| C=6 | mean motion [deg/s] | ||||
| C=7 | semi-latus rectum [km] | ||||
| C=8 | periapsis altitude [km] | ||||
| C=9 | periapsis radius [km] | ||||
| A=1 | A=2 | A=3 | A=4 | A=5 | |
| D Substitutions | Substitute for Element (2) | Substitute for Elements (1)-(6) | Substitute for Element (2) | Substitute for Elements (2)-(3) | |
| D=0 (Default) | eccentricity [] | ordinary orbit | B-plane angle [deg] | calendar date/time (see above) | |
| D=1 | periapsis altitude [km] | frozen orbit | inclination B·R<0 [deg] | single precision Julian day and fraction of day§ | |
| D=2 | periapsis radius [km] | inclination B·R>0 [deg] | modified Julian date¥ | ||
| D=3 | apoapsis altitude [km] | launch azimuth B·R<0 [deg] | |||
| D=4 | apoapsis radius [km] | launch azimuth B·R>0 [deg] | |||
| D=5 | inclination B·R unspecified (ORBOUT only) | ||||
| D=6 | launch azimuth B·R unspecified (ORBOUT only) | ||||
| A=1 | A=2 | A=3 | A=4 | A=5 | |
| E Substitutions | Substitute for Element (5) | Substitute for Element (1) | |||
| E=0 (Default) | argument of periapsis [deg] | periapsis altitude [km] | |||
| E=1 | longitude of periapsis [deg] | periapsis radius [km] | |||
| E=2 | frozen orbit periapsis argument [deg] | B vector magnitude [km] | |||
| E=3 | frozen orbit periapsis longitude [deg] | B·T [km], B·R [km]£ | |||
| E=4 | radius [km] | ||||
| A=1 | A=2 | A=3 | A=4 | A=5 | |
| F Substitutions | Substitute for Element (6) | Substitute for Elements (4)-(6) | |||
| F=0 (Default) | mean anomaly [deg] | incoming asymptote | |||
| F=1 | time since periapsis [s] | outgoing asymptote | |||
| F=2 | true anomaly [deg] | ||||
| F=3 | eccentric anomaly [deg] | ||||
| A=1 | A=2 | A=3 | A=4 | A=5 | |
| G Substitutions | Substitute for Element (3) | ||||
| G=0 (Default) | time since periapsis [s] | ||||
| G=1 | flight path angle [deg] | ||||
| G=2 | true anomaly [deg] | ||||
| G=3 | radius before periapsis [km] | ||||
| G=4 | radius after periapsis [km] | ||||
*Elements (1)-(3) are radius magnitude projected into the xy-plane,
z-position, and longitude.
§The nearest whole julian day should be stored in
Element (2) and the fraction of the next julian day should be stored in
Element (3).
¥The default epoch of modified Julian Date is J2000
(2000 January 01 at 12:00:00 ephemeris time), and Element (3) is unused.
£B·R in Element (2) and all D settings are ignored.
When A=1 (Classical Elements) and E=2 or E=3, the orbit will be treated as "frozen". The orbit will also be treated as "frozen" if A=2 (Cartesian State Elements) and D=1. A "frozen" orbit is one where J3 acts to cancel the precession of periapsis due to J2. Note that the orbit routines do not actually model J3; this flag merely turns off the precession of periapsis and assumes that the user has input a valid orbit. Note also that the regression of the node due to J2 is modeled without regard to whether the orbit is actually "frozen".
When A=3 (Hyperbolic Elements) and E=3, then Elements (1) and (2) become B-dot-T and B-dot-R, respectively. This overrides the meaning of the D digit, and it is therefore ignored. Furthermore if F=0, which is the default, then Elements (4), (5), and (6) refer to the incoming V-infinity, while if F=1, Elements (4), (5), and (6) refer to the outgoing V-infinity.
When A=4 (Launch Body and Date Elements) and D=1, Element (2) is the closest whole julian day that is less than or equal to the date in question and Element (3) is the fractional part of the next julian day. By comparison if D=2, then Element (2) will be a modified Julian date, which is days past a reference epoch that defaults to J2000 (2000 January 01 at 12:00:00 in Ephemeris Time), and Element (3) is unused.
When A=5 (Ground Station Elements) and C=2, then Element (1) is the magnitude of the radius projected into the XY-plane, Element (2) is the Z position, and Element (3) is the associated longitude.

Questions, comments, corrections, mail to: masl@masl.jpl.nasa.gov