Výška antény nad zemou a profil terénu v smere prevádzky sú dva faktory, ktoré dokážu rozhodnúť o desiatich decibeloch rozdielu v nízko-uhlom vyžarovaní – a teda o tom, či signál doletí do DX, alebo nie. Program HFTA (HF Terrain Analysis), ktorý pre ARRL vytvoril Richard Dean Straw, N6BV, bol desaťročia štandardným nástrojom pre takúto analýzu. Keďže pôvodný program bol určený pre 32-bitový Windows a jeho vývoj sa zastavil, vznikol projekt OpenHFTA – verná, reimplementácia pre moderné systémy.
V článku sa dočítate
Princíp HFTA: elevačný diagram ako funkcia terénu
Základnou veličinou, ktorú HFTA počíta, je far-field elevačný diagram antény – nie nad ideálnym rovným zemou, ale nad skutočným terénnym profilom v zvolenom azimutu. Výsledkom je závislosť relatívneho zisku od elevačného uhla, typicky v rozsahu 0,25° až 35°, s rozlíšením 0,25°.
Terén pôsobí na šírenie tromi mechanizmami. Priame vlnenie, ktoré nesú fázor priameho žiarenia antény, sa sčítajú koherentne s vlneniami odrazenými od zemského povrchu; výsledný diagram môže mať v určitých uhloch výrazné maxima alebo nuly podľa toho, ako sa fázy jednotlivých ciest sčítajú alebo odčítajú. Na hranách terénu – hrebeňoch, svahoch, kopcoch – nastáva ohyb podľa Uniformnej teórie difrakcie (UTD), ktorý vnáša do elevačného diagramu ďalšie príspevky, obzvlášť dôležité v tieňovej oblasti za prekážkou.
Odraz od zemského povrchu sa modeluje Fresnelovými koeficientmi pre straty v pôde. Pôda je popisovaná komplexnou relatívnou permitivitou, v ktorej reálna zložka reprezentuje kapacitné vlastnosti a imaginárna zložka vodivostné straty. Pre horizontálne polarizované antény – dipóly, yagi, quady – sa používa koeficient horizontálnej (TE) polarizácie. To zodpovedá typickej prevádzke na KV contestoch a pri DX expedíciách, kde dominujú horizontálne antény.
Terénny profil je v programe reprezentovaný ako po častiach lineárny lom (piecewise-linear polyline). Predspracovanie profilu zahŕňa zjednodušenie vstupných bodov: zachovajú sa len body, ktorých výška sa od predchádzajúceho zachovaného bodu líši o aspoň λ/8. Difrakčné body sa identifikujú zo zmien sklonu susedných úsekov a ďalej z dĺžkových podmienok susedných segmentov.
Profil terénu zadáva operátor ako dvojice vzdialenosť–výška pozdĺž jedného azimutu, typicky do vzdialenosti niekoľkých kilometrov od stanice. Tieto dáta možno získať z topografických máp alebo z digitálnych výškových modelov dostupných na internete.
UTD a Fresnelova reflexia: jadro výpočtu
Difrakcia na terénnych hranách je implementovaná pomocou Kouyoumjian-Pathakovho UTD koeficientu pre priamo vodivý klin. Koeficient je tvorený štyrmi členmi, každý vo forme súčinu kotangensu a prechodovej funkcie F(X). Práve táto štruktúra zabezpečuje, že výsledok je konečný aj presne na tieňovej a reflexnej hranici – kde by kotangens bol singulárny, prechodová funkcia F(X) sa znuluje presne takým spôsobom, aby súčin zostal ohraničený.
Implementácia rozlišuje viaceré rodiny lúčov: priama difrakcia od antény na hranu, dvojhra difrakcia cez dve za sebou nasledujúce hrany (DIFFDIFF), a interakcia reflexia–difrakcia pri prechode lúča cez reflektujúci povrch pred difrakčnou hranou. Pre každú rodinu sa vypočíta príslušný parameter vzdialenosti v dĺžkach vlny, ktorý vstupuje do normalizačného faktora UTD koeficientu.
Výsledný elevačný diagram vzniká koherentným sčítaním komplexných fázorov všetkých príspevkov pre každý výstupný uhol. Po sčítaní sa vypočíta absolútna hodnota, aplikuje sa kĺzavý priemer cez päť uhlových segmentov a výsledok sa konvertuje na dB.
OpenHFTA: účel a ciele projektu

