mirror of
https://github.com/edoverg/modeconverter.git
synced 2026-10-14 23:06:39 +00:00
814 lines
146 KiB
Plaintext
814 lines
146 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"id": "094bf901",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import meep as mp\n",
|
|
"import numpy as np\n",
|
|
"import numpy.matlib\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"resolution = 30 # pixels/um\n",
|
|
"\n",
|
|
"dpml = 1.0 #PML thickness\n",
|
|
"dsub = 3.0 #substrate thickness\n",
|
|
"dpad = dsub #passind between cell and PML\n",
|
|
"\n",
|
|
"wvl_min = 1.5\n",
|
|
"wvl_max = 1.6\n",
|
|
"wvl_cen = 0.5*(wvl_min+wvl_max)\n",
|
|
"fmin = 1/wvl_max\n",
|
|
"fmax = 1/wvl_min\n",
|
|
"fcen = 0.5*(fmin+fmax)\n",
|
|
"df = fmax-fmin\n",
|
|
"nfreq = 10\n",
|
|
"\n",
|
|
"k_point = mp.Vector3(0,0,0) #used for PBC\n",
|
|
"\n",
|
|
"n_si = 3.43 #silicon refractive index\n",
|
|
"si = mp.Medium(index=n_si)\n",
|
|
"n_air = 1.0 #air refractive index\n",
|
|
"air = mp.Medium(index=n_air)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 39,
|
|
"id": "35f94716",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" block, center = (0,0,-2)\n",
|
|
" size (1e+20,1e+20,4)\n",
|
|
" axes (1,0,0), (0,1,0), (0,0,1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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zTffpNjYWMrKympy/6xZs9TW44MPPqBx48Z1eL5VVVUUFhZGZsfLqRe/AiksLKRt27apOP7xj3/Qrl27VDRGcbvdNGzYMAoPb/q/M2LEiIbH2wpEGjc3Ly/PEqNU/fvf/zZXIPxCrFixgkaNGkVz586lW2+9lbZv30633347GeHcuXOUlJTU4v74+PiGx/0ZN7eiooJCXaeug8yYMYPef/99ioqKorvuuot+97vfkRmHZpce43FzeQvT+FZcXKzTUlpPp09zb775Zjp06BA9+OCD9NOf/lSdSRQUFFAw9ejRo9WtBJ/uNt6SdHTc3PDwcDEuM10H0etUNzxQL9D+/ftp8eLF9Nvf/paOHj1KTz31FAXL8OHDaevWrWolNT4O+eijj9TXtLQ0011fsAx/TnM/+OCDNh/nU82YmBgtIiIiaKe5e/fuVad527Zta3J/enp6p05zyWI3PU5zAx4I+/vf/64NGjQoaIF4r3l0795d27Bhg1ZaWqo98sgjaqVt3ry5w/NCIJ0IxFc1NTVaWVmZFiy1tbXaY489pvXu3VuLjIzURowYoW3dutWveSGQbzj4P0bv5syGj6H8PW4xEp+BpaamBnSeeLsfRAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgERAgE7B1IbW2tGnpk8uTJlJCQoMZ3Wbp0qdGLZRuWD4QHEtqwYQNduXKFpk6davTi2I7lB1YeOHAg1dTUqC1HdXV10Ee7sjvLB2KFIcOszPKBdJY0LCogEHFYVDDZQWpZWZnaZfhyO3LkSECeE8OiWmgXM3ToUHr11Vd9+tkBAwYE5DmlYVHBZIH06dOHcnJyjF4MMOsuBszHVFsQf+3bt4/q6urUVVVWWVlJO3fuVH/OyMigrl27GryEFqbZwMCBA9scbPjYsWMdnh+GRf2GLbYgx48fN3oRbAvHICBCICBCICBCICBCICBCICBCICBCICBCICBCICBCICBCICBCICBCICBCICBCICBCICBCICCyxUcO9ZJERNFkfpeJqEqneSMQwVtElErmd5SI0nSaN3YxIEIgIMIuRnCvhY5B9IJA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",
|
|
"text/plain": [
|
|
"<Figure size 768x576 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"P = 0.8 #unit cell pitch\n",
|
|
"h = 0.8 #pillar height\n",
|
|
"\n",
|
|
"sim_z_size = dpml + dsub + dpad + dpml\n",
|
|
"sim_x_size = P\n",
|
|
"sim_y_size = P\n",
|
|
"\n",
|
|
"substrate_geo = mp.Block(\n",
|
|
" material = si,\n",
|
|
" size = mp.Vector3(mp.inf, mp.inf, dsub+dpml),\n",
|
|
" center = mp.Vector3(0,0,-(dsub+dpml)/2),\n",
|
|
")\n",
|
|
"\n",
|
|
"source_position = mp.Vector3(0,0,-dsub/2) #source position in the middle of the substrate\n",
|
|
"source = mp.Source(\n",
|
|
" mp.GaussianSource(fcen, fwidth=df),\n",
|
|
" component = mp.Ex,\n",
|
|
" center = source_position,\n",
|
|
" size = mp.Vector3(sim_x_size, sim_y_size, 0),\n",
|
|
")\n",
|
|
"\n",
|
|
"cell_size = mp.Vector3(sim_x_size, sim_y_size, sim_z_size)\n",
|
|
"pml_layers = [mp.PML(dpml,direction=mp.Z)]\n",
|
|
"\n",
|
|
"sim = mp.Simulation(\n",
|
|
" resolution = resolution,\n",
|
|
" cell_size = cell_size,\n",
|
|
" boundary_layers = pml_layers,\n",
|
|
" sources = [source],\n",
|
|
" geometry = [substrate_geo],\n",
|
|
" default_material = air,\n",
|
|
" k_point = k_point,\n",
|
|
")\n",
|
|
"\n",
|
|
"monitor_position = mp.Vector3(0,0,2*h)\n",
|
|
"flux_mon = sim.add_flux(\n",
|
|
" fcen, df, nfreq, mp.FluxRegion(center=monitor_position, size=mp.Vector3(sim_x_size, sim_y_size, 0))\n",
|
|
")\n",
|
|
"\n",
|
|
"f = plt.figure(dpi=120)\n",
|
|
"yz_plane = mp.Volume(center=mp.Vector3(0,0,0), size=mp.Vector3(0,sim_y_size,sim_z_size))\n",
|
|
"sim.plot2D(ax=f.gca(),output_plane=yz_plane,show_sources=True,show_monitors=True)\n",
|
|
"plt.show()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "e2e8c953",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"-----------\n",
|
|
"Initializing structure...\n",
|
|
"time for choose_chunkdivision = 5.50747e-05 s\n",
|
|
"Working in 3D dimensions.\n",
|
|
"Computational cell is 0.8 x 0.8 x 8 with resolution 30\n",
|
|
" block, center = (0,0,-2)\n",
|
|
" size (1e+20,1e+20,4)\n",
|
|
" axes (1,0,0), (0,1,0), (0,0,1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
"time for set_epsilon = 0.628286 s\n",
|
|
"-----------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "1a93423b9f4b4eee80e61891413698bd",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"FloatProgress(value=0.0, description='0% done ', max=340.0)"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Meep progress: 15.25/340.0 = 4.5% done in 4.0s, 85.3s to go\n",
|
|
"on time step 916 (time=15.2667), 0.00437052 s/step\n",
|
|
"Meep progress: 32.083333333333336/340.0 = 9.4% done in 8.0s, 76.8s to go\n",
|
|
"on time step 1928 (time=32.1333), 0.0039538 s/step\n",
|
|
"Meep progress: 48.85/340.0 = 14.4% done in 12.0s, 71.6s to go\n",
|
|
"on time step 2935 (time=48.9167), 0.00397708 s/step\n",
|
|
"Meep progress: 64.48333333333333/340.0 = 19.0% done in 16.0s, 68.4s to go\n",
|
|
"on time step 3875 (time=64.5833), 0.0042569 s/step\n",
|
|
"Meep progress: 78.6/340.0 = 23.1% done in 20.0s, 66.6s to go\n",
|
|
"on time step 4721 (time=78.6833), 0.00473252 s/step\n",
|
|
"Meep progress: 94.3/340.0 = 27.7% done in 24.0s, 62.6s to go\n",
|
|
"on time step 5662 (time=94.3667), 0.00425366 s/step\n",
|
|
"Meep progress: 114.58333333333333/340.0 = 33.7% done in 28.0s, 55.1s to go\n",
|
|
"on time step 6883 (time=114.717), 0.00327709 s/step\n",
|
|
"Meep progress: 134.55/340.0 = 39.6% done in 32.0s, 48.9s to go\n",
|
|
"on time step 8083 (time=134.717), 0.0033351 s/step\n",
|
|
"Meep progress: 155.18333333333334/340.0 = 45.6% done in 36.0s, 42.9s to go\n",
|
|
"on time step 9320 (time=155.333), 0.00323422 s/step\n",
|
|
"Meep progress: 176.7/340.0 = 52.0% done in 40.0s, 37.0s to go\n",
|
|
"on time step 10612 (time=176.867), 0.00309666 s/step\n",
|
|
"Meep progress: 197.58333333333334/340.0 = 58.1% done in 44.0s, 31.7s to go\n",
|
|
"on time step 11865 (time=197.75), 0.0031939 s/step\n",
|
|
"Meep progress: 217.29999999999998/340.0 = 63.9% done in 48.0s, 27.1s to go\n",
|
|
"on time step 13049 (time=217.483), 0.00337966 s/step\n",
|
|
"Meep progress: 238.48333333333332/340.0 = 70.1% done in 52.0s, 22.1s to go\n",
|
|
"on time step 14321 (time=238.683), 0.00314601 s/step\n",
|
|
"Meep progress: 259.48333333333335/340.0 = 76.3% done in 56.0s, 17.4s to go\n",
|
|
"on time step 15580 (time=259.667), 0.00317825 s/step\n",
|
|
"Meep progress: 282.55/340.0 = 83.1% done in 60.0s, 12.2s to go\n",
|
|
"on time step 16965 (time=282.75), 0.00288876 s/step\n",
|
|
"Meep progress: 305.81666666666666/340.0 = 89.9% done in 64.0s, 7.2s to go\n",
|
|
"on time step 18361 (time=306.017), 0.00286804 s/step\n",
|
|
"Meep progress: 322.8/340.0 = 94.9% done in 68.0s, 3.6s to go\n",
|
|
"on time step 19377 (time=322.95), 0.00393708 s/step\n",
|
|
"run 0 finished at t = 340.0 (20400 timesteps)\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"obs_point = monitor_position\n",
|
|
"stop_cond = mp.stop_when_fields_decayed(25, mp.Ex, obs_point, 1e-6)\n",
|
|
"sim.run(until_after_sources=stop_cond)\n",
|
|
"eps_data = sim.get_array(center=mp.Vector3(), size=mp.Vector3(0,sim_y_size,sim_z_size), component=mp.Dielectric)\n",
|
|
"ex_data = sim.get_array(center=mp.Vector3(), size=mp.Vector3(0,sim_y_size,sim_z_size), component=mp.Ex)\n",
|
|
"plt.figure()\n",
|
|
"plt.imshow(eps_data, interpolation='spline36', cmap='binary')\n",
|
|
"plt.imshow(ex_data, interpolation='spline36', cmap='RdBu', alpha=0.9)\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 52,
|
|
"id": "74c01e55",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"input_flux = mp.get_fluxes(flux_mon)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "93cee842",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" block, center = (0,0,-2)\n",
|
|
" size (1e+20,1e+20,4)\n",
|
|
" axes (1,0,0), (0,1,0), (0,0,1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
" cylinder, center = (0,0,0.4)\n",
|
|
" radius 0.05, height 0.8, axis (0, 0, 1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAIgAAAIJCAYAAAB+yXUGAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAASdAAAEnQB3mYfeAAAG5JJREFUeJzt3Ql0VPXZx/EnQ1aSIgRSIGwSkSUJi1YpS09RKpg3qEHnRN8UKAeMyKr0VNoq1KAFGm09rbJjKtKwvizymgKKnhCsbWMti3VI3yMaQCRHJBIhpAUG8n/P868Tsz5JJnPnLvP7nDOdZCZz5/bOl3vv3BnvP0wppQigCa6m7gBAINAsrEFAhEBAhEBAhEBAhEBAhEBAhEBAhEBAhEAgNAPJy8ujsLAwiouLM3tWbC3MiR/WnTlzhlJSUig2NpYuXLhAly5dMnuWbMuRgdx777167REfH087duxAIG3guE3Mxo0b6eDBg7Rq1SqzZ8URwslBvvjiC5o/fz7l5uZSz549W/yYc+fO1bnt4sWL9NFHH9HgwYMpKiqKrO7KlSt0+vRpGjNmDHXs2DGwE1cO4na71ahRo1R1dbX+ferUqSo2NlZ8TE5ODm9iHXHZvXt3wJepY9YgO3fupIKCAjpy5Ije/2ip2bNnU2ZmZp3bSkpK6MEHH6Tbb79d7+gGiyJFJT1L6FyHc5RwMYGSP0umMGr+/0txp2K6/Npl6tWrV8DnyRGB8LuUOXPm0Lx58ygxMZG++uorffvVq1f1Nf8eERHR6Iv97W9/W18ak5ubSwMGDKBg8FZ7ad6BeXTuxDm6p+89tPzO5RThimjRY0cvH02n6JQxm0PlACdOnGh29ZuRkdHi6Xk8Hv0Yj8ejguHqtasq838yFS0mfc2/t0bSwiTD5tcRa5Bu3brRgQMHGl0D8Duaffv2UZcuXciKvNe9NGnXJNpesp0ykzNp0wObKKJdy9YcweCIQKKjo+mOO+5ocPurr75K7dq1a/S+lvB6vTWbKaPimPr6VNr5fzvJPdBN6+9ZT+q6oqvXjXvOkAzEKBERERQZGWlYHNP+d5qOw4prDsceKKu/BrHiYXavxTcrIROIFXltFAdDIEHktVkcDIEEideGcTAEEgRem8bBEIjBvDaOgyEQA3ltHgdDIAbxOiAOhkAM4HVIHAyBBJjXQXEwBBJAXofFwRBIgHgdGAdDIAHgdWgcDIG0kdfBcTAE0gZeh8fBEIifvCEQB0MgfvCGSBwMgbSSN4TiYAikFbwhFgdDIC3kDcE4GAJpAW+IxsEQiM3j8F730tmqs4ZNH4HYPI5JuyZR1dUqw54D/12M4Gdv/4z2V+63dBwcb2xkLFWRMZFgDSLY/4n14+D56xrb1bDnQiCC8TeNt3wcPH9GQiCC5+56zvJxGD1/CEQQEeJxMARiA14T300hEIvzmvxWG4FYmNcCx2EQiEV5LRAHQyAW5LVIHAyBWIzXQnEwBGIhXovFwRCIRXgtGAdDIBbgtWgcDIGYzGvhOBgCMZHX4nEwBGISrw3iYAjEBF6bxMEQSJB5bRQHQyBB5LVZHI4J5OjRozRhwgTq3bs3xcTE6MEMR44cqcevswqvDeNwzJeWecAgHm0pKyuLevToQVVVVbRp0yaaMmUKnTx5khYtWmTq/HltGoemHOy73/2u6tWrV6sfF8gBha62cbAgswcUcsQmpik8iFB4uHkrSa+d1xxO2sT4VFdX60tFRQVt376d3nzzTVqxYoUp8+J1QByOC4RHsFy7dq3+mQcCeumll+jRRx9t9bi5H3/8sb6+b8t9FJ0Y3er54MHMz1SeoYtXLlKHqA7k+cJDw9YOI6N8euFTw6btqECeeuopys7O1i86D5E6d+5cvcP6xBNPNPkYHqH7mWeeCeh8hIWFUc8OLRvYORB639CbSqnUkGmH8Y4IOdSsWbMoLy+PysrKKCEhoVVrkIkTJ5LH46GUlBSyumPHjlFqaqoh8+uoNUh9w4cPpzVr1lBpaWmTgUjj5oJDDpQ1hYdKdblclJSUZPas2JYj1iAzZsygDh066DVG165dqby8XL+L2bZtGy1YsKDJtQeESCB8WH39+vW0YcMGfVQ1Li6Ohg4dSvn5+TR58mSzZ8/WHBHItGnT9AUCz9H7INB2CARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECAQQCPgPaxAQIRBwfiCFhYU0ffp0GjhwIMXGxuqhUTMyMujQoUNmz5rtOSKQ1atX6/FxH3/8cdq7dy+9+OKLeiSpESNG6HggxEd7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",
|
|
"text/plain": [
|
|
"<Figure size 768x576 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"-----------\n",
|
|
"Initializing structure...\n",
|
|
"time for choose_chunkdivision = 8.60691e-05 s\n",
|
|
"Working in 3D dimensions.\n",
|
|
"Computational cell is 0.8 x 0.8 x 8 with resolution 30\n",
|
|
" block, center = (0,0,-2)\n",
|
|
" size (1e+20,1e+20,4)\n",
|
|
" axes (1,0,0), (0,1,0), (0,0,1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
" cylinder, center = (0,0,0.4)\n",
|
|
" radius 0.05, height 0.8, axis (0, 0, 1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
"time for set_epsilon = 0.721498 s\n",
|
|
"-----------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "c0ddf3b68b5245c985a25fc283581a42",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"FloatProgress(value=0.0, description='0% done ', max=300.00023999999394)"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Meep progress: 10.366666666666667/300.00023999999394 = 3.5% done in 4.0s, 111.9s to go\n",
|
|
"on time step 623 (time=10.3833), 0.00642495 s/step\n",
|
|
"Meep progress: 26.333333333333332/300.00023999999394 = 8.8% done in 8.0s, 83.2s to go\n",
|
|
"on time step 1582 (time=26.3667), 0.00417335 s/step\n",
|
|
"Meep progress: 44.53333333333333/300.00023999999394 = 14.8% done in 12.0s, 68.9s to go\n",
|
|
"on time step 2674 (time=44.5667), 0.00366696 s/step\n",
|
|
"Meep progress: 63.233333333333334/300.00023999999394 = 21.1% done in 16.0s, 59.9s to go\n",
|
|
"on time step 3798 (time=63.3), 0.00355943 s/step\n",
|
|
"Meep progress: 81.88333333333333/300.00023999999394 = 27.3% done in 20.0s, 53.3s to go\n",
|
|
"on time step 4918 (time=81.9667), 0.00357388 s/step\n",
|
|
"Meep progress: 99.96666666666667/300.00023999999394 = 33.3% done in 24.0s, 48.0s to go\n",
|
|
"on time step 6002 (time=100.033), 0.00369273 s/step\n",
|
|
"Meep progress: 116.23333333333333/300.00023999999394 = 38.7% done in 28.0s, 44.3s to go\n",
|
|
"on time step 6979 (time=116.317), 0.00409807 s/step\n",
|
|
"Meep progress: 131.96666666666667/300.00023999999394 = 44.0% done in 32.0s, 40.8s to go\n",
|
|
"on time step 7921 (time=132.017), 0.00425162 s/step\n",
|
|
"Meep progress: 145.25/300.00023999999394 = 48.4% done in 36.0s, 38.4s to go\n",
|
|
"on time step 8720 (time=145.333), 0.00500731 s/step\n",
|
|
"Meep progress: 161.81666666666666/300.00023999999394 = 53.9% done in 40.0s, 34.2s to go\n",
|
|
"on time step 9714 (time=161.9), 0.00402783 s/step\n",
|
|
"Meep progress: 179.98333333333332/300.00023999999394 = 60.0% done in 44.0s, 29.4s to go\n",
|
|
"on time step 10804 (time=180.067), 0.00367314 s/step\n",
|
|
"Meep progress: 194.21666666666667/300.00023999999394 = 64.7% done in 48.0s, 26.2s to go\n",
|
|
"on time step 11658 (time=194.3), 0.00468812 s/step\n",
|
|
"Meep progress: 208.6/300.00023999999394 = 69.5% done in 52.0s, 22.8s to go\n",
|
|
"on time step 12522 (time=208.7), 0.00463452 s/step\n",
|
|
"Meep progress: 223.85/300.00023999999394 = 74.6% done in 56.0s, 19.1s to go\n",
|
|
"on time step 13438 (time=223.967), 0.00437009 s/step\n",
|
|
"Meep progress: 238.01666666666665/300.00023999999394 = 79.3% done in 60.0s, 15.6s to go\n",
|
|
"on time step 14289 (time=238.15), 0.00470161 s/step\n",
|
|
"Meep progress: 252.38333333333333/300.00023999999394 = 84.1% done in 64.0s, 12.1s to go\n",
|
|
"on time step 15152 (time=252.533), 0.00464055 s/step\n",
|
|
"Meep progress: 266.85/300.00023999999394 = 88.9% done in 68.0s, 8.5s to go\n",
|
|
"on time step 16023 (time=267.05), 0.00459519 s/step\n",
|
|
"Meep progress: 283.43333333333334/300.00023999999394 = 94.5% done in 72.0s, 4.2s to go\n",
|
|
"on time step 17016 (time=283.6), 0.00402965 s/step\n",
|
|
"run 0 finished at t = 300.01666666666665 (18001 timesteps)\n",
|
|
"MPB solved for frequency_1(0,0,625000) = 625000 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,624999.999997)\n",
|
|
"MPB solved for frequency_1(0,0,629630) = 629630 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,629629.629626)\n",
|
|
"MPB solved for frequency_1(0,0,634259) = 634259 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,634259.259256)\n",
|
|
"MPB solved for frequency_1(0,0,638889) = 638889 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,638888.888886)\n",
|
|
"MPB solved for frequency_1(0,0,643519) = 643519 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,643518.518515)\n",
|
|
"MPB solved for frequency_1(0,0,648148) = 648148 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,648148.148145)\n",
|
|
"MPB solved for frequency_1(0,0,652778) = 652778 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,652777.777774)\n",
|
|
"MPB solved for frequency_1(0,0,657407) = 657407 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,657407.407404)\n",
|
|
"MPB solved for frequency_1(0,0,662037) = 662037 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,662037.037034)\n",
|
|
"MPB solved for frequency_1(0,0,666667) = 666667 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,666666.666663)\n",
|
|
" block, center = (0,0,-2)\n",
|
|
" size (1e+20,1e+20,4)\n",
|
|
" axes (1,0,0), (0,1,0), (0,0,1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
" cylinder, center = (0,0,0.4)\n",
|
|
" radius 0.15, height 0.8, axis (0, 0, 1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/tmp/ipykernel_41021/3049005185.py:42: RuntimeWarning: invalid value encountered in scalar divide\n",
|
|
" mode_tran = [abs(coeffs[0,nf,0])**2 / input_flux[nf] for nf in range(nfreq)]\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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IEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgYO9A6urq6Mknn6Tx48dTWlqaGt9l8eLFRi+WbVg+EB5IaN26dXT58mWaOHGi0YtjO5YfebtPnz5UW1urthw86mS4R7uyO8sH4u+QYRBhgQRLGhYVEAitXr2annnmGbRghYPU8vJytcvw5XL06NGQPKYew6Laial2Mf3796eXX37Zp/v27t07JI8pDYsKJguke/fuVFhYaPRigFl3MWA+ptqCBGrfvn1UX1+vzqqyyspK2rFjh/o9NzeXOnXqZPASWphmA3369Gl3sOHjx4/7PT8Mi/oNW2xBTpw4YfQi2BaOQUCEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQEBki48c6iWDiOLJ/L4moiqd5o1ABK8RURaZ3zEiytZp3tjFgAiBgAi7GMG9FjoG0QsCEVTpuOKtArsYECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQsHcgZWVlNH36dBowYAAlJiZSjx49KC8vjw4dOmT0otmC5QNZs2aN+jL/xx57jPbu3UsvvviiGqhwxIgRKh4IkmZxp0+fbnVdXV2d1rVrV+1HP/pRQPPEcCDfsPwWpK3x5pKSkigzM5Oqq6sNWSY7seV/F3PhwgU6fPgwjR07tsP7YtzcDmg2NGnSJC06Olp77733OrxvUVFRu6NVkcUuvGsMNVMFcuDAAZ9XxpEjR9qcx6JFi9TtK1as8PkYhlds08vu3bsNf7LJJIHYatxcHkH7ueeeoyVLltCcOXN8mg/Gze2AZhOLFy9W/4r4Z7DwKuYbtgjk2WefVXHw7iUUEIhJdzGBeOGFF+jpp5+mnJwcmjBhAlVUVDS7nU+YQeAsH0hpaan6+frrr6tLS7yVhAgOpLy83OhFsDXLn0kFfSEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQECEQsHcgR48eVV/iz+PHJCQkUEpKCo0cOZI2btxo9KLZguW/q/38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",
|
|
"text/plain": [
|
|
"<Figure size 768x576 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"-----------\n",
|
|
"Initializing structure...\n",
|
|
"time for choose_chunkdivision = 7.39098e-05 s\n",
|
|
"Working in 3D dimensions.\n",
|
|
"Computational cell is 0.8 x 0.8 x 8 with resolution 30\n",
|
|
" block, center = (0,0,-2)\n",
|
|
" size (1e+20,1e+20,4)\n",
|
|
" axes (1,0,0), (0,1,0), (0,0,1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
" cylinder, center = (0,0,0.4)\n",
|
|
" radius 0.15, height 0.8, axis (0, 0, 1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
"time for set_epsilon = 0.704258 s\n",
|
|
"-----------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "afccc8c7077249babc34fa8aff572af7",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"FloatProgress(value=0.0, description='0% done ', max=300.00023999999394)"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Meep progress: 13.816666666666666/300.00023999999394 = 4.6% done in 4.0s, 82.9s to go\n",
|
|
"on time step 830 (time=13.8333), 0.00482221 s/step\n",
|
|
"Meep progress: 28.65/300.00023999999394 = 9.5% done in 8.0s, 75.8s to go\n",
|
|
"on time step 1720 (time=28.6667), 0.00449722 s/step\n",
|
|
"Meep progress: 43.516666666666666/300.00023999999394 = 14.5% done in 12.0s, 70.8s to go\n",
|
|
"on time step 2612 (time=43.5333), 0.00448448 s/step\n",
|
|
"Meep progress: 59.55/300.00023999999394 = 19.8% done in 16.0s, 64.7s to go\n",
|
|
"on time step 3574 (time=59.5667), 0.00415846 s/step\n",
|
|
"Meep progress: 76.35/300.00023999999394 = 25.4% done in 20.0s, 58.6s to go\n",
|
|
"on time step 4583 (time=76.3833), 0.00396919 s/step\n",
|
|
"Meep progress: 92.7/300.00023999999394 = 30.9% done in 24.0s, 53.7s to go\n",
|
|
"on time step 5566 (time=92.7667), 0.00407131 s/step\n",
|
|
"Meep progress: 111.8/300.00023999999394 = 37.3% done in 28.0s, 47.2s to go\n",
|
|
"on time step 6712 (time=111.867), 0.00349482 s/step\n",
|
|
"Meep progress: 130.61666666666667/300.00023999999394 = 43.5% done in 32.0s, 41.5s to go\n",
|
|
"on time step 7842 (time=130.7), 0.00354077 s/step\n",
|
|
"Meep progress: 149.96666666666667/300.00023999999394 = 50.0% done in 36.0s, 36.0s to go\n",
|
|
"on time step 9004 (time=150.067), 0.00344563 s/step\n",
|
|
"Meep progress: 168.73333333333332/300.00023999999394 = 56.2% done in 40.0s, 31.1s to go\n",
|
|
"on time step 10129 (time=168.817), 0.00355682 s/step\n",
|
|
"Meep progress: 187.58333333333334/300.00023999999394 = 62.5% done in 44.0s, 26.4s to go\n",
|
|
"on time step 11260 (time=187.667), 0.00353936 s/step\n",
|
|
"Meep progress: 206.26666666666665/300.00023999999394 = 68.8% done in 48.0s, 21.8s to go\n",
|
|
"on time step 12382 (time=206.367), 0.00356941 s/step\n",
|
|
"Meep progress: 223.68333333333334/300.00023999999394 = 74.6% done in 52.0s, 17.8s to go\n",
|
|
"on time step 13427 (time=223.783), 0.00383112 s/step\n",
|
|
"Meep progress: 239.28333333333333/300.00023999999394 = 79.8% done in 56.0s, 14.2s to go\n",
|
|
"on time step 14363 (time=239.383), 0.00427545 s/step\n",
|
|
"Meep progress: 255.08333333333334/300.00023999999394 = 85.0% done in 60.0s, 10.6s to go\n",
|
|
"on time step 15313 (time=255.217), 0.00421347 s/step\n",
|
|
"Meep progress: 271.2833333333333/300.00023999999394 = 90.4% done in 64.0s, 6.8s to go\n",
|
|
"on time step 16285 (time=271.417), 0.0041165 s/step\n",
|
|
"Meep progress: 288.0833333333333/300.00023999999394 = 96.0% done in 68.0s, 2.8s to go\n",
|
|
"on time step 17296 (time=288.267), 0.00395712 s/step\n",
|
|
"run 0 finished at t = 300.01666666666665 (18001 timesteps)\n",
|
|
"MPB solved for frequency_1(0,0,625000) = 625000 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,624999.999997)\n",
|
|
"MPB solved for frequency_1(0,0,629630) = 629630 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,629629.629626)\n",
|
|
"MPB solved for frequency_1(0,0,634259) = 634259 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,634259.259256)\n",
|
|
"MPB solved for frequency_1(0,0,638889) = 638889 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,638888.888886)\n",
|
|
"MPB solved for frequency_1(0,0,643519) = 643519 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,643518.518515)\n",
|
|
"MPB solved for frequency_1(0,0,648148) = 648148 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,648148.148145)\n",
|
|
"MPB solved for frequency_1(0,0,652778) = 652778 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,652777.777774)\n",
|
|
"MPB solved for frequency_1(0,0,657407) = 657407 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,657407.407404)\n",
|
|
"MPB solved for frequency_1(0,0,662037) = 662037 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,662037.037034)\n",
|
|
"MPB solved for frequency_1(0,0,666667) = 666667 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,666666.666663)\n",
|
|
" block, center = (0,0,-2)\n",
|
|
" size (1e+20,1e+20,4)\n",
|
|
" axes (1,0,0), (0,1,0), (0,0,1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
" cylinder, center = (0,0,0.4)\n",
|
|
" radius 0.25, height 0.8, axis (0, 0, 1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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HpYvX95s1KiMjAy6+uqrafHixTR27FjTls3uHLEFaWlIMR4zJjU1lSorK01ZJqdwxBakJWfOnKH9+/e3ufWQhkUFBwcyZ84cPSTqE088If6eEcOiOokjA/nNb35D69evp6VLl9INN9zQ5mDM2dnZLQ6LCg4MhLcGzz77LC1atEgPrNwWDIsaAgepDeNYuHChvvAo3NBxjgnkmWee0WEsWLCA8vLyzF4cx3DELuaFF16gJ598Up/7mDBhApWWlja6nU+YQQgHUlhYqL++8cYb+tKUUsqEpXIGRwRSUlJi9iI4lmOOQcAYCARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARCI5Camhp69NFHafz48ZSUlERhYWF69AfoGMcEcvLkSVq9ejWdP38eo0UFkCM+zJ/169ePTp8+rbcc1dXVlJ+fb/YiOYJjAuEwIPAcE4i/MCyqLOQDwbCospAPBMOiykI+EAyLGiJPc8EYCARCZxeze/duqq2t1WdVWXl5OW3dulV/n5mZSZ07dzZ5Ce3HUYHMmjWLjh07Vv/zli1b9IUdOXKErrjiig5NXylVf76Fvw/mcKs834bzDtZ5H0cFcvTo0aDO79KlS0GJhGMIDzfnoXJUIMF4oNTlLYfL5aKIiIigzr+urq7RliQYcJDqB2XSSN5mzBdbEB+pBluOTp060dmzZ+nDDz/ULwxGRkbq6/gvPFB4PrwLu3Dhgn77Qnp6OsXHx+vbeD58ezAgkHa4dOlS/QNTWVlJzzzzDBUXF1NCQoJ+huTxeAL2wPDu65tvvqFTp07RLbfcQn/4wx8oNTW12XIYDYH4uYn/5ptv6IMPPtB/4V988QUZ6d///reeX0vLYTQcg/gpPDycEhMTv1+RAf6Lbjg9ng+exdiMy+WiqKio+p+jo6MN2cUwnk+wdilNYRfjJ6VUoyD4+0AG0hBP16xnTtjFgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAiBgAgfQSVQwuexB/sjoZrOr+HPRi6LY7Yg586do/nz51NycrL+QLmhQ4fSpk2bOjTNixcv1n/2WNPPIOPbghUJz4fn5/2+6TJ5b7NEIE8//TS9//77bf5eRUUFTZ8+nYLl7rvvprVr11JeXp4eFmTYsGGUk5NDGzZs6NAnDUZGRtZfGg4nEhMTE7RPHuT58PwYf047L0fD5TL0M+NVO4WFhano6GiVn58v/l5paalyuVwqGHbu3Ml/ymrDhg2Nrh83bpxKTk5WFy9ebNf0ysrK9PTKyspa/Z3PP/9c3XDDDfr3+BIREVH/fSAuDad34403qqqqqg4tr7/8OgbhzfiMGTPoX//6Fy1btizoox409dprr1FcXBxlZ2c3un7atGn0s5/9jN59910aNWpUu6dbUVGhP4Pdizfn/JfMH73N/3berXkFenfTcHo8H/433HTTTfqjub/99ttG65yX0yh+BVJQUKD37xwHf0z0tm3bdDRmKSsro4EDBzb7NOLBgwfX395aINK4uXl5eY12Kw2HAeFRvvnz2r3489MDqeH0eD5PPfUUde3aVUfqHRbEq+HHdAecP7uYd999V3//l7/8RXXu3Fn16NFD7d2717RdzDXXXKNuu+22ZtfzZpn/iYsXL271vnl5eR3aFbhcroDuWjoyfSN2MR06ypoyZQq98847+qOib731VvrjH/9IZpEG2ZFu43FzeQvT8LJjxw6f56sMfiZj1icsB+w8yHXXXUf79u2je++9l375y1/Se++9R/n5+RRM3bp1o5MnTza7nvfXjI8Z/Bk3Nzw8vNW4vE89gxEILwMfC7W1LEZwBeoB2rNnjz4PsXHjRho5ciQdPnyYgmXQoEH00UcfNVtJPOAP48F4AnUexHP5vIOR5x5aC0BaHiNn7vcxSEv4qWZsbKx+mhasY5Bdu3bpffCmTZsaXZ+RkdGhp7lks4sRxyABD4R98MEH6sorrwxaIN5zHl27dlWrV69WRUVF6v7779crbd26de2eFgLpQCC+On36tCopKVHBUlNTox588EH9jCoyMlINHjxYbdy40a9pIZDvhfF/jNuB2dOhQ4f8Pm4xEz8DS0tLC+g0HfNiHRgDgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYCzA6mpqaFHH32Uxo8fT0lJSXpMlYULF5q9WI5h+0B4IKHVq1fT+fPnaeLEiWYvjuPYfuTtfv366QEGectRXV0d9NGunM72gUjj0UHH2T6QjpKGRQUEQitWrNBj0oINDlJLSkr0LsOXy8GDBwMyz44Oi+p0ltrF9O/fn1555RWffrdv374Bmac0LCpYLJCePXtSbm6u2YsBVt3FgPVYagvir927d1Ntba0+q8rKy8tp69at+vvMzEzq3LmzyUtoY8oB+vXr1+pgw0eOHGn39DAs6vccsQU5evSo2YvgWDgGARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECAZEj3nJolBQiiibr+46IKgyaNgIRvE5EaWR9h4go3aBpYxcDIgQCIuxiBHfa6BjEKAhEUGHgircL7GJAhEBAhEBAhEBAhEBAhEBAhEBAhEBAhEBAhEBAhEBAhEBAhEBAhEBAhEBAhEBAhEBAhEBAhEDA2YEUFRXR9OnTacCAARQbG0u9evWirKws2rdvn9mL5gi2D2TlypX6w/wfeugh2rVrF7344ot6oMIRI0boeKCDlM2dOHGi2XU1NTWqe/fu6qc//alf08RwIN+z/RakpfHm4uLiKDU1lSorK01ZJidx5P8Xc+bMGdq/fz+NHTu2zd/FuLltUA40adIkFR4ert5///02fzcvL6/V0arIZhfeNQaapQIpLi72eWUcOHCgxWksWLBA37506VKfj2F4xTa87Nixw/QHmywSiKPGzeURtJ999llatGgRzZ0716fpYNzcNiiHWLhwof4r4q8dhWcx33NEIE8//bSOg3cvgYBALLqL8ccLL7xATz75JGVkZNCECROotLS00e18wgz8Z/tACgsL9dc33nhDX5rirSSEcCAlJSVmL4Kj2f5MKhgLgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYAIgYCzAzl48KD+EH8e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",
|
|
"text/plain": [
|
|
"<Figure size 768x576 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"-----------\n",
|
|
"Initializing structure...\n",
|
|
"time for choose_chunkdivision = 7.70092e-05 s\n",
|
|
"Working in 3D dimensions.\n",
|
|
"Computational cell is 0.8 x 0.8 x 8 with resolution 30\n",
|
|
" block, center = (0,0,-2)\n",
|
|
" size (1e+20,1e+20,4)\n",
|
|
" axes (1,0,0), (0,1,0), (0,0,1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
" cylinder, center = (0,0,0.4)\n",
|
|
" radius 0.25, height 0.8, axis (0, 0, 1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
"time for set_epsilon = 0.866202 s\n",
|
|
"-----------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "0e9613e70d61445790655ffde3e1e04f",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"FloatProgress(value=0.0, description='0% done ', max=300.00023999999394)"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Meep progress: 13.816666666666666/300.00023999999394 = 4.6% done in 4.0s, 82.9s to go\n",
|
|
"on time step 830 (time=13.8333), 0.00481963 s/step\n",
|
|
"Meep progress: 26.316666666666666/300.00023999999394 = 8.8% done in 8.0s, 83.2s to go\n",
|
|
"on time step 1580 (time=26.3333), 0.00534261 s/step\n",
|
|
"Meep progress: 36.083333333333336/300.00023999999394 = 12.0% done in 12.0s, 87.8s to go\n",
|
|
"on time step 2167 (time=36.1167), 0.00681576 s/step\n",
|
|
"Meep progress: 50.15/300.00023999999394 = 16.7% done in 16.0s, 79.8s to go\n",
|
|
"on time step 3012 (time=50.2), 0.00473832 s/step\n",
|
|
"Meep progress: 64.6/300.00023999999394 = 21.5% done in 20.0s, 72.9s to go\n",
|
|
"on time step 3884 (time=64.7333), 0.00459009 s/step\n",
|
|
"Meep progress: 79.88333333333333/300.00023999999394 = 26.6% done in 24.0s, 66.2s to go\n",
|
|
"on time step 4801 (time=80.0167), 0.00436337 s/step\n",
|
|
"Meep progress: 97.83333333333333/300.00023999999394 = 32.6% done in 28.0s, 57.9s to go\n",
|
|
"on time step 5877 (time=97.95), 0.00371863 s/step\n",
|
|
"Meep progress: 114.98333333333333/300.00023999999394 = 38.3% done in 32.0s, 51.5s to go\n",
|
|
"on time step 6908 (time=115.133), 0.00388181 s/step\n",
|
|
"Meep progress: 133.16666666666666/300.00023999999394 = 44.4% done in 36.0s, 45.1s to go\n",
|
|
"on time step 7997 (time=133.283), 0.00367431 s/step\n",
|
|
"Meep progress: 149.41666666666666/300.00023999999394 = 49.8% done in 40.0s, 40.3s to go\n",
|
|
"on time step 8975 (time=149.583), 0.00409372 s/step\n",
|
|
"Meep progress: 166.21666666666667/300.00023999999394 = 55.4% done in 44.0s, 35.4s to go\n",
|
|
"on time step 9984 (time=166.4), 0.00396472 s/step\n",
|
|
"Meep progress: 182.43333333333334/300.00023999999394 = 60.8% done in 48.0s, 30.9s to go\n",
|
|
"on time step 10955 (time=182.583), 0.00412364 s/step\n",
|
|
"Meep progress: 199.05/300.00023999999394 = 66.3% done in 52.0s, 26.4s to go\n",
|
|
"on time step 11954 (time=199.233), 0.00400765 s/step\n",
|
|
"Meep progress: 216.23333333333332/300.00023999999394 = 72.1% done in 56.0s, 21.7s to go\n",
|
|
"on time step 12985 (time=216.417), 0.00388008 s/step\n",
|
|
"Meep progress: 234.18333333333334/300.00023999999394 = 78.1% done in 60.0s, 16.9s to go\n",
|
|
"on time step 14065 (time=234.417), 0.00370468 s/step\n",
|
|
"Meep progress: 252.71666666666667/300.00023999999394 = 84.2% done in 64.0s, 12.0s to go\n",
|
|
"on time step 15181 (time=253.017), 0.0035856 s/step\n",
|
|
"Meep progress: 271.3/300.00023999999394 = 90.4% done in 68.0s, 7.2s to go\n",
|
|
"on time step 16289 (time=271.483), 0.00361258 s/step\n",
|
|
"Meep progress: 289.3/300.00023999999394 = 96.4% done in 72.0s, 2.7s to go\n",
|
|
"on time step 17369 (time=289.483), 0.00370418 s/step\n",
|
|
"run 0 finished at t = 300.01666666666665 (18001 timesteps)\n",
|
|
"MPB solved for frequency_1(0,0,625000) = 625000 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,624999.999997)\n",
|
|
"MPB solved for frequency_1(0,0,629630) = 629630 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,629629.629626)\n",
|
|
"MPB solved for frequency_1(0,0,634259) = 634259 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,634259.259256)\n",
|
|
"MPB solved for frequency_1(0,0,638889) = 638889 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,638888.888886)\n",
|
|
"MPB solved for frequency_1(0,0,643519) = 643519 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,643518.518515)\n",
|
|
"MPB solved for frequency_1(0,0,648148) = 648148 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,648148.148145)\n",
|
|
"MPB solved for frequency_1(0,0,652778) = 652778 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,652777.777774)\n",
|
|
"MPB solved for frequency_1(0,0,657407) = 657407 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,657407.407404)\n",
|
|
"MPB solved for frequency_1(0,0,662037) = 662037 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,662037.037034)\n",
|
|
"MPB solved for frequency_1(0,0,666667) = 666667 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,666666.666663)\n",
|
|
" block, center = (0,0,-2)\n",
|
|
" size (1e+20,1e+20,4)\n",
|
|
" axes (1,0,0), (0,1,0), (0,0,1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
" cylinder, center = (0,0,0.4)\n",
|
|
" radius 0.35, height 0.8, axis (0, 0, 1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAIgAAAIJCAYAAAB+yXUGAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAASdAAAEnQB3mYfeAAAGyZJREFUeJzt3QtwVPXZx/EnmyskpRhIA+Gm8UJIwkVbKJdOUSqYN6hBd6JvBigDRi4CSqdiq1ADVhDbOlPlKqYFGq4vF3lNAUUnhI5t4yiX1iW+gxIugYxIIEJIC9kk553nXzfm+mR3s2fPZX+fmW3Y3Zyzp2e/Oefs2XX/YZqmaQTQDkd7dwAgEOgQtiAgQiAgQiAgQiAgQiAgQiAgQiAgQiAgQiAQmoHk5+dTWFgYxcXFGb0olhZmxzfrLly4QGlpaRQbG0tXr16l69evG71IlmXLQB566CG19YiPj6ddu3YhkE6w3S5m8+bNdPjwYVqzZo3Ri2ILEWQjX331FS1YsIBWrFhBffv29XqaS5cuNbvt2rVrdPLkSRo8eDBFR0eT2d28eZPKy8tp7Nix1L1798DOXLMRp9OpjR49WmtoaFDXp02bpsXGxorT5OXl8S7WFpe9e/cGfJ3aZguye/duKiwspGPHjqnjD2899dRTlJ2d3ey20tJSeuyxx2j48OHqQDdYNNKotG8pXep2iRKuJVDq+VQKo47/v5TcUkI33r5B/fr1C/gy2SIQfpUyd+5cmj9/PiUlJdHXX3+tbq+trVU/+XpkZGSbT/b3vvc9dWnLihUraODAgRQM7gY3zT80ny6dvkQP3vYgrbxvJUU6Ir2adszKMXSWzuqzO9Rs4PTp0x1ufrOysryen8vlUtO4XC4tGGrrarXs/8nWaAmpn3zdF8mLknVbXltsQXr16kWHDh1qcwvAr2gOHDhAPXv2JDNy17tp8p7JtLN0J2WnZtOWR7dQZLh3W45gsEUgMTExdO+997a6fePGjRQeHt7mfd5wu92Nuym94pj2zjTa/X+7yZnipA0PbiCtXqPaev0eMyQD0UtkZCRFRUXpFsf0/52u4jDjlsO2J8pabkHMeJrdbfLdSsgEYkZuC8XBEEgQuS0WB0MgQeK2YBwMgQSB26JxMASiM7eF42AIREdui8fBEIhO3DaIgyEQHbhtEgdDIAHmtlEcDIEEkNtmcTAEEiBuG8bBEEgAuG0aB0MgneS2cRwMgXSC2+ZxMATiJ3cIxMEQiB/cIRIHQyA+codQHAyB+MAdYnEwBOIldwjGwRCIF9whGgdDIBaPw13vpos1F3WbPwKxeByT90ymmtoa3R4D/12M4Bcf/IIOVh80dRwcb2xULNWQPpFgCyI4eMr8cfDyJcYm6vZYCEQw4fYJpo+Dl09PCETw6v2vmj4OvZcPgQgiQzwOhkAswG3gqykEYnJug19qIxATc5vgPAwCMSm3CeJgCMSE3CaJgyEQk3GbKA6GQEzEbbI4GAIxCbcJ42AIxATcJo2DIRCDuU0cB0MgBnKbPA6GQAzitkAcDIEYwG2ROBgCCTK3heJgCCSI3BaLwzaBHD9+nCZOnEj9+/enLl26qMEMR40apcavMwu3BeOwzYeWecAgHm0pJyeH+vTpQzU1NbRlyxaaOnUqnTlzhhYvXmzo8rktGoei2dgPf/hDrV+/fj5PF8gBhWo7OViQ0QMK2WIX0x4eRCgiwriNpNvKWw477WI8Ghoa1KWqqop27txJ7733Hq1atcqQZXHbIA7bBcIjWL755pvq3zwQ0BtvvEGzZs3yedzcL774Qv18eNvDFJMU4/Ny8GDmF6ov0LWb16hbdDdyfeWiYW8OI72cu3pOt3nbKpAXXniBcnNz1ZPOQ6TOmzdPHbA+++yz7U7DI3QvXbo0oMsRFhZGfbt5N7BzIPT/bn8qozJd5h3GByJkU3PmzKH8/HyqqKighIQEn7YgkyZNIpfLRWlpaWR2J06coPT0dF2W11ZbkJZGjBhB69ato7KysnYDkcbNBZucKGsPD5XqcDgoOTnZ6EWxLFtsQWbOnEndunVTW4zExESqrKxUr2J27NhBCxcubHfrASESCJ9W37BhA23atEmdVY2Li6OhQ4dSQUEBTZkyxejFszRbBDJ9+nR1gcCz9TEIdB4CARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECAQQC/sMWBEQIBOwfSFFREc2YMYNSUlIoNjZWDY2alZVFR44cMXrRLM8Wgaxdu1aNj/vMM8/Q/v376fXXX1cjSY0cOVLFAyE+2sPq1atbjRqVkZFBd9xxBy1fvpzGjRtn2LJZnS22IG0NKcZjxqSmplJ5ebkhy2QXttiCtOXq1at09OjRDrce0rCoYONA5s6dq4ZEXbRokfh7egyLaie2DORXv/oVbdmyhVauXEnf//73OxyMOTs7u81hUcGGgfDW4OWXX6Zly5apgZU7gmFRQ+AgtWkcS5YsURcehRs6zzaB/PrXv1ZhLF68mPLy8oxeHNuwxS7mtddeoxdffFGd+5g4cSKVlJQ0u59PmEEIB1JYWKh+vvvuu+rSkqZpBiyVPdgikOLiYqMXwbZscwwC+kAgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgIEIgEBqBVFdX03PPPUcTJkyghIQECgsLU6M/QOfYJpDLly/T+vXr6ebNmxgtKoBs8WX+bMCAAVRVVaW2HJWVlZSfn2/0ItmCbQLhMCDwbBOIvzAsqizkA8GwqLKQDwTDospCPhAMixoiL3NBHwgEQmcXc+DAAaqpqVFnVVlpaSnt2rVL/TszM5O6du1q8BJaj60CmTNnDp09e7bx+s6dO9WFnT59mm699Va/5qtpmimHVuVzP3qf/7FVIGfOnNFlvg0NDVRfX09mEx4eri56slUggaZ9s+UIxhPhL723bjhINXDlW2EZsQUROBwOdeHjms8++4xqa2spOjq68YkJNs/xBr9jzcuRkpKi3qTkZdQLAvHCBx98QEuXLlXvEicmJqrbjDgm8ezmLl68qD7zkpeXRzNmzND1MRGIF7788ksqLy/X9UDYV+fOnVPLpTccg3ihq0nPnwRjubAF8WYlRUSoS11dHcXExBi6i+FjHz4GiYyMVMukNwTihfr6ehUH4wNVPlg0IhA+H+M5OHa73eq63rCLARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECARECgdAI5Pr167RgwQJKSkpSXzQ3bNgw2r59e0DmXW/C72kP1nL5HMhLL71En3zy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",
|
|
"text/plain": [
|
|
"<Figure size 768x576 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"-----------\n",
|
|
"Initializing structure...\n",
|
|
"time for choose_chunkdivision = 5.81741e-05 s\n",
|
|
"Working in 3D dimensions.\n",
|
|
"Computational cell is 0.8 x 0.8 x 8 with resolution 30\n",
|
|
" block, center = (0,0,-2)\n",
|
|
" size (1e+20,1e+20,4)\n",
|
|
" axes (1,0,0), (0,1,0), (0,0,1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
" cylinder, center = (0,0,0.4)\n",
|
|
" radius 0.35, height 0.8, axis (0, 0, 1)\n",
|
|
" dielectric constant epsilon diagonal = (11.7649,11.7649,11.7649)\n",
|
|
"time for set_epsilon = 0.812415 s\n",
|
|
"-----------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "6f9c2a5250ac41019f89eabc96ff7e26",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"FloatProgress(value=0.0, description='0% done ', max=300.00023999999394)"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Meep progress: 14.233333333333333/300.00023999999394 = 4.7% done in 4.0s, 80.3s to go\n",
|
|
"on time step 855 (time=14.25), 0.00467964 s/step\n",
|
|
"Meep progress: 29.216666666666665/300.00023999999394 = 9.7% done in 8.0s, 74.2s to go\n",
|
|
"on time step 1755 (time=29.25), 0.00444807 s/step\n",
|
|
"Meep progress: 45.71666666666667/300.00023999999394 = 15.2% done in 12.0s, 66.8s to go\n",
|
|
"on time step 2744 (time=45.7333), 0.00404536 s/step\n",
|
|
"Meep progress: 61.53333333333333/300.00023999999394 = 20.5% done in 16.0s, 62.0s to go\n",
|
|
"on time step 3694 (time=61.5667), 0.0042123 s/step\n",
|
|
"Meep progress: 76.8/300.00023999999394 = 25.6% done in 20.0s, 58.2s to go\n",
|
|
"on time step 4611 (time=76.85), 0.00436382 s/step\n",
|
|
"Meep progress: 92.71666666666667/300.00023999999394 = 30.9% done in 24.0s, 53.7s to go\n",
|
|
"on time step 5566 (time=92.7667), 0.00419006 s/step\n",
|
|
"Meep progress: 112.78333333333333/300.00023999999394 = 37.6% done in 28.0s, 46.5s to go\n",
|
|
"on time step 6772 (time=112.867), 0.00331882 s/step\n",
|
|
"Meep progress: 133.68333333333334/300.00023999999394 = 44.6% done in 32.0s, 39.8s to go\n",
|
|
"on time step 8026 (time=133.767), 0.00319012 s/step\n",
|
|
"Meep progress: 154.73333333333332/300.00023999999394 = 51.6% done in 36.0s, 33.8s to go\n",
|
|
"on time step 9290 (time=154.833), 0.00316522 s/step\n",
|
|
"Meep progress: 177.31666666666666/300.00023999999394 = 59.1% done in 40.0s, 27.7s to go\n",
|
|
"on time step 10645 (time=177.417), 0.0029531 s/step\n",
|
|
"Meep progress: 200.18333333333334/300.00023999999394 = 66.7% done in 44.0s, 22.0s to go\n",
|
|
"on time step 12017 (time=200.283), 0.00291775 s/step\n",
|
|
"Meep progress: 222.31666666666666/300.00023999999394 = 74.1% done in 48.0s, 16.8s to go\n",
|
|
"on time step 13345 (time=222.417), 0.00301452 s/step\n",
|
|
"Meep progress: 244.13333333333333/300.00023999999394 = 81.4% done in 52.0s, 11.9s to go\n",
|
|
"on time step 14656 (time=244.267), 0.0030527 s/step\n",
|
|
"Meep progress: 264.15/300.00023999999394 = 88.0% done in 56.0s, 7.6s to go\n",
|
|
"on time step 15857 (time=264.283), 0.00333177 s/step\n",
|
|
"Meep progress: 284.25/300.00023999999394 = 94.7% done in 60.0s, 3.3s to go\n",
|
|
"on time step 17062 (time=284.367), 0.00332295 s/step\n",
|
|
"run 0 finished at t = 300.01666666666665 (18001 timesteps)\n",
|
|
"MPB solved for frequency_1(0,0,625000) = 625000 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,624999.999997)\n",
|
|
"MPB solved for frequency_1(0,0,629630) = 629630 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,629629.629626)\n",
|
|
"MPB solved for frequency_1(0,0,634259) = 634259 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,634259.259256)\n",
|
|
"MPB solved for frequency_1(0,0,638889) = 638889 after 23 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,638888.888886)\n",
|
|
"MPB solved for frequency_1(0,0,643519) = 643519 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,643518.518515)\n",
|
|
"MPB solved for frequency_1(0,0,648148) = 648148 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,648148.148145)\n",
|
|
"MPB solved for frequency_1(0,0,652778) = 652778 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,652777.777774)\n",
|
|
"MPB solved for frequency_1(0,0,657407) = 657407 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,657407.407404)\n",
|
|
"MPB solved for frequency_1(0,0,662037) = 662037 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,662037.037034)\n",
|
|
"MPB solved for frequency_1(0,0,666667) = 666667 after 22 iters\n",
|
|
"Dominant planewave for band 1: (0.000000,-1.250000,666666.666663)\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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0bhrQM9eBOmPPfaYJtSPHDkycGdLRERERH5Dt1DTlnS+x6YefvhhCTa/BjMaPXq0zJ8/X3vTomOBYydSBOuuVV+IiIiIiNKio0ePauzrbjTUsAxm9PLLL8vAgQOT5N1ggCNjNFIiIiIisg5vo4qmZMTRSPLSSy/J5cuX5a233tLvUcsd5SCvX7+uVV82btzod1Ucv1rSjx07JnXq1HG7LGPGjHLx4kV/dk9EREREwazuYjaRRxhV1XE8IATtVapU0UGOihUrJq+88oqEtSUdJRgPHjzothY6Roi69dZb/dk9EREREQUDSzCKvw3VGFEVkN6ybds2HWCpWbNmcu3aNXnmmWf8O4C/LektWrTQvHScqAGdR8+fP6/laNDsT0RERETWLMFoNpFn6IeZmPhvTtCmTZskJiZG6tevr9+jPDkqHoY1SEfllvj4eG3ub9++vQboL774oo5khbsI5KsTERERkbVoIJ5oMjFIN1WyZEn54osv9N8LFy6UO+64w152/K+//tIy5GEN0vPnz6/N+xh16ccff9S7iF9++UUru2zevNnt6EtEREREFGbMSfcLSo1jIKPcuXPLRx99pKOPGtCy7pivHpacdCNQf++99/w+ESIiIiIKEeak+6Vv377aWo5GabSid+3a1b7s6tWr0qNHj/AH6URERESUyngpwcgRR73r1KmTTq6mTZsmgeB3kL59+3Yd0OjIkSOah+4IOerLli3z9xBEREREFGjMO7c0v4L0OXPmSM+ePSU6OlrLMaZPnz5JkE5ERERE1uKtggs7jpq7efOmjBkzxrShGsVVwhako/xiy5YtZfbs2QHpxUpEREREIcCcdL+88MILOtooiqW0adNGMmTIIIHmV5CO+uiTJ09mgE5ERESUihilFs2Wk2cff/yxDB06VIYNGybB4leQXr16daeBjIiIiIgoFWBLul/++ecf++BFweJXnfRx48bJ66+/Lr/++mvgzoiIiIiIgioqGRN5hgD9559/lmDyqyW9du3a0q5dO21RxxCoroMXIWkegxsRERERkfVGHDVbTp69/fbbcv/990tcXJy0atUqSfGUsAfp6NX62muvSd68efUkg3GCRERERBRgTHfxS7Vq1bTCS4cOHbRROnPmzE7LMe/8+fPhC9IxHGqvXr1k6tSpEhMT49eJEBEREVGIMEj3S/v27YNeatyvIP3ChQvSpUsXBuhEREREqQiru/hn1qxZEmx+dRy966675Lfffgvc2RARERFRSAc0cjdR+Pmd7oLm/iJFimgxd+akExEREaUCTHcJiJ07d8ru3bvl6tWrSZZ17949fEH67bffrknzqPASrKR5IiIiIgosby3mbE03d+XKFbnvvvvkm2++0XjXZvv3zXTMUw9rkB6KpHkiIiIiCjCUXzQbVZQjjpoaNWqUHD58WNavXy8NGjSQxYsXS7Zs2eS9996THTt2yEcffST+irV60jwRERERBRZb0v2zbNkyef7556Vu3br6fdGiRaVGjRrSpEkTLary7rvvasAeto6jRERERJTK89LdTWQKrejlypXTCofIKkH6i+Ghhx6SpUuXSlhb0kORNE9EREREgRWVaNPJbDl5liNHDrl8+bL+O1++fLJv3z6tegjor2ksC1uQHoqkeSIiIiIKLKa7+Kdy5cry+++/y7333iuNGjWSV199VUqXLq2VDkeOHClVq1b18wh+prs4Js0jQEfS/KpVq7TaC070p59+8vsEiYiIiCiEqS5MefGqd+/ecvHiRf336NGjteEaHUjr1KkjR44ckTfeeEPC2pIeiqR5IiIiIgostqT758EHH7T/u3jx4tqqbmSWIC7OlStXeFvSQ5E0T0REREQBhjrpiZ4ndh71DH0w0Rj97bff2udlyZJFWrduLa1atQpIgO53kO4uad4QqKR5IiIiIgowprukWKZMmTSbJDExuMXkowORNA9G0jzuKr7//vuAJc0TERERUXDSXcwm8qxatWpa3TCYYv1Nmjdaz5E0j9IzSJo3WtmXL18emLMkIiIiooCJsnkpwfhfxT5y7/XXX5du3bpJxYoV7bGvpVrSkTQ/ZMgQp6R55KHjEQCC91q1agXqPImIiIgojaa7XLp0SQYMGCCFChWSjBkzakv1woULk739yZMnpUePHpInTx7JnDmzVllZs2ZNkvUaNmyo/ShdJ5RS9GbDhg16ntCvXz/9d+PGjfWYyC6pUqWKfQpENklABjNyTZonIiIiIuuydxA1WR5KKN+9bds2baEuU6aMzJ8/Xzp37qx53+ikaeb69etaWfDcuXMyceJE7Sc5efJkDbxXr16dpKW7RIkSMm/ePKd5yADxBqnd3333ndxxxx2SO3duDc6DKaBBOhERERGlAt5ay0PYko70aIyzYwTmRkB8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GzBggK179+62DBky2KKjo23ffPON0z6+++47W7p06WxNmjSx9enTx/b888/bOnfubMuSJYstNjbWtmLFCqf18T32kyNHDt3vCy+8YHvsscds9evXt+XLl89p3X/++cdWvXp1PacaNWrYnnjiCVu/fv1sJUuW1HlDhgxJ1nuA88L6n332WZJl165ds+XMmdOWP39+282bN30+R0+WL1+ux2zdurXT/JdeeknnHzt2zPbMM8/YYmJibOfPn7cv37lzpy6vUqWKfR6OjeN26NDBNnDgQNtTTz1lq1evnq5Xvnx524ULF+zr/vnnn3rueL/cGTNmjG73zjvv2OfduHHD1qxZM51ftmxZPR6OgXPAvK5duzrtw/icPPzww35dr7Vr1+r8li1b2jJlymRr3Lixvid4nXgNGTNmtO3Zs8dpm7///ttWrFgx3Q7XY/DgwbYePXrYMmfObGvTpo3OHzZsmP188O+4uDj7fGOaOXOmfZ9YXqhQIdudd95pK168uH5ecN6Yh+2GDx9uSy5frhXgPLCsffv2+vOCz8uzzz5ra9Gihc7Hz+GpU6ectvn9999tuXPn1uXNmzfXzyeOZ2yP+Y6vz4xxfNdr6QqfAayHc/P2OXjttddst9xyi16P/v376zW99957bVFRUbYCBQroZ9Td5wCvGdccn0Vsc8899+j80qVL23bv3q2vGdcI7yveL+wP78/FixdT/DlcsmSJnj/mN2jQwOkzgtdn6NWrl65z66236r9xDnXr1rX/vjR+dxgwv3LlyvrZqlixop7Dk08+qb8XiMgaGKSTZYP0VatW6R85TIcPH3b6o+suMFm5cqU9KHB07ty5JEEEHD161FawYEG9EXDUrl073c/PP/+cZBvX/Rh/PBFYOrp69ar+Ice5b9++3et7sHnzZnsg5Orjjz/WZfijm5Jz9OTSpUt684JgJT4+3j4ff9gRCMMXX3yhx/n888/ty99++22d9/TTT9vn4fo47sPw/vvv67qvv/6603wjuNmxY0eSbSpUqKDndfr0afs8BCRYH4GE43HwbyM4Wbp0qdfgzNfrZQRn7oLK9957T+f37dvXab5xPs8995zTfFyr9OnTOwXpBgRfZm0mRhCPz/aVK1ecbghw/TDhRiY5fL1WRpCMm7XVq1c7LcMNiLv3s2nTpjp/woQJTvNxjTy9n/4G6cb548bI2+cA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nCHKN2IgpHz58mlZw7179zpVTUE98tGjR2tQj46aGKMHHUenTZumnTVRcTBU1q9fr6OKosRkMPgVpKN5/80335RHH300cGdEREREREFl89KSjuUpsXjxYhkyZIgMHTpU88lRgQWBOkokGpBlgclxwCS0Qq9Zs0YHLurfv7+OxYPqKAjAHUcbLViwoAb7o0aNktOnT2vWRunSpWXkyJHyzDPPhDTdBccuUqRI0PbvV5COAYzQm5aIiIiIIrslHTCYEVKgXdOgHc2aNUsnV/nz57enrXiC1nnUILcCtPp/8cUXcvfdd1svSO/evbssXLhQH20QERERUeTmpEeaBx98ULNJEhMTNc0GFWoCWUDFryC9atWq+kgDeUEtW7Z0W90FZRqJiIiIKPUNZkSeIQceJk2apPn0lqru8tBDD+nXw4cPa/F4V6zuQkRERGQ9CYnIDTdfTuZmzpwpweR3x1EiIiIiSl2C1XE0kjz88MPWDdIde9sSERERUerAlnTr8ytIJyIiIqLUhx1HAwNlJufPny+7d+/WQT5d075nzJgRniDdSJj3BCeHmpdEREREZK0g3SwnndVdvPvjjz+kZs2aWtMdU548eTRoR2fRnDlzyi233CL+8KviO0rOoPeq43Tq1Cn59ttv5ffff3cqUk9ERERE1pBo8z6RucGDB0vFihXl77//1pgXAy9dvnxZ3nnnHcmYMaPf9dz9aklft26d2/kI0O+//34ZNmyYP7snIiIioiBA+UXTlnSWYPTqu+++k7Fjx2pADgjU06dPL//73/80cB80aJAOdpRSQRk7tUyZMnpiGNqViIiIiKyFLen+QyBesGBBiY6OlpiYGLlw4YJTcRVklvgjKEE6FCtWTHbu3Bms3RMRERGRH9Vd4hM8T6yT7l3+/Pk1B92Ie3/44Qf7MowhFBsba83qLosWLZJChQoFa/dERERE5E8JRpNa6AzSvatdu7Zs375d7rvvPmnXrp2MHDlSrl+/rikv48aN81pgJahBeq9evZLMw8n9+uuv8ttvv2meDhERERFZL90lwaRzKDuOevfss89qizkMHTpUyzCiPyZy0+vXry8TJ06UsAXp33zzjZZZdITkeTT5v/DCC9KlSxe/To6IiIiIAg8BumlLOqu7eHXbbbfpBFmyZJHPPvtM89IRG2fLlk385VeQbtw9EBEREVHqwZb04MiePXvA9sURR4mIiIgiTEKiTSez5ZTUhg0bpEaNGpI1a1b9tzdIewlZkL5161apVauWT9tgmNSDBw9qwXciIiIiCi+2pKdMw4YNZcuWLXLHHXfov13Tvg3IS8cyjD4asiAddR+bNWsm/fv3l7vvvttr/cg5c+bIm2++KQMGDGCQTkRERGQB8Zhs5sspqbVr10qFChXs/w4mn4P0Xbt2aW/We+65Rwu4oxkfzf758uXTTqOoF3ngwAG9y/j+++8lZ86cMmLECOnTp09wXgERERER+QTpLPFMd5GUNFa7+7clgvSSJUvKkiVLtMzMu+++K8uXL5ePPvrIaZ1MmTJJnTp1ZOrUqVrhJUOGDIE8ZyIiIiLyAwq7JIrnpnSTwi8UIinuOFq+fHl5++23dTp16pQcP35cc8/z5MkjcXFxki5dusCeKREREREFBFvSAzdGkCfISZ8xY0Z4q7vkzZtXJyIiIiKyPrSiJ5i2pLO6S3LGCDp37pycP39eYmNjJXfu3HLmzBmJj4+XW265RVO+/RHt19ZERERElOrE22xeJ3I/RtChQ4d0+vjjj7UU47x58zSb5K+//tKvc+fO1cGNFi5cKP5gnXQiIiKiSGxJNwnE2ZLu3TPPPKPFVDp37myfFxMTo/0xUeHw6aeflk2bNklKsSWdiIiIKMIkeGlFNwvg6V8//vijVKpUSdypXLmy/Pzzz+IPBulEREREEQZBeIIt0WRikO5N9uzZZfXq1W6XYT6WhyXdBSMooR466qPnyJHDr5MgIiIiotBhx1H/devWTcaNG6cdRZHiUqBAATlx4oTmqE+YMEEGDhwYniAdw51ixKXPP/9cmjdv7tdJEBEREVHoeOscyo6j3r366qty8uRJeeONN+TNN990ipG7du2qy8MSpKPUDO4YEhNZ7p6IiIgoNbGJzbRzKJaT91h41qxZ8sILL8jatWu1/CLKMDZs2FDKlSsn/vKrukunTp1kzpw50rJlS79PhIiIiIhC2ZLuuaGVLenJV7ZsWZ0Cza8gvVq1avLRRx9J48aNpV27dlKwYEGnAu+A+URERERkHWxJD6xTp05pjXRXRYsWDU+Q3r17d/167NgxWbduXZLlCNjRwZSIiIiIrAOt6OYt6UxnTo5XXnlF3n77bU11ccefONivIB35N0RERESUurC6i/8++OADef3112Xw4MEydOhQGTJkiHYa/fDDDyVTpkzy/PPP+7V/v4L0Bg0a+HVwIiIiIgpPkJ7IEUf9MnnyZHnxxRc1GEeQ3rZtW6lRo4YG6/Xr15fTp0+HfzCj8+fPy1dffaV1If/5559A7JKIiIiIggTJLAli8zgx2cW7/fv3S+3atSU6+t9w+saNG/oVrejPPPOMTJs2TcIapI8aNUoKFSqktdKRo37o0CGd36RJE30EQERERETW6zjq7T/yXoLR6IOJ0UX//PNP+7I8efJon82wBelTpkyRESNGSO/eveXLL7/UPBxDq1atdJ6vLl26JAMGDNDAP2PGjFpBZuHChT7v56WXXtI3rVKlSj5vS0RERJSWmbWiG1NK+BPHYWCgHj16aICbOXNmqVOnjqxZs8btuqtXr9blWA/rYztsH0qlS5eWo0eP6r9r1qwp06dPl5s3b2pnUbSiFytWLHw56ZMmTdIhT8eOHZuk9ypOfN++fT7vEyUbt23bpq3wZcqUkfnz50vnzp110CQMuZocP//8s4wfP17y58/v8/GJiIiI0jpvreUpbUlPaRx3/fp1zcI4d+6cTJw4UfLly6c53/fee68G5I79INevX68ZHBinZ9myZRqcIy8c2//www+SIUMGCQWcw4YNG+Thhx/WAY2aNWsmOXLk0BZ23KygY2nYgvSDBw/qCbmTLVs2faN9sXz5clm1apX9gkKjRo3kyJEjMmjQIOnYsaPExMSY7iM+Pl569uwpjz32mPzyyy9+J+0TERERpTUIwROjzJf7yp84bsaMGbJz507ZvHmztpAb21atWlWee+452bp1qxiwL9wAfPrpp/aUk+LFi8udd96pgXHfvn0lFIYNG2b/N8YMwrnjqQEyOXADgfMPW7rLLbfcIn///bfbZYcPH9a7IF8sWbJEsmbNKh06dHCaj6D7+PHjThfIE9y5nT17VkaPHu3TsYmIiIgiqrqLl8lX/sRx2BajdhoBOiAA79q1q3z//ff2/G58RUt9t27d7AE61K1bVwN37CcUrl27piktu3fvts9Dyssbb7yh2Rz+Buh+B+l4rIBUl8uXL9vn4e4Brdnvvvuux1Z2T3AHVb58eac3HapUqWJfbua3337TovI4Nj4kvsCjkl27djlN6LVLRERElNbYorxPgFjINT7ylPvtTxyHZcZ67rbdtWuX0z48restVgwU5Ns/+eSTQc2D9yvdZeTIkXrXUKFCBa0NiQAdeerbt2+XP/74Qz7++GOf9ofRmkqUKJFkfq5cuezLPUGuU69evTQXqkWLFinuBEtERESU1jkG4p6WQ5s2bdymeQwfPjygcRyWGeuZbXvmv6+e1jU7RqDhtZ44ccKaQXqpUqVk06ZN2nkUQS6qu8yZM0eb+FEzvWjRoj7vE4F+Spa9+eab2lH1s88+k5To169fksczuHt09+EkIiIiSs2ibNE6mS2HpUuXarznKG/evAGP43zdNsrDut6OEUhPPfWUplmjAylKMFoqSAe0oq9cuVJ75eLuJWfOnFrEPSVy587t9g4IOeae7poArfYY6QlvVPr06e0dVpF2gxZ2fI+evmbnhfx5X3PoiYiIiNJykI4AvWLFikGN43zZNnfu3PrV07pmxwg0pOCgQAlKLaLjaMGCBZ1uEvBvVKoJS0460kuMwYsQBKMmphEIoycvlvuicuXKmoCP4NrRjh079KunmueoMnP16lW9o8FNgjGhlR/7w79RGoeIiIiIRKLw33+ButtJfG+RTmkcZ2xrrGe2baX/vnpaN5Tj4yDFGx1Z0Ri8ePFiLRmJeY6TP/wK0mfNmiWnTp1yuwx3FrNnz/Zpf8hrR13JRYsWOc3HfnADUKtWLbfboVD+2rVrk0wo24O7G/z7iSee8OlciIiIiNKqaInxOvkqpXGcse2ePXucKsDEx8fL3LlzdTtsD4ULF5Y77rhD5zuO0bNlyxbZu3ev9k0MFWRrmE2uYwiFPN3FEzxy8LWYPHJ6mjZtqvUtL1y4oI9YFixYoOk0uBhGbU2McIoLfuDAAYmLi9PC8Q0bNkyyP8zHBXa3jIiIiChSRUm0aSCO5b5KaRwHyL5ASzT6ByJ9OV++fNrfEYE3BjNyNGbMGD0O1kWfQlRYGTx4sLaio9xjWuFzkI6RldatW2f//v3339c33xFSTzACFPLVfYXHBUOGDNEccwT65cqV0wvcqVMn+zq4M8GEjqpERERE5BsE4WaBeEqCdH/iODTsrlmzRgcu6t+/v1y5ckUzJVasWOE02iig8RUDJ+EYrVu3lsyZM0urVq1k3LhxQR9tFGXHs2TJEpLtomw+RrooU2iUKkRCvKfNcWeEUZ8CUcw9XNAhAHdlZXNUkoyxmcN9OkRERJRKXYu/InvP7dQ63sntiBnM2KZa9rskc0w2j+tdSbgoP1/4NuznazVo4Uc/RzwNSE5FFwy8NGrUKC1Z/vLLLwe3JR13OMjvRnCOE/3qq6+kRo0aTuvgLsbXwYSIiIiIKJTpLoFvSU/rxo8fr08KXnrpJW3FR2M04mDExBjgCE8PkMaDHHlklWCgzQcffNDnYiopCtJRvcWo4ILKLig3g7KHRERERJQ6REusREs60+WUVPfu3TUXHsVT3nvvPR2407U2OxqyESs/8MADut5tt90mKeHXFTCS/dEbd/369VrRBc3/BQoUkOPHj/tVM52IiIiIgkMruER57jiakuoukSJTpkzaORYTSjBu3rxZ4170ycyTJ4/m4aMiTbp0nm+Cgh6kI+m/T58+epeAuwbcSaBnL4L0xx57TKpXry4jR4706wSJiIiIKLCitMxirOly8g4lIV1HrA8UvxKORo8eLfPnz9fetOhY4NiJFMG6a9UXIiIiIgq/mKhYiYlKZzIx3SXc/LoCaEFHT9WBAwcmKdhevHhx+2ikRERERGQd0VHR5ukuUew4mqqDdOTh1KlTx+0y9HC9ePGiP7snIiIioiCIikon0VHpTJdTePl1m4RyMwcPHnS7DCNE3Xrrrf7snoiIiIiCAK3o0VGxJhNz0lN1kN6iRQvNS0eLugGdR8+fPy9vv/221o8kIiIiImv5NxBPZzIxJz1VB+mo3BIfHy8VKlSQ9u3ba4D+4osv6khW165d83lkJSIiIiIKvii0pEd7nrCcUnGQnj9/fh3utHPnzvLjjz9KTEyM/PLLL1rZBTUjc+XKFbgzJSIiIqKAYEt6YGCsIMTBxuCeP/30k84fMWKErF271q99+/0sA4E6RlwiIiIiotQhOiZWomNMRhxNZLqLNz///LPUq1dPsmXLJg0bNtTRRw2XLl3S+LhRo0aSUqyvQ0RERBRxkNIS63HCcjI3ePBgqVKliuzfv18+/PBDp/GC7rjjDs028Yfft0nbt2/XAY2OHDmieeiOkKO+bNkyfw9BRERERAFvSfccBpoto39t2rRJ5s6dK5kzZ04yXhAyTU6cOCH+8OsKzJkzR3r27CnR0dFajhG5OK5BOhERERFZS1R0tERFx5guJ3NoOXeNfQ3//POPZMiQQcIWpKP8YsuWLWX27NmSM2dOv06EiIiIiEIjKjpWokxy0rGczCHVZcmSJVowxdXKlSvltttuk7COODp58mQG6ERERESpCFrRzVvSmZPuzVNPPSVdunSRLFmySLdu3XTeH3/8Id9884188MEH8umnn0rYgvTq1as7DWRERERERKkA0l1iTAJxprt41bFjRzlw4IAMHz5cB/EEjBsUGxurJRj9HdTTryB93LhxmpOOYB1N/kRERERkfVGxsTqZLSfvMIhn9+7d5auvvpK///5b8uTJI82aNZO4uDjxl19XoHbt2tKuXTsN0lHE3XXwInQcxeBGRERERGQhKO5h1lrO4h/Jduutt0rv3r0l0PwK0seMGSOvvfaa5M2bV+8YPPVwJSIiIiLrYEu6/3799Vc5d+6c1K9fX7+/fPmyDBo0SEcdveeeezTlxZ9Kh34F6RMnTpRevXrJ1KlTJcYsr4mIiIiIrIMt6X4bOHCg1KhRwx6kI/Vl+vTpUrlyZXsjdv/+/VO8f7+KYF64cEF7tTJAJyIiIko9omJjvE5kbufOnVK3bl17zfR58+Zp6zla0p9//nmt8OIPv4L0u+66S3777Te/ToCIiIiIwtSS7mliTrpXSHVBR1FAH0wMYPTggw/q902aNJGDBw+KP/xOd0GpmSJFimghd+akExEREaUCsdH/TmbLyVTu3Lnl6NGj+u+1a9dK/vz5pVSpUvr9jRs3tHU9bEH67bffLjdv3tQKL0iMz5w5s9NyzDt//rxfJ0hEREREgRUVFS1RJtVdsJzM1atXT2uknz59Wt566y1p2bKlfdm+ffu0ETtsQTpa0f3ptUpEREREYRAb5aUlnfGdN+gcikwSjDxasmRJGTp0qH3ZJ598oqXKwxakz5o1y6+DExEREVEYxHhJd8FyMlW8eHHZs2ePnD17NslYQZMmTZICBQqIPzicFBEREVGkMTqImi2nZHEN0AFlGP0VG6gSNLt375arV68mWYahUomIiIjIQmK8pLtgOYU1DvYrSL9y5Yrcd9998s0332huutGL1TFPnUE6ERERkcVEowSjSSButoxCEgf79Sxj1KhRcvjwYVm/fr2e2OLFi2XVqlVa7aV06dJazJ2IiIiILCYmWqJiPU/MSQ9/HOxXkL5s2TIdUckYbalo0aJavB09WjFM6rvvvuvXyRERERFREFvSzSYKaxzsV5COu4dy5cpJTEyMNu2j2d/w0EMPydKlS/06OSIiIiIKVk66ycSc9LDHwX4F6Tly5JDLly/rv/Ply6eF2w0Y5MhYRkREREQWgpZylFn0NLElPexxsF8dR1Fe5vfff5d7771XGjVqJK+++qrm4KRPn15GjhwpVatW9evkiIiIiCgIor001bICY9jjYL+C9N69e9vvGkaPHi133XWXNGjQwH53sXz5cr9OjoiIiIgCL+q/jqNmyym8cbBfV+DBBx+UIUOG2Eddwt0E8m+QSI+TrlWrll8nR0RERERBbEk3m0Lo0qVLMmDAAClUqJBkzJhRqlWrJgsXLkz29idPnpQePXpInjx5JHPmzFKnTh1Zs2ZNkvUaNmyo+eOuE1rDrRYHB3TE0SxZskjr1q0DuUsiIiIiSuODGaFs4bZt2+T111+XMmXKyPz586Vz586SmJgoXbp0Md32+vXrWlXl3LlzMnHiRM0Pnzx5sgbeq1evtrduG0qUKCHz5s1zmoeWb6vFwQEN0omIiIgoFbBQTjrSQlBf3AjMoVGjRnLkyBEZNGiQdOzYUSuoeDJjxgwd9XPz5s3agm5sj5zw5557TrZu3eq0fqZMmaR27doBO3+04uNc3Y04Wr9+/dAF6XiTvvvuO7njjjskOjraaVQlV1gWHx+f4pMjIiIiosCLio6SKJPWciwPlSVLlkjWrFmlQ4cOTvN79uypregIso1a5J62L1u2rD1Ah9jYWOnatau8+OKLcuzYMSlcuHDAz/uvv/6Sbt26ydq1a5Msw+BGiIMTEhJCF6QPHTpUbr31Vvu/zYJ0IiIiIrKeqNgoncyWw/79+5Msy5s3r6aUBApawcuXL6+BtaMqVarYl5sF6Vher169JPON7Xft2uUUpB84cEBy5colFy5ckLi4OOnUqZO89NJL2sLuiyeeeEK2b98uY8aM0WNlyJBBAsnnIH3YsGH2fw8fPjygJ0NEREREIYBGVrPW8v8aYdu0aeM2FgxkDHjmzBnNE3eVK1cu+3Jv2xvretseFViQPoNBiJCesmLFChk7dqx8++232iKOLJHkWr9+vYwfP15b/IOBOelEREREESYq5t/JbDmgWkmpUqWStKR7sm7dOs0HTw60QqOKix7PS/q0N8nd/pVXXnFa1qJFCylWrJg8++yzWpWlbdu2Xo/luN8iRYpIsKQ4SD916pRMnTpVNmzYIMePH9d5KJuDC9OnTx/JnTt3IM+TiIiIiAKZk27Skm4sQ4BesWLFZO8XueHTp09P1rpFixbVr4gZ3bWWnz17Vr+6ayV35O/2yF1HkL5lyxafgnTk0H/xxRdy9913i2WCdNSdbN++vebyoCMpalIiQX7v3r1a6gZN/0ji96dHKxEREREFiZeOo6apMCYKFiwojzzyiM8jdy5YsECLjTjmpe/YsUO/VqpUyev2xrqOkru9ITmpLj/99JNTnfRHH31Uy0Si9KK7BuoaNWok69huzyclLejI5bnlllvk448/lvPnz2vv1hMnTui/UXgedSIfeOABrzlERERERBS+dBezKVTQeo3BjBYtWuQ0f/bs2Zql4W1QIGy/Z88ep1KLCPjnzp2r22IfZnAcSE5Zxttvv11q1qypE2qzoxPqpEmTtCa7MR+TsV5IW9JRixLlZDZt2mSv8mLACE+4q8CLRG1KrIv6lERERERkHVHRCMTN0l1Cdy7NmzeXpk2bSt++fTVLAyk2CxYskJUrV2qg7VgjvXfv3hpUIzhGZRbo1auXDl6E9BMMhoTKM1OmTLFneBg2btwoo0eP1qAeHVWvXbumHUenTZsmjRs3TtZARDNnzpRQ8TlI//rrr/XNcA3QXXOM0NMVby6DdCIiIqLU2XE0VBYvXixDhgzR8t7IJS9XrpwG6iiP6AgNxZiQZm1A6UOkYiPm7N+/v1y5ckU7pCIAdxxtFKk4CPhHjRolp0+f1o6fpUuXlpEjR8ozzzyTrHSXhx9+WCwbpO/evVvfAG9QrxJvLhERERFZCwJU046jIR4HB4MZTZw4USczs2bN0slV/vz57WkrnqCF/ssvv/T7XFG6EVVvMMooKt3cd999phVvQhaknzt3LlkF7LEO1iUiIiIia0FLebSFWtJTi+PHj2thlEOHDtlb81EZBq32yclp94XPGUfXr1+XdOnSeV0PvXNv3LiR0vMiIiIioiBBQ7nmpXuaOKC8WxiZ9NixY/oVrfITJkyQ9OnTaz69JUowIhHfdehWV+hlS0RERETWEx0TpZPZckpq1apV8uKLL8rLL79s7/RasmRJTXn5+++/Ne0mrEF6jx49vK6DRwChzmciIiIiIu/QR9Ksn2Qy+lBGpBMnTiQZB6hhw4Ya94Y9SA926RnUycQjBNRgN3r3Dh48OEnvXne9gj/55BPZtm2bPobAm3TnnXfK8OHDtecuEREREf0LnUbNWsvNOpVGsoSEBMmUKZPTvIwZM9prsweSz0F6sEvPtGvXTgNt1LksU6aMzJ8/Xzp37qyjOXXp0sXjdmPGjJECBQpo+R7Uvjx69Ki8+uqrOtIThnn1ZUhbIiIiorQMpccdyo+7XU7JS/tG4O4p1dufEUdTlO4SLMuXL9dcHyMwh0aNGmmJm0GDBulIp44F7R19/vnnSarOoDB9sWLF5K233pL3338/JK+BiIiIKLV0HDVbTr6lfXfr1i1J2rcRwKf6IH3JkiVaJxMjRjnCwEhoRcdwr3Xr1nW7rbuykBgGFoMuoVWdiIiIiP6FVJcYdhz1maVHHA2mnTt3Svny5ZNUjqlSpYp9uacg3Z2DBw9qK3ybNm28rnvy5Ek5deqU07z9+/cn+1hEREREqQVSzk07jrIlPfWNOBpMZ86c0XxyV7ly5bIvTy4k7/fu3Vtb5p9++mmv60+ZMkVGjBjh4xkTERERpT5sSbc+SwXpYFa2MbklHZEHhAB948aNsmjRIilSpIjXbfr165ckzQYt6clphSciIiJKdS3pJmEVW9LDz1JBeu7cud22lqMUo2OLurcA/ZFHHpG5c+fK7Nmz5f7770/WsZHT7i6vnYiIiCitiYkWiTXJScdyCi9LXYLKlSvL7t27k9SZ3LFjh36tVKlSsgJ0JPWjmkvXrl2Der5EREREqbkEo9lE4WWpIL1t27Y6mBFSVByhRRyVWmrVqmUaoD/66KMaoE+dOlUrwhARERGR+xTi6GjPE0eNDz9Lpbs0b95cmjZtKn379pULFy5IqVKlZMGCBbJy5UpNXzFqpCPfHIH7gQMHJC4uTuc9+eSTMmPGDOnVq5e2yGMAI0OGDBmkevXqYXtdRERERFYSG/PvZLacwstSQTosXrxYRw0dOnSo5qKXK1dOA/VOnTrZ10FheExoPXcczAg++OADnRwhkD98+HAIXwURERGRxVvSA1CsgyIoSEfJxIkTJ+rkyaxZs3RyxCCciIiIKHliteOo+XIKL8sF6UREREQUXMg7jzGps4jlFF4M0omIiIgiTGxUlMSaBOJYTuHFIJ2IiIgowsTERJnXSTdZRqHBIJ2IiIgowkRHmw9YhOUUXgzSiYiIiCJMuiiRdCbpLlhO4cUgnYiIiCjCsOOo9TFIJyIiIoowMdHREmuS04LlFF4M0omIiIgiDPqFmuWks99o+DFIJyIiIoowaEVPZ9JabtbKTqHBIJ2IiIgowqAV3axOulkrO4UGg3QiIiKiCBMTZT7iKJZTeDFIJyIiIoowTHexPgbpRERERBEmGi3pJq3lWE7hxSCdiIiIKMLERkWZdg7FcgovBulEREREEYaDGVkfg3QiIiKiCBMTFa2T2XIKLwbpRERERBGGI45aH4N0IiIioggT7aVzKNvRw49BOhEREVGEYXUX62OQTkRERBSBQbppSzqru4Qdn2YQERERRWhLuqcp1EH6pUuXZMCAAVKoUCHJmDGjVKtWTRYuXJisbf/880/dtkGDBpIjRw6JioqSWbNmeVx/9erVUqdOHcmcObPkyZNHevToISdPnhSrYZBOREREFGGikvFfKLVr105mz54tw4YNkxUrVkjNmjWlc+fOMn/+fK/b7t+/X+bNmyfp06eXFi1amK67fv16ad68ueTPn1+WLVsmEydO1KC9SZMmcv36dbESprsQERERRZhoidLJbHmoLF++XFatWqUBOQJzaNSokRw5ckQGDRokHTt2lJiYGI/b169fX06dOqX//uGHH2TBggUe18X+ypQpI59++qnExv4bBhcvXlzuvPNO+eCDD6Rv375iFWxJJyIiIorE6i7/Berup9BZsmSJZM2aVTp06OA0v2fPnnL8+HHZunWr6fbRJiOnOjp27Jhs27ZNunXrZg/QoW7duhq44zyshC3pJozHHtcTroXqehAREVEaZMQSVkmpQCt1cpYjlcRV3rx5JV++fAE7l507d0r58uWdAmeoUqWKfTkCaX9hP477dYR5mzZtEithkG5ix44d+vXwxaQfUCIiIqKUxBY1atQI2xuXM2dOyZYtmzzyv0e8rosc7zZt2iSZj7zx4cOHB+yczpw5IyVKlEgyP1euXPblgTqO435djxWo4wQKg3QTePQBH3/8sVSoUCFU14RSAHf6+EWydOlSKVWqFN9Di+J1Sj14rVIPXqvU4bfffpMHH3zQHluEC6qn7NmzR/755x+v6yYkJLjNBUdLuifr1q3TfPLk2L59u1ZxAVRk8SQqwJVmPO0v0MfxF4N0E9mzZ9evCNArVqwYqmtCfkCAzmtlfbxOqQevVerBa5W6YotwB+qYgqFs2bIyffr0ZK1btGhR/Zo7d263rdhnz5712PKdEjgOeDpWoI4TKAzSiYiIiCggChYsKI884j2VxlHlypW1Ikt8fLxTXvqO/9KOK1WqFJBzM/aD/bqWasS8QB0nUFjdhYiIiIjCpm3btjqY0aJFi5zm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27Zt+joyZ84sJUqUkNdffz3JOe7atUvuueceXQfpJv/73//kyy+/1CcQxs0N9od5R44c0fnG5OrNN9+U4sWLS9asWaVOnTqyZcsWSY53331XWrduLTly5EiSRjNr1qwk62P+8OHD7d/j35j366+/SocOHeSWW27R6zVw4ECJj4/X63/vvfdqKz1SiMaOHZtkn7fddpuUL19e3nvvvWSdMxERJcUgnYiSzWgRd2xNR2t5gwYN5M4779TgbuPGjU7LEFQj0DOCxccee0w+/vhjWbx4sbRr10769+8vo0aNsm/Tq1cv+eOPP+Sbb75xOvaePXvk+++/l549e9rnYV8DBgyQu+++W5YuXapBNwLlunXryt9//236WnzZ9sSJE5rC0bVrV/nss8+kefPm8sILL8jcuXPt6+DGBe8DglgEysgLxw0LWpUd4Th4rwoUKCDfffedfXI0efJkWbVqlabEzJs3Ty5fvqw3QefPnzd9TUgvQupRIJ5cPPjgg9rXYNGiRfLoo4/KW2+9pSksuIlq2bKlLFmyRBo3bqxpNbiWrnAzsmLFCqcbMCIi8oGNiCiZzp49a4uOjrb16dNHvz99+rQtKirKtnLlSv3+jjvusD377LP67z/++APRme25555zu6+EhATbzZs3bSNHjrTlzp3blpiYqPMxL3/+/LYuXbo4rY/9pE+fXo8J3333ne7/jTfecFrv6NGjtkyZMjkd9+GHH7bFxcXZv/dl2wYNGui6W7dudVq3QoUKtmbNmtm/HzRokL4Xu3btcloP62D7tWvX2ue1bNnS6XwMhw4d0nUrV65si4+Pt8///vvvdf6CBQtsZj766CNdb8uWLW73O3PmzCTbYP6wYcPs3+Pf7t6batWq6fzFixfb5+Fa5c2b19auXbsk+50+fbquv3v3btNzJiIi99iSTkTJhpQQtK4aLenIR0c6C1qGAS3JRh66u3x0tI6j5Rot69guXbp0MnToUM2hPnnypK6D/Ha0WKN11mg5TkhIkA8//FDuv/9+yZ07t8774osvtOUe6yINw5jQQu14ju74ui3m33HHHU7zqlSpoikrBrwXSIupUKGC03qdO3f2+ROGlmq8P47HAsfjuXP8+HH9mi9fPvFXq1atnL5H+greMzxFMOBalSpVyu15Gedw7Ngxv8+FiCgSMUgnIp8g6EaZPQSECMSRf4y8aSNI3759uwbXWIYg7q677tJlSFVBvjZMnz5dNm3apHneQ4YM0XlXr151Snm5du2aLFy4UL9HaUekkzimuiAlBQ3B+fPn12DfcUL+9unTpz2+Bl+3NW4MHGXIkMHpnHGjgf25cjfPG9fj4VjgeDx3jOUZM2YUfyEP3RHKKiLX3nXfmI9r5cpYz9s5ExGRe7Ee5hMReQzS0akRrc2YkCttMAJyVPYwOpQaATwCbgTBaMV2DPSQD+4KrdFouZ45c6bmjuNroUKF7EG+UW3GyIE3glhH7uYFYluzwNpdHjzy2UMFr8soi1mwYEH7fOP9vn79utP6uLEIFpyD4zkREZFv2JJORD6pX7++pmJgcCN0tEQHQQPSWFAtBWUA0UnUMdUFQTFa1h3TONDKijQWd9BqvnXrVvn222/l888/l4cffthpW6RjoDUc6RS33357kqly5coeX4M/23qCpwg7d+6U3377zWm+8TTArBU+UMqVK6dfDxw4kKQ1H4E6KrY4WrZsmQQLquRER0dL2bJlg3YMIqK0jC3pROQTo3QiWsARhBn56I7BqjFQj2OQjjxrtMB36dJF+vTpo624GFnTU6s1crlR9g9f0QKMUUMd4bjYD4L5H374QW8eMKAS0mIQ2CPQ7tu3r9t9+7OtJ6gU88EHH2jO9siRIzUwxqBFqEoDeK8M2D9y7lEFBulCWIabA3+hRCXKSSJl57777rPPN/LvcX4YARZ590g/wvkFC84BN2zox0BERL5jSzoR+QzBN1qiq1evrkG7a5COZchVRjlDA8r1IUhEiUDU8UYuOuqSDx482O0x0Crftm1bLSuIoBojWbqaOnWqTJo0SdNrOnXqpDcC6IiKkoWuHT0Dua07SMdB51Gc5+OPP64lG/EeIGAHx7rlTz31lL52jAxau3ZtTQsKBBwP+3XXQv7GG29ooI665uiAi7KPSD0KhkuXLsmaNWv0PSAiopSJQomXFG5LREReoMV+wYIF+uQAQXSw4ckAgn60ZKNlPRwwQBVuRI4ePcqWdCKiFGKQTkQUIGg1R4s6RiRFazJaqt9//3156aWX7C3qodCxY0d9IhCslnIzKGWJjr/oQ2BU7iEiIt8xJ52IKEBQvWbcuHGaooNgtXTp0pqHj1blUEJqC1qzMeJptmzZQnpstJ4jreaZZ54J6XGJiNIatqQTEREREVkMO44SEREREVkMg3QiIiIiIothkE5EREREZDEM0omIiIiILIZBOhERERGRxTBIJyIiIiKyGAbpREREREQWwyCdiIiIiMhiGKQTEREREVkMg3QiIiIiIrGW/wP0zCDrDi7fWgAAAABJRU5ErkJggg==",
|
|
"text/plain": [
|
|
"<Figure size 768x576 with 4 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"sim.reset_meep()\n",
|
|
"\n",
|
|
"def make_unit_cell(D):\n",
|
|
" pillar_geo = mp.Cylinder(\n",
|
|
" material = si,\n",
|
|
" radius = D/2,\n",
|
|
" height = h,\n",
|
|
" center = mp.Vector3(0,0,h/2),\n",
|
|
" )\n",
|
|
" return pillar_geo\n",
|
|
"\n",
|
|
"def make_unit_cell_sim(D):\n",
|
|
" pillar_geo = make_unit_cell(D)\n",
|
|
" geometries = [substrate_geo, pillar_geo]\n",
|
|
"\n",
|
|
" sim = mp.Simulation(\n",
|
|
" resolution = resolution,\n",
|
|
" cell_size = cell_size,\n",
|
|
" boundary_layers = pml_layers,\n",
|
|
" geometry = geometries,\n",
|
|
" default_material = air,\n",
|
|
" k_point = k_point,\n",
|
|
" sources = [source],\n",
|
|
" )\n",
|
|
" f = plt.figure(dpi=120)\n",
|
|
" sim.plot2D(ax=f.gca(),output_plane=yz_plane,show_sources=True,show_monitors=True)\n",
|
|
" plt.show()\n",
|
|
"\n",
|
|
" mode_mon = sim.add_flux(\n",
|
|
" fcen, df, nfreq, mp.FluxRegion(center=monitor_position, size=mp.Vector3(sim_x_size, sim_y_size, 0))\n",
|
|
" )\n",
|
|
" sim.run(until_after_sources=300)\n",
|
|
"\n",
|
|
" freqs = mp.get_eigenmode_freqs(mode_mon)\n",
|
|
" res = sim.get_eigenmode_coefficients(\n",
|
|
" mode_mon, [1], eig_parity=mp.EVEN_Y\n",
|
|
" )\n",
|
|
" coeffs = res.alpha\n",
|
|
"\n",
|
|
" mode_wvl = [1/freqs[nf] for nf in range(nfreq)]\n",
|
|
" mode_tran = [abs(coeffs[0,nf,0])**2 / input_flux[nf] for nf in range(nfreq)]\n",
|
|
" mode_phase = [np.angle(coeffs[0,nf,0]) for nf in range(nfreq)]\n",
|
|
"\n",
|
|
" return mode_wvl, mode_tran, mode_phase\n",
|
|
"\n",
|
|
"diameters = np.linspace(0.1, 0.7, 4)\n",
|
|
"mode_tran_arr = np.empty((len(diameters), nfreq))\n",
|
|
"mode_phase_arr = np.empty((len(diameters), nfreq))\n",
|
|
"\n",
|
|
"for i, D in enumerate(diameters):\n",
|
|
" mode_wvl, mode_tran, mode_phase = make_unit_cell_sim(D)\n",
|
|
" mode_tran_arr[i,:] = mode_tran\n",
|
|
" mode_phase_arr[i,:] = mode_phase\n",
|
|
"\n",
|
|
"#make a 2d plot of the transmission and phase as a function of wavelength and diameter\n",
|
|
"plt.figure(dpi=120)\n",
|
|
"plt.subplot(2,1,1)\n",
|
|
"plt.imshow(mode_tran_arr, extent=[wvl_min*1e6, wvl_max*1e6, diameters[0], diameters[-1]], aspect='auto', origin='lower', cmap='viridis')\n",
|
|
"plt.colorbar(label='Transmission')\n",
|
|
"plt.ylabel('Diameter (um)')\n",
|
|
"plt.title('Transmission vs Wavelength and Diameter')\n",
|
|
"plt.subplot(2,1,2)\n",
|
|
"plt.imshow(mode_phase_arr, extent=[wvl_min*1e6, wvl_max*1e6, diameters[0], diameters[-1]], aspect='auto', origin='lower', cmap='twilight')\n",
|
|
"plt.colorbar(label='Phase (radians)')\n",
|
|
"plt.ylabel('Diameter (um)')\n",
|
|
"plt.xlabel('Wavelength (um)')\n",
|
|
"plt.title('Phase vs Wavelength and Diameter')\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "352d606d",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"0.0\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(input_flux[0])"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "mp",
|
|
"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.13.12"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|