import sys
import numpy as np
import declarative
from IIRrational.utilities.ipynb_lazy import *
asavefig.formats.png.use = True
from phasor import alm
plt.style.use(style_6p5in)
plt.style.use(style_serif)
import sys
import IIRrational
from phasor2.setups.for_study.coupled_cavity import (
coupled_cavity,
coupled_cavity_2ph,
coupled_cavity_2ph_fitSQZdetune,
)
from IIRrational.utilities.mpl import style_serif, style_tex_serif
mpl.style.use(style_serif)
axB = mplfigB(Nrows=2, size_in=(8, 6))
def plot_CC(color = None, label = None, **kwargs):
rB = coupled_cavity(F_Hz = logspaced(1, 2e4, 10000), **kwargs)
fit = IIRrational.v2.data2filter(
F_Hz = rB.F_Hz,
data = rB.TRANS_CA[..., 0, 0],
mode = 'fit',
poles = (-400,),
zeros = (),
log_level = 1,
log_level_warn = 1,
)
pole = fit.fitter.poles.fullplane[0]
axB.ax0.semilogx(rB.F_Hz, abs(rB.REFL_AB[..., 0, 0])**2, color = color, label = label)
axB.ax1.loglog(rB.F_Hz, abs(rB.TRANS_CA[..., 0, 0]), color = color, label = 'cavity pole: {:.1f}Hz'.format(-pole))
return fit
for L_B in [0, 0.001, .003, .01, .03]:
fit = plot_CC(L_B=L_B, label = 'SRC RT loss {}%'.format(100 * L_B))
coupled_cavity(F_Hz = logspaced(1, 2e4, 100)).MM_AB
axB.ax0.legend()
axB.ax1.legend()
axB.ax0.set_title('SRC SQZ Reflection')
axB.ax1.set_title('Endmirror-ASport optical gain (cavity pole)')
axB.ax1.set_xlabel('Frequency [Hz]')
axB.ax0.set_ylabel('Reflectivity [W/W]')
axB.ax1.set_ylabel('field gain')
axB.finalize()
#axB.save('cavity_pole_SRCloss.png')
axB = mplfigB(Nrows=2, size_in=(8, 6))
def plot_CC(color = None, label = None, **kwargs):
rB = coupled_cavity(F_Hz = logspaced(1, 2e4, 10000), **kwargs)
fit = IIRrational.v2.data2filter(
F_Hz = rB.F_Hz,
data = rB.TRANS_CA[..., 0, 0],
mode = 'fit',
poles = (-400,),
zeros = (),
log_level = 1,
log_level_warn = 1,
)
pole = fit.fitter.poles.fullplane[0]
axB.ax0.semilogx(rB.F_Hz, abs(rB.REFL_AB[..., 0, 0])**2, color = color, label = label)
axB.ax1.loglog(rB.F_Hz, abs(rB.TRANS_CA[..., 0, 0]), color = color, label = 'cavity pole: {:.1f}Hz'.format(-pole))
return fit
for MM_L_AB in [0, 0.001, .003, .01, .03]:
fit = plot_CC(MM_L_AB = MM_L_AB, label = 'IFO MM loss {}%'.format(100 * MM_L_AB))
axB.ax0.legend()
axB.ax1.legend()
axB.ax0.set_title('SRC SQZ Reflection')
axB.ax1.set_title('Endmirror-ASport optical gain (cavity pole)')
axB.ax1.set_xlabel('Frequency [Hz]')
axB.ax0.set_ylabel('Reflectivity [W/W]')
axB.ax1.set_ylabel('field gain')
axB.finalize()
#axB.save('cavity_pole_SRCmm.png')
d = coupled_cavity(F_Hz = 0, det_B_rad=-.066, MM_L_BC=.03)
d.REFL_AB[..., 0, 0]
axB = mplfigB(Nrows=2, Ncols=2, size_in=(14, 8))
def plot_CC(color = None, label = None, **kwargs):
rB = coupled_cavity_2ph(F_Hz = logspaced(1, 5e3, 1000), **kwargs)
fit = IIRrational.v2.data2filter(
F_Hz = rB.F_Hz,
data = rB.TRANS_CA_12[..., 1, 1],
mode = 'fit',
poles = (-400,),
zeros = (),
log_level = 1,
log_level_warn = 1,
)
pole = fit.fitter.poles.fullplane[0]
axB.ax1.semilogx(rB.F_Hz, 1e3 * rB.RMS_imbalance, color = color, label = label)
axB.ax0.semilogx(rB.F_Hz, rB.mean_loss, color = color, label = label)
axB.ax3.semilogx(rB.F_Hz, 180 / np.pi * rB.SQZ_ang, color = color, label = label)
axB.ax2.loglog(rB.F_Hz, abs(rB.TRANS_CA_12[..., 1, 1]), color = color, label = 'cavity pole (naive 1-pole fit): {:.1f}Hz'.format(-pole))
return fit
kwargs = dict(L_B = .00, MM_L_BC=.10)
d = coupled_cavity_2ph_fitSQZdetune(F_Hz=logspaced(1, 3e3, 100), **kwargs)
print(d.out)
for det in np.linspace(-.005 + d.det_B_rad, .005 + d.det_B_rad, 7):
fit = plot_CC(**kwargs, det_B_rad=det, label = 'SRC retuning {:.3f}mrad'.format(1e3 * det))
axB.ax0.legend(loc = 'upper left', fontsize = 10,)
#axB.ax1.legend(loc = 'lower left', fontsize = 8,)
axB.ax2.legend(loc = 'lower left', fontsize = 10)
#axB.ax3.legend(loc = 'lower left', fontsize = 8)
axB.ax0.set_title('SRC Reflection mean-sideband-loss ($L_{\\mathrm{mean}}$)')
axB.ax1.set_title('SRC reflection $\\delta$loss (apparent RMS phase noise, $d$)')
axB.ax2.set_title('Endmirror-ASport optical gain (cavity pole)')
axB.ax3.set_title('SRC Reflection SQZ dephasing ($\\theta_d$)')
axB.ax2.set_xlabel('Frequency [Hz]')
axB.ax0.set_ylabel('Reflectivity [W/W]')
axB.ax2.set_ylabel('Field gain [rad/rad]')
axB.ax3.set_ylabel('SQZ angle shift [deg]')
axB.ax1.set_ylabel('apparent phase noise\n[RMS mRad]')
axB.fig.suptitle('SRC loss:1% with SRC/ARM mode-mismatch:5%')
axB.finalize()
axB.save('cavity_pole_SRCtuningSRCmm.png')
axB = mplfigB(Nrows=2, Ncols=2, size_in=(14, 8))
def plot_CC(color = None, label = None, **kwargs):
rB = coupled_cavity_2ph(F_Hz = logspaced(1, 5e3, 1000), **kwargs)
fit = IIRrational.v2.data2filter(
F_Hz = rB.F_Hz,
data = rB.TRANS_CA_12[..., 1, 1],
mode = 'fit',
poles = (-400,),
zeros = (),
log_level = 1,
log_level_warn = 1,
)
pole = fit.fitter.poles.fullplane[0]
axB.ax1.semilogx(rB.F_Hz, 1e3 * rB.RMS_imbalance, color = color, label = label)
axB.ax0.semilogx(rB.F_Hz, rB.mean_loss, color = color, label = label)
axB.ax3.semilogx(rB.F_Hz, 180 / np.pi * rB.SQZ_ang, color = color, label = label)
axB.ax2.loglog(rB.F_Hz, abs(rB.TRANS_CA_12[..., 1, 1]), color = color, label = 'cavity pole (naive 1-pole fit): {:.1f}Hz'.format(-pole))
return fit
kwargs = dict(L_B = .00, MM_L_AB =.05, MM_phi_AB = 1)
d = coupled_cavity_2ph_fitSQZdetune(F_Hz=logspaced(1, 3e3, 100), **kwargs)
print(d.out)
for det in np.linspace(-.005 + d.det_B_rad, .005 + d.det_B_rad, 7):
fit = plot_CC(**kwargs, det_B_rad=det, label = 'SRC retuning {:.3f}mrad'.format(1e3 * det))
axB.ax0.legend(loc = 'lower left', fontsize = 10,)
#axB.ax1.legend(loc = 'lower left', fontsize = 8,)
axB.ax2.legend(loc = 'lower left', fontsize = 10)
#axB.ax3.legend(loc = 'lower left', fontsize = 8)
axB.ax0.set_title('SRC Reflection mean-sideband-loss ($L_{\\mathrm{mean}}$)')
axB.ax1.set_title('SRC Reflection $\\delta$Loss (apparent RMS phase noise, $d$)')
axB.ax2.set_title('Endmirror-ASport optical gain (cavity pole)')
axB.ax3.set_title('SRC Reflection SQZ dephasing ($\\theta_d$)')
axB.ax2.set_xlabel('Frequency [Hz]')
axB.ax0.set_ylabel('Reflectivity [W/W]')
axB.ax2.set_ylabel('Field gain [rad/rad]')
axB.ax3.set_ylabel('SQZ angle shift [deg]')
axB.ax1.set_ylabel('apparent phase noise\n[RMS mRad]')
axB.fig.suptitle('5% SQZ/IFO mode-mismatch')
axB.finalize()
axB.save('cavity_pole_SRCtuningIFOmm.png')
axB = mplfigB(Nrows=2, Ncols=2, size_in=(14, 8))
def plot_CC(color = None, label = None, L_B = 0, MM_L_BC = 0):
kwargs = dict(L_B = L_B, MM_L_BC = MM_L_BC)
d = coupled_cavity_2ph_fitSQZdetune(F_Hz=logspaced(1, 3e3, 100), **kwargs)
rB = coupled_cavity_2ph(F_Hz = logspaced(1, 4e3, 1000), det_B_rad = d.det_B_rad, **kwargs)
label = 'SRC loss {: >3.1f}%, {: >4.1f}% SRC/ARM mmL'.format(L_B * 100, MM_L_BC * 100)
fit = IIRrational.v2.data2filter(
F_Hz = rB.F_Hz,
data = rB.TRANS_CA_12[..., 1, 1],
mode = 'fit',
poles = (-400,),
zeros = (),
log_level = 1,
log_level_warn = 1,
)
pole = fit.fitter.poles.fullplane[0]
axB.ax1.semilogx(rB.F_Hz, 1e3 * rB.RMS_imbalance, color = color, label = label)
axB.ax0.semilogx(rB.F_Hz, rB.mean_loss, color = color, label = label)
axB.ax3.semilogx(rB.F_Hz, 180 / np.pi * rB.SQZ_ang, color = color, label = label)
axB.ax2.loglog(rB.F_Hz, abs(rB.TRANS_CA_12[..., 1, 1]), color = color, label = 'cavity pole (naive 1-pole fit): {: >3.1f}Hz'.format(-pole))
return fit
kwargs = dict()
fit = plot_CC(L_B = .00, MM_L_BC=.01, label = ''.format(det))
fit = plot_CC(L_B = .00, MM_L_BC=.05, label = ''.format(det))
fit = plot_CC(L_B = .00, MM_L_BC=.1, label = ''.format(det))
fit = plot_CC(L_B = .01, MM_L_BC=.01, label = ''.format(det))
fit = plot_CC(L_B = .01, MM_L_BC=.05, label = ''.format(det))
fit = plot_CC(L_B = .01, MM_L_BC=.1, label = ''.format(det))
fit = plot_CC(L_B = .03, MM_L_BC=.01, label = ''.format(det))
fit = plot_CC(L_B = .03, MM_L_BC=.05, label = ''.format(det))
fit = plot_CC(L_B = .03, MM_L_BC=.1, label = ''.format(det))
axB.ax0.legend(loc = 'lower left', fontsize = 10,)
#axB.ax1.legend(loc = 'lower left', fontsize = 8,)
axB.ax2.legend(loc = 'lower left', fontsize = 10)
#axB.ax3.legend(loc = 'lower left', fontsize = 8)
axB.ax0.set_title('SRC Reflection mean-sideband-loss ($L_{\\mathrm{mean}}$)')
axB.ax1.set_title('SRC Reflection $\\delta$Loss (apparent RMS phase noise, $d$)')
axB.ax2.set_title('Endmirror-ASport optical gain (cavity pole)')
axB.ax3.set_title('SRC Reflection SQZ dephasing ($\\theta_d$)')
axB.ax2.set_xlabel('Frequency [Hz]')
axB.ax0.set_ylabel('Reflectivity [W/W]')
axB.ax2.set_ylabel('Field gain [rad/rad]')
axB.ax3.set_ylabel('SQZ angle shift [deg]')
axB.ax1.set_ylabel('apparent phase noise\n[RMS mRad]')
axB.fig.suptitle('MM/loss degraded SRC (SRCL corrected)')
axB.finalize()
axB.save('cavity_pole_SRCtunedSRCmm.png')
#try the same thing, including some mode-mismatch phasing from MM_phi_BS, doesn't seem to do anything
axB = mplfigB(Nrows=2, Ncols=2, size_in=(14, 8))
def plot_CC(color = None, label = None, L_B = 0, MM_L_BC = 0):
kwargs = dict(L_B = L_B, MM_L_BC = MM_L_BC, MM_L_AB = .05, MM_phi_BC = -np.pi/2)
d = coupled_cavity_2ph_fitSQZdetune(F_Hz=logspaced(1, 3e3, 100), **kwargs)
rB = coupled_cavity_2ph(F_Hz = logspaced(1, 3e3, 1000), det_B_rad = d.det_B_rad, **kwargs)
label = 'SRC loss {: >3.1f}%, {: >4.1f}% SRC/ARM mmL'.format(L_B * 100, MM_L_BC * 100)
fit = IIRrational.v2.data2filter(
F_Hz = rB.F_Hz,
data = rB.TRANS_CA_12[..., 1, 1],
mode = 'fit',
poles = (-400,),
zeros = (),
log_level = 1,
log_level_warn = 1,
)
pole = fit.fitter.poles.fullplane[0]
axB.ax1.semilogx(rB.F_Hz, 1e3 * rB.RMS_imbalance, color = color, label = label)
axB.ax0.semilogx(rB.F_Hz, rB.mean_loss, color = color, label = label)
axB.ax3.semilogx(rB.F_Hz, 180 / np.pi * rB.SQZ_ang, color = color, label = label)
axB.ax2.loglog(rB.F_Hz, abs(rB.TRANS_CA_12[..., 1, 1]), color = color, label = 'cavity pole (naive 1-pole fit): {:.1f}Hz'.format(-pole))
return fit
kwargs = dict()
fit = plot_CC(L_B = .00, MM_L_BC=.01, label = ''.format(det))
fit = plot_CC(L_B = .00, MM_L_BC=.05, label = ''.format(det))
fit = plot_CC(L_B = .00, MM_L_BC=.15, label = ''.format(det))
fit = plot_CC(L_B = .01, MM_L_BC=.01, label = ''.format(det))
fit = plot_CC(L_B = .01, MM_L_BC=.05, label = ''.format(det))
fit = plot_CC(L_B = .01, MM_L_BC=.15, label = ''.format(det))
#fit = plot_CC(L_B = .03, MM_L_BC=.01, label = ''.format(det))
#fit = plot_CC(L_B = .03, MM_L_BC=.15, label = ''.format(det))
#fit = plot_CC(L_B = .03, MM_L_BC=.05, label = ''.format(det))
axB.ax0.legend(loc = 'lower left', fontsize = 10,)
#axB.ax1.legend(loc = 'lower left', fontsize = 8,)
axB.ax2.legend(loc = 'lower left', fontsize = 10)
#axB.ax3.legend(loc = 'lower left', fontsize = 8)
axB.ax0.set_title('SRC Reflection mean-sideband-loss ($L_{\\mathrm{mean}}$)')
axB.ax1.set_title('SRC Reflection $\\delta$Loss (apparent RMS phase noise, $d$)')
axB.ax2.set_title('Endmirror-ASport optical gain (cavity pole)')
axB.ax3.set_title('SRC Reflection SQZ dephasing ($\\theta_d$)')
axB.ax2.set_xlabel('Frequency [Hz]')
axB.ax0.set_ylabel('Reflectivity [W/W]')
axB.ax2.set_ylabel('Field gain [rad/rad]')
axB.ax3.set_ylabel('SQZ angle shift [deg]')
axB.ax1.set_ylabel('apparent phase noise\n[RMS mRad]')
axB.fig.suptitle('SQZ/IFO 5% mode-mismatch + MM/loss degraded SRC (SRCL corrected)')
axB.finalize()
axB.save('cavity_pole_SRCtunedIFOmm.png')
#axB.save('cavity_pole_SRCloss.png')