搜索
开启左侧

波导特征模式TM的计算代码(Matlab)(即Helmholtz方程的频域有限差分求解法)

[复制链接]
3867 35

马上注册,结交更多好友,享用更多功能,让你轻松玩转微网社区

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
先给一个标准波导特征模式计算的代码,前一段时间网友有需求,主要是王老师的课程设计内容,若没有解决的网友,可以参考下面代码
有回复、讨论,再共享后半部分的代码
游客,如果您要查看本帖隐藏内容请回复


[ 本帖最后由 cem-uestc 于 2008-5-7 09:36 AM 编辑 ]
已有1人评分威望 理由
彬彬 + 1 原创内容

查看全部评分 总评分:威望 +1 

以己之微·网博天下:博览微网之术·创造成功之路!

举报 使用道具

回复

35 个评论

350244023  上等兵  发表于 2017-4-22 20:31:02  | 显示全部楼层
参见大神,正为MATLAB的helmholtz方程而烦恼中
以己之微·网博天下:博览微网之术·创造成功之路!

举报 使用道具

回复 支持 反对
mudandjl  士官③  发表于 2013-10-7 22:20:57  | 显示全部楼层
圆波导的应该是一样的吧
以己之微·网博天下:博览微网之术·创造成功之路!

举报 使用道具

回复 支持 反对
通行天下  士官①  发表于 2017-5-21 13:34:31  | 显示全部楼层
看看什么好的代码
以己之微·网博天下:博览微网之术·创造成功之路!

举报 使用道具

回复 支持 反对
greg  大将  发表于 2008-5-7 09:53:29  | 显示全部楼层
【发帖际遇】: greg在皇后街摔了一跤, 身上不见了金币6元.


dsize=0.05;%square grid
%是不是用分辨率注释比较好?
nx=round(a/dsize);
ny=round(b/dsize);
nx=nx+1;
ny=ny+1;
%round函数是不是可以用ceil函数替代?

:15bb 最喜欢看人家编程,虽然我啥都不会:15bb 源以及边界处理特别有意思
以己之微·网博天下:博览微网之术·创造成功之路!
cem-uestc  版主  发表于 2008-5-7 12:19:37  | 显示全部楼层

回复 沙发 的帖子

【发帖际遇】: cem-uestc请朋友们喝酒, 用了金币7元.


Round函数是四舍五入,误差只有0.5,而Ceil的误差有1

^_^,特征值计算没有源哦
以己之微·网博天下:博览微网之术·创造成功之路!
greg  大将  发表于 2008-5-7 12:42:10  | 显示全部楼层
nx=nx+1;
ny=ny+1;
这两行应该是用来处理边角的
假设是17.7,通过round得到18,多加个1增加分辨率?

是我就直接用ceil,省略掉这两行。不过你那程序没完,不知道后面是不是有其他的处理还是?等你放完程序我再试试。

ps:我以为会算个电磁波在波导传播那:15bb
已有1人评分微元 理由
cem-uestc + 50 谢谢回复 你没钱了,送给你50¥

查看全部评分 总评分:微元 +50 

以己之微·网博天下:博览微网之术·创造成功之路!
cem-uestc  版主  发表于 2008-5-7 14:29:24  | 显示全部楼层

回复 地板 的帖子

nx=nx+1;ny=ny+1
nx是网格的数目,场分布在结点上,这样场点数目比网格数多1。
以己之微·网博天下:博览微网之术·创造成功之路!
cem-uestc  版主  发表于 2008-5-7 14:34:19  | 显示全部楼层
把后半部分贴上来,主要求解特征值及特征向量,看看各模式场的分布

  1. % developed by cem@uestc.edu.cn, please do not delete this line information
  2. %solution
  3. k=6;
  4. [V,D]=EIGS(A,k,'SM');
  5. for i=1:k
  6.     cmpk2(i)=sqrt(-(D(i,i))/dsize^2);
  7. end
  8. freq=cmpk2*3e8/(2*pi)
  9. for ig=1:k
  10.      figure(ig);
  11.      n=1;
  12.      for i=1:nx
  13.          for j=1:ny
  14.              Ez(i,j)=V(n,ig);
  15.              n=n+1;
  16.          end
  17.      end
  18.      contour(Ez,20);
  19. end
  20. cmpk2
  21. for m=1:8
  22.     for n=1:4
  23.         relfreq(m,n)=sqrt((m*pi/a)^2+(n*pi/b)^2);
  24.     end
  25. end
  26. relfreq
复制代码

以己之微·网博天下:博览微网之术·创造成功之路!
greg  大将  发表于 2008-5-7 15:38:35  | 显示全部楼层


看了你后面的程序,nx,ny仅仅是分割点数,nod

不过TE40和TM40有点怪异,不是对称的

还有,cmpk2(i)=sqrt(-(D(i,i))/dsize^2);这个算波数的为什么要除以dsize^2那?

矩阵特征值求解都忘光光做啥的啦:4de 做的事情离学校学的东西越来越远
以己之微·网博天下:博览微网之术·创造成功之路!
cem-uestc  版主  发表于 2008-5-7 18:13:57  | 显示全部楼层

回复 7楼 的帖子

dsize是差分的网格步长,是Laplace算子五点差分后除以步长的平方。
以己之微·网博天下:博览微网之术·创造成功之路!
cem-uestc  版主  发表于 2008-5-7 18:27:54  | 显示全部楼层

回复 7楼 的帖子

【发帖际遇】: cem-uestc英雄救美, 获得金币20元.


关于TM40,应该TM22。主要原因是网格步长大造成的,把网格步长减小一半,就好看了
以己之微·网博天下:博览微网之术·创造成功之路!
greg  大将  发表于 2008-5-7 21:56:28  | 显示全部楼层
:( 为什么步长过大会产生这个问题,不懂,按理说grid是线性的。难道是eigs求解出的根有精度问题?:(

应该是TM22,看到30就顺势打40啦:15bb
ps:看人家写的程序感觉真好,抽取人家的精华学人家的思路,嘿嘿
以己之微·网博天下:博览微网之术·创造成功之路!
*滑动验证:
您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

客服中心 搜索
关于我们
关于我们
广告服务
联系我们
旗下网站
微网社区
微网博客
微网人才
服务支持
今日头条
学术报告
活动会议
关注我们
新浪微博
官方空间
站长微信
快速回复 返回顶部 返回列表