34 MDX pages covering all 57 functions across 7 domains: satellites (SGP4/SDP4), planets (VSOP87), Moon (ELP2000-82B), 19 planetary moons (L1.2/TASS17/GUST86/MarsSat), stars, comets, Jupiter radio bursts, and Lambert transfers. Site structure: - Getting Started: overview, installation, 5-query quick start - Guides: 8 domain-specific walkthroughs with workflow translation - Workflow Translation: side-by-side comparisons with Skyfield, JPL Horizons, GMAT, Radio Jupiter Pro, plus SQL patterns - Reference: all types, functions, operators, body IDs, constants - Architecture: Hamilton's principles, constant chain of custody, observation pipeline, theory-to-code mapping, thread safety - Performance: verified benchmarks with reproduction methodology Stack: Astro 5.17 + Starlight 0.37.6, KaTeX math, Mermaid diagrams, Pagefind search, Caddy production Docker image.
194 lines
6.3 KiB
Plaintext
194 lines
6.3 KiB
Plaintext
---
|
|
title: "Functions: Radio"
|
|
sidebar:
|
|
order: 6
|
|
---
|
|
|
|
import { Aside, Tabs, TabItem } from "@astrojs/starlight/components";
|
|
|
|
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.
|
|
|
|
---
|
|
|
|
## io_phase_angle
|
|
|
|
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.
|
|
|
|
### Signature
|
|
|
|
```sql
|
|
io_phase_angle(t timestamptz) → float8
|
|
```
|
|
|
|
### Parameters
|
|
|
|
| Parameter | Type | Description |
|
|
|-----------|------|-------------|
|
|
| `t` | `timestamptz` | Evaluation time |
|
|
|
|
### Returns
|
|
|
|
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)
|
|
|
|
### Example
|
|
|
|
```sql
|
|
-- Current Io phase angle
|
|
SELECT round(io_phase_angle(now())::numeric, 1) AS io_phase;
|
|
```
|
|
|
|
```sql
|
|
-- 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;
|
|
```
|
|
|
|
---
|
|
|
|
## jupiter_cml
|
|
|
|
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.
|
|
|
|
### Signature
|
|
|
|
```sql
|
|
jupiter_cml(obs observer, t timestamptz) → float8
|
|
```
|
|
|
|
### Parameters
|
|
|
|
| Parameter | Type | Description |
|
|
|-----------|------|-------------|
|
|
| `obs` | `observer` | Observer location on Earth |
|
|
| `t` | `timestamptz` | Observation time |
|
|
|
|
### Returns
|
|
|
|
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.
|
|
|
|
<Aside type="note">
|
|
The CML depends on the observer's position on Earth because it is corrected for light travel time. The difference between two observers on opposite sides of Earth is small (order of 0.01 degrees) but is included for correctness.
|
|
</Aside>
|
|
|
|
### Example
|
|
|
|
```sql
|
|
-- Current Jupiter CML from Boulder
|
|
SELECT round(jupiter_cml('40.0N 105.3W 1655m'::observer, now())::numeric, 1) AS cml;
|
|
```
|
|
|
|
```sql
|
|
-- 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;
|
|
```
|
|
|
|
---
|
|
|
|
## jupiter_burst_probability
|
|
|
|
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.
|
|
|
|
### Signature
|
|
|
|
```sql
|
|
jupiter_burst_probability(io_phase float8, cml float8) → float8
|
|
```
|
|
|
|
### Parameters
|
|
|
|
| Parameter | Type | Unit | Description |
|
|
|-----------|------|------|-------------|
|
|
| `io_phase` | `float8` | degrees | Io orbital phase angle (output of `io_phase_angle`) |
|
|
| `cml` | `float8` | degrees | Jupiter CML System III (output of `jupiter_cml`) |
|
|
|
|
### Returns
|
|
|
|
Burst probability as a value from 0.0 to 1.0.
|
|
|
|
### Source Regions
|
|
|
|
The Carr model identifies four primary Io-related source regions in the Io phase vs. CML parameter space:
|
|
|
|
| Source | Io Phase Range | CML Range | Description |
|
|
|--------|----------------|-----------|-------------|
|
|
| **Io-A** | 195-265 | 200-290 | Strongest Io-related source. Io near western elongation, CML in the 200-290 range. |
|
|
| **Io-B** | 75-105 | 95-195 | Second strongest. Io near eastern elongation, CML roughly opposite to Io-A. |
|
|
| **Io-C** | 195-265 | 290-10 | Weaker Io-related source. Same Io phase as Io-A but different CML range. |
|
|
| **Io-D** | 75-105 | 0-95 | Weakest of the four. Same Io phase as Io-B but CML shifted. |
|
|
|
|
<Aside type="tip">
|
|
Non-Io emissions also occur (sources A, B, C without Io dependency) but are weaker and less predictable. The probability returned by this function reflects the combined Io-dependent likelihood.
|
|
</Aside>
|
|
|
|
### Example
|
|
|
|
```sql
|
|
-- 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;
|
|
```
|
|
|
|
```sql
|
|
-- 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;
|
|
```
|
|
|
|
```sql
|
|
-- 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;
|
|
```
|