-
-
November 7, 2023 at 10:52 am
-
November 8, 2023 at 6:22 am
barry Qin
SubscriberA1:在光子晶体平板的仿真里,一般TE模是电场处于xy平面内,TM模是磁场处于xy平面内。但根据习惯不同,定义可能有区别,如果有具体的仿真目标和参考文献的话,一定要先查明文献的电磁场主分量方向,以此为准,不局限在TE和TM的名称上。相关解释可以参照这个帖子:Ansys Insight: 有关TE、TM偏振以及模式光源的问题
A2:关于这些ax,ay,az这些参数的解释,其实在这个分析组的setup script里就有注释,里边写到,ax、ay、az是“the lattice period in each direction for rectangular or cubic lattices”也就是每个方向的晶格周期。
-
November 13, 2023 at 7:54 am
Qingyun Li
Subscriber非常感谢您的解答。但是我还有一些疑问
1.在二维光子晶体平板能带结构的计算中。如何设置,来得到自己所需的TE或TM的能带图?在"Rectangular photonic crystal bandstructure"中有提到,在2D模拟中,dipole cloud中改变Electric dipole和Magnetic dipole可以获得TE或TM的能带图,如下图所示。我试了,确实可以。但在“Bandstructure of planar photonic crystal with a hexagonal lattice”没有什么变化。不知如何设置可以得到TE和TM的能带图?
2.Bandstructure of planar photonic crystal with a square lattice和Bandstructure of planar photonic crystal with a hexagonal lattice中,晶格周期(即a)均为0.5微米。他们在dipole cloud中,ax,ay,az的数值设置为什么一样?如下图。另外,az的设置有意义吗?因为对于二维平板光子晶体,在z方向只有一个周期。
期待您的解答,谢谢。
-
-
November 13, 2023 at 10:23 am
barry Qin
Subscriber您好,这两个问题的答案其实也藏在脚本代码里
A1:案例里说dipole cloud中改变Electric dipole和Magnetic dipole可以获得TE或TM的能带图,细究代码,其实dipole_type用在了dipole光源的设置里,例如:
adddipole;
set(“theta”, rand*360);
set(“phi”,rand*360);
set(“dipole type”,dipole_type);
换言之,分析组里的这一项调整,实际的调整对象为偶极子光源的光源类型,在Lumerical官网的“Dipole source – Simulation object”一文里描述了这一项设置的含义,通过更换偶极子光源的类型,然后运行脚本计算,就能得到TE和TM的能带图。
在“Bandstructure of planar photonic crystal with a hexagonal lattice”一文中,这个案例中上述的方法同样成立,我做了一下对应的仿真,发现图像其实是存在差异的,虽然差异较小,但确实是TE和TM两种不同的能带图。
A2:案例的分析组脚本是六个案例通用的,相关参数也是,不同的案例由不同的lattice type决定,即:
# lattice type: 1 if 2D rectangular lattice, 2 if hexagonal lattice, 3 if 3D rectangular lattice,
#4 if fcc lattice, 5 if bcc lattice, 6 for woodpile
在平面结构里,az确实是没有意义的,例如latticetype==1时:
if (lattice_type==1){ # if rectangular 2D lattice
for(i=1:n_dipoles) {
adddipole;
set(“name”,”s”+num2str(i));
set(“override global source settings”,1);
set(“set frequency”,1);
set(“frequency start”,f1);
set(“frequency stop”,f2);
set(“x”,(rand-0.5)*ax*0.6);
set(“y”,(rand-0.5)*ay*0.6);
set(“z”,(rand-0.5)*z_span);
set(“phase”,rand*360);
set(“dipole type”,dipole_type);
set(“theta”,theta);
set(“phi”,rand*360);
}
}
并没有使用到az。
而对3D模型:
if (lattice_type==3) { # if 3D rectangular lattice
for(i=1:n_dipoles) {
adddipole;
set(“name”,”s”+num2str(i));
set(“override global source settings”,1);
set(“set frequency”,1);
set(“frequency start”,f1);
set(“frequency stop”,f2);
set(“x”,(rand-0.5)*ax*0.8); # keep dipoles 20% away from bloch boundaries to inject properly
set(“y”,(rand-0.5)*ay*0.8);
set(“z”,(rand-0.5)*az*0.8);
set(“phase”,rand*360);
set(“dipole type”,dipole_type);
set(“phi”,rand*360);
set(“theta”,rand*360);
}
}
az就起到了作用。
关于ax、ay、az如何定义周期,在您所说的模型里为何设置相同,也可以从代码看出。
如果对代码方面了解较少,可以参考“Lumerical scripting language – Alphabetical list”里的指令解释对应着来理解。
-
- The topic ‘关于二维光子晶体平板能带结构的问题’ is closed to new replies.
-
5899
-
1906
-
1420
-
1306
-
1021
© 2026 Copyright ANSYS, Inc. All rights reserved.






