Photonics – Chinese

Photonics – Chinese

如何添加一个常量掺杂的自定义区域

    • DwLixixi
      Subscriber

      老师,请问根据https://optics.ansys.com/hc/en-us/articles/4412958409491-How-to-create-a-radial-diffusion-doping-profile-in-CHARGE这个参考我想要设定自己的掺杂区域,对于.mat这个文件我不是很理解,其中[N]代表的是自定义的掺杂区域吗?有没有关于写.mat的样例?

      期待您的回信!

    • Guilin Sun
      Ansys Employee

      其中[N]代表的是自定义的掺杂浓度,例子有.mat,文件就是脚本里输出的啊,只需要一个DATASET:

      后面两个命令都是保存Matlab数据格式的。

       

    • DwLixixi
      Subscriber

      感谢孙老师,您说的对。我开始以为要在Matlab上保存数据。现在我通过修改脚本来设置一个常量掺杂但是并没有成功。

      我是想设置一个圆柱体的掺杂,修改的脚本如下(我认为可能没掺杂上的原因是在产生2Ddoping中我没有理解原始脚本,原始脚本可能它涉及到是一个变量掺杂所以我没有设置2Ddoping这部分):

      ##Set Inputs

      N=1e20;

      radius=5e-9;

      x0=0;

      y0=0;

      z0=0;

      zspan=5e-8;

      P=400;

      ##

      # Create retangular grid

      x=linspace(x0-radius,x0+radius,P);

      y=linspace(y0-radius,y0+radius,P);

      z=[z0-zspan/2,z0+zspan/2];

      # Initialize matrices

      N2d=matrix(P,P);

      N3d=matrix(P,P,2);

      # Generate 2D doping profile

      ————————————

      #Create 3D doping profile

      N3d(1:P,1:P,1) = N2d;

      N3d(1:P,1:P,2) = N2d;

      N = N3d;

      # Create rectilinear dataset

      doping = rectilineardataset(x,y,z);

      doping.addattribute("N",N3d);

      # Save Matlab file

      matlabsave("doping_dataset",doping);

      matlabsave("doping_dataset",x,y,z,N);

      另一个问题:这种import doping 最终产生掺杂区域是自己设定的结构,例如我创建了一块方体的半导体,想在这个方体中设置一个圆锥的掺杂结构,就需要import doping脚本进行设定。

       

    • Guilin Sun
      Ansys Employee

      原脚本可以简化如下:

      N2d对你无用。

      例子只是示例,不一定最好。实际上只需要将常量掺杂赋给N3d即可,没必要像原例子那样复杂。

      即使是圆柱或者其它形状,你只需要将指定形体内设置掺杂数值,外面为零即可。

       

    • Guilin Sun
      Ansys Employee

      例如,

      X=meshgrid3dx(x,y,z);

      Y=meshgrid3dy(x,y,z);

      Z=meshgrid3dz(x,y,z);

      N3d=N3d*(X^2+Y^2<=radius^2);

       

      如果

      N3d=N3d*(X^2+Y^2<=(0.8*radius)^2);

      外面也可以不是零,而是1e6 等基本掺杂,你自己考虑如何实现。

    • DwLixixi
      Subscriber

      非常感谢孙老师,您的建议很好,我完成了圆柱掺杂,对于外面为零的这个我可以换种方法,或许脚本更方便吧;

      接下来我对于掺杂圆台就无从下手了,它比圆柱困难在它是由不同半径的圆在Z方向上堆叠而来,我只写了部分如下:

      N=1e20;

      radius1=1e-8;

      radius2=2e-8;

      x0=0;

      y0=0;

      z0=0;

      P=400;

      zspan =5e-8;

      x1=linspace(x0-radius1,x0+radius1,P);

      y1=linspace(y0-radius1,y0+radius1,P);

      x2=linspace(x0-radius2,x0+radius2,P);

      y2=linspace(y0-radius2,y0+radius2,P);

      L=sqrt((radius1 - radius2)^2 +zspan^2);

      然后就没有思路了,还请老师指点一下关键生成圆台的部分。

       

    • Guilin Sun
      Ansys Employee

      原则上应该发一个新帖。方法与前面类似,只需要将那个filter随z变化即可,参见

      clear;

      N=1e20;

      x0=0;

      y0=0;

      z0=0;

      zspan=5e-8;

      P=400;

      nz=10;

      radius=linspace(5,15,nz)*1e-9;

      ##

      radius0=max(radius);

      # Create retangular grid

      x=linspace(x0-radius0,x0+radius0,P);

      y=linspace(y0-radius0,y0+radius0,P);

      z=linspace(z0-zspan/2,z0+zspan/2,nz);

      # Initialize matrices

      N3d = matrix(P,P,nz) + N;

      X=meshgridx(x,y);

      Y=meshgridy(x,y);

      #Z=meshgrid3dz(x,y,z);

      for(n=1:nz){

      N3d(:,:,n)=pinch(N3d(:,:,n))*(X^2+Y^2<=pinch(radius(n)^2));

      }

      # Generate 2D doping profile

      doping = rectilineardataset(x,y,z);

      doping.addattribute("N",N3d);

       

      问题解决了不必回复,点赞即可。

Viewing 6 reply threads
  • You must be logged in to reply to this topic.