{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "c5ac6489",
"metadata": {
"execution": {
"iopub.execute_input": "2024-07-23T13:01:59.830462Z",
"iopub.status.busy": "2024-07-23T13:01:59.829462Z",
"iopub.status.idle": "2024-07-23T13:02:02.668689Z",
"shell.execute_reply": "2024-07-23T13:02:02.660186Z"
}
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"import finesse\n",
"finesse.configure(plotting=True)\n",
"\n",
"kat = finesse.Model()\n",
"kat.parse(\n",
"\"\"\"\n",
" l l1 P=1-bs1.T\n",
" s s1 l1.p1 bs1.p4 L=1\n",
" sq sq1 db=10\n",
" s s2 sq1.p1 bs1.p1\n",
" bs bs1 R=0.999 L=0 alpha=45\n",
"\n",
" # Set a signal frequency to activate the signal simulation\n",
" # (needed for squeezing effects to be observed)\n",
" fsig(1)\n",
"\n",
" # Output the pure shot noise along with the qnoised detector\n",
" # measuring the effects of the squeezing\n",
" qnoised sqzd_noise bs1.p2.o\n",
" qshot shot_noise bs1.p2.o\n",
"\n",
" xaxis(l1.phase, lin, -90, 90, 360)\n",
"\"\"\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "07c9b9ac",
"metadata": {
"execution": {
"iopub.execute_input": "2024-07-23T13:02:02.672952Z",
"iopub.status.busy": "2024-07-23T13:02:02.672352Z",
"iopub.status.idle": "2024-07-23T13:02:02.914379Z",
"shell.execute_reply": "2024-07-23T13:02:02.904652Z"
}
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n"
],
"text/plain": [
""
]
},
"metadata": {
"filenames": {
"image/svg+xml": "/builds/ifosim/finesse/finesse3/docs/build/jupyter_execute/examples/07_homodyne_1_0.svg"
}
},
"output_type": "display_data"
}
],
"source": [
"out = kat.run()\n",
"out.plot(separate=False);"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "385e64ed",
"metadata": {
"execution": {
"iopub.execute_input": "2024-07-23T13:02:02.918214Z",
"iopub.status.busy": "2024-07-23T13:02:02.917612Z",
"iopub.status.idle": "2024-07-23T13:02:03.116524Z",
"shell.execute_reply": "2024-07-23T13:02:03.115703Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 0, 'LO Phase [deg]')"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n"
],
"text/plain": [
""
]
},
"metadata": {
"filenames": {
"image/svg+xml": "/builds/ifosim/finesse/finesse3/docs/build/jupyter_execute/examples/07_homodyne_2_1.svg"
}
},
"output_type": "display_data"
}
],
"source": [
"def to_db(quantity, reference, isAmplitude=False):\n",
" if isAmplitude: factor = 20\n",
" else: factor = 10\n",
"\n",
" return factor*np.log10(quantity/reference)\n",
"\n",
"sqz_db = to_db(out['sqzd_noise'], out['shot_noise'], isAmplitude=True)\n",
"\n",
"fig, ax = plt.subplots()\n",
"ax.plot(out.x0, sqz_db)\n",
"ax.set_ylabel('SQZ / ASQZ [dB]')\n",
"ax.set_xlabel('LO Phase [deg]')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}