微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > 电磁仿真讨论 > mur boundary condition

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) :

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])
I need to enfore ABCs on the H field.

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top