#In order to force a constant effective index, set the group index and effective index to the same value #In order to enter optical length simply set effective index/group index to '1' #Parameters to generate #Andrea Melloni, "Synthesis of a parallel-coupled ring-resonator filter" #Opt. Lett. 26, 917-919 (2001) #The center frequency for the waveguide propagation properties f0 = getnamed("ONA1","center frequency"); ng = 1; neff = ng; lambda = c / f0; #filter parameters FSR = 100e9; #free spectral range B = 3.333e9; #bandwidth N = 4; #order of the filter nr = 2; #integer multiple of FSR (second periodicity) oddm = 0; #odd multiple of a quarter-wavelength range = 0.5e12; #frequency range analysis #calculate coupling coefficient from Q factor for each resonator cq = matrix(N); for( q=1:N ) { gq = sqrt( 2 ) * sin( ( 2 * q - 1 ) / ( 2 * N ) * pi ); #equation (2) Qq = FSR / gq / B; #equation (1) cq( q ) = pi ^ 2 / 2 / Qq^2 * ( sqrt( 1 + 4 * Qq^2 / pi^2 ) - 1 ); #equation (3) } #the circunference of the rings lr = c / neff / FSR; #the connecting waveguide lengths nr = nr / 2; lc = lr / nr; #combined length of busbar arms must be an odd number of half guide wavelength at the design frequency if( oddm ) { n = round ( lc * neff / lambda ); lc = ( n + 1 / 2 ) * lambda / neff; } lc1 = lc / 2; lc2 = lc / 2; switchtodesign; setnamed("ONA1","fwhm excursion",1); setnamed("ONA1","frequency range",range); setnamed("R11","frequency",f0); setnamed("R11","length",lr); setnamed("R11","group index 1",ng); setnamed("R11","effective index 1",neff); setnamed("R11","coupling coefficient 1 1",cq( 1 )); setnamed("R11","coupling coefficient 1 2",cq( 1 )); setnamed("L11","frequency",f0); setnamed("L11","length",lc1); setnamed("L11","group index 1",ng); setnamed("L11","effective index 1",neff); setnamed("L12","frequency",f0); setnamed("L12","length",lc2); setnamed("L12","group index 1",ng); setnamed("L12","effective index 1",neff); setnamed("R12","frequency",f0); setnamed("R12","length",lr); setnamed("R12","group index 1",ng); setnamed("R12","effective index 1",neff); setnamed("R12","coupling coefficient 1 1",cq( 2 )); setnamed("R12","coupling coefficient 1 2",cq( 2 )); if( N > 2 ) { setnamed("L21","frequency",f0); setnamed("L21","length",lc1); setnamed("L21","group index 1",ng); setnamed("L21","effective index 1",neff); setnamed("L22","frequency",f0); setnamed("L22","length",lc2); setnamed("L22","group index 1",ng); setnamed("L22","effective index 1",neff); setnamed("R13","frequency",f0); setnamed("R13","length",lr); setnamed("R13","group index 1",ng); setnamed("R13","effective index 1",neff); setnamed("R13","coupling coefficient 1 1",cq( 3 )); setnamed("R13","coupling coefficient 1 2",cq( 3 )); } if( N > 3 ) { setnamed("L31","frequency",f0); setnamed("L31","length",lc1); setnamed("L31","group index 1",ng); setnamed("L31","effective index 1",neff); setnamed("L32","frequency",f0); setnamed("L32","length",lc2); setnamed("L32","group index 1",ng); setnamed("L32","effective index 1",neff); setnamed("R14","frequency",f0); setnamed("R14","length",lr); setnamed("R14","group index 1",ng); setnamed("R14","effective index 1",neff); setnamed("R14","coupling coefficient 1 1",cq( 4 )); setnamed("R14","coupling coefficient 1 2",cq( 4 )); } if( N > 4 ) { setnamed("L41","frequency",f0); setnamed("L41","length",lc1); setnamed("L41","group index 1",ng); setnamed("L41","effective index 1",neff); setnamed("L42","frequency",f0); setnamed("L42","length",lc2); setnamed("L42","group index 1",ng); setnamed("L42","effective index 1",neff); setnamed("R15","frequency",f0); setnamed("R15","length",lr); setnamed("R15","group index 1",ng); setnamed("R15","effective index 1",neff); setnamed("R15","coupling coefficient 1 1",cq( 5 )); setnamed("R15","coupling coefficient 1 2",cq( 5 )); }