OpenHFTA je Python CLI nástroj, ktorého primárnym cieľom je zachovanie funkčnosti pôvodného HFTA pre dnešných používateľov a systémy. Projekt je venovaný pamiatke Richarda Deana Strawa, N6BV, autora HFTA, dlhoročného pracovníka ARRL a editora viacerých vydaní ARRL Antenna Book. ARRL uvádza, že HFTA, TLW a Yagi for Windows boli vyvinuté pre 32-bitový Windows a aktualizácie sa neplánujú, pričom HFTA naďalej zostáva súčasťou doplnkového softvéru k ARRL Antenna Book.
OpenHFTA nepretenduje na nahradenie pôvodného programu novým modelom terénnej analýzy. Jedinou kompatibilnou referenciou zostáva správanie pôvodného HFTA. Pull requesty, ktoré by úmyselne zlepšovali numerické jadro spôsobom narúšajúcim kompatibilitu s pôvodným HFTA, nie sú v projekte akceptované – používatelia, ktorí chcú experimentovať s novými modelmi, sú vyzvaní k forku.
Architektonicky OpenHFTA pozostáva z Python CLI vrstvy a Fortran numerického jadra OpenYTWCore, ku ktorému pristupuje cez ctypes. Python vrstva číta terénne profily, konvertuje jednotky (merné alebo angloamerické), stará sa o prípravu vstupov pre Fortran a generuje výstupné grafy pomocou matplotlib. Fortran jadro preberá výpočet elevačného diagramu.
Vlastnosti OpenHFTA

Typy antén a konfigurácia stackov

