Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Много теории

.pdf
Скачиваний:
10
Добавлен:
14.04.2015
Размер:
4.97 Mб
Скачать

Appendix B. Pyxis code for universal grating coupler design

//$message($format("%4.5f",nTM1));

ne=0.45*nTM+0.55*nTM1; $message($format("%4.5f",ne));

}

//...// end of calculating neff

//Start of grating drawing

local period=-1*wl/(sin(rad(incident_angle))*1-ne); local duty_cycle=0;

$message($format("%4.5f",period)); if (pl==1)

{

duty_cycle=period*0.5; $message($format("%4.5f",duty_cycle));

}

else

{

duty_cycle=period*0.45; $message($format("%4.5f",duty_cycle));

}

local segnum=75; //segment number of one grating curve local seg_points = segnum+1;

local arc_vec = $create_vector(2*seg_points+2); local i = 0;

local j = 0; local x_r=0; local y_r=0; local x_l=0; local y_l=0;

107

Appendix B. Pyxis code for universal grating coupler design

local m1_x=0; local m1_y=0; local m2_x=0; local m2_y=0; local nf=1.44;

local e=nf*sin(rad(incident_angle))/ne; local gc_number=$round(21/period); local angle_e=62;

local N=$round(18*(1+e)*ne/wl)+1; local gap=period-duty_cycle;

for(j=0;j<gc_number;j=j+1)

{

for(i=0;i<seg_points;i=i+1)

{

x_r=(N*wl/(ne*(1-e*cos(rad(180-angle_e/2+angle_e/segnum*i))))+ j*period)*cos(rad(180-angle_e/2+angle_e/segnum*i)); y_r=(N*wl/(ne*(1-e*cos(rad(180-angle_e/2+angle_e/segnum*i))))+ j*period)*sin(rad(180-angle_e/2+angle_e/segnum*i));

arc_vec[i] = [x_r,y_r];

m1_x=(N*wl/(ne*(1-e*cos(rad(180+angle_e/2))))+ duty_cycle/2+j*period)*cos(rad(180+angle_e/2)); m1_y=(N*wl/(ne*(1-e*cos(rad(180+angle_e/2))))+ duty_cycle/2+j*period)*sin(rad(180+angle_e/2))-0.1; arc_vec[seg_points] = [m1_x,m1_y];

x_l=(N*wl/(ne*(1-e*cos(rad(180+angle_e/2-angle_e/segnum*i))))+ gap+j*period)*cos(rad(180+angle_e/2-angle_e/segnum*i)); y_l=(N*wl/(ne*(1-e*cos(rad(180+angle_e/2-angle_e/segnum*i))))+ gap+j*period)*sin(rad(180+angle_e/2-angle_e/segnum*i));

arc_vec[seg_points+i+1] = [x_l,y_l];

108

Appendix B. Pyxis code for universal grating coupler design

m2_x=(N*wl/(ne*(1-e*cos(rad(180+angle_e/2-angle_e/segnum*i))))+ gap/2+j*period)*cos(rad(180+angle_e/2-angle_e/segnum*i)); m2_y=(N*wl/(ne*(1-e*cos(rad(180+angle_e/2-angle_e/segnum*i))))+

gap/2+j*period)*sin(rad(180+angle_e/2-angle_e/segnum*i))+0.1; arc_vec[2*seg_points+1] = [m2_x,m2_y];

}

angle_e = angle_e-0.7; $add_shape(arc_vec,'SiEtch1');

}

$add_shape([[-40,13.5],[0,1/2*wg_width],[0,-1/2*wg_width],[-40,-13.5]],'Si'); //$unselect_all(@nofilter);

$add_shape([[-1, -wg_width/2], [0, wg_width/2]], "Si", @internal);

//Restore original user settings $set_selectable_types(@replace, (selectable_types_orig[0]==void)? []:selectable_types_orig[0],selectable_types_orig[1]); $set_selectable_layers(@replace, selectable_layers_orig); $set_autoselect(autoselect_orig);

}

function EBeam_UGC_double_parameters( layer:optional number {default=1}, wl:optional number {default=1.55}, etch_depth:optional number {default=0.07}, Si_thickness:optional number {default=0.22},incident_angle:optional number {default=20},wg_width:optional number {default=0.5},n_cladding:optional number

{default=1.44},pl:optional number {default=1})

{ return [ ["wl",$g(wl)],["etch_depth",$g(etch_depth)],["Si_thickness", $g(Si_thickness)],["incident_angle",$g(incident_angle)], ["wg_width",$g(wg_width)],["n_cladding",$g(n_cladding)],["pl",$g(pl)] ]; }

109

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]