三维PML程序分享:这是小弟花了一下午时间编的三维FDTD程序,边界采用PML,主要是模拟波在无限大自由空间的传播。
自认为在原理上没有错,而程序我也检查了很久。但是程序运行之后发现加激励的电场变得
很大,大家可以下载附件运行程序。
由于只涉及到空气,没有其他介质,所以程序比较简单,相信望同行们能很快发现问题。
期待你们的指点!
先下载下来,我分析一下。
找到错误了 ,是赋初值的时候出了点问天。谢谢上面的哥们了!
可见我的粗心了,问题又打成问天了
:call 还有一处赋值出错,介电常数
#define epsilon0 8.85418e-12
#define epsilon0 8.851e-12
数组分配和赋值最好定义一个函数搞定,如果单独一个一个写,很容易遗漏的
激励的波没有传播出去,就在激励点处有波。好像波就在激励处被吸收了。
你怎么看出激励的波没有传播出去?
你看程序是哪一部分出错呢
另外,我将程序用MATLAB编程了 ,运行后发现还是有问题
我发到你邮箱 ,麻烦再帮我看看
下载看看,学习一下,我的也有问题
可以观察波传播线上的时间历史场值,可以看出波没有传出去。
现在比较忙,我找点时间看看问题出现在什么地方。
代码问题有:
分配数组下标模糊。
计算PML磁系数有误,写成了电系数公式。
计算磁场应分开写。
问题已经解决。发给你邮箱。
我将在论坛上分析这个代码。
谢谢你提出的问题代码
:mercy
谢谢了,十分感谢你在百忙之中抽出时间来帮我修正程序中的错误!
能不能把新的该好的程序发以下呀,小弟借用一下:mercy :mercy
这个已经是改好的PML代码,是基于场分离形式的
好人做到底吧,楼住,能加你QQ吗?有什么问题可以问你呀,呵呵.
我柑橘好象加激励的时候不太对呀:nose :nose
我的QQ61827946
cem-uest前辈,谢谢指点迷津,以后还请多多指教。
在场域内加电流源和电压源都可以,直接加到场分量上
现在才发现还没有把修正后的代码共相出来
谢谢分享,学习中。。。。。。。。。。。。
不错啊
不知道有没有matlab版的
三维分裂场的PML很复杂,楼主虽然用了全局分裂,占用了比较多的内存,但代码质量还是很好的(版主修改后),收藏了,谢谢楼主和版主
[ 本帖最后由 rift 于 2008-12-4 11:17 编辑 ]
正在编写PML边界程序,参考一下
是激励是点源吧。没有加入平面波入射源?
look and study, thinks a lot:30bb
PML只在吸收边界内做分裂和在整个空间内做分裂有什么区别呢?我编程的时候只在吸收边界内做了分裂,不知道会不会影响波的传播?
:9de
感谢,spml 代码太长,建议用upml
原帖由 wbfighter 于 2009-1-28 18:15 发表
PML只在吸收边界内做分裂和在整个空间内做分裂有什么区别呢?我编程的时候只在吸收边界内做了分裂,不知道会不会影响波的传播?
:9de
节约内存资源
谢谢楼主了!
学习学习,正好想编一个PML的。