|
@@ -0,0 +1,66 @@
|
|
|
+#!/usr/bin/env python3
|
|
|
+import matplotlib
|
|
|
+import matplotlib.pyplot as plt
|
|
|
+from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes
|
|
|
+from mpl_toolkits.axes_grid1.inset_locator import mark_inset
|
|
|
+import numpy as np
|
|
|
+from math import cos, pi
|
|
|
+
|
|
|
+matplotlib.rcParams.update({'font.size': 15})
|
|
|
+
|
|
|
+c = 3E8 # m/s
|
|
|
+L = 1 # m
|
|
|
+# λ = 1E-6 # m
|
|
|
+# ω = 2*pi*λ/c # s^-1
|
|
|
+# t0 = λ*(3759398496+0.5)
|
|
|
+FSR = 2*pi*c/(2*L)
|
|
|
+
|
|
|
+ω = FSR
|
|
|
+
|
|
|
+
|
|
|
+def T_e(T, δω):
|
|
|
+ R = 1-T
|
|
|
+ return T**2 / (1 + R**2 - 2*R*cos(2*L*(ω+δω*FSR)/c))
|
|
|
+
|
|
|
+
|
|
|
+def R_e(T, δω):
|
|
|
+ return 1 - T_e(T, δω)
|
|
|
+
|
|
|
+
|
|
|
+def main():
|
|
|
+ T = 0.15
|
|
|
+ δωs = np.linspace(-0.5, 1.5, 5000)
|
|
|
+ R_es = [R_e(T, δω) for δω in δωs]
|
|
|
+ ax1 = plt.gca()
|
|
|
+ ax1.plot(δωs, R_es)
|
|
|
+
|
|
|
+ ax1.set_ylabel("$R_e$")
|
|
|
+ ax1.set_xlabel("$\Delta \omega$ (FSR)")
|
|
|
+ ax1.set_ylim((0, 1))
|
|
|
+
|
|
|
+ ax1.text(1.15, 0.85, "$\mathcal{F}_c=19.3$",
|
|
|
+ bbox={'facecolor': 'grey', 'alpha': 0.3})
|
|
|
+
|
|
|
+ # fmt = '%.0f%%'
|
|
|
+ # xticks = matplotlib.ticker.FormatStrFormatter(fmt)
|
|
|
+ # ax1.yaxis.set_major_formatter(xticks)
|
|
|
+ ax1.yaxis.set_major_formatter(matplotlib.ticker.FuncFormatter(
|
|
|
+ lambda x, pos: '{:d}%'.format(int(x*100))))
|
|
|
+
|
|
|
+ axins = zoomed_inset_axes(ax1, 8, bbox_to_anchor=(0.7, 0.5),
|
|
|
+ bbox_transform=ax1.transAxes)
|
|
|
+ axins.plot(δωs, R_es)
|
|
|
+ axins.set_xlim(-0.03, 0.03)
|
|
|
+ axins.set_ylim(0, 0.05)
|
|
|
+ axins.set_yticks([])
|
|
|
+ axins.set_xticks([])
|
|
|
+
|
|
|
+ mark_inset(ax1, axins, loc1=2, loc2=4, fc="none", ec="0.5")
|
|
|
+
|
|
|
+ plt.tight_layout()
|
|
|
+ plt.savefig("pdh_demo.png")
|
|
|
+ # plt.show()
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ main()
|