電界の球座標(Fortran)
FDTD法で求めたex(i,j,k), ey(i,j,k), ez(i,j,k) を使ってEr, Eθ,Eφを求めたいのですが、以下のプログラムではうまくいきません。式自体が間違っているのでしょうか?
詳しい方がいらっしゃったら教えて下さい。よろしくお願いします。
subroutine efield_spherical
use consts
use fdtd
implicit none
integer :: i, j, k, n, td
real(8) :: e_r, e_the, e_phi
real(8) :: r, theta, phi, s
real(8) :: sx, sy, sz
real(8) :: tx, ty, tz
real(8) :: rx, ry
open(10,file="e_r.dat")
open(20,file="e_the.dat")
open(30,file="e_phi.dat")
sx = sin(theta)*cos(phi)
sy = sin(theta)*sin(phi)
sz = cos(theta)
tx = cos(theta)*cos(phi)
ty = cos(theta)*sin(phi)
tz = sin(theta)
rx = sin(phi)
ry = cos(phi)
theta = 0.0d0
s = pi/180d0
do n = 0, 360
phi = s*n
! Er
e_r = ex(i,j,k)*sx+ey(i,j,k)*sy+ez(i,j,k)*sz
! E_theta
e_the = ex(i,j,k)*tx+ey(i,j,k)*ty-ez(i,j,k)*tz
! E_phi
e_phi = -ex(i,j,k)*rx+ey(i,j,k)*ry
write(10,*) e_r
write(20,*) e_the
write(30,*) e_phi
enddo
close(10)
close(20)
close(30)
return
end subroutine
お礼
そうですね。よくよく見返してみるとaでは異なった値になりますね。eに直して実行してみたら、ちゃんと実行結果が正しく表示されました。ご指摘ありがとうございました、