Skip to content

Functions: Radio

Functions for predicting Jupiter decametric radio emissions. Jupiter is the strongest radio source in the solar system after the Sun, producing bursts in the 10-40 MHz range driven by the interaction between Io and Jupiter’s magnetosphere. These functions compute the geometric parameters needed to predict when bursts are likely.


Computes the orbital phase angle of Io relative to Jupiter’s superior conjunction as seen from Earth. The phase angle determines the position of Io in its orbit as projected against Jupiter’s disk, which is one of two parameters needed for burst prediction.

io_phase_angle(t timestamptz) → float8
ParameterTypeDescription
ttimestamptzEvaluation time

Io’s orbital phase angle in degrees, range [0, 360).

  • 0 = superior conjunction (Io behind Jupiter, as seen from Earth)
  • 90 = eastern elongation (Io east of Jupiter)
  • 180 = inferior conjunction (Io between Earth and Jupiter)
  • 270 = western elongation (Io west of Jupiter)
-- Current Io phase angle
SELECT round(io_phase_angle(now())::numeric, 1) AS io_phase;
-- Io phase over the next 24 hours at 30-minute intervals
SELECT t,
round(io_phase_angle(t)::numeric, 1) AS io_phase
FROM generate_series(now(), now() + interval '24 hours', interval '30 minutes') AS t;

Computes Jupiter’s Central Meridian Longitude (CML) in System III (1965.0) as seen from an Earth-based observer. System III is tied to Jupiter’s magnetic field rotation (period = 9h 55m 29.711s) and is the standard reference for radio astronomy.

The result is corrected for light travel time between Jupiter and the observer.

jupiter_cml(obs observer, t timestamptz) → float8
ParameterTypeDescription
obsobserverObserver location on Earth
ttimestamptzObservation time

Central Meridian Longitude in degrees, range [0, 360). This is the longitude of the Jovian meridian facing the observer at the given time, in System III coordinates.

-- Current Jupiter CML from Boulder
SELECT round(jupiter_cml('40.0N 105.3W 1655m'::observer, now())::numeric, 1) AS cml;
-- CML sweep over one Jupiter rotation (~9h 55m)
SELECT t,
round(jupiter_cml('40.0N 105.3W 1655m'::observer, t)::numeric, 1) AS cml
FROM generate_series(
now(),
now() + interval '9 hours 55 minutes',
interval '10 minutes'
) AS t;

Computes the probability of detecting a Jupiter decametric radio burst given the current Io phase angle and Jupiter CML. Based on the Carr, Desch & Alexander (1983) source region model.

The function evaluates whether the Io phase and CML fall within one of the known emission source regions and returns a probability between 0 and 1.

jupiter_burst_probability(io_phase float8, cml float8) → float8
ParameterTypeUnitDescription
io_phasefloat8degreesIo orbital phase angle (output of io_phase_angle)
cmlfloat8degreesJupiter CML System III (output of jupiter_cml)

Burst probability as a value from 0.0 to 1.0.

The Carr model identifies four primary Io-related source regions in the Io phase vs. CML parameter space:

SourceIo Phase RangeCML RangeDescription
Io-A195-265200-290Strongest Io-related source. Io near western elongation, CML in the 200-290 range.
Io-B75-10595-195Second strongest. Io near eastern elongation, CML roughly opposite to Io-A.
Io-C195-265290-10Weaker Io-related source. Same Io phase as Io-A but different CML range.
Io-D75-1050-95Weakest of the four. Same Io phase as Io-B but CML shifted.
-- Current burst probability
SELECT round(
jupiter_burst_probability(
io_phase_angle(now()),
jupiter_cml('40.0N 105.3W 1655m'::observer, now())
)::numeric, 3
) AS burst_prob;
-- Find high-probability windows tonight
SELECT t,
round(io_phase_angle(t)::numeric, 1) AS io_phase,
round(jupiter_cml('40.0N 105.3W 1655m'::observer, t)::numeric, 1) AS cml,
round(jupiter_burst_probability(
io_phase_angle(t),
jupiter_cml('40.0N 105.3W 1655m'::observer, t)
)::numeric, 3) AS probability
FROM generate_series(
'2024-06-15 02:00:00+00',
'2024-06-15 10:00:00+00',
interval '5 minutes'
) AS t
WHERE jupiter_burst_probability(
io_phase_angle(t),
jupiter_cml('40.0N 105.3W 1655m'::observer, t)
) > 0.2
ORDER BY probability DESC;
-- Full radio observing plan: combine burst probability with Jupiter visibility
SELECT t,
round(topo_elevation(jup)::numeric, 1) AS jupiter_el,
round(io_phase_angle(t)::numeric, 1) AS io_phase,
round(jupiter_cml('40.0N 105.3W 1655m'::observer, t)::numeric, 1) AS cml,
round(jupiter_burst_probability(
io_phase_angle(t),
jupiter_cml('40.0N 105.3W 1655m'::observer, t)
)::numeric, 3) AS burst_prob
FROM generate_series(
'2024-06-15 02:00:00+00',
'2024-06-15 10:00:00+00',
interval '10 minutes'
) AS t,
planet_observe(5, '40.0N 105.3W 1655m'::observer, t) AS jup
WHERE topo_elevation(jup) > 10
AND jupiter_burst_probability(
io_phase_angle(t),
jupiter_cml('40.0N 105.3W 1655m'::observer, t)
) > 0.1;