Created
August 28, 2011 08:17
-
-
Save tobin/1176399 to your computer and use it in GitHub Desktop.
Technical radiation pressure noise budget
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%% Technical radiation pressure noise budget | |
% | |
% Produce a noise budget showing shot noise, quantum radiation pressure | |
% noise, and technical radiation pressure noise in a FP Michelson IFO. | |
% | |
% Reference: Chaibi and Bondu pre-print | |
% | |
% Tobin Fricke | |
% August 27, 2011 | |
% convention dx = EX displacement - EY displacement | |
%% Parameters | |
ifo = 'ELIGO'; | |
f = logspace(0, 4, 101); | |
doUseStrain = true; % true = strain, false = displacement | |
switch ifo | |
case 'VIRGO' % Advanced VIRGO parameters | |
m = 40; % mass of test mass [kg] | |
L = 3000; % arm length [m] | |
F = 400; % finesse | |
dx = 2*10e-12; % arm cavity detuning [m] | |
PIN = 140; % incident power [W] | |
Grc = 50; % power recycling gain | |
w_pend = 2*pi*0.6; % pendulum resonance [rad/s] | |
Q_pend = 50; % pendulum Q factor | |
case 'ELIGO' % Enhanced LIGO parameters (LLO) | |
m = 10.5; % mass of test mass [kg] | |
L = 3995; % arm length [m] | |
F = 220; % finesse | |
dx = 7e-12; % arm cavity detuning [m] | |
PIN = 6.6; % incident power [W] | |
Grc = 36; % power recycling gain | |
w_pend = 2*pi*0.75; % pendulum resonance [rad/s] | |
Q_pend = 50; % pendulum Q factor | |
otherwise | |
error('Unknown configuration'); | |
end | |
lambda = 1064e-9; % laser wavelength [m] | |
fcc = 1; % coupled cavity pole [Hz] | |
%% Constants | |
c = 299792458; % speed of light [m/s] | |
h = 6.62606891e-34; % planck's constant | |
%% Derived parameters | |
PBS = Grc * PIN; % power at the beam splitter | |
fsr = c / (2 * L); % free spectral range [Hz] | |
fc = fsr / F / 2; % cavity pole [Hz] | |
xp = lambda / F; % linewidth [m] | |
nu = c/lambda; % optical frequency | |
phase_gain = (2/pi) * F; % arm cavity phase gain | |
gcr = sqrt(phase_gain); % arm intra-cavity amplitude gain | |
k_mech = m * w_pend^2; % mechanical spring constant (approx 5e2) | |
k_opt = 2 * 64 * F^2 * gcr^2 * ... | |
(PBS/2) / (c * lambda^2) * (dx/2); % optical spring const (approx 2e5) | |
%% Mechanical transfer functions | |
s = 2*pi*1i*f; | |
H_x = 1./(m*s.^2 + (m*w_pend/Q_pend)*s + k_mech + k_opt); | |
H_y = 1./(m*s.^2 + (m*w_pend/Q_pend)*s + k_mech - k_opt); | |
H_darm = H_x - H_y; | |
if false | |
a = subplot(2,1,1); | |
loglog(f, abs(H_x), f, abs(H_y), f, abs(H_darm)); | |
legend('X', 'Y', 'X-Y'); | |
ylabel('meters per Newton'); | |
a(2) = subplot(2,1,2); | |
angled = @(x) angle(x)*180/pi; | |
semilogx(f, angled(H_x), f, angled(H_y), f, angled(H_darm)); | |
set(gca, 'ytick', 45 * (-4:4)); | |
ylabel('degrees'); | |
xlabel('frequency [Hz]'); | |
linkaxes(a, 'x'); | |
xlim([1 10]); | |
end | |
%% Calculations | |
% DC power at AS port due to detuning | |
PAS = PBS * sin(phase_gain * (2*pi/lambda) * dx)^2; | |
% optical gain (sensing function) [W/meter] | |
S = 2 * sqrt(PAS * PBS) * phase_gain * (2*pi/lambda); | |
% quantum shot noise [m/rtHz] | |
qsn = sqrt(2*h*nu*PAS) / S .* abs(1 + 1i*f/fc); | |
% quantum radiation pressure noise [m/rtHz] -- assuming no detuning! | |
qrp = sqrt(2) * sqrt(2*h*nu*(PBS/2)*gcr^2) * (2/c) ./ (m*abs(1 + 2i*pi*f/w_pend).^2); | |
%qrp_detuned = sqrt(2) * sqrt(2*h*nu*(PBS/2)*gcr^2) * (1/c) .* abs(H_darm); | |
qtotal = sqrt(qrp.^2 + qsn.^2); | |
% radiation pressure noise due to RIN | |
rinrp = PBS * gcr^2 * (2/c) ./ abs(1 + 1i*f/fcc) .* abs(H_darm); % m per RIN | |
% plotting | |
clf; | |
if doUseStrain | |
calib = 1/L; | |
else | |
calib = 1; | |
end | |
loglog(result(1).f, sqrt(result(1).Pxx), 'linewidth', 3, 'color', 0.6*[1 1 1]); | |
hold all | |
loglog(f, calib * qtotal, 'k', 'linewidth', 2); | |
%hold all | |
%loglog(f, calib * qsn, 'k--'); | |
%loglog(f, calib * qrp, 'k--' ); | |
%loglog(f, calib * qrp_detuned, '--', 'color', 0.6*[1 1 1], 'linewidth', 2); | |
loglog(f, calib * rinrp * 1e-8, 'r', 'linewidth', 2); | |
loglog(f, calib * rinrp * 1e-9, 'b', 'linewidth', 2); | |
hold off | |
xlim([1 1e4]); | |
%ylim([1e-25 1e-18]); | |
grid on | |
%legend('total quantum noise', 'shot noise', 'quant rad pres noise (no cavity detuning)', ... | |
% 'tech rad pres due to 10e-8 RIN laser AM', 'tech rad pres due to 10e-9 RIN laser AM'); | |
if doUseStrain | |
ylabel('(delta L / L) [Hz^{-1/2}]'); | |
else | |
ylabel('displacement ASD [m Hz^{-1/2}]'); | |
end | |
xlabel('frequency [Hz]'); | |
title(sprintf('%s using DC readout with dL = %d pm', ifo, dx*1e12)); | |
fontsize = 16; | |
set([gca; findall(gca, 'Type','text')], 'FontSize', fontsize); | |
orient landscape | |
print(gcf, '-dpdf', sprintf('radnoise-%s.pdf', ifo)); | |
%% OPTICKLE | |
sweepSetup | |
opt = addProbeOut(opt, 'AM DC', 'AM', 'out', 0, 0); | |
pos(nEX) = dx/2; | |
pos(nEY) = -dx/2; | |
[fDC, sigDC, sigAC, mMech, noiseAC] = tickle(opt, pos, f); | |
%% | |
nOMCprobe = getProbeNum(opt, 'OMCT DC'); | |
nAMdrive = getDriveNum(opt, 'AM'); | |
fprintf('\nOptickle says P_AS = %f W\n', sigDC(nOMCprobe)); | |
fprintf('Model says P_AS = %f W\n', PAS); | |
S = getTF(sigAC, nOMCprobe, nEX) - ... | |
getTF(sigAC, nOMCprobe, nEY); | |
S = S / 2; % KLUDGE | |
hold all | |
loglog(f, abs(noiseAC(nOMCprobe,:).' ./ S) / 3995, 'k--', 'linewidth', 2); | |
% Optickle is known (to me) to under-estimate radiation pressure by a | |
% factor of 2, so I add the first factor of two. The second factor of 0.5 | |
% is to convert from relative intensity to relative amplitude. | |
loglog(f, abs(2 * 0.5 * 1e-8 * getTF(sigAC, nOMCprobe, nAMdrive) ./ S) / 3995, 'r--', 'linewidth', 2); | |
loglog(f, abs(2 * 0.5 * 1e-9 * getTF(sigAC, nOMCprobe, nAMdrive) ./ S) / 3995, 'b--', 'linewidth', 2); | |
% naive_shot_noise = sqrt(2 * h * nu * sigDC(nOMCprobe)) ./ S / 3995; | |
% loglog(f, abs(naive_shot_noise), '--', 'color', 0.6*[1 1 1], 'linewidth', 2); | |
hold off | |
xlim([1 1e4]); | |
ylim([1e-27 1e-17]); | |
legend('S6 h(t) ASD', 'model quantum', 'model RIN 1e-8', 'model RIN 1e-9', ... | |
'Optickle quantum', 'Optickle 1e-8', 'Optickle 1e-9'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment