半导体光吸收问题 semiconductor power absorption

fdtd

#1

我想用FDTD模拟一个三维模型的光吸收,因为我只想得到在XY二维平面上的吸收分布,所以想问一下在数据输出的时候能不能把Z方向上的值自动叠加然后输出在XY二维平面的吸收分布。请各位专家指教,谢谢!


#2

首先,自动 这一点大概不能实现,你可能需要自己编写脚本程序。
在分析组里面有一个专门计算吸收的分析组;这个分析组可以得到能量吸收的三维空间分布


可以发现,得到的结果是 吸收Pabs关于x、y、z和lambda/f 的 dataset(rectilinear dataset)

https://kb.lumerical.com/en/index.html?ref_scripts_datasets.html datasets的KB链接!

你可以通过脚本,编写代码,采用循环,一次取出一个xy截面的能量分布,下一次循环取出另一个xy截面分布,与前者叠加; 最后应该可以得到能量三维分布的二维投影!
具体脚本你可能需要自己研究研究。

PS:Pinch 这个函数应该会很有用。
https://kb.lumerical.com/en/index.html?ref_scripts_pinch.html


#3

如二楼所说,分析组是通用的,要得到特殊的结果,需要修改脚本,在需要积分的方向来[积分]

你也可以参考这个例子,看看分析组里面是怎么积分的。下面是对X方向积分

实际上就是一个语句。


#4

多谢大家指导,我试着去改了一下,但是还是不行,我把修改的部分附在这里,请再帮我检查一下吧。
我是在Power absorbed模块上面改的。
原程序如下:

source power absorbed in the volume.

Pabs_integrated = integrate2(Pabs_matrix,1:3,x,y,z);

create data sets

Pabs = rectilineardataset(“Pabs”,x,y,z);
Pabs.addparameter(“lambda”,c/f,“f”,f);
Pabs.addattribute(“Pabs”,Pabs_matrix);

Pabs_total = matrixdataset(“Pabs_total”);
Pabs_total.addparameter(“lambda”,c/f,“f”,f);
Pabs_total.addattribute(“Pabs_total”,Pabs_integrated);
现在我改成下面这样:

source power absorbed in the volume.

Pabs_integrated = integrate2(Pabs_matrix,1:2,x,y);
If (%integrated dimension% == “z”) {
Pabs_temp = matrix (2,Nx,Ny);
Pabs_temp(1,1:Nx,1:Ny) = integrate2(Pabs_matrix,1,z)
Pabs_temp(2,1:Nx,1:Ny) = integrate2(Pabs_matrix,1,z)
z_export = [min(z),max(z)];
Pabs_matrix_export = Pabs_temp;
}

create data sets

Pabs = rectilineardataset(“Pabs”,x,y);
Pabs.addparameter(“lambda”,c/f,“f”,f);
Pabs.addattribute(“Pabs”,Pabs_matrix);

Pabs_total = matrixdataset(“Pabs_total”);
Pabs_total.addparameter(“lambda”,c/f,“f”,f);
Pabs_total.addattribute(“Pabs_total”,Pabs_integrated);


#5

你需要将文件发上来,里面的结构如果要保密的话可以修改。
Pabs_temp(2,1:Nx,1:Ny) = integrate2(Pabs_matrix,1,z) 这句话有问题,应该是
Pabs_temp(2,1:Nx,1:Ny) = integrate2(Pabs_matrix,3,z) 因为Z是Pabs_matrix的第三维。


#6

谢谢孙老师指导,我把原模型和修改过的都上传上来,麻烦您帮我检查一下吧,昨天我把您告诉我错的那句改了之后还是不对,运行没有结果。您看下我的文件就知道了,其实我就是想知道这种模型在不同波长下的吸收分布情况,所以如果Z轴积分后输出结果的话会非常直观了。
1 - original.fsp (243.8 KB)
1 - revised.fsp (244.0 KB)


#7

你文件的几个问题:
1:为什么Z方向的边界条件都是金属?这样就是一个谐振腔,是你需要的吗?
2:原文件占内存太多,我将整个文件都变小了,特别是,你要100个平铝的吸收,你会一个一个查看吗?一般是选特殊频率。我修改为20个,并将Zmax变为PML。 如果你有理由可以变回。
3:分析组脚本:矢量Dataset目前好像只能是3D,因此计算的XY积分现在只能是一个数组,提取出来后再作图。你也可以将分析组里面的积分提到这个作图的脚本文件中,更简便。1 - revised-lum.fsp (241.7 KB)
1_plot.lsf (355 字节)



#8

谢谢孙老师,边界条件应该都是PML才对,频率也不需要那么多,您帮我改小以后运行内存需要的小了很多,修改后的积分也正是我需要的,万分感谢!


#9

请把这个帖子标记为已解决。