OpenHFTA podporuje dipól, 2-prvkový až 6-prvkový a 8-prvkový Yagi. Sedem-prvkový Yagi nie je dostupný; 8-prvkový sa mapuje na interný typ 7 Fortran jadra. Naraz je možné analyzovať až štyri anténne prvky na rôznych výškach. Fázovanie prvkov sa zadáva hviezdičkovou notáciou: napríklad 30* označuje prvok vo výške 30 m s fázovým obrátením o 180°. Týmto spôsobom možno modelovať fázované stacky.
Parametre pôdy
Reflexné vlastnosti zemského povrchu sú parametrizované relatívnou permitivitou a vodivosťou v S/m. OpenHFTA poskytuje tabuľku prednastavených hodnôt zodpovedajúcich pôvodnému HFTA GUI, od veľmi chudobnej pôdy (σ = 0,001 S/m, εr = 5) cez priemernú pôdu (σ = 0,005 S/m, εr = 13) až po slanú vodu (σ = 5,000 S/m, εr = 80). Pôvodné HFTA GUI zobrazovalo vodivosť v mS/m; OpenHFTA CLI očakáva hodnoty v S/m.
Porovnávanie viacerých terénnych profilov
Jednou z prakticky cenných funkcií je možnosť súčasnej analýzy a porovnania viacerých terénnych profilov naraz. Každý profil má vlastné nastavenia antény, výšky a posunu stožiara. Výsledkom sú elevačné diagramy všetkých profilov na jednom grafe, čo umožňuje priame porovnanie rôznych azimutov alebo rôznych anténnych konfigurácií na rovnakom teréne.
Angle of Arrival a Figure of Merit
OpenHFTA podporuje vstupné súbory AoA (Angle of Arrival) vo formáte ARRL, ktoré obsahujú percentuálne pravdepodobnosti príchodu signálu pod jednotlivými elevačnými uhlami pre rôzne pásma. Na základe vypočítaného elevačného diagramu a AoA dát Python vrstva vypočíta Figure of Merit – číslo reprezentujúce celkovú vhodnosť antény pre prevádzku do danej cieľovej oblasti. Pásmo sa automaticky určí z frekvencie.
Posun stožiara a vizualizácia terénu
Funkcia Move Tower umožňuje posunúť pozíciu antény pozdĺž terénneho profilu bez nutnosti upravovať vstupný súbor. Okrem elevačného diagramu možno prepnúť zobrazenie do režimu terrain, kde program vykreslí samotný terénny profil. Výstupné grafy možno uložiť vo formátoch PNG, SVG a PDF.
Difrakcia a jej riadenie
Difrakcia je v OpenHFTA predvolene zapnutá, čo zodpovedá fyzikálne presnejšiemu výsledku pre KV frekvencie. Vypnúť ju možno parametrom --no-diffraction, napríklad pre overenie vplyvu difrakcie porovnaním oboch výpočtov. Elevačný diagram sa počíta v 140 uhlových priehradkách od 0,25° do 35,0° v krokoch 0,25°, čo zodpovedá špecifikácii pôvodného HFTA.
Numerická vernosť a portovanie Fortran jadra
Dosiahnutie numerickej zhody s pôvodným HFTA si vyžadovalo hĺbkovú analýzu rozdielu medzi pôvodným kompilátorom Compaq Visual Fortran (CVF) a moderným GNU gfortran. Pôvodný HFTA binary vykazuje znaky kompilácie pre x87 FPU, kde medzivýsledky výrazov môžu byť uložené do 80-bitových registrov FPU, no pri zápise do pamäte sa skracujú na 32-bitovú presnosť REAL*4. Práve toto striedanie presností vo vnútri výpočtov bolo kľúčovým zdrojom rozdielov.
Najkritickejším miestom z hľadiska numerickej stability je výpočet UTD prechodovej funkcie v rutinách WD a FFCT. UTD koeficient zahŕňa súčin kotangensového člena, ktorý sa blíži k singularite na tieňovej hranici, a prechodovej funkcie F(X), ktorej argument sa zároveň blíži k nule. Ich súčin musí zostať ohraničený, čo si vyžaduje presné vzájomné vynulovanie. V jednom zdokumentovanom prípade z testovacej sady spôsobil argument funkcie TAN vzdialený od pólu len femto-jednotky odchýlku výsledku o viac ako 10 dB oproti pôvodnému HFTA.
Druhým zdrojom citlivosti je sledovanie línie viditeľnosti (LOS) v rutine REFL a v priamo vložených kontrolách v YTWCore1. Iteratívny výpočet výšky lúča nad terénnym profilom je pri paprskoch takmer sa dotýkajúcich terénu (grazing paths) náchylný na kumulatívne zaokrúhľovacie chyby. Prevrátenie výsledku jednobitovej porovnávacej podmienky može viesť k vylúčeniu celého fyzikálneho príspevku z výsledného súčtu a teda k chybe niekoľkých dB vo výslednom diagrame.
Riešením je špecifická sada kompilátorovych prepínačov pre gfortran, ktoré nútia kompilátor využívať x87 FPU namiesto SSE registrov a nastavujú spracovanie medzivýsledkov tak, aby sa čo najviac priblížilo správaniu CVF. Výsledná binárka je z čisto matematického hľadiska presnejšia ako pôvodný HFTA binary, pričom zachováva kompatibilitu výstupu.
Inštalácia a použitie
OpenHFTA je dostupný na GitHub pod licenciou 0BSD. Inštalácia na Debian/Ubuntu systémoch zahŕňa inštaláciu Python závislostí (python3-numpy, python3-matplotlib) a zostavenie Fortran jadra príkazom make && sudo make install. Po inštalácii je nástroj dostupný ako príkaz hfta. Pre lokálny vývoj bez inštalácie stačí spustiť ./hfta.py priamo z repozitára.
Typické použitie pre analýzu 20m antény nad terénnym profilom:
hfta –profile terrain.pro –freq 14.2 –heights 20 40 –antenna-type 2-Ele
Terénne profily sa ukladajú v súboroch .PRO, ktoré obsahujú dvojice vzdialenosť–výška s hlavičkou určujúcou jednotky (meters alebo feet). Jednotky v terénnom súbore a jednotky zadávané na príkazovom riadku sú nezávislé – CLI parameter --units ovplyvňuje len výšky antén a posun veže, nie interpretáciu profilu.
Zhrnutie
OpenHFTA vypĺňa praktickú medzeru, ktorú pôvodné HFTA zanechalo po prechode rádioamatérskej komunity na 64-bitové systémy. Ide o verný, otvorený a inšpektovateľný port pôvodného algoritmu – nie o jeho nahradenie novým modelom. Pre contestmana, DXmana alebo konštruktéra stanice, ktorý chce vedieť, či mu kopec za QTH pomáha alebo škodí na 14 MHz pri nízko-uhlom vyžarovaní, je to dnes jediný funkčný a voľne dostupný nástroj s priamou numerickou kontinuitou k pôvodnému HFTA N6BV.
Projekt zostáva otvorený pre príspevky zamerané na dokumentáciu, testy a spresnenie komentárov v kóde. Numerické zmeny sú akceptované len ako opravy kompatibility, s porovnávacími testami voči pôvodnému HFTA správaniu.
Odkaz na projekt: https://github.com/RioDXGroup/openhfta
