IF-77 Gierhart-Johnson Model in Python

Mike Markowski, AB3AP
mike.ab3ap@gmail.com

A vintage twin-engine seaplane flying over a propagation loss chart Path loss versus distance, divided into line of sight, diffraction and troposcatter regions, with an old amphibian aircraft flying above the curve. line of sight diffraction troposcatter path loss distance N
Fig. 1. Not to scale. The model stitches three regimes into one prediction.
Model
IF-77, Gierhart-Johnson
Origin
NTIA/ITS for the FAA, 1973 and 1977
This port
Fortran to Python
Revised
October 2026

Background

The IF-77 RF propagation model was developed by NTIA/ITS in response to a need by the FAA. The first version was released in 1973 and then enhanced and a newer one released in 1977. While the Longley-Rice model provides reliable predictions for many ground to ground links, it is unsuitable for use when one or both nodes are at high altitude. The FAA funded Gierhart and Johnson to study the problem. The model combines line of sight, diffraction, and tropospheric scatter regions to provide a reliable prediction of link quality.

More can be learned at the NTIA/ITS IF-77 page, where reports and Fortran software are available.

Download

Feeling brave?

Download the Python code (if77.tar.bz2)
tar xjf if77.tar.bz2
cd if77; less HOWTO.md

A HOWTO file is included in the tarball.

Porting to Python

  1. 1973First version released
  2. 1977Enhanced version released
  3. 2026 PythonPorted, passing a dozen tests

The development took place on a CDC 6600 which has 60-bit word architecture. The compiler would have been Fortran 63 or Fortran IV. The IF-77 code is challenging to port because heavy use of GOTOs as well as jumps to leave and others to enter ongoing loops makes reverse engineering difficult. Not impossible, but let's say a tad challenging!

The code at the moment makes heavy use of long variable names. While it might be appealing for programmers, it makes reading equations difficult for scientists and engineers. Now that the code appears to pass a battery of a dozen tests, I will begin looking into making the code more readable and to use variables that directly follow the reports along with cross referencing lines of code to report equations.

Status

ItemState
Port of IF-77 to PythonWorking; passes a dozen tests
Readable variable names that follow the reportsHoped for, not begun
Code lines cross-referenced to report equationsHoped for, not begun
Integration into rfl (altitude triggers IF-77)Firmly in hope category

My other web pages show rfl using ITM for link budgets.

Contact

Please get in touch if you spot or fix bugs, or if you have ideas. Thanks!
-Mike

Updated October 2026