登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
平面波调试遇到入射波场分量引入的问题, ..
发帖
回复
1
2
3964
阅读
18
回复
[
求助
]
平面波调试遇到入射波场分量引入的问题,请教大家
离线
wq_463
UID :20925
注册:
2008-11-06
登录:
2021-04-22
发帖:
227
等级:
仿真三级
0楼
发表于: 2009-05-10 16:53:18
我是3D引入平面波,在引入平面波时,首先定义边界处引入入射波的分量(这个地方我简单举一个例子)
EUH9R8)
左侧边界引入入射波的电场分量前,首先我先定义Eincxd_Left(ie_jmin:ie_jmax-1,je_jmin,ke_jmin:ke_jmax)=0,0;这个定义存储空间,为了节省内存我改为
]rg-=Y k
Eincxd_Left(ie_jmin:ie_jmax-1,ke_jmin:ke_jmax)=0,0
pI>GusXg
其中ie_jmin,ie_jmax
EBQ_c@
je_jmin,je_jmax
{CVZ7tU7]
ke_jmin,ke_jmax
`Jj b4]
是连接边界的定义
Ag2Q!cq
X`eX+9
在后面计算的时候公式是这么写的
s+G(N$0U
%%%%连接边界处引入入射波电场分量%%%%%
8(S|=c R
%outside left face of region 1
r8czDc),b
hz(ie_jmin:ie_jmax-1,je_jmin-1,ke_jmin:ke_jmax)=hz(ie_jmin:ie_jmax-1,je_jmin-1,ke_jmin:ke_jmax)-db(1)*Eincxd_Left(ie_jmin:ie_jmax-1,ke_jmin:ke_jmax);
r(wtuD23q
J\'f5)k
这样就是一个三维的数组跟一个二维的数组相加,可是维数不对应啊,我倒是想了几个方法,但是计算量太大 ..
+#(GU9_i+M
?G]yU
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
vincentwl
UID :15476
注册:
2008-07-16
登录:
2015-06-24
发帖:
189
等级:
八级仿真大师
1楼
发表于: 2009-05-11 14:05:17
你可以先不用考虑节省内存的问题,先把程序调试通,再来优化代码,以避免不必要的错误。
共
1
条评分
gwzhao
rf币
+3
积极参与
2009-05-11
http://www.meta-materials.com/
离线
wq_463
UID :20925
注册:
2008-11-06
登录:
2021-04-22
发帖:
227
等级:
仿真三级
2楼
发表于: 2009-05-11 14:39:05
一开始确实是这么写的,不过运行后发现提示我~~out of memory
共
条评分
离线
gwzhao
方恨少
UID :17098
注册:
2008-08-24
登录:
2019-01-09
发帖:
1374
等级:
荣誉管理员
3楼
发表于: 2009-05-11 15:11:50
为什么要定义三维,二维的呢? 不是平面波吗? 比如是平面波向Z方向传播,那么在xy平面的值都是一样的,也就是说平面波的值也只与Z有关,一维的就足够了啊。
zU_dk'&,
Zx7aae_{
你看,二维FDTD加平面波的时候,先是用1D的模拟出平面波的传播,然后在连接边界的时候,考虑一下平面波传到这个点的值,然后进行处理一下。
@|e we.r
三维的也是一样的,比如先用1D模拟出数组E_plate_wave[],然后在连接边界hz(ie_jmin:ie_jmax-1,je_jmin-1,ke_jmin:ke_jmax),完全可以根据hz(i,j,k)从E_plate_wave[ ]里得到你需要的值。
共
2
条评分
cc81372365
rf币
+5
说出了重点!
2011-01-04
wq_463
rf币
+1
积极参与讨论+RF币 更详细点就加技术分 再接再厉
2009-05-12
逆流而上
离线
wq_463
UID :20925
注册:
2008-11-06
登录:
2021-04-22
发帖:
227
等级:
仿真三级
4楼
发表于: 2009-05-11 20:30:54
回 3楼(gwzhao) 的帖子
在二维的时候,我们在左侧边界引入入射波的电场分量,那么公式就是hy(ie_front,je_front:je_back) = hy(ie_front,je_front:je_back) - db(1)*Ezinc_Left(je_front:je_back),需要的电场分量就是在i=ie_front时j=je_front:je_back这些点上的Ezinc_left的值,其实这就是一个数组,不过当三维的时候,我们确定的入射波的电场分量是一个面的值,向我上面说的,是y固定时的一个xz面上的值啊,这个面是x和z来表示的一个二维数组啊,当然这个面上所有的电场值是相等的
.}:*tvot
d1'= \PYr
我现在也有点糊涂,请师兄指点
共
条评分
离线
strange007
UID :2803
注册:
2007-05-20
登录:
2025-03-08
发帖:
453
等级:
积极交流五级
5楼
发表于: 2009-05-11 20:42:13
wq463:
[x]~G
你这里如果是斜入射的平面波,那么可以采用下面几步——
rBy0hGx
1.用1D的数组模拟出平面波的传播,像gwzhao版主说的;
UBk:B
2.在连接边界box六面体的6个平面上,分别建立6个2D数组。这里面每个数组元素的值,根据边界单元到入射点(一般是total field某个角落点)距离L,从第一步1D的数组模拟出平面波里面确定取值;
AjoIL
3.在每次迭代开始,把6个2D数组的值加入到连接边界box对应的单元上面;
共
2
条评分
wq_463
rf币
+1
回贴应助的速度很快+技术分,再接再厉
2009-05-12
gwzhao
技术分
+1
积极参与讨论+技术分 论坛感谢您的参与
2009-05-11
离线
wq_463
UID :20925
注册:
2008-11-06
登录:
2021-04-22
发帖:
227
等级:
仿真三级
6楼
发表于: 2009-05-11 21:08:37
回 5楼(strange007) 的帖子
师兄说的对,6个2D数组的里面的每个元素值是不一样的,这个地方我一时疏忽了,他是投射到一维数组后,根据d来确定的,每个点的d不一样,当然数值也就不一样
共
条评分
离线
gwzhao
方恨少
UID :17098
注册:
2008-08-24
登录:
2019-01-09
发帖:
1374
等级:
荣誉管理员
7楼
发表于: 2009-05-11 22:42:06
回 6楼(wq_463) 的帖子
5楼正解,实现也不难的吧。其实不管是不是斜入射,编个子函数实现也很方便的。
x?0K'
这些都不会怎么影响速度的,特别是小程序而言。
共
条评分
逆流而上
离线
wq_463
UID :20925
注册:
2008-11-06
登录:
2021-04-22
发帖:
227
等级:
仿真三级
8楼
发表于: 2009-05-12 14:34:47
回 7楼(gwzhao) 的帖子
三维跟二维相加正在尝试,不过有问题,一般(x,y,z)中z是表示页数的,这个不好处理
JtxVF!v
师兄能否给点合理性的建议
共
条评分
离线
gwzhao
方恨少
UID :17098
注册:
2008-08-24
登录:
2019-01-09
发帖:
1374
等级:
荣誉管理员
9楼
发表于: 2009-05-12 20:59:14
回 8楼(wq_463) 的帖子
我不太懂啊,为什么说(x,y,z)中的z表示页数?不好处理?
共
条评分
逆流而上
发帖
回复