模拟电磁波和周期性结构

作者 Walter Frei

2014年 1月 17日

我们经常想要模拟入射到周期性结构中的电磁波(光、微波),例如衍射光栅、超材料,或频率选择表面。这可以使用 COMSOL 产品库中的 RF 或波动光学模块来完成。两个模块都提供了 Floquet 周期性边界条件和周期性端口,并将反射和透射衍射级作为入射角和波长的函数进行计算。本博客将介绍这类分析背后的概念,并将介绍这类问题的设定方法。

场景

首先,让我们来考虑代表周期性重复晶胞的自由空间平行六面体,平面波沿一个角度入射到其上,如下图所示。

平面波经过周期性重复晶胞的图示

入射波矢 \bf{k} 在全局坐标系中有三个分量,其大小分别是: k_x = k_0 \sin(\alpha_1) \cos(\alpha_2), k_y = k_0 \sin(\alpha_1) \sin(\alpha_2) ,和 k_z = k_0 \cos(\alpha_1)。该问题可通过在域侧面使用周期性边界条件,并在顶部和底部使用端口边界条件来模拟。该问题设定最复杂的地方是定义入射波和出射波的方向和偏振。

定义波方向

虽然 COMSOL 软件非常灵活,支持对基矢坐标系的任意定义,但在本博客中,我们将选定一个坐标系并始终使用它。入射光的方向由两个角度定义, \alpha_1\alpha_2;以及两个矢量, \bf{n} 为模拟空间中向外指向的法向, \bf{a_1} 为入射面的一个矢量。我们这里所选择的约定将 \bf{a_1} 与全局 x 轴对齐,将 \bf{n} 与全局 z 轴对齐。因此,入射波的波矢与全局 z 轴之间的夹角为 \alpha_1,即入射仰角,其中 -\pi/2 > \alpha_1 > \pi/2\alpha_1 = 0,意味着垂直入射。入射波矢和全局 x 轴之间的夹角为入射方位角 \alpha_2,位于范围 -\pi/2 > \alpha_2 \geq \pi/2 之内。 由该定义, \alpha_1\alpha_2 的正值表示波沿着 x 轴 和 y 轴正向传播。

如要使用入射方向的上述定义,我们需要指定 \bf{a_1} 矢量。这可以通过选定一个周期性端口参考点来完成,它必须是入射端口的角点之一。软件使用从该点出发的面内边来定义两个矢量,\bf{a_1}\bf{a_2},且 \bf{a_1 \times a_2 = n}。在下图中,我们可以看到满足这一条件的四组 \bf{a_1}\bf{a_2}。因此,俯瞰 z 轴及平面时,入射面端口上的周期性端口参考点应为 x-y 平面左下角的点。通过选择此点, \bf{a_1} 矢量变得与全局 x 轴对齐。

周期性重复晶胞上的周期性端口参考点图示

