Si tu fais un peu d’antennes, tu connais sans doute 4NEC2 : un excellent logiciel de simulation d’antennes, mais réservé à Windows et dont le code n’est pas ouvert. J’ai voulu essayer autre chose : une interface web moderne, open source, qui tourne sur n’importe quel système (Linux, Windows, macOS) dans un simple navigateur. Voici Open2Nec, au stade alpha, avec ce qu’il sait faire aujourd’hui et ce qui lui manque encore.

Pourquoi un nouveau simulateur d’antennes ?
Simuler une antenne avant de la construire permet d’économiser beaucoup de fil, de temps et de grimpe dans les arbres. Le principe est simple : on décrit l’antenne comme un ensemble de petits fils, et un moteur de calcul détermine le courant dans chacun d’eux, puis en déduit l’impédance, le ROS et le diagramme de rayonnement.
Mon objectif n’est pas de remplacer 4NEC2, que je respecte, mais de proposer une alternative libre, multiplateforme et qui s’installe en une commande grâce à Docker.
Le principe : on ne réinvente pas le moteur
Écrire un moteur de calcul électromagnétique est un travail énorme, et il existe déjà un excellent moteur libre. Open2Nec s’appuie donc sur OpenNEC (son exécutable s’appelle onec), développé par Maury Markowitz sous licence MIT. C’est lui qui fait tous les calculs ; Open2Nec lui prépare les données et affiche les résultats. Un grand merci à son auteur.
OpenNEC suit le standard NEC-2, un code de simulation d’antennes par la méthode des moments, développé à l’origine au Lawrence Livermore National Laboratory et devenu une référence chez les radioamateurs. Il comprend aussi les extensions utilisées par 4NEC2, comme les symboles et les formules.
Une architecture en trois couches
Pour que le projet reste propre et évolutif, il est découpé en trois couches qui ne se connaissent que dans un seul sens :
| Couche | Technologie | Rôle |
|---|---|---|
core/ | Python pur | Modèle d’antenne, génération des cartes NEC, appel de onec, lecture des résultats |
api/ | FastAPI | Fine couche HTTP au-dessus du core, sans aucun calcul |
web/ | Svelte, Vite, TypeScript, Three.js | L’interface que tu vois dans le navigateur |
La règle d’or : le core ne dépend jamais de l’interface. Demain, on pourrait donc lui brancher autre chose qu’une page web (une application de bureau, un script) sans toucher au calcul.
Ce que sait faire Open2Nec aujourd’hui
- Tableau de fils avec symboles et formules : on définit par exemple une longueur
L = 10et on la cite dans les cotes. - Vue 3D de la géométrie, avec le point d’alimentation repéré.
- Diagramme de rayonnement en coupes d’azimut et d’élévation.
- Balayage en fréquence : courbes de ROS et d’impédance, et abaque de Smith.
- Import et export de fichiers
.nec(format de 4NEC2) ; on peut même glisser un fichier sur la page pour l’ouvrir. - Optimiseur qui ajuste tes symboles pour viser un ROS, un gain ou un rapport avant/arrière.
- Modèles prêts à l’emploi : dipôle, ground plane, Yagi 3 éléments, V inversé, quad 2 éléments.
- Thème clair ou sombre.
Un exemple : le dipôle demi-onde sur 20 m
La capture ci-dessus montre le modèle de départ : un fil horizontal de 10,32 m, à 10 m du sol, sur sol réel (εr = 13, σ = 0,005 S/m), balayé de 13,9 à 14,5 MHz. Les résultats sont ceux qu’on attend d’un dipôle :
- Impédance d’environ 72 Ω à la résonance (14,204 MHz), avec une réactance quasi nulle.
- ROS minimal de 1,45 : c’est simplement 72 Ω / 50 Ω. Le dipôle n’est pas « mal réglé », il n’a tout simplement pas 50 Ω d’impédance.
- Gain de 7,12 dBi, avec un diagramme en « 8 » : le maximum de rayonnement se trouve perpendiculairement au fil.
Pour les curieux, voici l’équivalent d’un fichier NEC écrit à la main pour cette antenne. Open2Nec génère ce genre de fichier pour toi (la carte GN décrit le sol, FR le balayage en fréquence, EX l’alimentation, XQ lance le calcul : sans carte d’exécution comme XQ ou RP, NEC-2 ne calcule rien). Avec ce fichier, onec donne bien 72,4 − 0,4j Ω à 14,2 MHz, soit un ROS de 1,45 sous 50 Ω :
CM Dipole demi-onde 20 m, 10 m de hauteur
CE
GW 1 21 0 -5.16 10 0 5.16 10 0.001
GE 0
GN 2 0 0 0 13 0.005
FR 0 13 0 0 13.9 0.05
EX 0 1 11 0 1 0
XQ 0
ENLes limites à connaître
- NEC-2 seulement : les cartes NEC-4 (par exemple
CWetIS) ne sont pas gérées. onecest indispensable : la version 2.3.3 est celle qui est testée. L’image Docker l’inclut déjà.- Version alpha : l’interface et le format des données peuvent encore changer, et des bugs sont possibles.
- Aucune authentification : le conteneur n’écoute que sur 127.0.0.1. Ne l’expose pas sur un réseau.
À garder en tête aussi, comme avec n’importe quel simulateur : un résultat n’est valable que si la segmentation est correcte (assez de segments par fil). Open2Nec contrôle le modèle et affiche des avertissements, mais la simulation ne remplace pas la mesure.
L’essayer en deux minutes avec Docker
Docker permet de lancer l’application sans rien installer d’autre (ni Python, ni Node.js). Depuis la racine du dépôt :
docker compose -f docker/compose.yaml up -d --buildPuis ouvre http://localhost:8080 dans ton navigateur. Si ce port est déjà pris sur ta machine, choisis-en un autre :
OPEN2NEC_PORT=8099 docker compose -f docker/compose.yaml up -d --buildL’installation de Docker, l’arrêt du conteneur et la mise à jour de onec sont expliqués dans le fichier docker/README.md du dépôt. Les développeurs trouveront dans le README les commandes pour lancer séparément le core, l’API et l’interface.
Et la suite ? (la « feuille de route »)
Une feuille de route (roadmap en anglais) est simplement la liste des étapes prévues pour un projet : ce qui est fait, ce qui est en cours et ce qui viendra ensuite. Elle permet à chacun de savoir où en est le logiciel et d’y contribuer. La mienne est dans le fichier docs/roadmap.md du dépôt. Voici les prochaines étapes, sans date promise, projet de loisir oblige :
- Publier des versions étiquetées. La première, v0.1.0-alpha, est sortie. Une « version étiquetée » (un tag Git) fige le code à un instant précis : chacun peut ainsi retrouver exactement la même version et signaler un bug sans ambiguïté. Les suivantes seront annoncées dans la page Releases.
- Suivre les nouvelles versions d’OpenNEC. La version 2.3.4 du moteur corrige plusieurs problèmes rencontrés pendant le développement : un plantage quand un fil se trouve dans le sol (#30), des formules invalides silencieusement évaluées à zéro (#32) et une écriture de fichier
.necincorrecte (#33). Merci à Maury pour sa réactivité. Cette version est aussi plus stricte : un symbole doit être défini avant d’être utilisé, comme dans 4NEC2. Open2Nec suit ce comportement et affiche un message d’erreur explicite. - Ajouter des exemples d’antennes réelles, à partir de mes propres cotes : ma FCP (Folded Counterpoise, une verticale à contrepoids replié) pour le 80 m et mon Ultrabeam UB50. Ils s’ajouteront aux modèles pré-remplis (dipôle, Yagi, quad…).
- Faire le ménage et alléger l’interface. La vue 3D (Three.js) représente à elle seule une grosse part du code JavaScript : la charger seulement quand on en a besoin rendra la page plus rapide à l’ouverture. Je veux aussi ajouter des contrôles automatiques pour que l’interface et l’API restent toujours alignées.
- Intégrer vos retours. Modèles qui se comportent mal, fichiers
.necqui ne s’importent pas, fonctions manquantes : c’est ce qui orientera la suite.
Teste-le et dis-moi ce que tu en penses
Le projet est sous licence MIT et le code est public sur GitHub : github.com/albertM-hub/Open2Nec. La première version, v0.1.0-alpha, est disponible dans la page Releases. Si tu le testes, ton retour m’intéresse, surtout pour les modèles d’antennes qui se comportent mal ou les fichiers .nec qui ne s’importent pas : ouvre une issue sur GitHub ou écris-moi.
73 de ON5AM, Albert.
Pour aller plus loin
- OpenNEC, le moteur de calcul utilisé par Open2Nec.
- Dépôt GitHub d’Open2Nec, avec le README, la feuille de route, les instructions Docker et la page Releases.
- Open source radioamateur sur GitHub : photo du 20 octobre 2026, pour voir quels logiciels radioamateur libres sont actifs.
- Contrôleur DIY pour rotor Yaesu G-2800DXC, un autre projet open source de la station.
Licencié Harec depuis 1990, après une pause de quelques années, j'ai renouvelé mon intérêt pour la radio, je suis particulièrement actif en HF, appréciant le FT8, les contest et la chasse au Dx. Passionné d'informatique, je suis convaincu que le monde des radioamateurs doit évoluer avec les avancées technologiques, notamment avec l'émergence de l'IA dans nos shack.







