Numerical Electromagnetics Code
# Numerical Electromagnetics Code

Beim Numerical Electromagnetics Code (NEC) handelt es sich um eine Software zur numerischen Simulation des Abstrahl- und Impedanzverhaltens von linienförmigen Antennen. Zur Berechnung der elektromagnetischen Felder nutzt es die Momentenmethode, ein numerisches Lösungsverfahren. Das ursprüngliche Programm wurde in den 1970er-Jahren von US-amerikanischen Streitkräften in der Sprache FORTRAN entwickelt und unterliegt keinen Copyright-Beschränkungen. Heute existieren zahlreiche nichtkommerzielle und kommerzielle Implementierungen.

## Geschichte

Die Geschichte von NEC geht auf ein früheres Programm BRACT zurück, das zur Analyse von Antennen mit vielen dünnen Drähten im freien Raum verwendet wurde. Es war nützlich für die Modellierung bestimmter gängiger Antennentypen, die in Flugzeugen oder Raumfahrzeugen verwendet werden, oder für andere Beispiele, bei denen der Boden weit genug entfernt war, um die Signale nicht zu beeinträchtigen. BRACT wurde in den frühen 1970er Jahren von MBAssociates für das US Air Forces Space and Missile Systems Center entwickelt. Der Erfolg von BRACT führte zu einem zweiten Vertrag mit MBAssociates, diesmal vom Naval Research Laboratory und dem USAF Rome Air Development Center, um den BRACT-Code so anzupassen, dass er auch die Auswirkungen des Bodens berücksichtigt. Daraus entstand das Antenna Modeling Program (AMP), das umfassend modifiziert wurde, um plattenbasierte Dateien zu unterstützen, die Eingabe und Ausgabe zu vereinfachen und die Benutzung zu erleichtern, und das ausführlich dokumentiert wurde. Ein Nachfolger, AMP2, fügte Berechnungen für erweiterte Oberflächen wie Reflektoren hinzu.
NEC ist eine erweiterte Version von AMP2 mit mehr Optionen und Funktionen. Es wurde von Programmierern des Lawrence Livermore National Laboratory (LLNL) im Auftrag des Naval Ocean Systems Center und des Air Force Weapons Laboratory geschrieben. Der ursprüngliche NEC fügte ein genaueres System zur Berechnung der Ströme entlang der Drähte und an den Verbindungsstellen zwischen den Drähten sowie eine Option hinzu, die die Genauigkeit bei dicken Drähten mit einem geringen Seitenverhältnis im Vergleich zu ihrer Länge erhöhte. NEC-2 fügte dem ursprünglichen NEC zwei wichtige Funktionen hinzu: eine numerische Greensche Funktion für die Arbeit mit großen Flächen und eine Erweiterung des Ground-Plane-Codes, um mit teilweise verlustbehafteten Materialien umgehen zu können, die für Antennen in Bodennähe realistischer sind. Mit der Veröffentlichung von NEC-2 wurde das Original als NEC-1 bekannt.
Alle diese Programme stammen aus der Großrechner-Ära und liefen ursprünglich auf CDC-Maschinen. Der Code war in FORTRAN geschrieben und nahm Eingaben von Lochkartenstapeln im spaltengetrennten Format entgegen und gab die Ergebnisse dann auf einem Zeilendrucker aus. Diese frühen Versionen wurden in großem Umfang auf eine Reihe anderer Großrechnerplattformen portiert. AMP fügte Unterstützung für platten-basierte Dateien mit wahlfreiem Zugriff hinzu, indem es das ursprüngliche System emulierte und die Daten der einzelnen Lochkarten als Zeilen mit 80 Spalten in einer Textdatei codierte, wobei die Datei als Ganzes einen Kartenstapel darstellte.
Mit dem Übergang von der Lochkarteneingabe zur Verwendung von Textdateien entstand eine Fülle von leicht unterschiedlichen Dateiformaten, die später als „nahe am freien Format“ bezeichnet wurden. In den späten 1980er Jahren wurden Versionen auf der MS-DOS-Plattform eingeführt, meist unter Verwendung von FORTRAN-Compilern, die den ursprünglichen Code kompilieren konnten. Spätere Versionen konvertierten FORTRAN in die Programmiersprache C, entweder von Hand oder mit Hilfe automatisierter Tools. Diese Versionen waren oft durch die Ressourcen der Zielplattform begrenzt. Moderne Versionen laufen auf einer Vielzahl von Computersystemen. Sie haben in der Regel eine separate grafische Benutzeroberfläche (GUI), die es dem Benutzer ermöglicht, die Antenne zu zeichnen und zu bearbeiten. Wenn dies abgeschlossen ist, konvertiert die GUI den Entwurf in das NEC-2 Dateiformat und startet NEC-2. Die GUI analysiert dann die Ausgabe von NEC-2 und zeigt die Ergebnisse grafisch an.
Das LLNL entwickelte den Original-Code von NEC weiter. So entstanden NEC-3, das die Fähigkeit besaß, Elemente zu modellieren, die sich im Erdboden befinden oder aus diesem herausragen, sowie NEC-4 und NEC-5, die eine Reihe von weiteren Updates aufwiesen. NEC-4 nahm die Eingabe von einer Datei und sendete die Ausgabe in eine andere Datei und erlaubte Kommentare in jeder Zeile, die mit dem ! Zeichen eingeleitet werden. Ab Version NEC-4 ist das Programm nicht mehr als Open Source verfügbar.

