ここでは解析領域内の電磁界を近傍界と呼びます。
近傍界は2.8で述べたように時間領域の電磁界を指定した周波数でタイムステップごとにFourier変換して求めます。
リスト3-5-1が近傍界を計算する関数です。周波数に関するループになります。
1 /*
2 dftNear3d.c
3
4 DFT of near field
5 */
6
7 #include "ofd.h"
8
9 void dftNear3d(int itime)
10 {
11 for (int ifreq = 0; ifreq < NFreq2; ifreq++) {
12 int id = (itime * NFreq2) + ifreq;
13
14 float ef_r = cEdft[id].r;
15 float ef_i = cEdft[id].i;
16
17 // Ex
18 for (int i = iMin; i < iMax; i++) {
19 for (int j = jMin; j <= jMax; j++) {
20 int64_t m = NA(i, j, kMin);
21 int64_t n = (ifreq * NN) + m;
22 float *e = &Ex[m];
23 float *e_r = &Ex_r[n];
24 float *e_i = &Ex_i[n];
25 for (int k = kMin; k <= kMax; k++) {
26 *e_r += (*e) * ef_r;
27 *e_i += (*e) * ef_i;
28 e++;
29 e_r++;
30 e_i++;
31 }
32 }
33 }
(他の成分は省略)
128 }
129 }