目次

5. OpenFDTDの使用法

5.1 GUIプログラム

OpenFDTDはGUI(Graphical User Interface)プログラムを使用して、 ウィンドウ上でデータ入力、計算、図形出力を行います。

5.1.1 Windowsの実行環境

Windowsの実行環境は以下のようになります。

(1) .NET Framework
GUIプログラムの実行には .NET Framework が必要です。 Windows11には標準装備されています。 .NET Framework がインストールされていないかバージョンが古いときは、 下記からダウンロードしてインストールしてください。
https://dotnet.microsoft.com/ja-jp/download/dotnet-framework

(2) OpenMP
OpenMP対応の実行プログラムを実行するための準備は特に必要ありません。
ただし、実行プログラムのあるフォルダにランタイムライブラリvcomp140.dllが必要です。 (配布ファイルに含まれています。 ファイル名の"140"はVC++のバージョンを表し、今後変わる可能性があります。)

(3) MPI
1台のコンピュータでMPI対応の実行プログラムを実行するための準備は特に必要ありません。
ただし、実行プログラムのあるフォルダにファイル mpiexec.exe, msmpi.dll, smpd.exe が必要です。 (配布ファイルに含まれています)
初回に実行するときにセキュリティソフトが警告を出したら許可してください。 (MPIプログラムは複数のプロセスを起動するのでマルウェアと認識されることがあります)
複数台のコンピュータで実行するときは[3]の「7.MPI」を参考にしてください。 ただし高速なネットワーク環境(10Gbps以上)が必要になります。

(4) CUDA
CUDA対応の実行プログラムを実行するためには、NVIDIAのグラフィックスボードが実装され、 グラフィックスドライバーがインストールされていることが必要です。
プログラムが実行できないか、意味のない数字を出力してすぐ終了するときは、 グラフィックスドライバーのバージョンが古いことが考えられるので、 下記のサイトから最新のグラフィックスドライバーをダウンロードしてインストールしてください。
http://www.nvidia.co.jp/Download/index.aspx?lang=jp
グラフィックスドライバーは数か月ごとにバージョンアップされますが、 実行プログラムが動作していれば必ずしもバージョンアップする必要はありません。
複数台のコンピュータで実行するときは[3]の「7.MPI」を参考にしてください。 ただし高速なネットワーク環境(10Gbps以上)が必要になります。

5.1.2 GUIプログラムの起動

GUIプログラムを起動するにはOpenFDTD.exeファイルをダブルクリックしてください。
図5-1-1にOpenFDTDのGUIプログラムを示します。
図5-1-2にOpenFDTDの処理の流れを示します。 図中の緑色がGUI画面での操作、黄色がコマンドボタン、 無色が出力されるファイルを表します。


図5-1-1 OpenFDTDのGUIプログラム


図5-1-2 OpenFDTDの処理の流れ

5.1.3 GUIプログラムの使用法

以下の手順で操作してください。

  1. [全般]タブから[波源・観測点]タブまでのデータを入力します。 詳しくは5.1.4~5.1.8を参考にしてください。(注1)
  2. [計算]ボタンをクリックします。ウィンドウが開いて計算が開始されます。 詳しくは5.1.9を参考にしてください。(注2)
  3. [ポスト処理制御]タブでポスト処理の設定を行います。 詳しくは5.1.10を参考にしてください。
  4. [ポスト処理]ボタンをクリックします。 図形データファイルev.ev2とev.ev3が出力されます。
  5. [図形表示2D]ボタンをクリックします。ev2d.exeが起動してev.ev2が図形表示されます。 詳しくは5.2を参考にしてください。
  6. [図形表示3D]ボタンをクリックします。ev3d_otk.exeが起動してev.ev3が図形表示されます。 詳しくは5.2を参考にしてください。
  7. ポスト処理は[ポスト処理制御]タブの設定を変えて [ポスト処理]→[図形表示2D]または[図形表示3D]を繰り返し行うことができます。(注3)

(注1)
作業中にときどき安全のために[ファイル]→[上書き保存]または[名前を付けて保存]でファイルを保存してください。
(注2)
このウィンドウの属性は左上のアイコンをクリックして[プロパティ]メニューで変更することができます。 特に[オプション]タブの[簡易編集モード]はOFFにしてください。 これを行わないと計算中にウィンドウ内をクリックすると表示が停止します。 その他、ウィンドウサイズ、色、フォントなどを変更することができます。
(注3) OpenTHFD, EEM-FDM
[ファイル]>[開く]で[ファイル名]のフィルターに"OpenTHFD"または"EEM-FDM"を選択すると、 OpenTHFDのデータ(拡張子.oth)またはEEM-FDMのデータ(拡張子.fdm)を開くことができます。 ただし、一部の機能はサポートしていないので計算する前に内容を確認し、 適当に修正してください。

