Repository navigation
Expand file tree
/
Copy pathmemo
More file actions
118 lines (94 loc) · 4.55 KB
/
Copy pathmemo
File metadata and controls
118 lines (94 loc) · 4.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
OpenFDTD
https://ss023804.stars.ne.jp/OpenFDTD/index.html
株式会社 EEM により開発&メンテナンスされていたオープンソースの FDTD シミュレーションソフト。
Wikipedia:FDTD法 は主にマクスウェル方程式を数値的に解いて電磁波のシミュレーションを行う際に使われる数値計算手法の一種。
株式会社 EEM は2022年9月30日に解散したため、現在は大賀さんが個人的に (?) メンテナンスを続けてらっしゃるようです。
5.5.2 LinuxまたはWSL2環境
LinuxまたはWSL2環境では、GCC, MPI(OpenMPIなど), CUDA のインストールが必要です。
コマンドラインでOpenFDTDフォルダに移動した後、 以下のコマンドを実行してください。
$ cd sol
$ mv Makefile_gcc Makefile
$ make clean
$ make CPU版計算プログラム(ofd)が作成されます
$ cd ../post
$ mv Makefile_gcc Makefile
$ make clean
$ make ポスト処理プログラム(ofd_post)が作成されます
$ cd ../mpi
$ mv Makefile_mpicc Makefile
$ make clean
$ make MPI対応CPU版計算プログラム(ofd_mpi)が作成されます
$ cd ../cuda
$ mv Makefile_linux Makefile
$ make clean
$ make GPU版計算プログラム(ofd_cuda)が作成されます
$ cd ../cuda_mpi
$ mv Makefile_linux Makefile
$ make clean
$ make MPI対応GPU版計算プログラム(ofd_cuda_mpi)が作成されます
$ cd ..
================
OpenFDTDの使用法
================
● OpenFDTD
OpenFDTDはFDTD法 (Finite Difference Time Domain method) を用いた汎用的な電磁界
シミュレーターです。電磁界の広い用途の解析に使用することができます。
● オープンソース
OpenFDTDはオープンソースのフリーソフトです。自由に使用、改変、再配布することが
できます。ただし、ソフトウェアの内容については保証しません。
● 動作環境
動作環境はWindowsまたはLinuxです。 Windows環境向けに簡易GUIと実行プログラムが付
属しています。
● インストール
ファイル OpenFDTD.zip を展開し、フォルダ OpenFDTD を適当な場所(例えばドキュメ
ントの下)にコピーしてください。
● Windows環境での注意
(1) OpenFDTDを起動するにはエクスプローラーで OpenFDTD.exe をダブルクリックして
ください。
(2) 最初にエクスプローラーですべてのexe,dllファイルに対して下記の操作を行ってく
ださい。
・右クリック→[プロパティ]→[全般]タブ→[セキュリティ]→[許可する]をON
これを行わないと "この操作はユーザーによって取り消されました。" というメッセー
ジが出て実行できません。自己責任で行ってください。
(3) GPU版プログラムを実行するにはNVIDIAのグラフィックスボードとディスプレイドラ
イバーが必要です。
● 計算手法
FDTD法は電磁界の基礎方程式であるMaxwell方程式を時間領域の差分法により数値計算
する方法です。電磁界の時間変化を反復計算し、得られた時間波形をフーリエ変換する
ことにより周波数特性が得られます。
● アンインストール
OpenFDTDをアンインストールするには、ダウンロードしたファイルOpenFDTD.zipとそれ
を展開したフォルダOpenFDTDを削除してください。
● ウェブサイト
https://ss023804.stars.ne.jp/OpenFDTD/
////////////////////////////////////////////////
setup sample ID
main setup setupID
setupID.c
68 #define IEX(i,j,k) iEx[NA(i,j,k)]
69 #define IEY(i,j,k) iEy[NA(i,j,k)]
70 #define IEZ(i,j,k) iEz[NA(i,j,k)]
71 #define IHX(i,j,k) iHx[NA(i,j,k)]
72 #define IHY(i,j,k) iHy[NA(i,j,k)]
73 #define IHZ(i,j,k) iHz[NA(i,j,k)]
デバッグ中に save breakpoints my_bp.gdb で保存。
次回、 gdb -x my_bp.gdb ./app で再開
(cuda-gdb) save breakpoints bp.txt
cuda-gdb -x bp.txt --args ./ofd_cuda cube.ofd
or
(cuda-gdb) source bp.txt
input_data.c (input2.c)
setup_cells() Nx,Ny,Nz,グリッド数
setup_node() Xn,Yn,Zn Nx+1,Ny+1,Nz+1の1次元配列.メッシュの最小値,最大値,等間隔でメッシュの数分割り当てる.
setup_center() Xc,Yc,Zc. Xn,Yn,Znのグリットの中心値
for (int i = 0; i < Nx; i++) {
Xc[i] = (Xn[i] + Xn[i + 1]) / 2;
}
for (int j = 0; j < Ny; j++) {
Yc[j] = (Yn[j] + Yn[j + 1]) / 2;
}
for (int k = 0; k < Nz; k++) {
Zc[k] = (Zn[k] + Zn[k + 1]) / 2;
}
nxr,xr,dxr nxr=1 xr[0]=-0.15 xr[1]=0.15 dxr[0]=30
input_data.c:141