使用脚本语言实现闪耀光栅(Blazed grating),步骤均有详解。
一、创建结构
1.1 代码实现
#blaze_grating_draw.lsf
switchtolayout;
selectall;
delete;
um = 1e-6;
addstructuregroup;
set("name", "blaze_grating_2D");
#创建substrate
addpoly;
V = [0,0;0,-3;3,-3;3,0;2.25,1.29904]*um;
set("name", "substrate");
set("vertices", V);
set("x", -7.5*um);
set("y", 0);
set("z min", -0.15*um);
set("z max", 0.15*um);
#注意这里要导入需要的材料数据
set("material","substrate");
addtogroup("blaze_grating_2D");
addpoly;
V = [0,0;0,-3;3,-3;3,0;2.25,1.29904]*um;
set("name", "substrate");
set("vertices", V);
set("x", -4.5*um);
set("y", 0);
set("z min", -0.15*um);
set("z max", 0.15*um);
set("material","substrate");
addtogroup("blaze_grating_2D");
addpoly;
V = [0,0;0,-3;3,-3;3,0;2.25,1.29904]*um;
set("name", "substrate");
set("vertices", V);
set("x", -1.5*um);
set("y", 0);
set("z min", -0.15*um);
set("z max", 0.15*um);
set("material","substrate");
addtogroup("blaze_grating_2D");
addpoly;
V = [0,0;0,-3;3,-3;3,0;2.25,1.29904]*um;
set("name", "substrate");
set("vertices", V);
set("x", 1.5*um);
set("y", 0);
set("z min", -0.15*um);
set("z max", 0.15*um);
set("material","substrate");
addtogroup("blaze_grating_2D");
addpoly;
V = [0,0;0,-3;3,-3;3,0;2.25,1.29904]*um;
set("name", "substrate");
set("vertices", V);
set("x", 4.5*um);
set("y", 0);
set("z min", -0.15*um);
set("z max", 0.15*um);
set("material","substrate");
addtogroup("blaze_grating_2D");
#创建coating
addpoly;
V = [0,0;2.25,1.29904;3,0;3.03464,0.02;2.26464,1.35368;-0.02,0.034641]*um;
set("name", "coating");
set("vertices", V);
set("x", -7.5*um);
set("y", 0);
set("z min", -0.15*um);
set("z max", 0.15*um);
set("material","coating");
addtogroup("blaze_grating_2D");
addpoly;
V = [0,0;2.25,1.29904;3,0;3.03464,0.02;2.26464,1.35368;-0.02,0.034641]*um;
set("name", "coating");
set("vertices", V);
set("x", -4.5*um);
set("y", 0);
set("z min", -0.15*um);
set("z max", 0.15*um);
set("material","coating");
addtogroup("blaze_grating_2D");
addpoly;
V = [0,0;2.25,1.29904;3,0;3.03464,0.02;2.26464,1.35368;-0.02,0.034641]*um;
set("name", "coating");
set("vertices", V);
set("x", -1.5*um);
set("y", 0);
set("z min", -0.15*um);
set("z max", 0.15*um);
set("material","coating");
addtogroup("blaze_grating_2D");
addpoly;
V = [0,0;2.25,1.29904;3,0;3.03464,0.02;2.26464,1.35368;-0.02,0.034641]*um;
set("name", "coating");
set("vertices", V);
set("x", 1.5*um);
set("y", 0);
set("z min", -0.15*um);
set("z max", 0.15*um);
set("material","coating");
addtogroup("blaze_grating_2D");
addpoly;
V =