波导相速度产生的相位差该如何计算


#1

Passive components里面的Group Delay Analysis有关于相位的计算的脚本,但是这个脚本算的是群速度相位,请问相速度产生的相位该怎么算?数据怎么提取?
相速度Vp = ω/k
群速度Vg = dω/dk
有效折射率neff= c/Vp
群折射率ng= c/Vg
谢谢!


#2

如果你用的是MODE Solutions的FDE或者是Mode光源,你可以得到有效折射率,其实部就与相速相关,Vp=c/real(neff)。如果是其它,请详细说明。


#3

请问我想计算一段波导的相位差,是应该用varFDTD的time monitor吗?
光源设置一段频率?
从time monitor中提取数据,然后做傅里叶变换,取angle就是相位差?


#4

如果是一段直波导,没必要仿真,只要算出neff就可以;
如果是复杂的波导器件,你可以用FDTD Solutions或者varFDTD仿真,用频域监视器就可以得到任意指定电场分量的位相(小于360度的部分)。由于模式不是平面波,所以你监测波导芯中间与边缘或者包层,得到的结果可能不同。此外,一般假定光源处位相是零,不过你也可以把光源不同分量取出来计算其初位相。
不需要用时间监视器作后续处理。


#5

孙博士,您说的“用频域监视器就可以得到任意指定电场的分量相位”,指的是angle吗?
此外,group delay的例子里面关于时间监视器的数据做傅里叶变换得到的相位(代码如下)和您说的频域监视器的区别在哪里呢?谢谢

Hz = pinch(getdata(“time_through”,“Hz”));
t = getdata(“time_through”,“t”);
plot(t*1e12,Hz, “t (ps)”,“H-Field”);

f = linspace(c/1700e-9,c/1400e-9,50000);
w = 2pif;
Hw = czt(Hz,t,w)/sourcenorm(f);
phi = unwrap(angle(Hw));
plot(c/f*1e9,phi,“Wavelength(nm)”,“phase”);


#6

电场的分量相位就是其angle;
这两种方法原理一样,但是,频域监视器一般记录很少的频率点,例如50或100点,一般不会记录50000点。
group delay的例子里面用时间监视器的数据做傅里叶变换得到的相位,点数很多高达50000,是为了以后做差分用。
你只需要相速度,不需要以后来做差分,没有必要用后一种方法。


#7

孙博士,谢谢您的解答。
既然两者一样,我还是用varFDTD的time monitor算吧。
但是计算结果不尽如人意。
我想计算一个2*2的MMI的输出的相位差。分别在2个输入端口设置光源输入,两个输入端口的相位差应该是180度。但是得到的结果远小于180度,如下图。请问我的问题可能在哪里呢?


#8

孙博士,我也用您说的频域监视器取了angle矩阵数据,但是angle里面的数据偏差比较大(就是整个矩阵里面的数据从跨度从-3.1484到+3.1488),angle矩阵的数据跨度怎么会这么大?还是我哪里设置有问题吗?我光源center 1550, span 60. 谢谢!


#9

位相的结果强烈依赖于网格精度!你可能需要用非常高的网格精度,同时还要保证PML的反射足够小。
图中显示的是弧度还是度?是两个臂上位相之差吗?以后应该注明否则我只能猜。

这个是正常情况下、消除pi整数倍后的角度范围。

如果你仿真2*2的MMI,最好使用EME。


#10

孙博士,您好!

根据您之前的建议,我使用EME进行2*2 MMI 的相位位仿真,EME两个port都是TE0模式。波长1550nm,中间MMI段CVCS 20,长度从0到500um。得到两个端口的相位分别如下图所示(横坐标为MMI长度,纵坐标为相位,单位角度),但是两图几乎没有差别,理论上应该有180度的相位差,但是只有大概20度,请问是什么原因呢?是我EME取数据有问题吗?谢谢


#11

您好!我还是用EME,改变了mesh的精度,得到的结果没有差别,请问是什么原因呢?hybrid20160627_222.lms (398.8 KB)


#12

你这个端口有问题啊,输入和输出波导都有一定长度,不是端口的概念。你改变它们的长度你会得到不同结果,说明你现在计算的不是端口的位相差。 你应该先找到产生180度位相差的Cavity的长度,然后再扫描波长。 你后来的文件端口设置是正确的,不过Cavity是直波导,不需要CVCS,一个Cell就可以了。