## Berechnung

Der Code basiert auf der Momentenmethode zur Lösung der Integralgleichung des elektrischen Feldes (EFIE) für dünne Drähte und der Integralgleichung des magnetischen Feldes (MFIE) für geschlossene, leitende Flächen. Sie verwendet ein iteratives Verfahren zur Berechnung der Ströme in einer Reihe von Drähten und der daraus resultierenden Felder.
Die Berechnung beginnt mit der Berechnung des elektrischen Feldes im Raum für ein Radiosignal einer bestimmten Frequenz, das sich normalerweise entlang der X-Achse im dreidimensionalen Raum ausbreitet. Dieses Feld ist in Y und Z gleichförmig, variiert aber entlang der X -Achse; die Größe des Signals an einem beliebigen Punkt entlang der X-Achse ist durch die Phase zu diesem Zeitpunkt definiert. Antennen funktionieren, weil sich das Feld im Laufe der Zeit ändert, wenn die Wellenfront an der Antenne vorbeiläuft. Dieses sich ändernde Feld induziert Strom in Leitern, wobei die Spannung durch die Größe des Feldes zu diesem Zeitpunkt definiert ist. Eine Antenne besteht aus ausgedehnten, aber endlich langen Leitern, so dass das Muster des Feldes an verschiedenen Punkten der Antenne zu unterschiedlichen Spannungen führt. In der Antennensprache wird jeder der Leiter, aus denen die Antenne besteht, als Element bezeichnet.
Zur Berechnung des Nettoergebnisses zerlegt der NEC die Elemente der Antenne in eine Reihe von Abtastpunkten, die Segmente genannt werden. Anhand einfacher Berechnungen, die auf dem Durchmesser des Leiters und der Wellenlänge des Signals basieren, werden die induzierten Spannungen und Ströme an jedem dieser Segmente ermittelt. Je nach der Anordnung der Drähte verstärken die induzierten Ströme in einigen Segmenten die Ströme in anderen oder widerstehen ihnen. NEC summiert alle diese Ströme, um den Nettostrom in jedem der Leiter zu bestimmen.
Wenn in einem Leiter ein Wechselstrom fließt, strahlt er eine elektromagnetische Welle (Radiowelle) ab. In Mehrelement-Antennen induzieren die Felder aufgrund von Strömen in einem Element Ströme in den anderen Elementen. Antennen sind in dieser Hinsicht selbst wechselwirkend; die von den Elementen zurückgestrahlten Wellen überlagern das ursprüngliche Funksignal, das untersucht wird. NEC berechnet das sich aus diesen Beiträgen ergebende Feld, addiert es zum ursprünglichen Funksignal und führt dann die gesamte Berechnung mit diesem modifizierten Feld erneut durch. Da das zurückgestrahlte Signal im Vergleich zum ursprünglichen Signal in der Regel klein ist, führt es nur zu einer kleinen Änderung, der Störung, der resultierenden Elementströme. Das Programm wiederholt dann die Berechnung mit den neuen Elementströmen und erhält so neue Strahlungsfelder. Dieser Vorgang wird so lange wiederholt, bis die resultierenden Werte konvergieren.
NEC verwendet eine separate Methode, um den Beitrag von ausgedehnten Materialebenen, wie z. B. einem Drahtgitterreflektor, zu berechnen. In diesem Fall wird die Ebene als eine Einheit betrachtet und der magnetische Beitrag wird direkt berechnet und in die Berechnung zurückgeführt, sobald die Beiträge der einzelnen Drähte berücksichtigt sind. Ähnliche integrale Lösungen werden verwendet, um die Auswirkungen der Grundplatte zu berechnen. In ähnlicher Weise werden auch induktive und kapazitive Lasten, isolierte Übertragungsdrähte über und unter der Erde und andere übliche Teile eines ausgedehnten Antennensystems mit einfacheren numerischen Methoden modelliert. Die Berechnungen konvergieren normalerweise schnell. Die Ausgabe wird dann an einem benutzerdefinierten Punkt, der Last, abgetastet. Bei einer realen Antenne ist dies normalerweise der Punkt, an dem der Draht zum Anschluss an den Sender oder Empfänger befestigt ist. Das Ergebnis ist ein Wert, der die beim Empfang an die Last abgegebene Energie oder die beim Senden von der Antenne absorbierte Energiemenge angibt.
Der NEC wiederholt dann diese gesamte Berechnungsreihe, während er das Signal so verändert, dass es sich der Antenne aus verschiedenen Winkeln entlang der X und Y Achsen nähert, und speichert die Ergebnisse für jede Winkelkombination. Die Ergebnisse werden dann auf das stärkste empfangene Signal normiert (fast immer bei X und Y = 0, oder „frontal“), um ein 3D-Muster zu erzeugen, das den relativen Gewinn für jeden Winkel veranschaulicht. Aus diesen Zahlen lassen sich der Gewinn relativ zu einer isotropen Antenne (dBi), die Richtcharakteristik, das Stehwellenverhältnis und das allgemeine Empfangsmuster ablesen. Programme verarbeiten dies oft in gängigen Formen wie dem Smith-Diagramm. Der Algorithmus hat keine theoretische Größenbeschränkung und kann auf sehr große Antennengruppen oder zur detaillierten Modellierung sehr kleiner Antennensysteme angewendet werden. Der Algorithmus hat sich bei der Modellierung dünner Elementstrukturen wie Yagi-Antennen und Sendetürmen als zuverlässig (zu einer Lösung konvergierend) und genau (Ergebnisse sind mit der gemessenen Leistung vergleichbar) erwiesen. Die NEC-Engine unterstützt auch die Modellierung von Patchantennen, Schlitzantennen, Fraktalantennen oder ähnlichen Konstruktionen, bei denen die leitenden Komponentenelemente nicht stabförmig sind, zeigt dort aber Schwächen.
Der Algorithmus der Momentenmethode weist auch praktische Einschränkungen auf; Die Anzahl der Berechnungen, die erforderlich sind, um eine dreidimensionale Struktur aus „N“ strahlenden Elementen zu modellieren, ist ungefähr proportional zur dritten Potenz von „N“. Die Modellierung einer Antenne mit 100 Drahtsegmenten erfordert 100$^3$ = 1 Million Berechnungen. Die Erhöhung der Anzahl der Elemente um den Faktor 10 erfordert 1000$^3$ = 1 Milliarde Berechnungen, was die Rechenzeit um den Faktor 1000 erhöht, vorausgesetzt, dass die Simulation bei gegebener Speicherkapazität überhaupt abgeschlossen wird. Folglich gibt es andere Ansätze wie die geometrische Optik, die für die Modellierung großer Strukturen bevorzugt werden.
Die meisten Programme, die NEC verwenden, verfügen über Funktionen, die Stapel von NEC-Berechnungen ausführen, um eine zusammengesetzte Ausgabe zu erzeugen. Ein gängiges Beispiel besteht darin, die gesamte Berechnungssuite für verschiedene Eingangsfrequenzen auszuführen und dann Stichproben in einem einzigen Diagramm darzustellen. Man könnte dies beispielsweise verwenden, um ein Frequenzband abzutasten und so ein Diagramm zu erstellen, das die Verstärkung in diesem Frequenzbereich veranschaulicht. Ein weiteres gemeinsames Merkmal ist ein iterativer Löser, der einen bestimmten Parameter zwischen den Durchläufen anpasst, beispielsweise den Abstand zwischen Elementen, um die Leistung zu maximieren. Diese Operationen sind sehr unabhängig und können auf modernen Maschinen trivial parallelisiert werden.

