microring-dynamics/microring_dynamics_v2.ipynb

288 lines
91 KiB
Plaintext
Raw Normal View History

2018-12-17 01:29:53 +00:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Ring Resonator Dynamics\n",
"The following analysis is base on the model from Yariv's PTL, \"Critical Coupling and Its Control in Optical Waveguide-Ring Resonator Systems\", in 2002. We mainly focus on the dynamic of how it reach the static state. We start from the light reach the coupler at the bus wavguide.\n",
"\n",
"P.S.: We split the time to discrete step of each round trip of light in the ring."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"T = 0.99\n",
"K = 1 - T\n",
"Alpha = 0.99\n",
"t = np.sqrt(T) + 0.0j\n",
"k = 0.0 + 1j * np.sqrt(K)\n",
"alpha = np.sqrt(Alpha)\n",
"theta = 2.0 * np.pi"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We define a function to generate the time series of a1, a2, b1 & a2: \n",
"**a[n] => [a1(n-step), a2(n-step)]** \n",
"**b[n] => [b1(n-step), b2(n-step)]** "
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<matplotlib.figure.Figure at 0x10f343780>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def propagate_in_cycle(t, k, alpha, theta, num_cycle = 1000):\n",
" a1_0 = 1.0 + 0.0j\n",
" a2_0 = 0.0 + 0.0j\n",
" a = np.zeros((num_cycle, 2), dtype=complex)\n",
" b = np.zeros((num_cycle, 2), dtype=complex)\n",
"\n",
" a[0] = [a1_0, a2_0]\n",
" \n",
" coupler = np.array([[t, k],\n",
" [-k.conjugate(), t.conjugate()]])\n",
"\n",
" for n in range(num_cycle - 1):\n",
" b[n] = coupler@a[n]\n",
" a[n+1] = np.array([a1_0, b[n][1] * alpha * np.exp(1.j * theta)])\n",
"\n",
" b[num_cycle - 1] = coupler@a[num_cycle - 1]\n",
" \n",
" return a, b\n",
"\n",
"a, b = propagate_in_cycle(t=t, k=k, alpha=alpha, theta=theta, num_cycle = 1000)\n",
"plt.figure()\n",
"plt.subplot(121)\n",
"plt.plot(abs(a[:,0])**2, label='a1')\n",
"\n",
"plt.plot(abs(b[:,0])**2, label='b1')\n",
"plt.yscale('log')\n",
"plt.title('a1 & b1 in Bus WG')\n",
"plt.legend()\n",
"plt.subplot(122)\n",
"plt.plot(abs(a[:,1])**2, label='a2')\n",
"plt.plot(abs(b[:,1])**2, label='b2')\n",
"plt.title('a2 & b2 in Resonator')\n",
"plt.yscale('linear')\n",
"plt.legend()\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can invitigate the change of bus waveguide output intensity & the ring intensity gain from the coupler by each cycle (normalized by the input intensity a1)."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<matplotlib.figure.Figure at 0x105924d68>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"bus_output = abs(b[:, 0]/a[:,0])**2\n",
"gain_per_cycle = (abs(b[:, 1])**2 - abs(a[:, 1])**2)/abs(a[:,0])**2\n",
"\n",
"plt.plot(bus_output, label='Bus WG Output')\n",
"plt.plot(gain_per_cycle, label='Energy gain of ring after coupler per cycle')\n",
"plt.plot(bus_output + gain_per_cycle, label=\"Sum of both\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that the bus waveguide output power: \n",
"**enegry loss from the ring via coupler + enegry from a1 does not coupled to the ring** \n",
"\n",
"is same as the enegry gain of the ring after coupler: \n",
"**enegry gain from bus waveguide + energy of the ring does not coupled out to bus waveguide** \n",
"\n",
"Therefore, when the distructive interference happened in bus output port (b1) of the coupler, the energy will transfer to the port of the ring (b2). It must be true since the coupler is lossless (coupler martrix is unitary, i.e., |t|^2 + |k|^2 = 1) \n",
"It is an interesting constructive & distructive interference porporty of wave 😉 "
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<matplotlib.figure.Figure at 0x10f64a898>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"# plt.semilogy((abs(a[1:,1])**2 + (abs(a[1:,0])**2 - abs(b[1:,0])**2))/abs(b[:-1,1])**2 - 1)\n",
"# plt.semilogy(abs(a[1:,1])**2 * T + abs(a[1:,0])**2 * K - 2 * np.real(np.conj(a[1:,1]) * a[1:,0] * k.conjugate() * t) - abs(b[:-1,1])**2)\n",
"# plt.semilogy(abs(b[1:,1])**2 - abs(b[:-1,1])**2)\n",
"plt.plot(- 2 * np.real(np.conj(a[1:,1]) * a[1:,0] * k.conjugate() * t))\n",
"plt.plot(abs(a[1:,1])**2 * T + abs(a[1:,0])**2 * K - abs(b[:-1,1])**2)\n",
"# plt.plot(abs(a[1:,0]) * abs(b[:-1,1]) * np.sqrt(K*T*0.999))\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Play with other parameters\n",
"Enjoy~ 😊"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<matplotlib.figure.Figure at 0x1cd15c2b780>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"T2 = 0.999\n",
"K2 = 1 - T2\n",
"Alpha2 = 0.999\n",
"t2 = np.sqrt(T2) + 0.0j\n",
"k2 = 0.0 + 1j * np.sqrt(K2)\n",
"alpha2 = np.sqrt(Alpha2)\n",
"theta2 = 2.0 * np.pi\n",
"a2, b2 = propagate_in_cycle(t=t2, k=k2, alpha=alpha2, theta=theta2, num_cycle = 10000)\n",
"plt.figure()\n",
"plt.subplot(121)\n",
"plt.plot(abs(a2[:,0])**2, label='a1')\n",
"\n",
"plt.plot(abs(b2[:,0])**2, label='b1')\n",
"plt.yscale('log')\n",
"plt.title('a1 & b1 in Bus WG')\n",
"plt.legend()\n",
"plt.subplot(122)\n",
"plt.plot(abs(a2[:,1])**2, label='a2')\n",
"plt.plot(abs(b2[:,1])**2, label='b2')\n",
"plt.title('a2 & b2 in Resonator')\n",
"plt.yscale('linear')\n",
"plt.legend()\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<matplotlib.figure.Figure at 0x1cd15b431d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"bus_output = abs(b2[:, 0]/a2[:,0])**2\n",
"gain_per_cycle = (abs(b2[:, 1])**2 - abs(a2[:, 1])**2)/abs(a2[:,0])**2\n",
"\n",
"plt.plot(bus_output, label='Bus WG Output')\n",
"plt.plot(gain_per_cycle, label='Energy gain of ring after coupler per cycle')\n",
"plt.plot(bus_output + gain_per_cycle, label=\"Sum of both\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}