5.1.4 全般タブ

[全般]タブでは計算のための各種のデータを入力します。(図5-1-1)

(注1)
日本語を含む入力データファイルの文字コードはUTF-8(BOMなし)です。
ただし、タイトルに日本語が含まれると計算時のコンソールのタイトル行が文字化けしますが、 ofd.logと図形表示には日本語が正しく表示されます。 (コンソールはShift-JISのみをサポートするため)
Version 3.Xまでの日本語を含む入力データファイルの文字コードはShift-JISです。 メモ帳等で読み込んでUTF-8(BOMなし)で保存したのち使用するか、 [全般]タブで再度日本語で入力してください。
(注2)
給電点と観測点ではその点の時間波形を保存し、 最後にフーリエ変換を行うので周波数の数が多くてもかまいません。
(注3)(重要)
近傍界ではタイムステップごとに全領域でフーリエ変換の加算処理を行うので、 計算時間と使用メモリーが周波数の数に比例して増大します。 周波数の[分割数]は必要最小限にしてください。
遠方界はこの近傍界から計算されます。

5.1.5 メッシュタブ

[メッシュ]タブではXYZ方向のメッシュデータを入力します。(図5-1-3)
[入力方法]には[説明あり]と[説明なし]の2通りがあります。
いずれも区間区切りの座標値とその区間の分割数を交互に入力してください。
座標値は小さい順に入力してください。
[説明あり]のときは座標値が空白であると以下のデータは無視されます。


(a)説明あり

(b)説明なし
図5-1-3 メッシュタブ

5.1.6 物性値・集中定数タブ

[物性値]で[物体形状]タブで使用する物性値を登録します。
左端をONにするとその行が入力可能になります。上から順に入力してください。
上から順に物性値番号=2,3,...になります。
物性値番号=0(真空)、物性値番号=1(PEC)は予め登録されているので入力する必要はありません。
[分散]がOFFのときは通常の媒質(非分散性媒質)を表し、 4個のデータに比誘電率ε'r、導電率σ[S/m]、 比透磁率μ'r、導磁率σm[1/Sm] を入力してください。
[分散]がONのときは誘電率の分散性媒質を表し、 4個のデータに ε, a[1/s], b[1/s], c[1/s] を入力してください。
[名前]はオプションであり、材質の説明に使用してください。計算には使用しません。
複素比誘電率と複素比透磁率は次式で計算されます。

(5-1-1)
(5-1-2)

[集中定数]で集中定数(RまたはCまたはL、単位はMKSA)を入力します。
左端をONにするとその行が入力可能になります。上から順に入力してください。


図5-1-4 物性値・集中定数タブ

5.1.7 物体形状タブ

[物体形状]タブでは物体の形状データを入力します。(図5-1-5)
左でデータを入力し、右の図でデータを確認してください。
右の図の扱い方は[ヘルプ]ボタンを参考にしてください。


図5-1-5 物体形状タブ

[ユニット番号]
左は形状単位(ユニット)ごとにページが変わる方式になっています。
現在のユニット番号が左上に表示され、これが編集の対象になります。

ユニット番号を変更する方法は以下の通りです。

ユニットの編集には以下のボタンを使用します。

[物性値]
[物性値]を選択してください。 [物性値]のリストは[物性値]タブで入力されたものです。

[形状]
[形状]を選択してください。[向き]が必要になるものもあります。 6個または8個の座標値を入力してください。
形状の種類については図5-1-6を参考にしてください。
[名前]は計算には使用しませんがデータの管理に使用してください。

(重要)
複数のユニットが重複したときはユニット番号が大きい方の物性値が優先されます。
従って、例えば厚さのない完全導体の後に誘電体を重ねて入力すると完全導体がなくなり、 計算結果が大きく変わります。このようなケースでは先に誘電体を入力してください。





図5-1-6 形状種類と入力座標

5.1.8 波源・観測点タブ

波源として[給電点]または[平面波入射]を選択してください。
[観測点]に観測点を入力してください。観測点は主に伝送線路のSパラメーターの計算に使用します。
左端をONにするとその行が入力可能になります。上から順に入力してください。


図5-1-7 波源・観測点タブ

5.1.9 計算

[全般]タブから[波源・観測点]タブまでのデータを入力した後、 [計算]ボタンをクリックすると計算が開始されます。 ウィンドウが開き、リスト5-1-1のように表示されます。 ここで入力データと計算結果を確認してください。
計算の途中に平均電界<E>と平均磁界<H>が表示されます。 両者が[収束条件]で指定した値以下になると計算が終了します。

