mur boundary condition
时间:03-27
整理:3721RD
点击:
Hi everyone,
I am currently struggling with my thesis project which has to do with 3D FDTD code on open geometries.
As it implied I need some ABCs to simulate free space and the standard solution for FDTD is the 2nd Order Mur Absorbing Boundary Conditions.
However even after reading Tavlove's Book on FDTD (including the chapter about ABCs) I am still at a loss as to how to use them.
To be more specific I have programmed my FDTD code without ABCs and it works like a charm. However the moment I try to enforce boundary conditions everything goes awry.
Does anyone has any experience with such codes so he can help me or guide me to some helpful (and preferrably understandable) Mur codes?
There are points in the Mur formulas where I ahve not grapsed the idea. E.g. how are we supposed to program the 3 time steps required and where do we put the Mur code in the standard FDTD formulae?
If some can help please either reply here or contact via email at somada141@yahoo.gr
Any help would be appreciated,
Adam
PS Here is the pure FDTD part of my code (Python) :
I need to enfore ABCs on the H field.
I am currently struggling with my thesis project which has to do with 3D FDTD code on open geometries.
As it implied I need some ABCs to simulate free space and the standard solution for FDTD is the 2nd Order Mur Absorbing Boundary Conditions.
However even after reading Tavlove's Book on FDTD (including the chapter about ABCs) I am still at a loss as to how to use them.
To be more specific I have programmed my FDTD code without ABCs and it works like a charm. However the moment I try to enforce boundary conditions everything goes awry.
Does anyone has any experience with such codes so he can help me or guide me to some helpful (and preferrably understandable) Mur codes?
There are points in the Mur formulas where I ahve not grapsed the idea. E.g. how are we supposed to program the 3 time steps required and where do we put the Mur code in the standard FDTD formulae?
If some can help please either reply here or contact via email at somada141@yahoo.gr
Any help would be appreciated,
Adam
PS Here is the pure FDTD part of my code (Python) :
Code:
#Hx for i in xrange(1,Hx.shape[0]-1): for j in xrange(1,Hx.shape[1]-1): for k in xrange(1,Hx.shape[2]-1): Hx[i,j,k]=Da*Hx[i,j,k]+Db*(Ey[i,j,k]-Ey[i,j,k-1]-Ez[i,j,k]+Ez[i,j-1,k]) #Hy for j in xrange(1,Hy.shape[1]-1): for i in xrange(1,Hy.shape[0]-1): for k in xrange(1,Hy.shape[2]-1): Hy[i,j,k]=Da*Hy[i,j,k]+Db*(Ez[i,j,k]-Ez[i-1,j,k]-Ex[i,j,k]+Ex[i,j,k-1]) #Hz for k in xrange(1,Hz.shape[2]-1): for i in xrange(1,Hz.shape[0]-1): for j in xrange(1,Hz.shape[1]-1): Hz[i,j,k]=Da*Hz[i,j,k]+Db*(Ex[i,j,k]-Ex[i,j-1,k]-Ey[i,j,k]+Ey[i-1,j,k]) #Ex for i in xrange(Ex.shape[0]): for j in xrange(Ex.shape[1]): for k in xrange(Ex.shape[2]): ii=i-1 if (ii==-1): ii=0 Ex[i,j,k]=Ca[ii,j,k]*Ex[i,j,k]+Cb[ii,j,k]*(Hz[i,j+1,k]-Hz[i,j,k]-Hy[i,j,k+1]+Hy[i,j,k]) #Ey for i in xrange(Ey.shape[0]): for j in xrange(Ey.shape[1]): for k in xrange(Ey.shape[2]): jj=j-1 if (jj==-1): jj=0 Ey[i,j,k]=Ca[i,jj,k]*Ey[i,j,k]+Cb[i,jj,k]*(Hx[i,j,k+1]-Hx[i,j,k]-Hz[i+1,j,k]+Hz[i,j,k]) #Ez for i in xrange(Ez.shape[0]): for j in xrange(Ez.shape[1]): for k in xrange(Ez.shape[2]): kk=k-1 if (kk==-1): kk=0 Ez[i,j,k]=Ca[i,j,kk]*Ez[i,j,k]+Cb[i,j,kk]*(Hy[i+1,j,k]-Hy[i,j,k]-Hx[i,j+1,k]+Hx[i,j,k])
hi
you should only programm ABC equations. but now all researchers uses PML.
snd me un email i you like discussing these point
I agree. The PML is now the standard, but Mur can still outperform in some cases. You will not have a problem finding example code with PML boundary conditions.
-Tip