既然选择了周期性端口参考点而在入射面定义了 \bf{a_1}\bf{a_2} ,那么模拟域中出射面的端口也必须定义。法向矢量 \bf{n} 指向相反的方向,因此必须调整所选择的周期性端口参考点。四个角点都无法提供与入射面矢量对齐的 \bf{a_1}\bf{a_2},因此我们必须选择这四个点之一,并调整 \alpha_1\alpha_2 的定义。通过在出射面选择与入射面所选定点完全相反的周期性端口参考点,并将 \pi/2 旋转 \alpha_2\bf{a_1} 的方向被旋转到 \bf{a_1'},指向与入射面 \bf{a_1} 相反的方向。由于这种旋转,模拟域中出射面的 \alpha_1\alpha_2 的正负号发生了转换。

周期性重复晶胞中出射面的周期性端口参考点图示

下一步,考虑一个代表介电半空间的模拟域,在入射和出射端口面之间存在折射率差异,这会使波方向发生改变,如下图所示。根据斯涅耳定律,我们知道折射角为 \beta=\arcsin \left( n_A\sin(\alpha_1)/n_B \right)。这使我们可以计算出射端口处的波矢方向。此外,请注意,即使有额外的介电层夹在两个半空间之间,这种关系也仍然成立。

斯涅耳定律图示

总结一下,要定义通过一个晶胞的平面波方向,我们首先需要选择两个点,即周期性端口参考点,它们在入射面和出射面的位置完全相反。这些点定义了矢量 \bf{a_1}\bf{a_2}。因此,入射面的 \alpha_1\alpha_2 可以相对于全局坐标系定义。在出射面上,方向角变为:\alpha_{1,out} = -\arcsin \left( n_A\sin(\alpha_1)/n_B \right)\alpha_{2,out}=-\alpha_2 + \pi/2

定义偏振

入射平面波的偏振可以是二者之一,即电场或磁场与 x-y 平面平行。所有其他偏振,例如圆形或椭圆形,都可以由这二者的线性组合建立。下图显示了 \alpha_2 = 0,且磁场与 x-y 平面平行的情况。当 \alpha_2 = 0 时,全局坐标系中的入射和出射端口的磁场大小是 (0,1,0)。由于光束旋转使 \alpha_2 \ne 0,磁场大小变为 (\sin(\alpha_2), \cos(\alpha_2),0)。对于正交偏振,可以用类似方法定义入射面的电场大小。在出射端口,x-y 平面中的场分量可以用相同的方式定义。

周期性重复晶胞中磁场与 x-y 平面相平行的偏振图示

到目前为止,我们已经看到了如何定义传播经过介电界面周围晶胞的平面波的方向与偏振。对这类问题,您可以看到案例库中 Fresnel 方程模型的结果与解析解一致。

定义衍射级

接下来,让我们来检查一下把周期性结构引入模拟域之后会发生什么变化。考虑一个入射到下图周期性结构中、且 \alpha_1, \alpha_2 \ne 0 的平面波。如果波长相对光栅间距足够短,就可能会存在一个或多个衍射级。要理解这些衍射级,我们必须观察由矢量 \bf{n}\bf{k} 所定义的平面,以及由矢量 \bf{n}\bf{k \times n} 所定义的平面。

平面波衍射图示

首先,沿着由 \bf{n}\bf{k} 所定义平面的法向观察,我们能看到零阶透射传输模式的存在,其方向如前所述按照斯涅尔定律定义。零阶反射分量也存在。结构中也可能存在一些光的吸收,不过未在图片中显示。下图仅显示了零阶透射传输模式。间距 d 是由矢量 \bf{n}\bf{k} 所定义平面中的周期性。

零阶透射传输模式图示

对于足够短的波长,也可以有更高阶的衍射模式。当 m=\pm1 时,下图显示了这些情况。

短波长的更高阶衍射模式图示

这些模式存在的条件是:

m\lambda_0 = d(n_B \sin \beta_m - n_A \sin \alpha_1)

for: m=0,\pm 1, \pm 2,

其中 m=0 时的情况可以简化为斯涅耳定律。当 \beta_{m\ne0} 时,如果光程差等于真空中波长的整数倍,则发生相长干涉, m 阶衍射光束的衍射角为 \beta_{m}。注意,正负 m 阶的个数无需相同。

下一步,我们沿着由矢量 \bf{n}\bf{k} 所定义的平面观察。也就是说,我们将视角绕 z 轴旋转,直到入射波矢看上去沿表面的法向。进入此平面的衍射标注为 n 阶光束。注意该平面上的周期性间距 w 不同,且正负 n 阶的个数总是相同。

沿矢量 n 和 k 所定义平面的衍射

设定周期性端口时,COMSOL 会自动计算这些 m,n \ne 0 阶模式,并定义监听端口,从而可以计算出衍射至每种模式的能量有多少。

最后,我们必须考虑在波发生衍射后,其偏振可能会经历旋转。因此,每个衍射级包含两个正交偏振,面内矢量面外矢量分量。观察由 \bf{n} 和衍射波矢 \bf{k_D} 所定义的平面,衍射场可以有两个分量。面外矢量分量是指偏振方向在衍射面外(由 \bf{n}\bf{k}) 所定义的平面)的衍射光束,面内矢量分量则为正交偏振。因此,如果面内矢量分量在特定衍射级非零,则意味着入射波在衍射时经历了偏振的旋转。对于 n \ne 0 阶模式,类似定义仍然适用。

