FDTD3D_PML程序问题求助: 本帖最后由 warcraft 于 2011-8-11 21:28 编辑
小弟初学FDTD,编写了一个Berenger PML吸收边界的FDTD三维程序,但是出现了错误(好像发散了)。附上程序,请版主cem-uestc和论坛里的各位高手都指点一下啊,谢谢了!
建议楼主这样测试一下:首先,测试自己的FDTD程序是否正确,此处,边界条件可选择mur吸收边界条件,测试FDTD程序没问题,加上PML代码,然后再做测试,PML与FDTD的数据交换很容易出错,建议楼主认真查看一下数据交换是否正确!
具体那一块出了问题,再在此讨论!
本帖最后由 warcraft 于 2011-8-26 23:32 编辑
非常感谢版主的帮助。我再仔细检查下。
warcraft 发表于 2011-8-26 23:31
非常感谢版主的帮助。我再仔细检查下。
不客气,如有问题欢迎在此讨论!
呵呵,原来电场迭代方程里的加减号都弄错了,还有定义参数的#define 后面是表达式的话要加括号。
本帖最后由 warcraft 于 2011-9-4 14:22 编辑
上面是运行得到的结果,好像吸收效果并不怎么好啊,请各位高手指导下是怎么回事呢?
你的三维PML边界条件是六个面都用的还是?
本帖最后由 warcraft 于 2011-9-5 10:58 编辑
六个面都用了,看起来好像四个角吸收尤其不好。出现这种情况是什么原因呢?
这里是那个运行用到的程序:
哪位大哥能帮忙看下么?
warcraft 发表于 2011-9-25 12:13
哪位大哥能帮忙看下么?
这几天比较忙,忙完这几天,我抽时间帮你看看!
好的,非常感谢版主的热心帮助!
最好不用#define的宏定义,还是用const来定义
也就是说这种定义方式导致了程序运行结果出现了问题?
warcraft 发表于 2011-9-30 21:44
也就是说这种定义方式导致了程序运行结果出现了问题?
FDTD 3D PML层的问题解决没
还没有啊,把定义方式改了之后还是一样的。
warcraft 发表于 2011-10-28 08:40
还没有啊,把定义方式改了之后还是一样的。
那我帮你看看程序吧,最近实验室太忙了,说给你看看的,一直都没能帮你看。我最近抽空帮你看看!
一种简化的PML边界,四个角点未做处理,但是应该对远场结果影响不大。