def add_cavmodel(kat, T=0.001, Loss=5e-6, theta=60, L_rt = 2*12.240, R_c = 20, f1 = 11e6, gamma1 = 0, f2 = 55e6, gamma2 = 0): ''' T: Transmission of mirror (ITM) Loss: Loss of mirror ETM L_rt: Round trip length of cavity R_c: Radius of curvature of ETM ''' cavmodel = ''' # Pump beam # l pump 1 0 0 n1 # laser with 1 W #lambda 2128e-9 # laser wavelength s s_pump1 1 n1 n2 # a space of 1 m mod EOM1 {f1} {gamma1} 3 pm n2 n3 s s_pump2 1 n3 n4 # a space of 1 m mod EOM2 {f2} {gamma2} 3 pm n4 n5 s s_io 1 n5 nITM_AR # a space of 1 m # INput Mirror ITM # m1 ITM {T} 0 0 nITM_AR nITM_HR s s_ie {L} nITM_HR nETM_HR # Curved mirror ETM # m1 ETM 10e-6 {Loss} 0 nETM_HR nETM_AR # Add radius of curvature to Mc attr ETM Rc {Rc} # PDs pd transDC nETM_AR pd reflDC nITM_AR pd cavDC nETM_HR '''.format(T=T, Loss=Loss, L=L_rt/2, Rc=R_c, f1=f1, gamma1 = gamma1, f2=f2, gamma2 = gamma2) kat.parse(cavmodel) return kat # Modify power distribution here def TEM_power(f,m,n): ''' Power in higher order modes and sidebands ''' factor = 1/ (1 + m + n)**2 return factor def add_HGhom(kat, f1=0, f2=0, max_tem=5, ph=2): ''' max_tem: max m+n to account for ph: FINESSE phase adjustment parameter for HOMs ''' # Define cavity gaussparams = ''' maxtem {} cav arm_cavity ITM nITM_HR ETM nETM_HR phase {} cp arm_cavity x stability '''.format(max_tem, ph) kat.parse(gaussparams) beam_hom = ''' tem pump {m} {n} {factor} 0 ''' # Add HOMs and corresponding PDs hom_pd = ''' ad sigHG{m}{n} {m} {n} 0 nETM_AR ad sig_sb1_HG{m}{n} {m} {n} {f1} nETM_AR ad sig_sb1_HGm{m}{n} {m} {n} -{f1} nETM_AR ad sig_sb2_HG{m}{n} {m} {n} {f2} nETM_AR ad sig_sb2_HGm{m}{n} {m} {n} -{f2} nETM_AR ''' for i in range(max_tem+1): # cycle through i = m+n for m in range(i+1): n = i-m #print('m:'+ str(m) + ' ,n:' +str(n)) kat.parse(beam_hom.format(m=m, n=n, factor=TEM_power(0,m,n))) # Add carrier detectors kat.parse(hom_pd.format(m=m, n=n, f1=f1, f2=f2)) return kat def add_x_ax(kat, r_min, r_max, n): xax = ''' xaxis ETM phi lin {r_min} {r_max} {n} yaxis abs retrace off '''.format(r_min=r_min, r_max=r_max, n=n) kat.parse(xax) return kat