{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-----------\n", "Initializing structure...\n", "field decay(t = 50.025000000000006): 61.714437239634854 / 61.714437239634854 = 1.0\n", "field decay(t = 100.05000000000001): 47.39669513065221 / 61.714437239634854 = 0.7680001187827836\n", "field decay(t = 150.07500000000002): 38.753487484300784 / 61.714437239634854 = 0.6279484868965497\n", "field decay(t = 200.10000000000002): 31.933885594488228 / 61.714437239634854 = 0.517445949810579\n", "field decay(t = 250.125): 26.076764607720868 / 61.714437239634854 = 0.42253912980630065\n", "field decay(t = 300.15000000000003): 21.47655605320123 / 61.714437239634854 = 0.34799889643015885\n", "field decay(t = 350.175): 17.53631126728562 / 61.714437239634854 = 0.2841524941593938\n", "field decay(t = 400.20000000000005): 14.443563832839763 / 61.714437239634854 = 0.2340386541443446\n", "field decay(t = 450.225): 11.896373926780527 / 61.714437239634854 = 0.19276484496791815\n", "field decay(t = 500.25): 9.718573927428102 / 61.714437239634854 = 0.15747650569495178\n", "field decay(t = 550.275): 8.004609807436562 / 61.714437239634854 = 0.12970400712486385\n", "field decay(t = 600.3000000000001): 6.537545155581314 / 61.714437239634854 = 0.10593218455831122\n", "field decay(t = 650.325): 5.384562849608928 / 61.714437239634854 = 0.08724964676743095\n", "field decay(t = 700.35): 4.396534866374258 / 61.714437239634854 = 0.071239973384229\n", "field decay(t = 750.375): 3.621135834360022 / 61.714437239634854 = 0.05867566806611696\n", "field decay(t = 800.4000000000001): 2.9581397060851486 / 61.714437239634854 = 0.047932701623751385\n", "field decay(t = 850.4250000000001): 2.4364448081077583 / 61.714437239634854 = 0.039479332828510356\n", "field decay(t = 900.45): 1.9900002176534468 / 61.714437239634854 = 0.03224529472619754\n", "field decay(t = 950.475): 1.6390396477862001 / 61.714437239634854 = 0.026558447603141393\n", "field decay(t = 1000.5): 1.3499743126254105 / 61.714437239634854 = 0.021874530061475092\n", "field decay(t = 1050.525): 1.1023166078985005 / 61.714437239634854 = 0.017861567847054106\n", "field decay(t = 1100.55): 0.9079059458801253 / 61.714437239634854 = 0.014711402817379026\n", "field decay(t = 1150.575): 0.7415977350408866 / 61.714437239634854 = 0.012016600461919312\n", "field decay(t = 1200.6000000000001): 0.6108108814904085 / 61.714437239634854 = 0.009897374241924183\n", "field decay(t = 1250.625): 0.4989128271302527 / 61.714437239634854 = 0.008084215775848247\n", "field decay(t = 1300.65): 0.41092341533267496 / 61.714437239634854 = 0.0066584649186230875\n", "field decay(t = 1350.6750000000002): 0.335555319091018 / 61.714437239634854 = 0.0054372256168855465\n", "field decay(t = 1400.7): 0.27637506434209563 / 61.714437239634854 = 0.004478288658275236\n", "field decay(t = 1450.7250000000001): 0.22572291785727622 / 61.714437239634854 = 0.003657538299843885\n", "field decay(t = 1500.75): 0.18591483342900764 / 61.714437239634854 = 0.003012501478496957\n", "field decay(t = 1550.775): 0.15312742040508032 / 61.714437239634854 = 0.0024812252570738393\n", "field decay(t = 1600.8000000000002): 0.1250809574092981 / 61.714437239634854 = 0.0020267697965649983\n", "field decay(t = 1650.825): 0.1030217208117877 / 61.714437239634854 = 0.001669329340422537\n", "field decay(t = 1700.8500000000001): 0.08413043895503002 / 61.714437239634854 = 0.001363221358210797\n", "field decay(t = 1750.875): 0.06929274173262323 / 61.714437239634854 = 0.0011227962990825323\n", "field decay(t = 1800.9): 0.05658712763643502 / 61.714437239634854 = 0.0009169187983795317\n", "field decay(t = 1850.9250000000002): 0.04660765052217251 / 61.714437239634854 = 0.0007552147051296399\n", "field decay(t = 1900.95): 0.03807289009086582 / 61.714437239634854 = 0.0006169203154689755\n", "field decay(t = 1950.9750000000001): 0.03135838502348845 / 61.714437239634854 = 0.0005081207319727313\n", "field decay(t = 2001.0): 0.02560950778551407 / 61.714437239634854 = 0.00041496785729525993\n", "field decay(t = 2051.025): 0.021092935013554397 / 61.714437239634854 = 0.00034178283003134775\n", "field decay(t = 2101.05): 0.017223354025599415 / 61.714437239634854 = 0.00027908144019399826\n", "field decay(t = 2151.0750000000003): 0.014185939167263606 / 61.714437239634854 = 0.00022986419064602556\n", "field decay(t = 2201.1): 0.01168408783845677 / 61.714437239634854 = 0.0001893250325379764\n", "field decay(t = 2251.125): 0.009544955140265965 / 61.714437239634854 = 0.0001546632452176994\n", "field decay(t = 2301.15): 0.007861650796955479 / 61.714437239634854 = 0.00012738754736479216\n", "field decay(t = 2351.175): 0.00642066767842841 / 61.714437239634854 = 0.00010403834119878947\n", "field decay(t = 2401.2000000000003): 0.005288325829931077 / 61.714437239634854 = 8.569025444397566e-05\n", "field decay(t = 2451.225): 0.004317908714773744 / 61.714437239634854 = 6.996594164842606e-05\n", "field decay(t = 2501.25): 0.0035563445246973805 / 61.714437239634854 = 5.7625811459451985e-05\n", "field decay(t = 2551.275): 0.0029053004098988015 / 61.714437239634854 = 4.707651142661528e-05\n", "field decay(t = 2601.3): 0.0023929347699027303 / 61.714437239634854 = 3.877431079232002e-05\n", "field decay(t = 2651.3250000000003): 0.0019544194427344327 / 61.714437239634854 = 3.1668755807421446e-05\n", "field decay(t = 2701.3500000000004): 0.0016097324307071902 / 61.714437239634854 = 2.608356330718304e-05\n", "field decay(t = 2751.375): 0.0013258509849590956 / 61.714437239634854 = 2.1483643767354885e-05\n", "field decay(t = 2801.4): 0.0010826046664947212 / 61.714437239634854 = 1.7542162173350262e-05\n", "field decay(t = 2851.425): 0.0008916728224396508 / 61.714437239634854 = 1.4448366740789007e-05\n", "field decay(t = 2901.4500000000003): 0.0007283649985088117 / 61.714437239634854 = 1.1802181646420878e-05\n", "field decay(t = 2951.4750000000004): 0.0005998993426679592 / 61.714437239634854 = 9.720567334002778e-06\n", "field decay(t = 3001.5): 0.0004899838939467707 / 61.714437239634854 = 7.939534343385189e-06\n", "field decay(t = 3051.525): 0.00040357507547706214 / 61.714437239634854 = 6.539394889237914e-06\n", "field decay(t = 3101.55): 0.00032955488895076876 / 61.714437239634854 = 5.339996663521688e-06\n", "field decay(t = 3151.5750000000003): 0.0002714323244167271 / 61.714437239634854 = 4.39819816168404e-06\n", "field decay(t = 3201.6000000000004): 0.00022170111231405412 / 61.714437239634854 = 3.5923703144727217e-06\n", "field decay(t = 3251.625): 0.00018260060353425382 / 61.714437239634854 = 2.9587988111310567e-06\n", "field decay(t = 3301.65): 0.0001503954748659794 / 61.714437239634854 = 2.4369577297124076e-06\n", "field decay(t = 3351.675): 0.00012284487711379126 / 61.714437239634854 = 1.9905371029600284e-06\n", "field decay(t = 3401.7000000000003): 0.00010117728681778103 / 61.714437239634854 = 1.639442751862314e-06\n", "field decay(t = 3451.7250000000004): 8.26234434523444e-05 / 61.714437239634854 = 1.3388025095573772e-06\n", "field decay(t = 3501.75): 6.805354196313139e-05 / 61.714437239634854 = 1.102716722488808e-06\n", "field decay(t = 3551.775): 5.557995527325353e-05 / 61.714437239634854 = 9.005989158977281e-07\n", "field decay(t = 3601.8): 4.5777693507503735e-05 / 61.714437239634854 = 7.417663605964786e-07\n", "field decay(t = 3651.8250000000003): 3.7393438370402545e-05 / 61.714437239634854 = 6.059107081411959e-07\n", "field decay(t = 3701.8500000000004): 3.0797909234401674e-05 / 61.714437239634854 = 4.990389706514627e-07\n", "field decay(t = 3751.875): 2.5150148826942176e-05 / 61.714437239634854 = 4.075245591122396e-07\n", "field decay(t = 3801.9): 2.071514647935486e-05 / 61.714437239634854 = 3.356612715906121e-07\n", "field decay(t = 3851.925): 1.6916336856910708e-05 / 61.714437239634854 = 2.7410663717511034e-07\n", "field decay(t = 3901.9500000000003): 1.3933210839234033e-05 / 61.714437239634854 = 2.2576906575574684e-07\n", "field decay(t = 3951.9750000000004): 1.1476555260458193e-05 / 61.714437239634854 = 1.8596224439178076e-07\n", "field decay(t = 4002.0): 9.375123704517074e-06 / 61.714437239634854 = 1.5191135370989156e-07\n", "field decay(t = 4052.025): 7.721326456512098e-06 / 61.714437239634854 = 1.2511377891254968e-07\n", "field decay(t = 4102.05): 6.30564330583996e-06 / 61.714437239634854 = 1.0217452492283747e-07\n", "field decay(t = 4152.075): 5.193524218131245e-06 / 61.714437239634854 = 8.415412098736288e-08\n", "field decay(t = 4202.1): 4.240401634668664e-06 / 61.714437239634854 = 6.871004297103679e-08\n", "field decay(t = 4252.125): 3.492891885354038e-06 / 61.714437239634854 = 5.659764621673968e-08\n", "field decay(t = 4302.150000000001): 2.8538219922205117e-06 / 61.714437239634854 = 4.624237244745873e-08\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "field decay(t = 4352.175): 2.3504340518958436e-06 / 61.714437239634854 = 3.8085643441407335e-08\n", "field decay(t = 4402.2): 1.919486550538664e-06 / 61.714437239634854 = 3.110271496255195e-08\n", "field decay(t = 4452.225): 1.5810178663207582e-06 / 61.714437239634854 = 2.5618282156276092e-08\n", "field decay(t = 4502.25): 1.3020179000714368e-06 / 61.714437239634854 = 2.1097460469675026e-08\n", "field decay(t = 4552.275000000001): 1.0629751847546947e-06 / 61.714437239634854 = 1.7224092648324764e-08\n", "field decay(t = 4602.3): 8.756223798546496e-07 / 61.714437239634854 = 1.418829076338557e-08\n", "field decay(t = 4652.325): 7.15412237809199e-07 / 61.714437239634854 = 1.1592299465217191e-08\n", "field decay(t = 4702.35): 5.892719179602837e-07 / 61.714437239634854 = 9.548364115711901e-09\n", "run 0 finished at t = 4702.35 (188094 timesteps)\n" ] } ], "source": [ "# -*- coding: utf-8 -*-\n", "\n", "import meep as mp\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "resolution = 20 # pixels/μm\n", "\n", "eps = 13 # dielectric constant of waveguide\n", "w = 1.2 # width of waveguide\n", "r = 0.36 # radius of holes\n", "d = 1.4 # defect spacing (ordinary spacing = 1)\n", "N = 3 # number of holes on either side of defect\n", "\n", "sy = 6 # size of cell in y direction (perpendicular to wvg.)\n", "pad = 2 # padding between last hole and PML edge\n", "dpml = 1 # PML thickness\n", "sx = 2*(pad+dpml+N)+d-1 # size of cell in x direction\n", "\n", "cell = mp.Vector3(sx, sy, 0)\n", "pml_layers = mp.PML(dpml)\n", "\n", "geometry = [mp.Block(center=mp.Vector3(),\n", " size=mp.Vector3(mp.inf, w, mp.inf),\n", " material=mp.Medium(epsilon=eps))]\n", "\n", "for i in range(N):\n", " geometry.append(mp.Cylinder(r, center=mp.Vector3(0.5*d+i)))\n", " geometry.append(mp.Cylinder(r, center=mp.Vector3(-0.5*d-i)))\n", "\n", "fcen = 0.25 # pulse center frequency\n", "df = 0.2 # pulse width (in frequency)\n", "\n", "sources = mp.Source(src=mp.GaussianSource(fcen, fwidth=df), component=mp.Hz, center=mp.Vector3())\n", "\n", "symmetries = [mp.Mirror(mp.X, phase=-1),\n", " mp.Mirror(mp.Y, phase=-1)]\n", "\n", "sim = mp.Simulation(cell_size=cell,\n", " geometry=geometry,\n", " sources=[sources],\n", " symmetries=symmetries,\n", " boundary_layers=[pml_layers],\n", " resolution=resolution)\n", "\n", "d1 = 0.2\n", "\n", "nearfield = sim.add_near2far(fcen, 0, 1,\n", " mp.Near2FarRegion(mp.Vector3(y=0.5*w+d1), size=mp.Vector3(sx-2*dpml)),\n", " mp.Near2FarRegion(mp.Vector3(-0.5*sx+dpml,0.5*w+0.5*d1), size=mp.Vector3(y=d1), weight=-1.0),\n", " mp.Near2FarRegion(mp.Vector3(0.5*sx-dpml,0.5*w+0.5*d1), size=mp.Vector3(y=d1)))\n", "\n", "sim.run(until_after_sources=mp.stop_when_fields_decayed(50, mp.Hz, mp.Vector3(0.12,-0.37), 1e-8))" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.5, 207.5, 79.5, -0.5)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "d2 = 20\n", "h = 4\n", "\n", "ff = sim.get_farfields(nearfield, resolution, center=mp.Vector3(y=0.5*w+d2+0.5*h), size=mp.Vector3(sx-2*dpml,h))\n", "\n", "plt.figure(dpi=200)\n", "plt.imshow(np.rot90(np.real(ff['Hz']),1),cmap='RdBu')\n", "plt.axis('off')" ] } ], "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.7.1" } }, "nbformat": 4, "nbformat_minor": 2 }