设置介电常数张量时,Matrix transformation提示不统一?


#1

孙老师您好!
做磁光仿真,按照文献上设置的permittivity tensor,在transfer U里编辑,三乘三矩阵对角上是4.84,即折射率平方,13和31位置是0.00765i,其余为0,点击ok时,却提示我"The matrix U was not unitary and has been corrected.The maximum change in singular value(from 1)is 3.84765",请问这是为什么呢?
十分感谢!


#2

很有可能说明你这个矩阵不能做理想的变换。请提供原始矩阵我们检查一下。你一可以手工变换,或者用Matlab变换。注意二者结果的顺序不同,后者是按对角元素大小排的。


#3

折射率n是2.2,εxz为0.00765。请问如何手工变换的话应该如何设置呢?非常感谢!


#4

a=matrix(3,3);
a(1,1)=2.2^2;
a(2,2)=a(1,1);
a(3,3)=a(1,1);
a(1,3)=-1i0.00765;
a(3,1)=-1i
0.00765;
?diag=eig(a,1);
?unitary=eig(a,2);

4.84+0.00765i
4.84-0.00765i
4.84+0i
result:
0.707107+0i 0.707107+8.47655e-014i 0+0i
0+0i 0+0i 1+0i
-0.707107+0i 0.707107+0i 0+0i
没有出错啊。
你也可以用工程数学中对角化原理得到对焦阵和变换矩阵。
不过你这个各向异性并不能用来仿真,因为对角化后第二个对角元素有增益。

我认为,虽然数学上这个矩阵可以对角化,但是并不能保证对角元素没有增益。出现此问题的原因是εxz那里有负号。


#5

谢谢孙老师的解答!
这个张量的a(3,1)是正的0.00765i,我按照Matrix transformation步骤
A = [ 4.84, 0,-0.00765i;0, 4.84,0;0.00765i,0,4.84];
Evl=eig(A,1);
DeR=[sqrt(Evl(1));sqrt(Evl(2));sqrt(Evl(3))];
mymaterial = addmaterial("(n,k) Material");
setmaterial(mymaterial,“name”,“MOKE”);
setmaterial(“MOKE”, “Anisotropy”,1);
setmaterial(“MOKE”,“Refractive Index”,real(DeR));
setmaterial(“MOKE”,“Imaginary Refractive Index”,imag(DeR));

 Evc=eig(A,2); # calculate eigenvalues
 addgridattribute("matrix transform");
 set("U",ctranspose(Evc));
 set("name","kerr attribute"); 

这样得到一个attribute,但是仿真到一半出现Diverging simulations,是这个材料无法仿真吗?检查过PML条件,输入的是TE基模,其他检查步骤也试过了。
result:0+0.707107i 0 0.707107
0.707107±5.55112e-17i 0 4.67068e-17+0.707107i
0 1 0


#6

?Evl=eig(A,1);
result:
4.84765
4.83235
4.84
应该没有问题;
有很多因素影响发散,参见这些帖子