{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Far-Field Profile of a Cavity\n", "\n", "For this demonstration, we will compute the far-field spectra of a resonant cavity mode in a holey waveguide; a structure we had explored in [Tutorial/Resonant Modes and Transmission in a Waveguide Cavity](https://meep.readthedocs.io/en/latest/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity/). The structure is shown in the left image below.\n", "\n", "![center](https://meep.readthedocs.io/en/latest/images/N2ff_comp_cell.png)\n", "\n", "To set this up, we simply remove the last portion of [examples/holey-wvg-cavity.py](https://github.com/NanoComp/meep/blob/master/python/examples/holey-wvg-cavity.py), beginning right after the line:\n", "\n", "```py\n", "sim.symmetries.append(mp.Mirror(mp.Y, phase=-1))\n", "sim.symmetries.append(mp.Mirror(mp.X, phase=-1))\n", "```\n", "\n", "and insert the following lines:\n", "\n", "```py\n", "d1 = 0.2\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", "nearfield = sim.add_near2far(\n", " fcen, 0, 1,\n", " mp.Near2FarRegion(mp.Vector3(0, 0.5 * w + d1), size=mp.Vector3(2 * dpml - sx)),\n", " mp.Near2FarRegion(mp.Vector3(-0.5 * sx + dpml, 0.5 * w + 0.5 * d1), size=mp.Vector3(0, d1), weight=-1.0),\n", " mp.Near2FarRegion(mp.Vector3(0.5 * sx - dpml, 0.5 * w + 0.5 * d1), size=mp.Vector3(0, d1))\n", ")\n", "```\n", "\n", "We are creating a \"near\" bounding surface, consisting of three separate regions surrounding the cavity, that captures *all* outgoing waves in the top-half of the cell. Note that the *x*-normal surface on the left has a `weight` of -1 corresponding to the direction of the *outward normal* vector relative to the *x* direction so that the far-field spectra is correctly computed from the outgoing fields, similar to other DFT-field derived quantities such as flux and force. The parameter `d1` is the distance between the edge of the waveguide and the bounding surface, as shown in the schematic above, and we will demonstrate that changing this parameter does not change the far-field spectra which we compute at a single frequency corresponding to the cavity mode.\n", "\n", "We then time step the fields until they have sufficiently decayed away as the cell is surrounded by PMLs, and output the far-field spectra over a rectangular area that lies *outside* of the cell:\n", "\n", "```py\n", "sim.run(until_after_sources=mp.stop_when_fields_decayed(50, mp.Hz, mp.Vector3(0.12, -0.37), 1e-8))\n", "\n", "d2 = 20\n", "h = 4\n", "\n", "sim.output_farfields(nearfield, \"spectra-{}-{}-{}\".format(d1, d2, h), resolution,\n", " mp.Volume(mp.Vector3(0, (0.5 * w) + d2 + (0.5 * h)), size=mp.Vector3(sx - 2 * dpml, h)))\n", "```\n", "\n", "The first item to note is that the far-field region is located *outside* of the cell, although in principle it can be located anywhere. The second is that the far-field spectra can be interpolated onto a spatial grid that has any given resolution but in this example we used the same resolution as the simulation. Note that the simulation itself used purely real fields but the output, given its analytical nature, contains complex fields. Finally, given that the far-field spectra is derived from the Fourier-transformed fields which includes an arbitrary constant factor, we should expect an overall scale and phase difference in the results obtained using the near-to-far-field feature with those from a corresponding simulation involving the full computational volume. The key point is that the results will be qualitatively but not quantitatively identical. The data will be written out to an HDF5 file having a filename prefix with the values of the three main parameters. This includes the far-field spectra for all six field components, including real and imaginary parts.\n", "\n", "We run the above modified control file and in post-processing create an image of the real and imaginary parts of H$_z$ over the far-field region which is shown in insets (a) above. For comparison, we compute the steady-state fields using a larger cell that contains within it the far-field region. This involves a continuous source and complex fields. Results are shown in inset (b) of the figure above. The difference in the relative phases among any two points within each of the two field spectra is zero, which can be confirmed numerically. Also, as would be expected, it can be shown that increasing `d1` does not change the far-field spectra as long as the results are sufficiently converged. This indicates that discretization effects are irrelevant.\n", "\n", "In general, it is tricky to interpret the overall scale and phase of the far fields, because it is related to the scaling of the Fourier transforms of the near fields. It is simplest to use the `near2far` feature in situations where the overall scaling is irrelevant, e.g. when you are computing a ratio of fields in two simulations, or a fraction of the far field in some region, etcetera." ] }, { "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": [ "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 = [\n", " mp.Block(\n", " center=mp.Vector3(),\n", " size=mp.Vector3(mp.inf, w, mp.inf),\n", " material=mp.Medium(epsilon=eps),\n", " )\n", "]\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(\n", " src=mp.GaussianSource(fcen, fwidth=df), component=mp.Hz, center=mp.Vector3()\n", ")\n", "\n", "symmetries = [mp.Mirror(mp.X, phase=-1), mp.Mirror(mp.Y, phase=-1)]\n", "\n", "sim = mp.Simulation(\n", " cell_size=cell,\n", " geometry=geometry,\n", " sources=[sources],\n", " symmetries=symmetries,\n", " boundary_layers=[pml_layers],\n", " resolution=resolution,\n", ")\n", "\n", "d1 = 0.2\n", "\n", "nearfield = sim.add_near2far(\n", " fcen,\n", " 0,\n", " 1,\n", " mp.Near2FarRegion(mp.Vector3(y=0.5 * w + d1), size=mp.Vector3(sx - 2 * dpml)),\n", " mp.Near2FarRegion(\n", " mp.Vector3(-0.5 * sx + dpml, 0.5 * w + 0.5 * d1),\n", " size=mp.Vector3(y=d1),\n", " weight=-1.0,\n", " ),\n", " mp.Near2FarRegion(\n", " mp.Vector3(0.5 * sx - dpml, 0.5 * w + 0.5 * d1), size=mp.Vector3(y=d1)\n", " ),\n", ")\n", "\n", "sim.run(\n", " until_after_sources=mp.stop_when_fields_decayed(\n", " 50, mp.Hz, mp.Vector3(0.12, -0.37), 1e-8\n", " )\n", ")" ] }, { "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(\n", " nearfield,\n", " resolution,\n", " center=mp.Vector3(y=0.5 * w + d2 + 0.5 * h),\n", " size=mp.Vector3(sx - 2 * dpml, h),\n", ")\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.6.7" } }, "nbformat": 4, "nbformat_minor": 2 }