Hi everyone,
I am currently working on a 3d FDTD code using UPML to truncate the physical domain. Nevertheless, when generating a plane wave (wave vector linear to z), it appears that the wavefront in the UPML becomes quickly angled, which results in large errors at late times. The algorithm I use for source generation is :
IF (Nt.LE.200) THEN DO J=1,Ny DO ii=1,Nx Ex(ii,J,Nz/2)=Ex(ii,J,Nz/2)+(kappax(ii)-I*sigmax(ii)*30./(2.*Pi))/(kappay(j)-I*sigmay(j)*30./(2.*Pi))*(dcos(2.*pi*Nt/30.)+I*dsin(2.*pi*Nt/30.))*dexp(dble(-(Nt-200.)*(Nt-200.)/4000.)) ENDDO ENDDO ELSE DO J=1,Ny DO II=1,Nx Ex(II,J,Nz/2)=Ex(II,J,Nz/2)+(kappax(ii)-I*sigmax(ii)*30./(2.*Pi))/(kappay(j)-I*sigmay(j)*30./(2.*Pi))*(dcos(2.*pi*Nt/30.)+I*dsin(2.*pi*Nt/30.)) ENDDO ENDDO ENDIF
You can notice that the electric field checks the conservation of the normal component of electric induction D at the interface with UPML. Nevertheless, this does not work well. Did someone experience similar problems with a FDTD code ? How did you solve them ? Thanks very much,
M. |