% Create an Optickle model of LCGT % by K.Agatsuma, 23Jan2011 % % par = parameter struct returned from paramEligo -- par = parmEligo % opt = optEligo(par) function opt = optLCGT(par) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Add a Field Source % create an empty model, with frequencies specified opt = Optickle(par.Laser.vFrf); % add a source, with RF amplitudes specified opt = addSource(opt, 'Laser', par.Laser.vArf); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Add Input Optics % The argument list for addMirror is: % [opt, sn] = addMirror(opt, name, aio, Chr, Thr, Lhr, Rar, Lmd) % type "help addMirror" for more information % Modulators opt = addRFmodulator(opt, 'Mod1', par.Mod.f1, i * par.Mod.g1); opt = addRFmodulator(opt, 'Mod2', par.Mod.f2, i * par.Mod.g2); opt = addRFmodulator(opt, 'Mod3', par.Mod.f3, par.Mod.g3); % AM % link, No MZ opt = addLink(opt, 'Laser', 'out', 'Mod1', 'in', 1); opt = addLink(opt, 'Mod1', 'out', 'Mod2', 'in', 1); opt = addLink(opt, 'Mod2', 'out', 'Mod3', 'in', 1); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Add Core Optics % % The parameter struct must contain parameters the following % for each mirror: T, L, Rar, mechTF, pos, ROC listMirror = {'IN1', 'IN2', 'PRM', 'PR2', 'PR3', 'SRM', 'SR2', 'SR3', 'BS', 'IX', 'IY', 'EX', 'EY'}; %Check without SRM and friends %listMirror = {'PRM', 'PR2', 'PR3', 'BS', 'IX', 'IY', 'EX', 'EY'}; for n = 1:length(listMirror) name = listMirror{n}; p = par.(name); % add mirror if strmatch(name, 'BS') opt = addBeamSplitter(opt, name, 45, 1 / p.ROC, p.T, p.L, p.Rar, 10e-6, 1.45); elseif strmatch(name, 'PR2') opt = addBeamSplitter(opt, name, 0.6292, 1 / p.ROC, p.T, p.L, p.Rar, 10e-6, 1.45); elseif strmatch(name, 'PR3') opt = addBeamSplitter(opt, name, 0.6292, 1 / p.ROC, p.T, p.L, p.Rar, 10e-6, 1.45); elseif strmatch(name, 'SR2') opt = addBeamSplitter(opt, name, 0.6292, 1 / p.ROC, p.T, p.L, p.Rar, 10e-6, 1.45); elseif strmatch(name, 'SR3') opt = addBeamSplitter(opt, name, 0.6292, 1 / p.ROC, p.T, p.L, p.Rar, 10e-6, 1.45); elseif strmatch(name, 'IN1') opt = addBeamSplitter(opt, name, 45, 1 / p.ROC , p.T, p.L, p.Rar, 10e-6); elseif strmatch(name, 'IN2') opt = addBeamSplitter(opt, name, 45, 1 / p.ROC , p.T, p.L, p.Rar, 10e-6); else opt = addMirror(opt, name, 0, 1 / p.ROC, p.T, p.L, p.Rar, 10e-6); end % set mechanical transfer-functions and mirror position offsets opt = setPosOffset(opt, name, p.pos); end dampRes = [0.01 + 1i, 0.01 - 1i]; opt = setMechTF(opt, 'IX', zpk([], -par.w * dampRes, 1 / par.mass)); opt = setMechTF(opt, 'EX', zpk([], -par.w * dampRes, 1 / par.mass)); opt = setMechTF(opt, 'IY', zpk([], -par.w * dampRes, 1 / par.mass)); opt = setMechTF(opt, 'EY', zpk([], -par.w * dampRes, 1 / par.mass)); opt = setMechTF(opt, 'PRM', zpk([], -par.w * dampRes, 1 / par.mass)); opt = setMechTF(opt, 'SRM', zpk([], -par.w * dampRes, 1 / par.mass)); opt = setMechTF(opt, 'BS', zpk([], -par.w * dampRes, 1 / par.mass)); % % % Mechanical TF torque to angle (TM) opt = setMechTF(opt, 'IX', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); opt = setMechTF(opt, 'EX', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); opt = setMechTF(opt, 'IY', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); opt = setMechTF(opt, 'EY', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); % parameterize tTM2aTM as 'optLCGT(par, tTM2aTM)' % opt = setMechTF(opt, 'IX', tTM2aTM, 2); % opt = setMechTF(opt, 'EX', tTM2aTM, 2); % opt = setMechTF(opt, 'IY', tTM2aTM, 2); % opt = setMechTF(opt, 'EY', tTM2aTM, 2); opt = setMechTF(opt, 'PRM', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); opt = setMechTF(opt, 'SRM', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); opt = setMechTF(opt, 'BS', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); opt = setMechTF(opt, 'PR2', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); opt = setMechTF(opt, 'PR3', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); opt = setMechTF(opt, 'SR2', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); opt = setMechTF(opt, 'SR3', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); opt = setMechTF(opt, 'IN1', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); opt = setMechTF(opt, 'IN2', zpk([], -par.w_pit * dampRes, 1 / par.iI), 2); % link mod output to PR opt = addLink(opt, 'Mod3', 'out', 'IN1', 'frA', 1); opt = addLink(opt, 'IN1', 'frA', 'IN2', 'frA', 1); opt = addLink(opt, 'IN2', 'frA', 'PRM', 'bk', 1); % PRC link to BS opt = addLink(opt, 'PRM', 'fr', 'PR2', 'frA', par.PR12); opt = addLink(opt, 'PR2', 'frA', 'PR3', 'frA', par.PR23); opt = addLink(opt, 'PR3', 'frA', 'BS', 'frA', par.PR3b); % link BS A-side outputs to and IX and IY back inputs opt = addLink(opt, 'BS', 'frA', 'IY', 'bk', par.Length.IY); opt = addLink(opt, 'BS', 'bkA', 'IX', 'bk', par.Length.IX); % link BS B-side inputs to and IX and IY back outputs opt = addLink(opt, 'IY', 'bk', 'BS', 'frB', par.Length.IY); opt = addLink(opt, 'IX', 'bk', 'BS', 'bkB', par.Length.IX); % BS link to SRM opt = addLink(opt, 'BS', 'bkB', 'SR3', 'frA', par.SR3b); opt = addLink(opt, 'SR3', 'frA', 'SR2', 'frA', par.SR23); opt = addLink(opt, 'SR2', 'frA', 'SRM', 'fr', par.SR12); % BS link to PRM opt = addLink(opt, 'BS', 'frB', 'PR3', 'frB', par.PR3b); opt = addLink(opt, 'PR3', 'frB', 'PR2', 'frB', par.PR23); opt = addLink(opt, 'PR2', 'frB', 'PRM', 'fr', par.PR12); opt = addLink(opt, 'PRM', 'bk', 'IN2', 'frB', 1); opt = addLink(opt, 'IN2', 'frB', 'IN1', 'frB', 1); % SRM link to BS opt = addLink(opt, 'SRM', 'fr', 'SR2', 'frB', par.SR12); opt = addLink(opt, 'SR2', 'frB', 'SR3', 'frB', par.SR23); opt = addLink(opt, 'SR3', 'frB', 'BS', 'bkA', par.SR3b); % link the arms opt = addLink(opt, 'IX', 'fr', 'EX', 'fr', par.Length.EX); opt = addLink(opt, 'EX', 'fr', 'IX', 'fr', par.Length.EX); opt = addLink(opt, 'IY', 'fr', 'EY', 'fr', par.Length.EY); opt = addLink(opt, 'EY', 'fr', 'IY', 'fr', par.Length.EY); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Define AS port (before the OMC) % Add BS with R = 0.99 ==> 99% of the power goes to the OMC, % 1% of the power is detected at the AS port, 99% goes to the OMC opt = addMirror(opt, 'ASsplit', 45, 0, 0.05, 0, 0, 0); % TUNE for AS power opt = addLink(opt, 'SRM', 'bk', 'ASsplit', 'fr', 3); %Check without SRM %opt = addLink(opt, 'BS', 'bkB', 'ASsplit', 'fr', 2.5); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Add OMC mirrors % Add lens before the OMC mirror % Mode matching: I want to match the basis before the telescope with the basis % afterwards (basis defined as q = z + z_0*i, with z distance past the waist and %z_0 Rayleigh range (Help on getLinkLengths, OpHG) fL = 0.559; % focal length opt = addTelescope(opt, 'OMCtel1', fL); opt = addMirror(opt, 'OMCa', 0, 1, pi/500, 10e-6, 0); opt = addMirror(opt, 'OMCb', 0, 1, pi/500, 10e-6, 0); opt = addLink(opt, 'ASsplit', 'fr', 'OMCtel1', 'in', 1.0); opt = addLink(opt, 'OMCtel1', 'out', 'OMCa', 'bk', fL - 0.185); opt = addLink(opt, 'OMCa', 'fr', 'OMCb', 'fr', 0.22); opt = addLink(opt, 'OMCb', 'fr', 'OMCa', 'fr', 0.22); % tell Optickle to use this cavity basis opt = setCavityBasis(opt, 'IX', 'EX'); opt = setCavityBasis(opt, 'IY', 'EY'); opt = setCavityBasis(opt, 'OMCa', 'OMCb'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%