function [opt,n,l,pr]=modelbLCGT(p) % Construct Optickle model of bLCGT % Author: Yuta Michimura opt = Optickle(p.vMod); % Objects [opt, n.Laser] = addSource(opt, 'Laser', (p.vMod==0)*sqrt(p.Pin)); [opt, n.Mod1]= addRFmodulator(opt, 'Mod1', p.fmod1, p.g1); [opt, n.Mod2]= addRFmodulator(opt, 'Mod2', p.fmod2, p.g2); [opt, n.IN1] = addBeamSplitter(opt, 'IN1', p.IN1aio, p.IN1Chr , p.IN1Thr ,p.IN1Lhr , p.IN1Rar, p.IN1Lmd, p.IN1Nmd); [opt, n.IN2] = addBeamSplitter(opt, 'IN2', p.IN2aio, p.IN2Chr , p.IN2Thr ,p.IN2Lhr , p.IN2Rar, p.IN2Lmd, p.IN2Nmd); [opt, n.PRM] = addMirror(opt, 'PRM', p.PRMaio, p.PRMChr , p.PRMThr ,p.PRMLhr , p.PRMRar, p.PRMLmd, p.PRMNmd); [opt, n.PR2] = addBeamSplitter(opt, 'PR2', p.PR2aio, p.PR2Chr , p.PR2Thr ,p.PR2Lhr , p.PR2Rar, p.PR2Lmd, p.PR2Nmd); [opt, n.PR3] = addBeamSplitter(opt, 'PR3', p.PR3aio, p.PR3Chr , p.PR3Thr ,p.PR3Lhr , p.PR3Rar, p.PR3Lmd, p.PR3Nmd); [opt, n.BS] = addBeamSplitter(opt, 'BS', p.BSaio, p.BSChr , p.BSThr ,p.BSLhr , p.BSRar, p.BSLmd, p.BSNmd); [opt, n.ITMX] = addMirror(opt, 'ITMX', p.ITMXaio, p.ITMXChr , p.ITMXThr ,p.ITMXLhr , p.ITMXRar, p.ITMXLmd, p.ITMXNmd); [opt, n.ITMY] = addMirror(opt, 'ITMY', p.ITMYaio, p.ITMYChr , p.ITMYThr ,p.ITMYLhr , p.ITMYRar, p.ITMYLmd, p.ITMYNmd); [opt, n.ETMX] = addMirror(opt, 'ETMX', p.ETMXaio, p.ETMXChr , p.ETMXThr ,p.ETMXLhr , p.ETMXRar, p.ETMXLmd, p.ETMXNmd); [opt, n.ETMY] = addMirror(opt, 'ETMY', p.ETMYaio, p.ETMYChr , p.ETMYThr ,p.ETMYLhr , p.ETMYRar, p.ETMYLmd, p.ETMYNmd); [opt, n.SR3] = addBeamSplitter(opt, 'SR3', p.SR3aio, p.SR3Chr , p.SR3Thr ,p.SR3Lhr , p.SR3Rar, p.SR3Lmd, p.SR3Nmd); [opt, n.SR2] = addBeamSplitter(opt, 'SR2', p.SR2aio, p.SR2Chr , p.SR2Thr ,p.SR2Lhr , p.SR2Rar, p.SR2Lmd, p.SR2Nmd); [opt, n.SRM] = addMirror(opt, 'SRM', p.SRMaio, p.SRMChr , p.SRMThr ,p.SRMLhr , p.SRMRar, p.SRMLmd, p.SRMNmd); [opt, n.ASSPLIT] = addMirror(opt, 'ASSPLIT', p.ASSPLITaio, p.ASSPLITChr , p.ASSPLITThr ,p.ASSPLITLhr , p.ASSPLITRar, p.ASSPLITLmd, p.ASSPLITNmd); % Links [opt, l.LasertoMod1] = addLink(opt, n.Laser, 'out', n.Mod1, 'in',0); [opt, l.Mod1toMod2] = addLink(opt, n.Mod1, 'out', n.Mod2, 'in',0); [opt, l.Mod2toIN1] = addLink(opt, n.Mod2, 'out', n.IN1, 'frA',0); [opt, l.IN1toIN2] = addLink(opt, n.IN1, 'frA', n.IN2, 'frA',0); [opt, l.IN2toPRM] = addLink(opt, n.IN2, 'frA', n.PRM, 'bk',0); [opt, l.PRMtoPR2] = addLink(opt, n.PRM, 'fr', n.PR2, 'frA', p.LPRM_PR2); [opt, l.PR2toPR3] = addLink(opt, n.PR2, 'frA', n.PR3, 'frA', p.LPR2_PR3); [opt, l.PR3toBS] = addLink(opt, n.PR3, 'frA', n.BS, 'frA', p.LPR3_BS); [opt, l.BStoITMX] = addLink(opt, n.BS, 'bkA', n.ITMX, 'bk', p.LBS_ITMX); [opt, l.ITMXtoBS] = addLink(opt, n.ITMX, 'bk', n.BS, 'bkB', p.LBS_ITMX); [opt, l.ITMXtoETMX] = addLink(opt, n.ITMX, 'fr', n.ETMX, 'fr', p.Larm); [opt, l.ETMXtoITMX] = addLink(opt, n.ETMX, 'fr', n.ITMX, 'fr', p.Larm); [opt, l.BStoITMY] = addLink(opt, n.BS, 'frA', n.ITMY, 'bk', p.LBS_ITMY); [opt, l.ITMYtoBS] = addLink(opt, n.ITMY, 'bk', n.BS, 'frB', p.LBS_ITMY); [opt, l.ITMYtoETMY] = addLink(opt, n.ITMY, 'fr', n.ETMY, 'fr', p.Larm); [opt, l.ETMYtoITMY] = addLink(opt, n.ETMY, 'fr', n.ITMY, 'fr', p.Larm); [opt, l.BStoPR3] = addLink(opt, n.BS, 'frB', n.PR3, 'frB', p.LPR3_BS); [opt, l.PR3toPR2] = addLink(opt, n.PR3, 'frB', n.PR2, 'frB', p.LPR2_PR3); [opt, l.PR2toPRM] = addLink(opt, n.PR2, 'frB', n.PRM, 'fr', p.LPRM_PR2); [opt, l.BStoSR3] = addLink(opt, n.BS, 'bkB', n.SR3, 'frB', p.LSR3_BS); [opt, l.SR3toSR2] = addLink(opt, n.SR3, 'frB', n.SR2, 'frB', p.LSR2_SR3); [opt, l.SR2toSRM] = addLink(opt, n.SR2, 'frB', n.SRM, 'fr', p.LSRM_SR2); [opt, l.SRMtoASSPLIT] = addLink(opt, n.SRM, 'bk', n.ASSPLIT, 'fr',0); [opt, l.SRMtoSR2] = addLink(opt, n.SRM, 'fr', n.SR2, 'frA', p.LSRM_SR2); [opt, l.SR2toSR3] = addLink(opt, n.SR2, 'frA', n.SR3, 'frA', p.LSR2_SR3); [opt, l.SR3toBS] = addLink(opt, n.SR3, 'frA', n.BS, 'bkA', p.LSR3_BS); % Probes % POP port [opt, n.AttPOP] = addSink(opt, 'AttPOP',p.AttPOP); [opt, n.POPHALF] = addMirror(opt, 'POPHALF', p.HALFaio, p.HALFChr , p.HALFThr ,p.HALFLhr , p.HALFRar, p.HALFLmd, p.HALFNmd); [opt, n.POPA] = addSink(opt, 'POPA'); [opt, n.POPB] = addSink(opt, 'POPB'); [opt, n.GouyPOPA] = addGouyPhase(opt, 'GouyPOPA', 0); [opt, n.GouyPOPB] = addGouyPhase(opt, 'GouyPOPB', 0); [opt, l.PR2toAttPOP] = addLink(opt, n.PR2, 'bkB', n.AttPOP,'in',0); [opt, l.AttPOPtoPOPHALF] = addLink(opt, n.AttPOP, 'out', n.POPHALF,'fr',0); [opt, l.POPHALFtoGouyPOPA] = addLink(opt, n.POPHALF, 'fr', n.GouyPOPA, 'in',0); [opt, l.GouyPOPAtoPOPA] = addLink(opt, n.GouyPOPA, 'out', n.POPA, 'in',0); [opt, l.POPHALFtoGouyPOPB] = addLink(opt, n.POPHALF, 'bk', n.GouyPOPB, 'in',0); [opt, l.GouyPOPBtoPOPB] = addLink(opt, n.GouyPOPB, 'out', n.POPB, 'in',0); [opt, pr.POP_ADC] = addProbeIn(opt, 'POP_ADC', n.POPA, 'in', 0, 0); [opt, pr.POP_BDC] = addProbeIn(opt, 'POP_BDC', n.POPB, 'in', 0, 0); [opt, pr.POP_A1I] = addProbeIn(opt, 'POP_A1I', n.POPA, 'in', p.fmod1, p.demodphasePOP1); [opt, pr.POP_A1Q] = addProbeIn(opt, 'POP_A1Q', n.POPA, 'in', p.fmod1, p.demodphasePOP1+90); [opt, pr.POP_B1I] = addProbeIn(opt, 'POP_B1I', n.POPB, 'in', p.fmod1, p.demodphasePOP1); [opt, pr.POP_B1Q] = addProbeIn(opt, 'POP_B1Q', n.POPB, 'in', p.fmod1, p.demodphasePOP1+90); [opt, pr.POP_A2I] = addProbeIn(opt, 'POP_A2I', n.POPA, 'in', p.fmod2, p.demodphasePOP2); [opt, pr.POP_A2Q] = addProbeIn(opt, 'POP_A2Q', n.POPA, 'in', p.fmod2, p.demodphasePOP2+90); [opt, pr.POP_B2I] = addProbeIn(opt, 'POP_B2I', n.POPB, 'in', p.fmod2, p.demodphasePOP2); [opt, pr.POP_B2Q] = addProbeIn(opt, 'POP_B2Q', n.POPB, 'in', p.fmod2, p.demodphasePOP2+90); % REFL port (DC, f1, f2) [opt, n.AttREFL] = addSink(opt, 'AttREFL',p.AttREFL); [opt, n.REFLHALF] = addMirror(opt, 'REFLHALF', p.HALFaio, p.HALFChr , p.HALFThr ,p.HALFLhr , p.HALFRar, p.HALFLmd, p.HALFNmd); [opt, n.REFLA] = addSink(opt, 'REFLA'); [opt, n.REFLB] = addSink(opt, 'REFLB'); [opt, n.GouyREFLA] = addGouyPhase(opt, 'GouyREFLA', 0); [opt, n.GouyREFLB] = addGouyPhase(opt, 'GouyREFLB', 0); [opt, l.PRMtoAttREFL] = addLink(opt, n.PRM, 'bk', n.AttREFL,'in',0); [opt, l.AttREFLtoREFLHALF] = addLink(opt, n.AttREFL, 'out', n.REFLHALF,'fr',0); [opt, l.REFLHALFtoGouyREFLA] = addLink(opt, n.REFLHALF, 'fr', n.GouyREFLA, 'in',0); [opt, l.GouyREFLAtoREFLA] = addLink(opt, n.GouyREFLA, 'out', n.REFLA, 'in',0); [opt, l.REFLHALFtoGouyREFLB] = addLink(opt, n.REFLHALF, 'bk', n.GouyREFLB, 'in',0); [opt, l.GouyREFLBtoREFLB] = addLink(opt, n.GouyREFLB, 'out', n.REFLB, 'in',0); [opt, pr.REFL_ADC] = addProbeIn(opt, 'REFL_ADC', n.REFLA, 'in', 0, 0); [opt, pr.REFL_BDC] = addProbeIn(opt, 'REFL_BDC', n.REFLB, 'in', 0, 0); [opt, pr.REFL_A1I] = addProbeIn(opt, 'REFL_A1I', n.REFLA, 'in', p.fmod1, p.demodphaseREFL1); [opt, pr.REFL_A1Q] = addProbeIn(opt, 'REFL_A1Q', n.REFLA, 'in', p.fmod1, p.demodphaseREFL1+90); [opt, pr.REFL_B1I] = addProbeIn(opt, 'REFL_B1I', n.REFLB, 'in', p.fmod1, p.demodphaseREFL1); [opt, pr.REFL_B1Q] = addProbeIn(opt, 'REFL_B1Q', n.REFLB, 'in', p.fmod1, p.demodphaseREFL1+90); [opt, pr.REFL_A2I] = addProbeIn(opt, 'REFL_A2I', n.REFLA, 'in', p.fmod2, p.demodphaseREFL2); [opt, pr.REFL_A2Q] = addProbeIn(opt, 'REFL_A2Q', n.REFLA, 'in', p.fmod2, p.demodphaseREFL2+90); [opt, pr.REFL_B2I] = addProbeIn(opt, 'REFL_B2I', n.REFLB, 'in', p.fmod2, p.demodphaseREFL2); [opt, pr.REFL_B2Q] = addProbeIn(opt, 'REFL_B2Q', n.REFLB, 'in', p.fmod2, p.demodphaseREFL2+90); % AS port (DC, f1) [opt, n.AttAS] = addSink(opt, 'AttAS',p.AttAS); [opt, n.ASHALF] = addMirror(opt, 'ASHALF', p.HALFaio, p.HALFChr , p.HALFThr ,p.HALFLhr , p.HALFRar, p.HALFLmd, p.HALFNmd); [opt, n.ASA] = addSink(opt, 'ASA'); [opt, n.ASB] = addSink(opt, 'ASB'); [opt, n.GouyASA] = addGouyPhase(opt, 'GouyASA', 0); [opt, n.GouyASB] = addGouyPhase(opt, 'GouyASB', 0); [opt, l.ASSPLITtoAttAS] = addLink(opt, n.ASSPLIT, 'bk', n.AttAS, 'in',0); [opt, l.AttAStoASHALF] = addLink(opt, n.AttAS, 'out', n.ASHALF, 'fr',0); [opt, l.ASHALFtoGouyASA] = addLink(opt, n.ASHALF, 'fr', n.GouyASA, 'in',0); [opt, l.GouyASAtoASA] = addLink(opt, n.GouyASA, 'out', n.ASA, 'in',0); [opt, l.ASHALFtoGouyASB] = addLink(opt, n.ASHALF, 'bk', n.GouyASB, 'in',0); [opt, l.GouyASBtoASB] = addLink(opt, n.GouyASB, 'out', n.ASB, 'in',0); [opt, pr.AS_ADC] = addProbeIn(opt, 'AS_ADC', n.ASA, 'in', 0, 0); [opt, pr.AS_BDC] = addProbeIn(opt, 'AS_BDC', n.ASB, 'in', 0, 0); [opt, pr.AS_A1I] = addProbeIn(opt, 'AS_A1I', n.ASA, 'in', p.fmod1, p.demodphaseAS1); [opt, pr.AS_A1Q] = addProbeIn(opt, 'AS_A1Q', n.ASA, 'in', p.fmod1, p.demodphaseAS1+90); [opt, pr.AS_B1I] = addProbeIn(opt, 'AS_B1I', n.ASB, 'in', p.fmod1, p.demodphaseAS1); [opt, pr.AS_B1Q] = addProbeIn(opt, 'AS_B1Q', n.ASB, 'in', p.fmod1, p.demodphaseAS1+90); % TRX port (DC) [opt, n.AttTRX] = addSink(opt, 'AttTRX',p.AttTRX); [opt, n.TRXHALF] = addMirror(opt, 'TRXHALF', p.HALFaio, p.HALFChr , p.HALFThr ,p.HALFLhr , p.HALFRar, p.HALFLmd, p.HALFNmd); [opt, n.TRXA] = addSink(opt, 'TRXA'); [opt, n.TRXB] = addSink(opt, 'TRXB'); [opt, n.GouyTRXA] = addGouyPhase(opt, 'GouyTRXA', 0); [opt, n.GouyTRXB] = addGouyPhase(opt, 'GouyTRXB', 0); [opt, l.ETMXtoAttTRX] = addLink(opt, n.ETMX, 'bk', n.AttTRX, 'in',0); [opt, l.AttTRXtoTRXHALF] = addLink(opt, n.AttTRX, 'out', n.TRXHALF, 'fr',0); [opt, l.TRXHALFtoGouyTRXA] = addLink(opt, n.TRXHALF, 'fr', n.GouyTRXA, 'in',0); [opt, l.GouyTRXAtoTRXA] = addLink(opt, n.GouyTRXA, 'out', n.TRXA, 'in',0); [opt, l.TRXHALFtoGouyTRXB] = addLink(opt, n.TRXHALF, 'bk', n.GouyTRXB, 'in',0); [opt, l.GouyTRXBtoTRXB] = addLink(opt, n.GouyTRXB, 'out', n.TRXB, 'in',0); [opt, pr.TRX_ADC] = addProbeIn(opt, 'TRX_ADC', n.TRXA, 'in', 0, 0); [opt, pr.TRX_BDC] = addProbeIn(opt, 'TRX_BDC', n.TRXB, 'in', 0, 0); % TRY port (DC) [opt, n.AttTRY] = addSink(opt, 'AttTRY',p.AttTRY); [opt, n.TRYHALF] = addMirror(opt, 'TRYHALF', p.HALFaio, p.HALFChr , p.HALFThr ,p.HALFLhr , p.HALFRar, p.HALFLmd, p.HALFNmd); [opt, n.TRYA] = addSink(opt, 'TRYA'); [opt, n.TRYB] = addSink(opt, 'TRYB'); [opt, n.GouyTRYA] = addGouyPhase(opt, 'GouyTRYA', 0); [opt, n.GouyTRYB] = addGouyPhase(opt, 'GouyTRYB', 0); [opt, l.ETMYtoAttTRY] = addLink(opt, n.ETMY, 'bk', n.AttTRY, 'in',0); [opt, l.AttTRYtoTRYHALF] = addLink(opt, n.AttTRY, 'out', n.TRYHALF, 'fr',0); [opt, l.TRYHALFtoGouyTRYA] = addLink(opt, n.TRYHALF, 'fr', n.GouyTRYA, 'in',0); [opt, l.GouyTRYAtoTRYA] = addLink(opt, n.GouyTRYA, 'out', n.TRYA, 'in',0); [opt, l.TRYHALFtoGouyTRYB] = addLink(opt, n.TRYHALF, 'bk', n.GouyTRYB, 'in',0); [opt, l.GouyTRYBtoTRYB] = addLink(opt, n.GouyTRYB, 'out', n.TRYB, 'in',0); [opt, pr.TRY_ADC] = addProbeIn(opt, 'TRY_ADC', n.TRYA, 'in', 0, 0); [opt, pr.TRY_BDC] = addProbeIn(opt, 'TRY_BDC', n.TRYB, 'in', 0, 0); % Probes for monitoring beam spot motion % put them for each mirror you are interested (put 2 for BeamSplitters(frA and frB)) [opt, pr.ETMX_BSM] = addProbeIn(opt, 'ETMX_BSM', n.ETMX, 'fr', 0, 0); [opt, pr.ETMY_BSM] = addProbeIn(opt, 'ETMY_BSM', n.ETMY, 'fr', 0, 0); [opt, pr.ITMX_BSM] = addProbeIn(opt, 'ITMX_BSM', n.ITMX, 'fr', 0, 0); [opt, pr.ITMY_BSM] = addProbeIn(opt, 'ITMY_BSM', n.ITMY, 'fr', 0, 0); [opt, pr.BS_BSMA] = addProbeIn(opt, 'BS_BSMA', n.BS, 'frA', 0, 0); [opt, pr.BS_BSMB] = addProbeIn(opt, 'BS_BSMB', n.BS, 'frB', 0, 0); [opt, pr.PR3_BSMA] = addProbeIn(opt, 'PR3_BSMA', n.PR3, 'frA', 0, 0); [opt, pr.PR3_BSMB] = addProbeIn(opt, 'PR3_BSMB', n.PR3, 'frB', 0, 0); [opt, pr.PR2_BSMA] = addProbeIn(opt, 'PR2_BSMA', n.PR2, 'frA', 0, 0); [opt, pr.PR2_BSMB] = addProbeIn(opt, 'PR2_BSMB', n.PR2, 'frB', 0, 0); if strfind(p.modelName,'bLCGT')>0 [opt, pr.PRM_BSM] = addProbeIn(opt, 'PRM_BSM', n.PRM, 'fr', 0, 0); [opt, pr.SR3_BSMA] = addProbeIn(opt, 'SR3_BSMA', n.SR3, 'frA', 0, 0); [opt, pr.SR3_BSMB] = addProbeIn(opt, 'SR3_BSMB', n.SR3, 'frB', 0, 0); [opt, pr.SR2_BSMA] = addProbeIn(opt, 'SR2_BSMA', n.SR2, 'frA', 0, 0); [opt, pr.SR2_BSMB] = addProbeIn(opt, 'SR2_BSMB', n.SR2, 'frB', 0, 0); [opt, pr.SRM_BSM] = addProbeIn(opt, 'SRM_BSM', n.SRM, 'fr', 0, 0); end %% Set Operating Point opt = setPosOffset(opt, n.PRM, p.posOffsetPRM); opt = setPosOffset(opt, n.SRM, p.posOffsetSRM); opt = setPosOffset(opt, n.ETMX, p.armOffset); opt = setPosOffset(opt, n.ETMY, -p.armOffset); %% Set cavity bases opt = setCavityBasis(opt, 'ITMX', 'ETMX'); opt = setCavityBasis(opt, 'ITMY', 'ETMY');