Ansys Learning Forum › Forums › Discuss Simulation › Photonics › About Aluminum Ring Transmission Spectrum › Reply To: About Aluminum Ring Transmission Spectrum
September 27, 2022 at 2:33 am
Subscriber
switchtolayout;
selectall;
deleteall;
clear;
clc;
switchtolayout;
nm = 1e-9;
um = 1e-6;
fs = 1e-15;
lambda_start = 100*um;
lambda_end = 300*um;
p = 100*um;
# Al_ring
addring;
set("name","al_ring");
set("x",0);
set("y",0);
set("inner radius",20*um);
set("outer radius",38*um);
set("z min",0);
set("z max",200*nm);
set("theta start",0);
set("theta stop",0);
set('material','PEC_Al');
# etch
addrect;
set('name','etch');
set('x',0);
set('x span',12*um);
set('y',30*um);
set('y span',30*um);
set('z min',0);
set('z max',200*nm);
set('index','etch');
# sub : sapphire
addrect;
set('name','sapphire');
set('x',0);
set('x span',p);
set('y',0);
set('y span',p);
set('z min',-500*um);
set('z max',0);
set('index','3.4');
## simulation
addfdtd;
set("dimension",2); # 1 = 2D, 2 = 3D
set('simulation time',4000*fs);
set('x',0);
set('x span',p);
set('y',0);
set('y span',p);
set("z min",-520*um);
set("z max",800*um);
set("mesh accuracy",2);
# set boundary conditions
set("x min bc","periodic"); #这里用序号而不是Periodic的名称
set("y min bc","periodic");
set("z min bc",1);
set("z max bc",1);
# Source
addplane;
set("name","Source_y");
set("injection axis","z");
set("direction","Backward");
#set('phase',180); #rcwa:delta0=90
#set('phase',180);
set("polarization angle",-90);
set("amplitude",1);
set('x',0);
set('x span',p);
set('y',0);
set('y span',p);
set("z",780*um);
set("wavelength start",lambda_start);
set("wavelength stop",lambda_end);
#monitor
#T_point
addpower;
set("name","T_point");
set("monitor type",1); # Point
set('x',0);
set('y',0);
set("z",-510*um);
set("override global monitor settings",1);
set("frequency points",200);
## T
addpower;
set('name','T1');
set("monitor type",7); # 2D z-normal
set('x',0);
set('x span',p);
set('y',0);
set('y span',p);
set("z",-510*um);
set("override global monitor settings",1);
set("frequency points",200);
# time_monitor
addtime;
set("name","time");
set("monitor type",1); # point
set('x',0);
set('y',0);
set("z",-510*um);
run;
f = getdata('T1',"f");
T = transmission("T1")*(-1);
plot(f/1e12,T,"f(THz)","T_Power");