## Beispiel

Die Eingabe erfolgt zeilenweise, die Eingangsdatei wird als Stapel (Englisch “deck”) bezeichnet, dies bezieht sich auf das ursprüngliche Lochkartenformat und benutzt die Dateierweiterung .deck oder .nec. Jede Zeile entspricht einer Lochkarte und startet mit einem Identifikator, der den „Lochkarten“-Typ auf Englisch beschreibt. Ein häufiger Identifikator GW (geometry wire) definiert ein einzelnes gerades „Drahtelement“ der Antenne in der Form:
    GW ITG NS XW1 YW1 ZW1 XW2 YW2 ZW2 RAD
Der Parameter ITG (Englisch “integer tag”) ist eine frei wählbare Nummer, um dieses Element eindeutig zu identifizieren. Der Parameter NS (number of segments) definiert die Zahl der Drahtsegmente, in die das Drahtelement während der Simulation unterteilt werden soll; mehr Segmente führen zu exakterer Berechnung bei steigender Rechenzeit. Die nächsten sechs Parameter sind Real-Werte, die die X-, Y- und Z-Positionen der beiden Endpunkte des Drahtes bestimmen. Der abschließende RAD-Parameter beschreibt den Radius des Drahtelements. Wenn dieser auf Null gesetzt ist, muss die nächste Zeile eine GC-Zeile (geometry cone) sein, die zusätzliche Informationen zum Definieren sich verjüngender Stäbe enthält. Das folgende Beispiel modelliert eine Logarithmisch-periodische Antenne wie sie beispielsweise für den Fernsehempfang genutzt wird.
Das Beispiel mit einigen CM (comment) Zeilen, gefolgt von dem letzten Kommentar in der CE Zeile (comment end). Darauf müssen Geometrie-Zeilen mit der Kennung G folgen. Im Beispiel besteht die Geometrie-Sektion aus zwölf GW-Elementen (geometry wire), die die Antenne bilden. Jedes Element ist länger als das vorangehende; um die Genauigkeit zu erhalten, werden längere Elemente in mehr Segmente unterteilt. Die Maßeinheit ist Meter, so ist das erste Element 2 m breit und erstreckt sich von -1 m zu 1 m. Die GE-Zeile (geometry end) hat einen Parameter, der anzeigt, ob sich die Antenne über einer speziellen Erd-Fläche befindet, im Beispiel ist dies nicht der Fall, es wird von einer Standard-Grundfläche ausgegangen.
Die FR-Zeile (frequency) legt die Frequenz zu 46,29 MHz fest. Optional können Anzahl und Größe von Frequenzschritten für die Analyse eines Frequenzbereichs beschrieben werden, dies ist hier nicht der Fall.
Die TL-Zeilen (transmission line) verbinden die Drahtelemente miteinander. Die EX-Zeile (excitation) beschreibt die Position, an der die Energie in das System eingespeist wird, im Beispiel erreicht die einlaufende Welle Element Nummer 10. Die RP-Zeile (radiation pattern) spezifiziert das Signal. Schließlich beendet die EN-Zeile (end) den Datenstapel, daraufhin startet das Programm die Simulation und erzeugt den Report, der zunächst die Eingabedaten ausgibt, um die Fehlersuche zu vereinfachen. Darauf folgt eine Sektion, die beschreibt, wie die Antenne zur Berechnung segmentiert wurde. Schließlich folgen die Ergebnisse in Tabellenform, hier ein Ausschnitt der Beispielberechnung:
Die Ausgabe zeigt, dass die Antenne in Ausbreitungsrichtung (90°) einen maximalen Gewinn von 9,75 dBi aufweist, etwas mehr als das Dreifache eines isotropen Strahlers. Fünf Grad außerhalb der Achse (85°) fällt dieser Wert auf 9,5 dBi, 65 Grad außerhalb der Achse (25°) wird der Antennengewinn negativ. Dies zeigt die gute Richtwirkung der Antenne und man kann ein gutes Vorwärts- zu Rückwärts-Verhältnis erwarten.