衍射波的面内矢量和面外矢量图示

考虑介电基底上的周期性结构。光束以 \alpha_1, \alpha_2 \ne 0 入射时,就会有更高的衍射级,对所有衍射级的可视化会变得非常复杂。在下图中,入射平面波的方向用黄色矢量显示。n=0 衍射级在正 z 方向的衍射用蓝色箭头显示,负 z 方向的衍射用青绿色箭头显示。n \ne 0 阶模式的正向衍射显示为红色,负向衍射显示为紫红色。衍射可以在这些方向的每个方向上发生,衍射波的偏振方向可以在衍射面内,也可以垂直于衍射面。衍射面本身可以显示为一个圆弧。注意,在 n \ne 0 模式下衍射面在正 z 和负 z 方向不同。

对介电基底上所有衍射级的可视化

定义三维周期性结构时,所有端口会自动设定。它们获取了这些不同的衍射级,并能够计算每级的场和相对相位。理解这些端口的含义和解释有助于模拟周期性结构。


评论 (6)

正在加载...
wajid ali
wajid ali
2017-04-16

how to simulate chiral medium

宇航 秦
宇航 秦
2017-04-21

Hello wajid ali ,

Thank you for your comment.
For questions related to your modeling, please contact our support team.

Online support center: https://www.comsol.com/support
Email: support@comsol.com

Zhimin Jing
Zhimin Jing
2018-07-15

Dear Walter Frei,
I am writing to you for your help. These days i have been simulating a 3-D model of a periodic structure with oblique incidenting circular polarized light. But I have encountered some problems that have been solved for a long time.
I want to define a circular polarized light with an Angle of theta between the k and z axes, and k is on the z-x plane. My settings are as follows:I choosed “periodic” in type of port and
I defined the polarization of circular polarized light at both input and output port : cos (theta) in x direction, a* i in y direction, and -sin(theta) in z direction. Then, i choosed “floquent periodicity” in x and y direction in periodic condition. And i choosed “from periodic port” in k-vector for floquent periodicity. However, the charge map derived from the calculation results is not continuous on the right and left side of the structure in x direction.
I don’t know if my periodic conditions are wrong. Any reply from you will be greatly appreciated

Zhimin Jing
Zhimin Jing
2018-07-15

Dear Walter Frei,
I am writing to you for your help. These days i have been simulating a 3-D model of a periodic structure with oblique incidenting circular polarized light. But I have encountered some problems that have been solved for a long time.
I want to define a circular polarized light with an Angle of theta between the k and z axes, and k is on the z-x plane. My settings are as follows:I choosed “periodic” in type of port and
I defined the polarization of circular polarized light at both input and output port : cos (theta) in x direction, a* i in y direction, and -sin(theta) in z direction. Then, i choosed “floquent periodicity” in x and y direction in periodic condition. And I choosed “from periodic port” in k-vector for floquent periodicity. However, the charge map derived from the calculation results is not continuous on the right and left side of the structure in x direction.
I don’t know if my periodic conditions are wrong. If wrong, how should I revise. Any reply from you will be greatly appreciated.
Sincerely yours,
Zhimin Jing

Tengyue Gao
Tengyue Gao
2018-10-19

Hi Zhimin ,

Thank you for your comment.
For questions related to your modeling, please contact our support team.

Online support center: https://www.comsol.com/support
Email: support@comsol.com

Chenqian Wang
Chenqian Wang
2019-01-16

您好,请问一下,入射端口如果设置E0为(1,0,0),出射端口为什么也要设置E0为(1,0,0),有什么特定的意义吗?

浏览 COMSOL 博客