リスト5-1-1 標準出力


<<< OpenFDTD (CPU+OpenMP) Ver.4.2.0 >>>	実行プログラムとそのバージョン
CPU, thread=8, process=1, vector=off	CPU/GPU、スレッド数、プロセス数、計算モード
Tue Jun 18 20:10:08 2024		開始日時
Title = dipole antenna			タイトル
Source = feed				波源:給電点または平面波入射
Cells = 30 x 30 x 31 = 27900		セル数
No. of Materials   = 3			物性値の数(空気/PECを含む)
No. of Geometries  = 1			物体形状の数
No. of Feeds       = 1			給電点の数
No. of Points      = 0			観測点の数
No. of Freq.s (1)  = 11			第1周波数の数
No. of Freq.s (2)  = 1			第2周波数の数
CPU Memory size    = 3 [MB]		CPU使用メモリー
Output filesize    = 2 [MB]		出力ファイルサイズ
ABC = Mur-1st				吸収境界条件
Dt[sec] = 9.3089e-12, Tw[sec] = 5.0800e-10, Tw/Dt = 54.572	Δt[sec]、パルス幅[sec]、比
Iterations = 1000, Convergence = 1.000e-03	最大反復回数、収束判定条件
=== iteration start ===			反復計算開始
   step   <E>      <H>			タイムステップ、平均電界、平均磁界
      0 0.000000 0.000000
    100 4.957039 3.894715
    200 0.958861 0.874313
    300 0.188227 0.169974
    400 0.040359 0.034269
    500 0.006610 0.006112
    600 0.001507 0.001271
   --- converged ---			収束したことを表す
=== input impedance ===			入力インピーダンス/入力アドミッタンス/反射係数
feed #1 (Z0[ohm] = 50.00)		給電点の特性インピーダンス
  frequency[Hz] Rin[ohm]   Xin[ohm]    Gin[mS]    Bin[mS]    Ref[dB]       VSWR
  2.00000e+09     34.646   -104.563      2.855      8.618     -2.096      8.328
  2.10000e+09     40.377    -81.766      4.855      9.832     -3.407      5.164
  2.20000e+09     46.789    -60.063      8.072     10.361     -5.547      3.238
  2.30000e+09     53.946    -39.196     12.132      8.815     -9.005      2.099
  2.40000e+09     61.946    -19.080     14.744      4.541    -14.057      1.494
  2.50000e+09     70.949      0.435     14.094     -0.086    -15.227      1.419
  2.60000e+09     81.178     19.248     11.663     -2.765    -11.170      1.764
  2.70000e+09     92.714     37.261      9.286     -3.732     -8.307      2.248
  2.80000e+09    105.606     54.159      7.497     -3.845     -6.537      2.782
  2.90000e+09    119.554     69.875      6.235     -3.644     -5.391      3.325
  3.00000e+09    134.375     84.357      5.338     -3.351     -4.606      3.860
=== output files ===
ofd.log, ofd.out			出力されたファイル名
=== cpu time [sec] ===			以下計算時間の内訳
  part-1 :       0.002			前処理
  part-2 :       0.051			FDTD法の反復計算部分
  part-3 :       0.034			DFT
  part-4 :       0.007			後処理
  --------------------
  total  :       0.109			合計計算時間
=== normal end ===			計算が正常終了したことを表す
Tue Jun 18 20:10:08 2024		終了日時

5.1.10 ポスト処理制御タブ

