fortran FFT
FDTD法を用いた計算の中で遠方界を計算するのにフーリエ変換が必要になり以下のプログラムを作ったのですがコンパイルの際に以下のエラーが出てしまいます。文字の定義もいろいろと変えてやってはいるのですが、なかなかうまくいきません。どなたかわかる方がいらっしゃったら教えて下さい。よろしくお願いします。
plane_yz = dy*dz
fac_yz = plane_yz/(4.0d0*pi*c*dt)
ie = nx-6
i = ie+1
do j = 5, ny-5
do k = 5, nz-5
x = (i-0.5d0-ic)*dx
y = (j-jc)*dy
z = (k-kc)*dz
eys = 0.5d0*(ey(i,j,k)+ey(i,j,k+1))
ezs = 0.5d0*(ez(i,j,k)+ez(i,j+1,k))
hys = 0.25d0*(hy(i,j,k)+hy(i,j+1,k)+hy(i-1,j,k)+hy(i-1,j+1,k))
hzs = 0.25d0*(hz(i,j,k)+hz(i,j,k+1)+hz(i-1,j,k)+hz(i-1,j,k+1))
do l = 1, nang
time_e = time-dt
time_h = time-dt/2.0d0
timesh = -(dirs(l,1)*x+dirs(l,2)*y+dirs(l,3)*z)/c+rf/c
tc_e = time_e+timesh
tc_h = time_h+timesh
m_e = int(tc_e/dt+0.5d0)
m_h = int(tc_h/dt+0.5d0)
a_e = (0.5d0+tc_e/dt-m_e)*fac
b_e = (0.5d0-tc_e/dt+m_e)*fac
ab_e = a_e-b_e
a_h = (0.5d0+tc_h/dt-m_h)*fac
b_h = (0.5d0-tc_h/dt+m_h)*fac
ab_h = a_h-b_h
wy(l,m_h-1) = wy(l,m_h-1)-hzs*b_h
wz(l,m_h-1) = wz(l,m_h-1)+hys*b_h
uy(l,m_e-1) = uy(l,m_e-1)+ezs*b_e
uz(l,m_e-1) = uz(l,m_e-1)-eys*b_e
wy(l,m_h) = wy(l,m_h)-hzs*ab_h
wz(l,m_h) = wz(l,m_h)+hys*ab_h
uy(l,m_e) = uy(l,m_e)+ezs*ab_e
uz(l,m_e) = uz(l,m_e)-eys*ab_e
wy(l,m_h+1) = wy(l,m_h+1)+hzs*a_h
wz(l,m_h+1) = wz(l,m_h+1)-hys*a_h
uy(l,m_e+1) = uy(l,m_e+1)-ezs*a_e
uz(l,m_e+1) = uz(l,m_e+1)+eys*a_e
enddo
enddo
enddo
コンパイル後timesh = -(dirs(l,1)*x+dirs(l,2)*y+dirs(l,3)*z)/c+rf/c
1
Error: Unexpected array reference at (1)
In file far_field.f90:48
wy(l,m_h-1) = wy(l,m_h-1)-hzs*b_h
1
Error: Unexpected array reference at (1)
In file far_field.f90:49
wz(l,m_h-1) = wz(l,m_h-1)+hys*b_h
1
Error: Unexpected array reference at (1)
In file far_field.f90:50
uy(l,m_e-1) = uy(l,m_e-1)+ezs*b_e
1
Error: Unexpected array reference at (1)
In file far_field.f90:51
と続きます。
お礼
ありがとうございます。 すごく難しく考えていました。