## NEC-Versionen
### BRACT

BRACT war eine reine Momentenmethode, die sich für Antennen eignet, die aus Leitern mit gleichmäßigem Durchmesser bestehen, die im freien Raum angeordnet und an ihren Enden (wenn überhaupt) miteinander verbunden sind. Es modellierte nicht die Beiträge des Bodens (oder des Wassers) und war in erster Linie für luft- und raumfahrzeugartige Anwendungen nützlich.

### AMP

AMP modifizierte BRACT, indem es ein System zur Berechnung der Auswirkungen von Bodenebenen hinzufügte.

### AMP2

AMP2 fügte die Fähigkeit hinzu, erweiterte geschlossene Flächen zu modellieren.

### NEC-1

Der ursprüngliche NEC, der später als NEC-1 bezeichnet wurde, als NEC-2 eingeführt wurde, war eine Modifikation des früheren AMP2 und fügte eine genauere Stromausdehnung entlang von Drähten und an Mehrfachdrahtverbindungen sowie eine Option in der Drahtmodellierung für eine weitaus größere Genauigkeit bei dicken Drähten hinzu. Ein neues Modell für eine Spannungsquelle wurde hinzugefügt und verschiedene andere Änderungen zur Erhöhung der Genauigkeit vorgenommen.

### NEC-2

