MiniNEC x64(グラフ表示とCSV出力に対応した64ビット版 Win10/11 手続き型MiniNEC)
これは、何年も前に私が行ったQB45版MiniNECの移植を、さらに発展させたものです。QB64は大文字小文字を区別しないとはいえ文法にはかなり厳格で、簡単な移植作業ではありませんでした。ここまでに数十回のコンパイルを重ねています。MiniNEC 2をベースにしており、現時点で1100行を超えています。試してみたい方は、その限界を見極めるために必要なだけのテストと検証(V&V)を行ってください。時間の許す限り、開発を進めていく予定です。 かなり全面的な書き直しで、GOTOは一切使わない純粋な手続き型になっており、変数名はそれぞれが対応する方程式の役割にちなんで付けています。電流はx, y, zの形で外部CSVファイルに出力しており、いずれMiniNEC x64から3Dプロットを得られるようにすることを見据えています。末尾には新たにグラフィカルな放射パターン表示を追加し、20mダイポールを基準に出力を較正しました。 同様に、放射パターンは伝統的に、円弧上の様々な観測点で要素を足し合わせることで計算されます。この方式は今のところそのまま残していますが、いずれ取り除くのが妥当でしょう。パターン計算のコードには未定義の添字まであり、これはMiniNECの最初のバージョンがFortranだったことを示唆しています——興味深い発見ですが、もしご存知の方がいれば教えてください。ただ、状況から見るとそうだったようです。放射パターンも、角度・E面・H面・合計dBの形でCSVに出力されます。ここにはいくつかのバージョンがあり、こちらは昔ながらのスタイルが好きな方向けのもの、他に入力デッキ付きのもの、そして.dll版があります。
MiniNECとは何か
MiniNECは、電磁気学における数値計算手法であるモーメント法(MoM)を用いて、ワイヤ構造のアンテナをシミュレーション・解析するための計算ツールです。ワイヤ構造上の電流分布に関する積分方程式を解くことでアンテナ特性をモデル化し、放射パターン、インピーダンス、利得、効率を予測できます。もともとミニコンピュータや初期のPC向けに設計された軽量なツールであり、アマチュア無線家などの愛好家、教育者、放送・アマチュア無線分野での手早い試作に最適です。ダイポール、ループ、八木アンテナ、ヘリカルアンテナといった単純なワイヤ形状に対応し、大地の影響やローディングのオプションも備えています。
MiniNECの歴史
MiniNECのルーツは、1970年代にローレンス・リバモア国立研究所で、米海軍向けの艦船アンテナモデリングのために開発されたNumerical Electromagnetics Code(NEC)に遡ります。NECはフルスケールのシミュレーションにモーメント法を用いていましたが、メインフレームを必要としていました。
1980年代初頭、パーソナルコンピュータの登場に伴い、Naval Ocean Systems Center(NOSC)のJohn W. Rockway博士らがNECをより小型のシステム向けに適応させ、1981年にMiniNECを生み出しました。ワイヤアンテナ向けにNECのカーネルを簡略化し、中核的な精度を保ちながら計算負荷を軽減したものです。一般公開されると、電子掲示板やフロッピーディスクを通じてアマチュア無線家の間で人気を博しました。
1980年代半ばまでに、MiniNECはEZNECや4NEC2といったツールに影響を与えました。PCのハードウェア進化に伴い、より優れた大地モデリングなどの機能も追加されていきました。フル版のNEC系ツールに取って代わられた面はあるものの、そのシンプルさと教育的価値から今も評価されており、x64ビルドなどの現代的な移植版によって互換性が保たれています。
これまでの様々なバージョン
- MiniNEC 1.0(1981年):ミニコンピュータ/初期PC向けの初版。セグメント数が限られた(例:20〜50本)基本的なワイヤMoM。
- MiniNEC 2.0(1983年):収束性を改善したカーネル。接地面オプションと基本的な最適化機能を追加。
- MiniNEC 3.0(1985年):DOSベース。対応セグメント数が増加(最大100)。アマチュア無線アンテナのサンプルモデルを同梱。
- MiniNEC Professional(1990年代):GUIを備えた商用版(例:Nittany Scientific社製)。プロット機能を統合。
- 現代の移植版(2000年代〜2020年代):MiniNEC Broadcastなどのオープンソース派生版。Windows/Linux向けx64ビルド(例:FortranからCへの移植経由)。MATLAB/Pythonとの連携。
- MiniNEC x64(最近):大規模モデル向けの64ビット版。マルチコアCPU向けに強化。GitHubのようなプラットフォームでコミュニティによって保守。
バージョンは無料(オープンソース)版と、NEC-4カーネルなどの高度な機能を持つ有料版とに分かれていきました。現在では、AutoEZのようなスイート製品に同梱されたり、モーメント法の基礎を教える教育現場で使われたりすることが多くなっています。
MiniNECの動作の基本的な流れ
以下は、モーメント法を用いたMiniNECの中核的な処理の流れを示す、簡単なテキストのフローチャートです:
+---------------------+
| 形状の定義 |
| (ワイヤ、セグメント、 |
| 給電点、負荷) |
+---------------------+
|
v
+---------------------+
| 環境の設定 |
| (周波数、大地、 |
| 材質) |
+---------------------+
|
v
+---------------------+
| インピーダンス行列 |
| (Z行列)の構築 |
| (MoM積分を使用) |
+---------------------+
|
v
+---------------------+
| 電流を求める |
| (Z行列の反転、 |
| またはLU分解) |
+---------------------+
|
v
+---------------------+
| 出力の計算 |
| (パターン、利得、 |
| インピーダンス、SWR) |
+---------------------+
|
v
+---------------------+
| 可視化・出力 |
| (グラフ、ファイル) |
+---------------------+
この処理は、周波数スイープなどのために繰り返し実行されます。計算時間はセグメント数の3乗(O(N^3))で増加するため、モデルの規模には限界があります。