Attachment 'C1lentickle.m'
Download 1 %
2 % C1lentickle1.m
3 %
4 % * OLT
5 % * PM coupling
6 % * AM coupling
7 % * Seismic noise
8 % Feb 2012 KK
9 %
10 %
11
12
13 setupLentickle;
14
15 %% Run the lentickle engine
16
17 % interferometer model
18 opt = optC1(paramC1DRMI); % create the opt object
19 opt = probesC1_00(opt, paramC1DRMI);
20
21 % control model
22 cucumber = C1cucumber(opt); % create the cucumber structure
23 % look at exampleMICHcucumber.m for
24 % more info about the cucumber.
25 % frequency vector
26 fHigh = 10000; fLow = 0.5;
27 f = logspace(log10(fLow),log10(fHigh),500).'; % choose the frequency array we will use
28
29 % get the closed loop results
30
31 results = lentickleEngine(cucumber,[],f); % calculate all results
32
33 %% Transfer functions
34 % All the transfer functions (which include closed loops and all cross
35 % coupling effects) can be extracted from the results structure, and the
36 % pickleTF function makes that easy.
37
38 %% Open Loop Gains
39 % We will calculate the open loop gains of our two degrees of freedom, the
40 % differential and common modes of the arms, 'DIFF' and 'COMM'. pickleTF
41 % will easily give us the closed loop gain, and calulating the open loop
42 % gain from that is fairly easy. (OLG = 1 - 1./CLG)
43
44 MICHOLG = 1 - 1./pickleTF(results,'MICH','MICH');
45 PRCLOLG = 1 - 1./pickleTF(results,'PRCL','PRCL');
46 SRCLOLG = 1 - 1./pickleTF(results,'SRCL','SRCL');
47
48 % make a plot of them
49
50 figure(1)
51 subplot(2,1,1)
52 loglog(f,abs(MICHOLG),'r',f,abs(PRCLOLG),'b',f,abs(SRCLOLG),'--g','Linewidth',2);
53 title('Open Loop Gain')
54 ylabel('Magnitude')
55 legend('MICH','PRCL','SRCL')
56 xlim([fLow fHigh])
57 grid on
58
59 subplot(2,1,2)
60 semilogx(f,180/pi*angle(MICHOLG),'r',f,180/pi*angle(PRCLOLG),'b',f,180/pi*angle(SRCLOLG),'--g','Linewidth',2);
61 ylabel('Phase (degrees)')
62 xlabel('Frequency (Hz)')
63 xlim([fLow fHigh])
64 grid on
65
66 %% Noise Transfer Functions
67 % Here we will calculate the transfer function of laser noises to our
68 % length sensors, we will calibrate the sensor in terms of meters of the
69 % relevant degree of freedom.
70
71
72
73 %% Calibrations
74 % First we will calculate the calibration of AS_Q in DIFF meters, and
75 % REFL_I in COMM meters.
76
77 % ASQ2 MICH
78 ASQ2_MICH_calmeters = pickleTF(results,'IX','MICH') - pickleTF(results,'IY','MICH'); % units of [AS_Q counts]/m
79 % REFL_3I1 PARCL
80 REFL3I1_P_calmeters = pickleTF(results,'PR','PRCL') ; % units of [REFL_I counts]/m
81 % AS3Q2 SRCL
82 AS3Q2_S_calmeters = pickleTF(results, 'SR', 'SRCL');
83
84
85
86 %% PM noise coupling
87 % Now we will calculate the coulping of laser frequency noise to AS_Q and
88 % REFL_I. The PM 'mirror' is the phase modulator actuator, we divide by
89 % i*f to get frequency.
90
91 FMtoASQ2 = pickleTF(results,'PM','AS_Q2') ./ ( 1i * f ); % units of [AS_Q counts]/Hz
92 FMtoREFL3I1 = pickleTF(results,'PM','REFL_3I1') ./ ( 1i * f ); % units of [REFL_I counts]/Hz
93 FMtoAS3Q2 = pickleTF(results,'PM','AS_3Q2') ./ (1i *f);
94
95 % Now we calibrate in terms of meters.
96
97 FMtoMICH = FMtoASQ2 ./ ASQ2_MICH_calmeters; % units of m/Hz
98 FMtoPRCL = FMtoREFL3I1 ./ REFL3I1_P_calmeters; % units of m/Hz
99 FMtoSRCL = FMtoAS3Q2 ./ AS3Q2_S_calmeters;
100
101 % plots
102
103 figure(2)
104 subplot(2,1,1)
105 loglog(f,abs(FMtoMICH),'r',f,abs(FMtoPRCL),'b',f,abs(FMtoSRCL),'g','Linewidth',2);
106 title('Frequency Noise Coupling')
107 ylabel('Magnitude (m/Hz)')
108 legend('MICH (ASQ2)','PRCL(REFL3I1)','SRCL(AS3Q2)')
109 xlim([fLow fHigh])
110 grid on
111 subplot(2,1,2)
112 semilogx(f,180/pi*angle(FMtoMICH),'r',f,180/pi*angle(FMtoPRCL),'b',f,180/pi*angle(FMtoSRCL),'g','Linewidth',2);
113 ylabel('Phase (degrees)')
114 xlabel('Frequency (Hz)')
115 xlim([fLow fHigh])
116 grid on
117
118 %% AM Noise coupling
119 %
120 % Same manner as FM coupling
121 %
122
123 AMtoASQ2 = pickleTF(results,'AM','AS_Q2') ; % units of [AS_Q counts]/Hz
124 AMtoREFL3I1 = pickleTF(results,'AM','REFL_3I1'); % units of [REFL_I counts]/Hz
125 AMtoAS3Q2 = pickleTF(results,'AM','AS_3Q2');
126
127 AMtoMICH = AMtoASQ2 ./ ASQ2_MICH_calmeters; % units of m/Hz
128 AMtoPRCL = AMtoREFL3I1 ./ REFL3I1_P_calmeters; % units of m/Hz
129 AMtoSRCL = AMtoAS3Q2 ./ AS3Q2_S_calmeters;
130
131 % plots
132
133 figure(3)
134 subplot(2,1,1)
135 loglog(f,abs(AMtoMICH),'r',f,abs(AMtoPRCL),'b',f,abs(AMtoSRCL),'g','Linewidth',2);
136 title('Amplitude Noise Coupling')
137 ylabel('Magnitude (/Hz)')
138 legend('MICH (ASQ2)','PRCL(REFL3I1)','SRCL(AS3Q2)')
139 xlim([fLow fHigh])
140 grid on
141 subplot(2,1,2)
142 semilogx(f,180/pi*angle(AMtoMICH),'r',f,180/pi*angle(AMtoPRCL),'b',f,180/pi*angle(AMtoSRCL),'g','Linewidth',2);
143 ylabel('Phase (degrees)')
144 xlabel('Frequency (Hz)')
145 xlim([fLow fHigh])
146 grid on
147
148
149 %% Sesimic noise estimation
150
151 S = load('seismic_gwinc.mat'); % gwinc data, m/rtHZ, ASD
152 Sdata0 = interp1(S.seismic.darmseis_f, S.seismic.darmseis_x, f, 'cubic', NaN);
153 Sdata = Sdata0;
154
155 % MICH (ASQ2)
156 SdataMICH = sqrt( (Sdata.*pickleTF(results, 'IX','MICH')).^2 ...
157 + (Sdata.*pickleTF(results, 'IY','MICH')).^2 ...
158 + (Sdata.*pickleTF(results, 'PR','MICH')).^2 ...
159 + (Sdata.*pickleTF(results, 'SR','MICH')).^2 ); % m/rtHz * cts/m = cts/rtHz
160
161 seis_calM = SdataMICH ./ ASQ2_MICH_calmeters; %cts/rtHz/(cts/m)=m/rtHz
162
163 % PRCL (REFL3I1)
164 SdataPRCL = sqrt( (Sdata.*pickleTF(results, 'IX','PRCL')).^2 ...
165 + (Sdata.*pickleTF(results, 'IY','PRCL')).^2 ...
166 + (Sdata.*pickleTF(results, 'PR','PRCL')).^2 ...
167 + (Sdata.*pickleTF(results, 'SR','PRCL')).^2 ); % m/rtHz * cts/m = cts/rtHz
168
169 seis_calP = SdataPRCL ./ REFL3I1_P_calmeters; %cts/rtHz/(cts/m)=m/rtHz
170
171 % SRCL (AS3Q2)
172 SdataSRCL = sqrt( (Sdata.*pickleTF(results, 'IX','SRCL')).^2 ...
173 + (Sdata.*pickleTF(results, 'IY','SRCL')).^2 ...
174 + (Sdata.*pickleTF(results, 'PR','SRCL')).^2 ...
175 + (Sdata.*pickleTF(results, 'SR','SRCL')).^2 ); % m/rtHz * cts/m = cts/rtHz
176
177 seis_calS = SdataSRCL ./ AS3Q2_S_calmeters; %cts/rtHz/(cts/m)=m/rtHz
178
179
180
181 % plot
182 figure(4)
183 loglog(f,sqrt(4*abs(Sdata).^2),'k','Linewidth',2)
184 hold on
185 loglog(f,abs(seis_calM),'b',f,abs(seis_calP),'g--',f,abs(seis_calS),'m--','Linewidth',2)grid on
186 title('Seismic noise level estimate')
187 ylabel('ASD [m/rtHz]')
188 xlabel('Frequency (Hz)')
189 legend('raw data added for 4 optics','MICH calibrated','PRCL calibrated','SRCL calibrated')
190 xlim([fLow fHigh])
191
192
193 %% Thermal noise budget
Attached Files
To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.You are not allowed to attach a file to this page.