[ポスト処理制御(1)][ポスト処理制御(2]タブではポスト処理の各項目とそのパラメーターを入力します。


図5-1-8 ポスト処理制御(1)タブ

[時間特性(2D)]
[収束状況]:収束状況を出力します。
[給電点波形・スペクトル]:給電点の時間波形とスペクトルを出力します。
[観測点波形・スペクトル]:観測点の時間波形とスペクトルを出力します。

[整合損を含む]
ONにしたとき遠方界の利得に給電点の整合損を含めます。 給電点を指定したとき意味があります。

[周波数特性(2D)]
[スミスチャート]~[結合度]:選択した項目の周波数特性を図形出力します。 [給電点・観測点周波数]を使用します。
[遠方界]:指定した方向の遠方界の周波数特性を図形出力します。 [遠方界・近傍界周波数]を使用します。
[自動スケール]をOFFにしたときは[最小],[最大],[分割数]を入力してください。
[周波数分割数]:横軸の分割数を指定することができます。

[遠方界面上(2D)]
遠方界の面上パターンを図形出力します。 複数設定することができます。上から順に左端をONにすると入力可能になります。 [面の向き]:

[角度分割数]:360度を分割する数値を入力してください。
[角度]:[φ一定面]と[θ一定面]のときは角度[度]を入力してください。 それぞれ一定のφとθです。
[円プロット]、[XYプロット]:出力図の形式を選択してください。
[θ/φ成分]、[主軸/副軸]、[左右円偏波]:出力する成分を選択してください。(複数選択可)
[スケール]:単位とスケールを設定してください。
[最大値で正規化]:最大値で正規化するときONにしてください。

[遠方界全方向(3D)]
遠方界の全方向パターンを図形出力します。
[角度分割数]:θ方向(0-180度)とφ方向(0-360度)の分割数を入力してください。
[成分]:出力する成分を選択してください。(複数選択可)
[スケール]:単位とスケールを設定してください。
[物体表示]:図形表示される物体形状の相対的な大きさを指定してください。


図5-1-9 ポスト処理制御(2)タブ

[近傍界線上(2D)]
近傍界の線上分布図を出力します。 複数設定することができます。上から順に左端をONにすると入力可能になります。
[成分]:電界、磁界から選択してください。
[線の向き]:X方向/Y方向/Z方向から選択してください。線分の範囲は計算領域の端から端までです。
[線の位置]:[線の向き]がX/Y/ZのときそれぞれYZ/ZX/XY座標を入力してください。
[スケール]:単位とスケールを設定してください。
[入射波を除く]:ONのとき散乱電磁界を図形出力します。平面波入射のとき有効です。

[近傍界面上(2D+3D)]
近傍界の面上分布図を出力します。 複数設定することができます。上から順に左端をONにすると入力可能になります。
[成分]:電界、磁界から選択してください。
[面の向き]:X面/Y面/Z面から選択してください。面の範囲は計算領域の端から端までです。
[面の位置]:一定のX座標/Y座標/Z座標を入力してください。
[2D/3D]:2D/3Dの図形出力を選択してください。
[動画2D],[フレーム数]:動画を有効にしてフレーム数を指定します。
[スケール]:単位とスケールを設定してください。
[描画方法]:等高線図の描画方法を選択してください。
[物体を描く]:ONにすると物体形状が重ね書きされます。
[入射波を除く]:ONのとき散乱電磁界を図形出力します。平面波入射のとき有効です。
[一部拡大]:面の一部を拡大するにはONにしてその範囲を指定してください。

5.1.11 計算設定メニュー

[ツール]>[計算設定]メニューをクリックすると図5-1-10の計算設定ウィンドウが開きます。
詳しくは[ヘルプ]を参考にしてください。
設定を初期化するには[初期化]をクリックしてください。


図5-1-10 計算設定ウィンドウ

[CPU/GPU]
計算するハードウェアを[CPU]/[GPU]から選択してください。

[CPU]
[スレッド数]を設定してください。物理コア数から論理コア数の間の数を推奨します。

[GPU]
GPUの実行にはNVIDIAのグラフィックスボードとディスプレイドライバが必要です。
[unified memory]は通常OFF、[デバイス番号]は通常0としてください。

[MPI]
CPUで複数台で計算するときと、GPUで複数のグラフィックスボードで計算するときは、 [MPI]をONにして[ノード番号]、[ホスト名]、[プロセス数]を適当に設定してください。 詳しくは[MPIの使用方法]を参考にしてください。

●CPUの標準的な設定
1台のコンピュータの1個のCPUで計算するときは、 [CPU]をONにして[スレッド数]に物理コア数から論理コア数の間の値を代入してください。 [MPI]はOFFにしてください。

●1個のグラフィックスボードの標準的な設定
1台のコンピュータの1個のグラフィックスボードで計算するときは、 [GPU]をONにして[unified memory]をOFFにし[デバイス番号]を0にしてください。 [MPI]はOFFにしてください。

●複数個のグラフィックスボードの標準的な設定
1台のコンピュータの複数個のグラフィックスボードで計算するときは、 [GPU]をONにして[unified memory]をOFFにし[デバイス番号]を0にしてください。 [MPI]をONにしてノード1の[ホスト名]を"localhost"のまま[プロセス数]にグラフィックスボードの個数を代入してください。 2以降のノードはOFFにしてください。

5.1.12 オプションメニュー

[ツール]>[オプション]メニューをクリックすると図5-1-11のオプションウィンドウが開きます。
使い方については[ヘルプ]を参考にしてください。
設定を初期化するには[初期化]をクリックしてください。


図5-1-11 オプションウィンドウ

5.1.13 数値出力メニュー

[数値出力]メニューをクリックすると、 それぞれの数値出力ファイルを読み込んでテキストエディタが開きます。
ファイルの内容は5.3を参考にしてください。