ファイル(dlant.zip) をダウンロードして、
適当なフォルダに展開してください。ファイル構成は以下の通りです。
図5-1にシステム構成図を示します。
モーメント法計算、深層学習、図形出力の3つから成ります。
ファイルMain.cを編集して計算条件を設定してください。
最初の行が"Iobs=1"のときは遠方界、"Iobs=2"のときは近傍界が計算されます。
リスト5-1 モーメント法プログラムのデータ入力(Main.cの一部)
// 計算パラメーター
const int Iobs = 1; // 放射界の種類(1=遠方界,2=近傍界)
const int Ndata = 1000; // データ数
const int Rect[] = {1, 20, 4}; // 長方形パラメーター(最小数,最大数,単位長さ)
const int Ny = 20; // Y方向セル数
const int Nz = 20; // Z方向セル数
const double Dy = 0.01; // Y方向長さ
const double Dz = 0.01; // Z方向長さ
const double Rad = 0.002; // 導線半径
const double Freq = 3e9; // 周波数
const int Ncr = 3; // 電流成分数(1/2/3, 通常3)
// 遠方界パラメーター(Iobs = 1)
const int Nff[] = {40, 40}; // φ/θ分割数
const double Lff[] = {180, 180}; // φ/θ範囲
const int Kff = 4; // 成分数(2/4, 通常4)
// 近傍界パラメーター(Iobs = 2)
const int Nnf[] = {40, 40}; // Y/Z分割数
const double Lnf[] = {1.2, 1.2, 0.3}; // Y/Z範囲,X座標
const int Knf = 4; // 成分数(2/3/4/6/12, 成分は要編集)
モーメント法プログラムをビルドするには、
ターミナル(コマンドプロンプト)で以下のコマンドを実行してください。
| ビルドコマンド | OS | コンパイラー | 実行プログラム |
|---|---|---|---|
| $ nmake.exe -f Makefile_cl | Windows | cl.exe | mom.exe |
| $ make -f Makefile_gcc | LinuxまたはWSL2 | gcc | mom |
モーメント法プログラムはデータに関して独立した計算なので、
OpenMP(共有メモリー環境、スレッド並列)を用いて並列計算することができます。
計算時間はスレッド数分の1になります。
それぞれの環境で以下のコマンドのいずれかを実行してください。
Windows
$ mom.exe 1スレッド, mom.bin出力 $ mom.exe 8 8スレッド, mom.bin出力 $ mom.exe 8 foo.bin 8スレッド, foo.bin出力
LinuxまたはWSL2
$ ./mom 1スレッド, mom.bin出力 $ ./mom 8 8スレッド, mom.bin出力 $ ./mom 8 foo.bin 8スレッド, foo.bin出力
(注1)
デバッグを行って図形出力するときは、
OpenMOM等に付属している2次元図形表示プログラムev2d.exeを用いて以下のコマンドを実行してください。
$ ev2d.exe fig1.ev2 $ ev2d.exe fig2.ev2 $ ev2d.exe fig3.ev2
ファイルdlant.pyを編集して計算条件を設定してください。
リスト5-3 深層学習プログラムのデータ入力(dlant.pyの一部)
# 計算パラメーター
load_model = 0 # 通常0, 前回保存したmodelfileからrestartするとき1
save_model = 1 # 通常1, 計算終了時にmodelfileを保存しないとき0
ndata = -1 # データ数, -1のときはすべてのデータ
batch_size = 60 # バッチサイズ(通常50-100程度)
num_epochs = 30 # エポック数
train_ratio = 0.8 # 訓練データの割合(通常0.8程度)
深層学習プログラムはPythonで記述されているのでビルド作業は不要です。
実行する前に、python, pip, numpy, matplotlib, torch, torchvision をインストールしてください。
深層学習を行うには下記のコマンドのいずれかを実行してください。
$ python dlant.py (ソースコード内でImode=1とし、datafileとmodelfileを指定する) $ python dlant.py 1 datafile(ソースコード内でmodelfileを指定する) $ python dlant.py 1 datafile modelfile
計算結果を図形出力するには下記のコマンドのいずれかを実行してください。
電流の図形出力方法と学習結果の出力ファイルをソースコード内で指定するか引数で指定します。
$ python post.py (ソースコード内で電流とファイル名を指定する) $ python post.py 1 (電流=線分電流, ファイル名=dlant.npz) $ python post.py 2 (電流=セル電流, ファイル名=dlant.npz) $ python post.py 1 foo.npz(電流=線分電流, ファイル名=foo.npz) $ python post.py 2 foo.npz(電流=セル電流, ファイル名=foo.npz)
(注2)
コマンドpythonは環境によってはpython.exeまたはpython3となります。