本コードは、媒質分布を直行座標系として定義された三次元配列spl[ix][iy][iz]から、Yee格子で定義した各電界、磁界の位置で再定義された1次元配列iEx[it],iEy[it],iEz[it],iHx[it],iHy[it],iHz[it]を求めるpythonコードである。各電界、磁界での媒質分布は1次元配列で表すが、その1次元配列のインデックスitはix,iy,izから求めるものであり実質3次元空間を表している。
シミュレーション空間内の媒質分布は、直行座標のグリッドにおける材質IDを、3次元配列に保存する。
-
材質管理配列:
spl[ix][iy][iz]-
格納データ: 伝搬材質の識別ID(
int型) -
インデックス範囲: (
int型)-
ix:$0 \le ix < Nx+1$ -
iy:$0 \le iy < Ny+1$ -
iz:$0 \le iz < Nz+1$
-
-
格納データ: 伝搬材質の識別ID(
-
原点:
$(Nx/2+1, Ny/2+1, Nz/2+1)$ を実座標$(0,0,0)$(原点)とする -
格子間実距離:
dx,dy,dz(float型)
Yee格子(Yee Lattice)上の電界(Ex, Ey, Ez)および磁界(Hx, Hy, Hz)の計算点における材質IDは、各成分専用の1次元配列に保存する。
-
各電磁界計算位置での材質ID保存配列:
iEx,iEy,iEz,iHx,iHy,iHz(int型) -
配列形式: 1次元配列
-
インデックス計算式: 3次元的な位置
$(ix, iy, iz)$ から1次元インデックスitへの変換は以下の通り定義される(int型):$$it = iz \cdot Nk + iy \cdot Nj + ix \cdot Ni + N0$$ -
実座標の定義:
計算点の物理的な実座標は、ノード座標およびセル中心座標を保持する配列によって参照される | 配列名 | 内容 | 役割 | | :--- | :--- | :--- | |Xn[ix],Yn[iy],Zn[iz]| ノードの座標値 | 格子点(ノード)の物理位置を保持 | |Xc[ix],Yc[iy],Zc[iz]| セル中心の座標値 | 隣り合うノード間の中間位置を保持 |磁界成分の実座標は、成分の性質(電界か磁界か)および方向に応じて、これらの配列を組み合わせて決定される
-
材質ID保存配列と実座標の関係
ID保存配列名 実座標配列名(x座標) 実座標配列名(y座標) 実座標配列名(z座標) iEx[it]Xc[ix]Yn[iy]Zn[iz]iEy[it]Xn[ix]Yc[iy]Zn[iz]iEz[it]Xn[ix]Yn[iy]Zc[iz]iHx[it]Xn[ix]Yc[iy]Zc[iz]iHy[it]Xc[ix]Yn[iy]Zc[iz]iHz[it]Xc[ix]Yc[iy]Zn[iz]
iEx,iEy,iEz,iHx,iHy,iHz以外の値はすべて既知とし、splからそれらを計算する。