%% A function to return the LCGT Optickle Model function [opt,n,l,pr,dr]=modelLCGT(p) % Returns an optickle model of the old 40m % % --- Input --- % p is a structure containing parameters for the model (see param40mOld.m) % % --- Output --- % opt: Optickle model % n: a structure containing nodes. % l: a structure containing links. % pr: a structure containing probes. %{{{ %% Units & Constants ppm=1e-6; nm=1e-9; c=299792458; %}}} %{{{ %% Construct an Optickle Model opt = Optickle(p.vMod); c=opt.c; lambda=opt.lambda; %}}} %{{{ %% --- Laser --- [opt, n.Laser] = addSource(opt, 'Laser', (p.vMod==0)*sqrt(p.Pin) ); %}}} %{{{ %% --- AF Modulators for frequency and intensity noise simulation --- [opt, n.PM] = addModulator(opt, 'PM', i); [opt, n.AM] = addModulator(opt, 'AM', 1); % Link [opt,l.AM] = addLink(opt, n.Laser, 'out', n.AM, 'in', 1); [opt,l.PM] = addLink(opt, n.AM, 'out', n.PM, 'in', 1); %}}} %{{{ %% --- RF Modulators --- [opt, n.Mod1]= addRFmodulator(opt, 'Mod1', p.fmod1, p.g1); [opt, n.Mod2]= addRFmodulator(opt, 'Mod2', p.fmod2, p.g2); [opt, n.Mod3]= addRFmodulator(opt, 'Mod3', p.fmod3, p.g3); %}}} %{{{ %% ========= MZ ============ if p.useMZ % Add Mirrors % [opt, sn] = addMirror(opt, name, aio, Chr, Thr, Lhr, Rar, Lmd, Nmd) % [opt, sn] = addBeamSplitter(opt, name, aio, Chr, Thr, Lhr, Rar, Lmd, Nmd) [opt, n.MZBS1] = addBeamSplitter(opt, 'MZBS1', 45, 0, 0.5 , 0, 0); [opt, n.MZM1] = addMirror(opt, 'MZM1', 45, 0 , 0 , 0, 0); [opt, n.MZM2] = addMirror(opt, 'MZM2', 0, 0 , 0 , 50e-6, 50e-6); [opt, n.MZBS2] = addBeamSplitter(opt, 'MZBS2', 45, 0, 0.5 , 0, 0); % MZ Sinks [opt, n.MZREFL] = addSink(opt, 'MZREFL'); %Link Mod1/2 path [opt, l.PMtoMZBS1] = addLink(opt, n.PM, 'out', n.MZBS1, 'frA', 1); [opt, l.MZBS1toMod1] = addLink(opt, n.MZBS1, 'bkA', n.Mod1, 'in',0.5); [opt, l.Mod1toMZM1] = addLink(opt, n.Mod1, 'out', n.MZM1, 'fr', 0.5); [opt, l.MZM1toMod2] = addLink(opt, n.MZM1, 'fr', n.Mod2, 'in', 0.5); [opt, l.Mod2toMZBS2] = addLink(opt, n.Mod2, 'out', n.MZBS2, 'bkA', 0.5); %Link Mod3 path [opt, l.MZBS1toMod3] = addLink(opt, n.MZBS1, 'frA', n.Mod3, 'in', 0); [opt, l.Mod3toMZM2] = addLink(opt, n.Mod3, 'out', n.MZM2, 'fr', 0); [opt, l.MZM2toMZBS2] = addLink(opt, n.MZM2, 'fr', n.MZBS2, 'frA', 0); %Link Sinks [opt, l.MZREFL] = addLink(opt, n.MZBS2, 'bkA', n.MZREFL, 'in',0); % Add MZ PDs [opt, n.MZREFLDC] = addProbeIn(opt, 'MZ REFL DC', n.MZREFL, 'in', 0, 0); [opt, n.MZREFLRF] = addProbeIn(opt, 'MZ REFL RF', n.MZREFL, 'in', p.fmod1, p.MZdemod); end %}}} %{{{ %% ===== Serial modulation ===== if ~ p.useMZ [opt, l.PMtoMod1] = addLink(opt, n.PM, 'out', n.Mod1, 'in', 1); [opt, l.Mod1toMod2] = addLink(opt, n.Mod1, 'out', n.Mod2, 'in', 1); [opt, l.Mod2toMod3] = addLink(opt, n.Mod2, 'out', n.Mod3, 'in', 1); end %}}} %{{{ %% ========= Main IFO Mirrors ============== % Add Mirrors % [opt, sn] = addMirror(opt, name, aio, Chr, Thr, Lhr, Rar, Lmd, Nmd) % [opt, sn] = addBeamSplitter(opt, name, aio, Chr, Thr, Lhr, Rar, Lmd, Nmd) [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.SRM] = addMirror(opt, 'SRM', p.SRMaio, p.SRMChr , p.SRMThr ,p.SRMLhr , p.SRMRar, p.SRMLmd, p.SRMNmd); [opt, n.SR2] = addBeamSplitter(opt, 'SR2', p.SR2aio, p.SR2Chr , p.SR2Thr ,p.SR2Lhr , p.SR2Rar, p.SR2Lmd, p.SR2Nmd); [opt, n.SR3] = addBeamSplitter(opt, 'SR3', p.SR3aio, p.SR3Chr , p.SR3Thr ,p.SR3Lhr , p.SR3Rar, p.SR3Lmd, p.SR3Nmd); [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); %}}} %{{{ % -- PO mirrors for scattering light injection -- [opt, n.MICHX_PO] = addBeamSplitter(opt, 'MICHX_PO', 45, 0 ,p.MICHX_POThr, 0, 0, 0, 1); [opt, n.REFL_PO] = addBeamSplitter(opt, 'REFL_PO', 45, 0 ,p.REFL_POThr, 0, 0, 0, 1); %}}} %{{{ % ======== Add mechanical transfer functions ======== if ~p.fixedOptics opt = setMechTF(opt, 'PRM', p.tfPRM); opt = setMechTF(opt, 'PRM', p.tfPRMPit,2); opt = setMechTF(opt, 'PR2', p.tfPR2); opt = setMechTF(opt, 'PR2', p.tfPR2Pit,2); opt = setMechTF(opt, 'PR3', p.tfPR3); opt = setMechTF(opt, 'PR3', p.tfPR3Pit,2); opt = setMechTF(opt, 'SRM', p.tfSRM); opt = setMechTF(opt, 'SRM', p.tfSRMPit,2); opt = setMechTF(opt, 'SR2', p.tfSR2); opt = setMechTF(opt, 'SR2', p.tfSR2Pit,2); opt = setMechTF(opt, 'SR3', p.tfSR3); opt = setMechTF(opt, 'SR3', p.tfSR3Pit,2); opt = setMechTF(opt, 'BS', p.tfBS); opt = setMechTF(opt, 'BS', p.tfBSPit,2); opt = setMechTF(opt, 'ITMX', p.tfTM); opt = setMechTF(opt, 'ITMX', p.tfTMPit,2); opt = setMechTF(opt, 'ITMY', p.tfTM); opt = setMechTF(opt, 'ITMY', p.tfTMPit,2); opt = setMechTF(opt, 'ETMX', p.tfTM); opt = setMechTF(opt, 'ETMX', p.tfTMPit,2); opt = setMechTF(opt, 'ETMY', p.tfTM); opt = setMechTF(opt, 'ETMY', p.tfTMPit,2); end %}}} %{{{ % ======== Link Main IFO Mirrors ================ %Connect the modulation part to REFL_PO if p.useMZ [opt, l.REFL_PO_in] = addLink(opt, n.MZBS2, 'frA', n.REFL_PO, 'frA', 0); else [opt, l.REFL_PO_in] = addLink(opt, n.Mod3, 'out', n.REFL_PO, 'frA', 0); end %Link REFL PO to PRM [opt, l.PRMbk] = addLink(opt, n.REFL_PO, 'bkA', n.PRM, 'bk', 0); %Link PRM to REFL PO [opt, l.PRMtoREFL_PO] = addLink(opt, n.PRM, 'bk', n.REFL_PO, 'bkB', 0); %Link between PRM and PR2 [opt, l.PRMtoPR2] = addLink(opt, n.PRM, 'fr', n.PR2, 'frA', p.LPRM_PR2); [opt, l.PR2toPRM] = addLink(opt, n.PR2, 'frB', n.PRM, 'fr', p.LPRM_PR2); %Link between PR2 and PR3 [opt, l.PR2toPR3] = addLink(opt, n.PR2, 'frA', n.PR3, 'frA', p.LPR2_PR3); [opt, l.PR3toPR2] = addLink(opt, n.PR3, 'frB', n.PR2, 'frB', p.LPR2_PR3); %Link between PR3 and BS [opt, l.PR3toBS] = addLink(opt, n.PR3, 'frA', n.BS, 'frA', p.LPR3_BS); [opt, l.BStoPR3] = addLink(opt, n.BS, 'frB', n.PR3, 'frB', p.LPR3_BS); %Link between BS and MICHX_PO [opt, l.BStoMICHX_PO] = addLink(opt, n.BS, 'bkA', n.MICHX_PO, 'frA', p.LBS_ITMX); [opt, l.MICHX_POtoBS] = addLink(opt, n.MICHX_PO, 'frB', n.BS, 'bkB', p.LBS_ITMX); %Link between MICHX_PO and ITMX [opt, l.MICHX_POtoITMX] = addLink(opt, n.MICHX_PO, 'bkA', n.ITMX, 'bk', 0); [opt, l.ITMXtoMICHX_PO] = addLink(opt, n.ITMX, 'bk', n.MICHX_PO, 'bkB', 0); %Link between ITMX and ETMX [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); %Link between BS and ITMY [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); %Link between ITMY and ETMY [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); %Link between BS and SR3 [opt, l.SR3toBS] = addLink(opt, n.SR3, 'frA', n.BS, 'bkA', p.LSR3_BS); [opt, l.BStoSR3] = addLink(opt, n.BS, 'bkB', n.SR3, 'frB', p.LSR3_BS); %Link between SR2 and SR3 [opt, l.SR2toSR3] = addLink(opt, n.SR2, 'frA', n.SR3, 'frA', p.LSR2_SR3); [opt, l.SR3toSR2] = addLink(opt, n.SR3, 'frB', n.SR2, 'frB', p.LSR2_SR3); %Link between SRM and SR2 [opt, l.SRMtoSR2] = addLink(opt, n.SRM, 'fr', n.SR2, 'frA', p.LSRM_SR2); [opt, l.SR2toSRM] = addLink(opt, n.SR2, 'frB', n.SRM, 'fr', p.LSRM_SR2); %}}} %{{{ % ==== Scattered light injection ===== %Scattered light is reflected by a steering mirror before injected to the %interferometer. The position of this mirror is used to set the relative %phase of the SCL and the main carrier. if p.do_SCL %{{{ ETMX %Scattered light source [opt, n.SCL_ETMX] = addSource(opt, 'SCL_ETMX', (p.SCL_vRF)*p.EsETMX/sqrt(p.ETMXThr) ); %Phase modulator [opt, n.PM_SCL_ETMX] = addModulator(opt, 'PM_SCL_ETMX', i); %Link them [opt,l.SCL_ETMX] = addLink(opt, n.SCL_ETMX, 'out', n.PM_SCL_ETMX, 'in', 1); %Steering Mirror [opt, n.SCL_STR_ETMX] = addMirror(opt, 'SCL_STR_ETMX', 0, 0, 0, 0, 0, 0, 1.45); [opt, l.SCL_STR_ETMX] = addLink(opt, n.PM_SCL_ETMX, 'out', n.SCL_STR_ETMX, 'fr', 1); %Inject from ETMX AR [opt, l.SCLtoETMX] = addLink(opt, n.SCL_STR_ETMX, 'fr', n.ETMX, 'bk', 1); % Set the relative phase to the main carrier opt = setPosOffset(opt, n.SCL_STR_ETMX, p.SCL_ETMX_OFS); %}}} %{{{ PR2 %Scattered light source [opt, n.SCL_PR2] = addSource(opt, 'SCL_PR2', (p.SCL_vRF)*p.EsPR2/sqrt(p.PR2Thr) ); %Phase modulator [opt, n.PM_SCL_PR2] = addModulator(opt, 'PM_SCL_PR2', i); %Link them [opt,l.SCL_PR2] = addLink(opt, n.SCL_PR2, 'out', n.PM_SCL_PR2, 'in', 1); %Steering Mirror [opt, n.SCL_STR_PR2] = addMirror(opt, 'SCL_STR_PR2', 0, 0, 0, 0, 0, 0, 1.45); [opt, l.SCL_STR_PR2] = addLink(opt, n.PM_SCL_PR2, 'out', n.SCL_STR_PR2, 'fr', 1); %Inject from PR2 AR [opt, l.SCLtoPR2] = addLink(opt, n.SCL_STR_PR2, 'fr', n.PR2, 'bkA', 1); % Set the relative phase to the main carrier opt = setPosOffset(opt, n.SCL_STR_PR2, p.SCL_PR2_OFS); %}}} %{{{ PRM AR if p.REFL_POThr < 1 [opt, n.SCL_PRMAR] = addSource(opt, 'SCL_PRMAR', (p.SCL_vRF)* ... p.EsPRMAR/sqrt(1-p.REFL_POThr) ); else [opt, n.SCL_PRMAR] = addSource(opt, 'SCL_PRMAR', (p.SCL_vRF)*0); end %Scattered light source %Phase modulator [opt, n.PM_SCL_PRMAR] = addModulator(opt, 'PM_SCL_PRMAR', i); %Link them [opt,l.SCL_PRMAR] = addLink(opt, n.SCL_PRMAR, 'out', n.PM_SCL_PRMAR, 'in', 1); %Steering Mirror [opt, n.SCL_STR_PRMAR] = addMirror(opt, 'SCL_STR_PRMAR', 0, 0, 0, 0, 0, 0, 1.45); [opt, l.SCL_STR_PRMAR] = addLink(opt, n.PM_SCL_PRMAR, 'out', n.SCL_STR_PRMAR, 'fr', 1); %Inject from REFL_PO AR [opt, l.SCLtoPRMAR] = addLink(opt, n.SCL_STR_PRMAR, 'fr', n.REFL_PO, 'bkA', 1); % Set the relative phase to the main carrier opt = setPosOffset(opt, n.SCL_STR_PRMAR, p.SCL_PRMAR_OFS); %}}} %{{{ REFL if p.REFL_POThr < 1 [opt, n.SCL_REFL] = addSource(opt, 'SCL_REFL', (p.SCL_vRF)* ... p.EsREFL/sqrt(p.REFL_POThr) ); else [opt, n.SCL_REFL] = addSource(opt, 'SCL_REFL', (p.SCL_vRF)*0); end %Scattered light source %Phase modulator [opt, n.PM_SCL_REFL] = addModulator(opt, 'PM_SCL_REFL', i); %Link them [opt,l.SCL_REFL] = addLink(opt, n.SCL_REFL, 'out', n.PM_SCL_REFL, 'in', 1); %Steering Mirror [opt, n.SCL_STR_REFL] = addMirror(opt, 'SCL_STR_REFL', 0, 0, 0, 0, 0, 0, 1.45); [opt, l.SCL_STR_REFL] = addLink(opt, n.PM_SCL_REFL, 'out', n.SCL_STR_REFL, 'fr', 1); %Inject from REFL_PO HR [opt, l.SCLtoREFL] = addLink(opt, n.SCL_STR_REFL, 'fr', n.REFL_PO, 'frB', 1); % Set the relative phase to the main carrier opt = setPosOffset(opt, n.SCL_STR_REFL, p.SCL_REFL_OFS); %}}} %{{{ SR2 %Scattered light source [opt, n.SCL_SR2] = addSource(opt, 'SCL_SR2', (p.SCL_vRF)*p.EsSR2/sqrt(p.SR2Thr) ); %Phase modulator [opt, n.PM_SCL_SR2] = addModulator(opt, 'PM_SCL_SR2', i); %Link them [opt,l.SCL_SR2] = addLink(opt, n.SCL_SR2, 'out', n.PM_SCL_SR2, 'in', 1); %Steering Mirror [opt, n.SCL_STR_SR2] = addMirror(opt, 'SCL_STR_SR2', 0, 0, 0, 0, 0, 0, 1.45); [opt, l.SCL_STR_SR2] = addLink(opt, n.PM_SCL_SR2, 'out', n.SCL_STR_SR2, 'fr', 1); %Inject from SR2 AR [opt, l.SCLtoSR2] = addLink(opt, n.SCL_STR_SR2, 'fr', n.SR2, 'bkA', 1); % Set the relative phase to the main carrier opt = setPosOffset(opt, n.SCL_STR_SR2, p.SCL_SR2_OFS); %}}} %{{{ SRM AR %Scattered light source [opt, n.SCL_SRMAR] = addSource(opt, 'SCL_SRMAR', (p.SCL_vRF)*p.EsSRMAR); %Phase modulator [opt, n.PM_SCL_SRMAR] = addModulator(opt, 'PM_SCL_SRMAR', i); %Link them [opt,l.SCL_SRMAR] = addLink(opt, n.SCL_SRMAR, 'out', n.PM_SCL_SRMAR, 'in', 1); %Steering Mirror [opt, n.SCL_STR_SRMAR] = addMirror(opt, 'SCL_STR_SRMAR', 0, 0, 0, 0, 0, 0, 1.45); [opt, l.SCL_STR_SRMAR] = addLink(opt, n.PM_SCL_SRMAR, 'out', n.SCL_STR_SRMAR, 'fr', 1); %Inject from SR2 AR [opt, l.SCLtoSRMAR] = addLink(opt, n.SCL_STR_SRMAR, 'fr', n.SRM, 'bk', 1); % Set the relative phase to the main carrier opt = setPosOffset(opt, n.SCL_STR_SRMAR, p.SCL_SRMAR_OFS); %}}} %{{{ ITMtoBS %Scattered light source if p.MICHX_POThr < 1 [opt, n.SCL_ITMtoBS] = addSource(opt, 'SCL_ITMtoBS', (p.SCL_vRF)* ... p.EsITMtoBS/sqrt(1-p.MICHX_POThr) ); else [opt, n.SCL_ITMtoBS] = addSource(opt, 'SCL_ITMtoBS', (p.SCL_vRF)*0); end %Phase modulator [opt, n.PM_SCL_ITMtoBS] = addModulator(opt, 'PM_SCL_ITMtoBS', i); %Link them [opt,l.SCL_ITMtoBS] = addLink(opt, n.SCL_ITMtoBS, 'out', n.PM_SCL_ITMtoBS, 'in', 1); %Steering Mirror [opt, n.SCL_STR_ITMtoBS] = addMirror(opt, 'SCL_STR_ITMtoBS', 0, 0, 0, 0, 0, 0, 1.45); [opt, l.SCL_STR_ITMtoBS] = addLink(opt, n.PM_SCL_ITMtoBS, 'out', n.SCL_STR_ITMtoBS, 'fr', 1); %Inject from MICHX_PO HR [opt, l.SCLtoITMtoBS] = addLink(opt, n.SCL_STR_ITMtoBS, 'fr', n.MICHX_PO, 'frB', 1); % Set the relative phase to the main carrier opt = setPosOffset(opt, n.SCL_STR_ITMtoBS, p.SCL_ITMtoBS_OFS); %}}} %{{{ ITMAR %Scattered light source if p.MICHX_POThr < 1 [opt, n.SCL_ITMAR] = addSource(opt, 'SCL_ITMAR', (p.SCL_vRF)* ... p.EsITMAR/sqrt(1-p.MICHX_POThr) ); else [opt, n.SCL_ITMAR] = addSource(opt, 'SCL_ITMAR', (p.SCL_vRF)*0); end %Phase modulator [opt, n.PM_SCL_ITMAR] = addModulator(opt, 'PM_SCL_ITMAR', i); %Link them [opt,l.SCL_ITMAR] = addLink(opt, n.SCL_ITMAR, 'out', n.PM_SCL_ITMAR, 'in', 1); %Steering Mirror [opt, n.SCL_STR_ITMAR] = addMirror(opt, 'SCL_STR_ITMAR', 0, 0, 0, 0, 0, 0, 1.45); [opt, l.SCL_STR_ITMAR] = addLink(opt, n.PM_SCL_ITMAR, 'out', n.SCL_STR_ITMAR, 'fr', 1); %Inject from MICHX_PO HR [opt, l.SCLtoITMAR] = addLink(opt, n.SCL_STR_ITMAR, 'fr', n.MICHX_PO, 'bkA', 1); % Set the relative phase to the main carrier opt = setPosOffset(opt, n.SCL_STR_ITMAR, p.SCL_ITMAR_OFS); %}}} end %}}} %{{{ %% ======= AS Pickoff ======== %Add a Pickoff [opt, n.ASPOM] = addMirror(opt, 'ASPOM', p.ASPOMaio, p.ASPOMChr , ... p.ASPOMThr ,p.ASPOMLhr , p.ASPOMRar, p.ASPOMLmd, p.ASPOMNmd); %Link from ASPO to ASPO [opt, l.SRMtoASPOM] = addLink(opt, n.SRM, 'bk', n.ASPOM, 'fr', 1.0); %}}} %{{{ %% ======= OMC ================ %Add mirrors [opt, n.OMC1] = addMirror(opt, 'OMC1', p.OMC1aio, p.OMC1Chr , p.OMC1Thr ,p.OMC1Lhr , p.OMC1Rar, p.OMC1Lmd, p.OMC1Nmd); [opt, n.OMC2] = addMirror(opt, 'OMC2', p.OMC2aio, p.OMC2Chr , p.OMC2Thr ,p.OMC2Lhr , p.OMC2Rar, p.OMC2Lmd, p.OMC2Nmd); %Link from ASPO to OMC1 [opt, l.ASPOMtoOMC1] = addLink(opt, n.ASPOM, 'bk', n.OMC1, 'bk', 1.0); %Link between OMC1 and OMC2 [opt, l.OMC1toOMC2] = addLink(opt, n.OMC1, 'fr', n.OMC2, 'fr', p.LOMC); [opt, l.OMC2toOMC1] = addLink(opt, n.OMC2, 'fr', n.OMC1, 'fr', p.LOMC); %}}} %{{{ %% ======= Sinks ============== %{{{ REFL % ------ REFL Port ------ % % There are 4 PDs at the REFL port. % One attenuator is shared by all the PDs. % It is used to adjust the overall light power. % In order to adjust the ratio of the power falling % on each detector, the reflectivity of the BSs should % be adjusted, such as p.REFLBS1_R. % This may not be a realistic situation, but this method saves % the number of field links, compared to having an attenuator for each % PD, thus increase the computational speed. % % | % ATTN % | % v % | % PD4 <--/----/----/ % | | | % v v v % PD3 PD2 PD1 % % PDs are assigned to the following frequencies. % PD1 -> REFL_1, PD2 -> REFL_2, PD3 -> REFL_1D, PD4 -> REFL_2D % % For example, if you want to use only REFL_1, REFL_1D and REFL_2D % for signal extraction. Then set the reflectivities of the BSs as % follows: % p.REFLBS1_R = 1-1/3 % p.REFLBS2_R = 0 % p.REFLBS3_R = 1/2 [opt, n.REFL_ATTN] = addSink(opt, 'REFL_ATTN', p.REFL_ATTN); [opt, l.REFL_ATTN] = addLink(opt, n.REFL_PO, 'frB', n.REFL_ATTN, 'in', 0); [opt, n.REFL1] = addSink(opt, 'REFL1'); [opt, n.REFL2] = addSink(opt, 'REFL2'); [opt, n.REFL3] = addSink(opt, 'REFL3'); [opt, n.REFL4] = addSink(opt, 'REFL4'); [opt, n.REFLBS1] = addMirror(opt, 'REFLBS1',45,0,1-p.REFLBS1_R,0,0,0,1.45); [opt, n.REFLBS2] = addMirror(opt, 'REFLBS2',45,0,1-p.REFLBS2_R,0,0,0,1.45); [opt, n.REFLBS3] = addMirror(opt, 'REFLBS3',45,0,1-p.REFLBS3_R,0,0,0,1.45); [opt, l.REFL_ATTNtoREFLBS1] = addLink(opt, n.REFL_ATTN, 'out', n.REFLBS1, 'fr', 1); [opt, l.REFL1] = addLink(opt, n.REFLBS1, 'bk', n.REFL1, 'in', 0); [opt, l.REFLBS1toREFLBS2] = addLink(opt, n.REFLBS1, 'fr', n.REFLBS2, 'fr', 0); [opt, l.REFL2] = addLink(opt, n.REFLBS2, 'fr', n.REFL2, 'in', 0); [opt, l.REFLBS2toREFLBS3] = addLink(opt, n.REFLBS2, 'bk', n.REFLBS3, 'fr', 0); [opt, l.REFL3] = addLink(opt, n.REFLBS3, 'fr', n.REFL3, 'in', 0); [opt, l.REFL4] = addLink(opt, n.REFLBS3, 'bk', n.REFL4, 'in', 0); %}}} %{{{ POP %----- POP -------- % % There are 2 PDs at the POP port. % One attenuator is shared by all the PDs. % It is used to adjust the overall light power. % In order to adjust the ratio of the power falling % on each detector, the reflectivity of the BSs should % be adjusted, such as p.POPBS1_R. % This may not be a realistic situation, but this method saves % the number of field links, compared to having an attenuator for each % PD, thus increase the computational speed. % % | % ATTN % | % v % | % PD2 <----/ % | % v % PD1 [opt, n.POP_ATTN] = addSink(opt, 'POP_ATTN', p.POP_ATTN); [opt, l.POP_ATTN] = addLink(opt, n.PR2, 'bkB', n.POP_ATTN, 'in', 0); % POP is the transmission of PR2, from PR3 [opt, n.POP1] = addSink(opt, 'POP1'); [opt, n.POP2] = addSink(opt, 'POP2'); [opt, n.POPBS1] = addMirror(opt, 'POPBS1',45,0,1-p.POPBS1_R,0,0,0,1.45); [opt, l.POP_ATTNtoPOPBS1] = addLink(opt, n.POP_ATTN, 'out', n.POPBS1, 'fr', 1); [opt, l.POP1] = addLink(opt, n.POPBS1, 'bk', n.POP1, 'in', 0); [opt, l.POP2] = addLink(opt, n.POPBS1, 'fr', n.POP2, 'in', 0); %}}} %{{{ AS % ----- AS Port --------- [opt, n.ASPO] = addSink(opt, 'ASPO'); [opt, l.ASPO] = addLink(opt, n.ASPOM, 'fr', n.ASPO, 'in', 0); [opt, n.OMCREFL] = addSink(opt, 'OMCREFL'); [opt, l.OMCREFL] = addLink(opt, n.OMC1, 'bk', n.OMCREFL, 'in', 0); [opt, n.AS_ATTN] = addSink(opt, 'AS_ATTN', 1-p.Qeff); [opt, l.AS_ATTN] = addLink(opt, n.OMC2, 'bk', n.AS_ATTN, 'in', 0); [opt, n.OMCTR] = addSink(opt, 'OMCTR'); [opt, l.OMCTR] = addLink(opt, n.AS_ATTN, 'out', n.OMCTR, 'in', 0); %}}} %{{{ POX % ----- POX ------ [opt, n.POX] = addSink(opt, 'POX'); [opt, l.POX] = addLink(opt, n.ITMX, 'po', n.POX, 'in', 0); %}}} %{{{POY % ----- POY ------ [opt, n.POY] = addSink(opt, 'POY'); [opt, l.POY] = addLink(opt, n.ITMY, 'po', n.POY, 'in', 0); %}}} %}}} %{{{ %% ======= Probes ========= %REFL [opt, pr.REFL_DC] = addProbeIn(opt, 'REFL_DC', n.REFL1, 'in', 0, 0); [opt, pr.REFL_1I] = addProbeIn(opt, 'REFL_1I', n.REFL1, 'in', p.fmod1, p.dpREFL1); [opt, pr.REFL_1Q] = addProbeIn(opt, 'REFL_1Q', n.REFL1, 'in', p.fmod1, p.dpREFL1+90); [opt, pr.REFL_2I] = addProbeIn(opt, 'REFL_2I', n.REFL2, 'in', p.fmod2, p.dpREFL2); [opt, pr.REFL_2Q] = addProbeIn(opt, 'REFL_2Q', n.REFL2, 'in', p.fmod2, p.dpREFL2+90); [opt, pr.REFL_1DpI] = addProbeIn(opt, 'REFL_1DpI', n.REFL3, 'in', p.fmod1+p.fmod3, p.dpREFL1Dp); [opt, pr.REFL_1DpQ] = addProbeIn(opt, 'REFL_1DpQ', n.REFL3, 'in', p.fmod1+p.fmod3, p.dpREFL1Dp+90); [opt, pr.REFL_1DmI] = addProbeIn(opt, 'REFL_1DmI', n.REFL3, 'in', abs(p.fmod1-p.fmod3), p.dpREFL1Dm); [opt, pr.REFL_1DmQ] = addProbeIn(opt, 'REFL_1DmQ', n.REFL3, 'in', abs(p.fmod1-p.fmod3), p.dpREFL1Dm+90); [opt, pr.REFL_2DpI] = addProbeIn(opt, 'REFL_2DpI', n.REFL4, 'in', p.fmod2+p.fmod3, p.dpREFL2Dp); [opt, pr.REFL_2DpQ] = addProbeIn(opt, 'REFL_2DpQ', n.REFL4, 'in', p.fmod2+p.fmod3, p.dpREFL2Dp+90); [opt, pr.REFL_2DmI] = addProbeIn(opt, 'REFL_2DmI', n.REFL4, 'in', abs(p.fmod2-p.fmod3), p.dpREFL2Dm); [opt, pr.REFL_2DmQ] = addProbeIn(opt, 'REFL_2DmQ', n.REFL4, 'in', abs(p.fmod2-p.fmod3), p.dpREFL2Dm+90); %3rd Harmonics [opt, pr.REFL_1ThI] = addProbeIn(opt, 'REFL_1ThI', n.REFL1, 'in', 3*p.fmod1, p.dpREFL1Th); [opt, pr.REFL_1ThQ] = addProbeIn(opt, 'REFL_1ThQ', n.REFL1, 'in', 3*p.fmod1, p.dpREFL1Th+90); [opt, pr.REFL_2ThI] = addProbeIn(opt, 'REFL_2ThI', n.REFL1, 'in', 3*p.fmod2, p.dpREFL2Th); [opt, pr.REFL_2ThQ] = addProbeIn(opt, 'REFL_2ThQ', n.REFL1, 'in', 3*p.fmod2, p.dpREFL2Th+90); %POP [opt, pr.POP_1I] = addProbeIn(opt, 'POP_1I', n.POP1, 'in', p.fmod1, p.dpPOP1); [opt, pr.POP_1Q] = addProbeIn(opt, 'POP_1Q', n.POP1, 'in', p.fmod1, p.dpPOP1+90); [opt, pr.POP_2I] = addProbeIn(opt, 'POP_2I', n.POP2, 'in', p.fmod2, p.dpPOP2); [opt, pr.POP_2Q] = addProbeIn(opt, 'POP_2Q', n.POP2, 'in', p.fmod2, p.dpPOP2+90); [opt, pr.POP_1ThI] = addProbeIn(opt, 'POP_1ThI', n.POP1, 'in', 3*p.fmod1, p.dpPOP1Th); [opt, pr.POP_1ThQ] = addProbeIn(opt, 'POP_1ThQ', n.POP1, 'in', 3*p.fmod1, p.dpPOP1Th+90); [opt, pr.POP_2ThI] = addProbeIn(opt, 'POP_2ThI', n.POP1, 'in', 3*p.fmod2, p.dpPOP2Th); [opt, pr.POP_2ThQ] = addProbeIn(opt, 'POP_2ThQ', n.POP1, 'in', 3*p.fmod2, p.dpPOP2Th+90); %AS PO [opt, pr.ASPO_1I] = addProbeIn(opt, 'ASPO_1I', n.ASPO, 'in', p.fmod1, p.dpASPO1); [opt, pr.ASPO_1Q] = addProbeIn(opt, 'ASPO_1Q', n.ASPO, 'in', p.fmod1, p.dpASPO1+90); %AS [opt, pr.AS_DC] = addProbeIn(opt, 'AS_DC', n.OMCTR, 'in', 0, 0); [opt, pr.AS_1I] = addProbeIn(opt, 'AS_1I', n.OMCREFL, 'in', p.fmod1, p.dpAS1); [opt, pr.AS_1Q] = addProbeIn(opt, 'AS_1Q', n.OMCREFL, 'in', p.fmod1, p.dpAS1+90); [opt, pr.AS_2I] = addProbeIn(opt, 'AS_2I', n.OMCREFL, 'in', p.fmod2, p.dpAS2); [opt, pr.AS_2Q] = addProbeIn(opt, 'AS_2Q', n.OMCREFL, 'in', p.fmod2, p.dpAS2+90); %POX [opt, pr.POX_1I] = addProbeIn(opt, 'POX_1I', n.POX, 'in', p.fmod1, p.dpPOX1); [opt, pr.POX_1Q] = addProbeIn(opt, 'POX_1Q', n.POX, 'in', p.fmod1, p.dpPOX1+90); %POY [opt, pr.POY_1I] = addProbeIn(opt, 'POY_1I', n.POY, 'in', p.fmod1, p.dpPOY1); [opt, pr.POY_1Q] = addProbeIn(opt, 'POY_1Q', n.POY, 'in', p.fmod1, p.dpPOY1+90); %}}} %{{{ %% Set Operating Point opt = setPosOffset(opt, n.PRM, p.posOffsetPRM); opt = setPosOffset(opt, n.SRM, p.posOffsetSRM); opt = setPosOffset(opt, 'ETMX', p.armOffset+p.MICHoffset); opt = setPosOffset(opt, 'ETMY', -p.armOffset-p.MICHoffset); opt = setPosOffset(opt, 'ITMX', -p.MICHoffset); opt = setPosOffset(opt, 'ITMY', p.MICHoffset); %}}} %{{{ %% ===== Get Drive Names, Ndrive and Nlink ==== drvNames=getDriveNames(opt); Ndrive=opt.Ndrive; Nlink=opt.Nlink; dr.ITMX=getDriveNumbers(opt,{'ITMX'}); dr.ITMY=getDriveNumbers(opt,{'ITMY'}); dr.ETMX=getDriveNumbers(opt,{'ETMX'}); dr.ETMY=getDriveNumbers(opt,{'ETMY'}); dr.BS=getDriveNumbers(opt,{'BS'}); dr.PRM=getDriveNumbers(opt,{'PRM'}); dr.SRM=getDriveNumbers(opt,{'SRM'}); dr.PR2=getDriveNumbers(opt,{'PR2'}); dr.PR3=getDriveNumbers(opt,{'PR3'}); dr.SR2=getDriveNumbers(opt,{'SR2'}); dr.SR3=getDriveNumbers(opt,{'SR3'}); dr.PM=getDriveNumbers(opt,{'PM'}); dr.AM=getDriveNumbers(opt,{'AM'}); if p.do_SCL dr.PM_SCL_ETMX=getDriveNumbers(opt,{'PM_SCL_ETMX'}); dr.PM_SCL_PR2=getDriveNumbers(opt,{'PM_SCL_PR2'}); dr.PM_SCL_SR2=getDriveNumbers(opt,{'PM_SCL_SR2'}); dr.PM_SCL_ITMtoBS=getDriveNumbers(opt,{'PM_SCL_ITMtoBS'}); dr.PM_SCL_ITMAR=getDriveNumbers(opt,{'PM_SCL_ITMAR'}); end dr.f1amp=getDriveNumbers(opt,{'Mod1.amp'}); dr.f1phase=getDriveNumbers(opt,{'Mod1.phase'}); dr.f2amp=getDriveNumbers(opt,{'Mod2.amp'}); dr.f2phase=getDriveNumbers(opt,{'Mod2.phase'}); dr.f3amp=getDriveNumbers(opt,{'Mod3.amp'}); dr.f3phase=getDriveNumbers(opt,{'Mod3.phase'}); %}}}