NEC-2 ist die höchste Version des Codes, die ohne Lizenz öffentlich zugänglich ist. Er kann keine in der Erde verlegten Radials oder Erdpfähle modellieren.

### NEC-3

NEC-3 modifizierte NEC-2 um ein Sommerfeld-Modell, um im oder nahe am Boden verlegte Drähte korrekt zu modellieren.

### NEC-4

NEC-4 modifizierte NEC-3, um sehr kleine Antennen, wie die von Mobiltelefonen und WiFi-Routern, besser zu modellieren. Die neueste Version, 4.2, enthält eine bessere Version des in NEC-3 verwendeten Sommerfeld-Modells für erdnahe und erdgebundene Leitungen, fügte Stromquellen hinzu, anstatt nur Spannungsquellen wie in früheren Modellen, und verwendete ein neues Speicherverwaltungssystem, das beliebig große Designs ermöglicht. NEC-4 bleibt Eigentum des Lawrence Livermore National Laboratory und der University of California. NEC-4 erfordert eine Lizenz.

### NEC-5

NEC-5 löst die Integralgleichung des elektrischen Feldes für Drähte und Oberflächen mit der neueren, von Rao, Wilton und Glisson entwickelten Methode des gemischten Potentials. NEC-5 unterliegt denselben Lizenzbedingungen wie NEC-4.

### MININEC

MININEC ist eine unabhängige Implementierung der Konzepte in NEC. Es verwendet denselben Momentenalgorithmus zur Berechnung der Ergebnisse, aber mit einem völlig neuen Code. Die ersten Versionen wurden 1980 in BASIC für 32 kB Apple-II-Computer geschrieben, und nach einigen Ratschlägen von Professor Wilton an der Universität von Mississippi wurde die erste öffentliche Version 1982 für 64 kB-Maschinen veröffentlicht. Eine verbesserte Version, MININEC2, wurde 1984 veröffentlicht, gefolgt von einer Portierung auf den IBM PC als MININEC3 im Jahr 1986. Wie das ursprüngliche NEC läuft MININEC heute auf vielen Plattformen, obwohl seine Popularität mit der zunehmenden Verfügbarkeit der ursprünglichen NEC-Codes in C-Form zurückgegangen ist.
MININEC weist im Vergleich zu NEC einige bekannte Schwächen auf, von denen die bekannteste darin besteht, dass die Resonanzfrequenzen leicht fehlerhaft sein können. Allerdings kommt MININEC besser mit unterschiedlichen Drahtdurchmessern zurecht als NEC-2 und wahrscheinlich auch NEC-4; dazu gehören parallele Drähte mit unterschiedlichen Durchmessern, Drähte mit unterschiedlichen Durchmessern, die in einem Winkel verbunden sind, und Antennenelemente mit verjüngtem Durchmesser. Die Platzierung von Quellen an einer Kreuzung zweier Drähte ist ein Problem für NEC-2, aber nicht für MININEC. MININEC konvergiert langsamer (benötigt mehr Segmente), wenn Drähte in einem Winkel zusammenlaufen, wenn Drahtsegmente mit deutlich unterschiedlicher Länge benachbart sind und hat ein schwächeres Erdungsmodell.