An HF Propagation Calculator,
With Source Code




MicroMUF is a simple HF propagation calculator that you can use to estimate the MUF (Maximum Usable Frequency) and LUF (Lowest Usable Frequency) between any two points on the Earth.

The program was originally written by the BBC, and later refined by Radio Nederland. The original program, a BASIC program known as MicroMUF.BAS, has been floating around for years. In 1986, Jonathan Ogden translated the BASIC listing into Turbo Pascal.

From Jonathan Ogden's preface to his Turbo Pascal translation:

This program uses 'MINI-F2' devised by R. Fricker (BBC external services) for FO-F calculations and L.M. Muggleton's formula for FO-E calculations.

For the L.U.F. a minimum useable fieldstrength of 30 DBUV at the receiver and 250 KW of transmitter power (aerial gain: 18 DBI) are assumed. The L.U.F. is derived from absorption calculations based on the work of Piggot, George, Samuel, and Bradley. In spite of the program's simplicity it gives a good impression of the ionosphere's behaviour and can be used for propagation predictions.

Hans Bakhuizen
Propagation Unit; Frequency Bureau
Radio Netherlands
P.O. Box 222
1200 JG Hilversum Holland
(C) Copyright Media Network June 1984

In 2001 or 2002, I found the Turbo Pascal listing and translated it into Delphi 5 for incorporation into my long defunct Scan320DB program. I used the calculator for several years in Scan320DB, with excellent results, for shortwave listening. I recently blew the dust off of the old Scan320DB code, wrote a pretty spiffy graphic front-end for it, and incorporated it into the new logging program I'm currently developing.

I decided to, once again, place this venerable old code back on the net. I organized the calculator into a form that's very easy to integrate into your own programs, with the input and output to the calcluator module neatly isolated and clearly commented. If you decide to use this code, you won't encounter the problems I originally did while trying to shoehorn the code into something that works.

You can find the code, with my comments and the original MicroMUF.BAS listing, in the uPropCalc.pas file in the source folder.



The program is comprised of the propagation calculator module and an input/output demo shell. Since I designed the shell mainly to demonstrate and verify proper operation of the calculator, data input is a bit rough. The program uses the input variables exactly as you enter them into the edit boxes. While good for testing, it's a bit clumsy for day-to-day operation. However, if you enter your data carefully and correctly, you'll find that this program is a very serivicable tool for your shortwave listening or your amateur radio needs.

If you want something a bit smoother, wait for my logging program. You'll be able to enter your destination simply by clicking the map.



To use the program, enter your latitude and longitude into the Source boxes. Do not enter E, W, N, or S. Just enter the numbers, using positive values for N latitude and W logitude, and negative numbers for S latitude and E longitude.

Enter the latitude and longitude for the destination, using the format described above, into the Destination boxes.

Enter the Solar Flux value. (A handy source for the latest solar flux report is the NOAA, at http://www.swpc.noaa.gov/ftpdir/latest/wwv.txt.)

Finally, enter a value for the month, between 1 and 12.

When you ciick the Calculate button, the program will display a greph of MUF and LUF vs UTC hours. In the boxes below the graph you will find the azimuth from you toward your destination, and the azimuth from the destination toward you. The azimuths are expressed as degrees, great circle, true. You'll also find the distance in km and the number of hops in the path.

In addition to providing a current propagation forecast, this program is handy for "what if" experimentation by leaving the source and destination coordinates intact while varying the Month and Solar Flux values, displaying a graph for each of your tests.


Source Code

I've included the entire source for my Delphi project. If you have Delphi 2005 or later installed, you should be able to build this project with no modifications required.

uPropCalc.pas contains the code for the calculator's engine. As you'll see, the translation isn't too far from the originaly BASIC listing, cryptic variable names and all. Time and again I've thought about doing the research required to figure out exactly how every line of that code works so I could translate the variable names into something meaningful, but I've never gotten around to it. I'd probably screw it up, anyway. :)

For historical interest, I've included the original MicroMUF.BAS listing and Jonathan Ogden's preface to his Turbo Pascal translation in the comments section at the end of the listing.

I've organized the engine so all inputs are isolated to the StartCalc procedure, and all outputs appear in the ShowResults procedure. I've clearly annotated all input and output variables.

Integrating the engine into your own code will involve translating the BASIC/Pascal code into your working language, feeding the module with the appropriate inputs, and writing display handlers for the outputs.



I wrote this program using Delphi 2005 Professional, running under Windows XP, for Windows PCs. It should run on all Windows versions between Windows 98 and Windows 7. For Windows 7 systems, you might need to set the program's environment as Windows XP.

Download MicroMUF.zip, 318 kB

Extract the downloaded .zip file to any empty directory on your system.

Right-click MicroMUF.exe. From the pop-up menu, select "Send to..." then "Desktop (Create shortcut)." Locate the desktop icon you just created, single-click it, press F2, then change the icon's label to something like "MicroMUF." Press the Enter key.

Double-click the desktop icon to launch the program.

Note that the program is self-contained. It doesn't require any DLLs, other than those installed as standard Windows components, and it doesn't write anything to the registry. You won't see MicroMUF in your Add/Remove Programs list.

So, to remove the program, simply delete the directory in which you installed it, and delete your desktop shortcut. It will be gone without a trace.


Very 73!
Tom, AB9B

Copyright © 2010 Tom Lackamp
All rights reserved