Quick Start Guide

This guide will get you started with DVOACAP Python in just a few minutes.

Basic Prediction

Here’s a simple example that predicts propagation from Philadelphia to London:

import numpy as np
from dvoacap import GeoPoint
from dvoacap.prediction_engine import PredictionEngine

# Create prediction engine
engine = PredictionEngine()

# Set transmitter location (Philadelphia)
engine.params.tx_location = GeoPoint(
    lat=40.0 * np.pi / 180,
    lon=-75.0 * np.pi / 180
)

# Set receiver location (London)
rx_location = GeoPoint(
    lat=51.5 * np.pi / 180,
    lon=-0.1 * np.pi / 180
)

# Set parameters
engine.params.ssn = 100  # Sunspot number
engine.params.month = 6  # June
engine.params.tx_power = 1500  # Watts

# Predict for multiple frequencies
frequencies = [7.0, 14.0, 21.0, 28.0]  # MHz
utc_time = 0.5  # Noon UTC

engine.predict(rx_location, utc_time, frequencies)

# Display results
for i, freq in enumerate(frequencies):
    pred = engine.predictions[i]
    print(f"{freq} MHz: SNR = {pred.signal.snr_db:.1f} dB, "
          f"Reliability = {pred.signal.reliability:.3f}")

Path Geometry

Calculate great circle path parameters:

from dvoacap import PathGeometry, GeoPoint

path = PathGeometry()

# Halifax to London
tx = GeoPoint.from_degrees(44.65, -63.57)
rx = GeoPoint.from_degrees(51.51, -0.13)

path.set_tx_rx(tx, rx)

print(f"Distance: {path.get_distance_km():.0f} km")
print(f"Azimuth (Tx->Rx): {path.get_azimuth_tr_degrees():.1f}°")
print(f"Azimuth (Rx->Tx): {path.get_azimuth_rt_degrees():.1f}°")

Solar Position

Calculate solar zenith angle and local time:

from dvoacap import SolarCalculator, GeographicPoint
from datetime import datetime

calc = SolarCalculator()

location = GeographicPoint.from_degrees(40.0, -75.0)
time = datetime(2024, 6, 15, 12, 0)  # Noon UTC

zenith = calc.calculate_zenith_angle(location, time)
is_day = calc.is_daytime_at(location, time)

print(f"Zenith angle: {zenith * 180/3.14159:.1f}°")
print(f"Daytime: {is_day}")

MUF Calculation

Calculate Maximum Usable Frequency:

from dvoacap import PathGeometry, FourierMaps, GeoPoint
from dvoacap.muf_calculator import MufCalculator
from dvoacap.ionospheric_profile import IonosphericProfile

# Set up path
path = PathGeometry()
tx = GeoPoint.from_degrees(40.0, -75.0)
rx = GeoPoint.from_degrees(51.5, -0.1)
path.set_tx_rx(tx, rx)

# Set up ionospheric maps
maps = FourierMaps()
maps.set_conditions(month=6, ssn=100, utc_fraction=0.5)

# Create MUF calculator
muf_calc = MufCalculator(path, maps)

# Note: Full MUF calculation requires ionospheric profiles
# See examples/ directory for complete workflow

Next Steps

  • Explore the Examples page for more detailed examples

  • Read the API Reference documentation for complete API reference

  • Check the examples/ directory in the repository for runnable code

  • See the VOACAP manual (in docs/) for propagation theory