!**************************************************************************** ! 吸収境界条件 !**************************************************************************** subroutine absorbing_boundary_condition use consts use fdtd implicit none integer :: i,j ! Mur の1次吸収境界条件 (p.65) do j=1,ny ! 左の壁 hz(1,j)=hzx1(2,j)+mur1_cx*(hz(2,j)-hzx1(1,j)) ! 右の壁 hz(nx,j)=hzx1(3,j)+mur1_cx*(hz(nx-1,j)-hzx1(4,j)) end do do i=1,nx ! 下の壁 hz(i,1)=hzy1(2,i)+mur1_cy*(hz(i,2)-hzy1(1,i)) ! 上の壁 hz(i,ny)=hzy1(3,i)+mur1_cy*(hz(i,ny-1)-hzy1(4,i)) end do ! 過去の値の更新 do j=1,ny hzx1(1,j)=hz(1,j) hzx1(2,j)=hz(2,j) hzx1(3,j)=hz(nx-1,j) hzx1(4,j)=hz(nx,j) end do do i=1,nx hzy1(1,i)=hz(i,1) hzy1(2,i)=hz(i,2) hzy1(3,i)=hz(i,ny-1) hzy1(4,i)=hz(i,ny) end do return end subroutine ! ! End of file !