How the tropo forecast works

This map is an experimental VHF/UHF tropospheric propagation aid. It uses public weather model data to estimate where the lower atmosphere may bend radio signals more strongly than normal.

What the map is showing

The colored overlay is not a contact prediction and not an official weather warning. It is a calculated grid of conditions that may support enhanced VHF/UHF paths, especially over sea, coastlines, and stable low-level air masses.

Tropo potential

A 0-100 experimental score. Higher values mean the model found conditions that are more supportive for enhanced VHF/UHF propagation.

Confidence

A simple layer-depth confidence measure. Low-confidence cells are hidden by default so shallow one-layer noise does not dominate the map.

Raw dM/dz

The strongest raw modified-refractivity gradient found in the low-level model column. This is useful for diagnosis, but it is noisier than the tropo potential value.

Reach view

When you click the map, the server samples great-circle paths from that point and marks directions where enough of the path crosses high-risk, high-confidence cells.

Weather data used

The live Finland-focused forecast uses Finnish Meteorological Institute open data, specifically the FMI HARMONIE Scandinavia hybrid-level model grid. HARMONIE is useful here because its low hybrid model levels describe the first few hundred meters of the atmosphere better than coarse pressure levels.

The system downloads GRIB2 forecast fields for a wide North European area and calculates its own radio-propagation layers. The current operational fields are:

The scheduler keeps a rolling forecast window, normally every 3 hours out to 48 hours. On startup it fills the whole window. Later it removes old valid times and generates only the new future times that are missing.

An ECMWF IFS open-data prototype also exists in the project as a baseline, but the public Finland map is intended to use FMI HARMONIE because Finnish shallow tropo events often live very close to the surface.

The science in plain language

Radio waves do not travel through the lower atmosphere exactly as they do in empty space. Temperature, pressure, and water vapor slightly change the refractive index of air. Under some weather patterns, the vertical change is strong enough that VHF/UHF signals bend back toward the earth or sea surface. Operators often call this tropo enhancement or ducting.

1. Water vapor pressure

The model gives relative humidity and temperature. First we estimate saturation vapor pressure, then actual water vapor pressure.

T_c = T_k - 273.15 e_s = 6.112 * exp((17.67 * T_c) / (T_c + 243.5)) e = (RH / 100) * e_s

2. Radio refractivity

The map uses the standard radio-refractivity form from ITU-R P.453. Pressure is in hPa, temperature is in kelvin, and water vapor pressure is in hPa.

N = 77.6 * (P / T) - 5.6 * (e / T) + 3.75e5 * (e / T^2)

N is radio refractivity. A higher N means the air has a slightly higher refractive index for radio waves.

3. Modified refractivity

For propagation work we use modified refractivity, which includes the normal curvature of the earth.

M = N + 0.157 * z

z is height in meters. In a normal atmosphere, M usually increases with height. When M decreases with height, radio waves can be trapped or strongly bent.

4. Vertical gradient

The calculation compares nearby hybrid model levels and looks for negative modified-refractivity gradients.

dM/dz = ((M_upper - M_lower) / (z_upper - z_lower)) * 1000

The result is in M-units per kilometer. A raw duct diagnostic is simply:

dM/dz < 0

That raw flag is intentionally not the same as the colored tropo potential value, because very shallow negative layers can be noisy.

How tropo potential is made

The model can find very thin negative-gradient layers. Some are real, some are model noise, and some are too shallow to be useful for operators. The displayed potential therefore rewards both strength and depth.

M-drop per negative layer = (-dM/dz * layer_depth_m) / 1000 total_m_drop = sum(M-drop over negative layers) negative_depth_m = sum(depth of negative-gradient layers)

Then the operator-facing score is calculated approximately as:

depth_confidence = clamp((negative_depth_m - 30) / 70, 0, 1) strength_score = clamp((total_m_drop - 6) * 7.5, 0, 100) tropo_potential = clamp(strength_score * depth_confidence, 0, 100) confidence_score = depth_confidence * 100

The default map hides cells below confidence 15 and shows tropo potential above threshold 40. You can adjust the threshold in the map controls.

Path/reach calculation

When a user clicks a point, the app checks destination cells from about 50 to 900 km away. It samples the great-circle path roughly every 20 km and scores how much of the path crosses cells that meet the current tropo potential and confidence thresholds. This is a path-support estimate, not a ray-tracing model.

Known limitations

Material and licenses

Material Use in this app License / terms
FMI Open Data Primary live forecast input: HARMONIE Scandinavia hybrid-level weather model fields. Creative Commons Attribution 4.0 International.
ECMWF Open Data Used in an earlier/baseline prototype and documentation; not the preferred Finland live layer. ECMWF states its open-data subset is governed by CC BY 4.0 plus ECMWF terms of use.
ITU-R P.453 Scientific formula basis for radio refractivity. Reference recommendation; used as the method description, not as a data feed.
Leaflet Interactive browser map library. BSD 2-Clause License.
OpenStreetMap Background map tiles, visually styled in black and white. OpenStreetMap contributors; map data under the Open Database License.
Hepburn / F5LEN maps Human comparison/reference only during development. Not embedded, redistributed, or used as a data source by this app.

Attribution summary: weather data from the Finnish Meteorological Institute open data service, used under CC BY 4.0. Derived tropo layers are calculated locally from public model fields.