{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Optical Forces\n", "\n", "This tutorial demonstrates Meep's ability to compute classical forces via the [Maxwell stress tensor](https://en.wikipedia.org/wiki/Maxwell_stress_tensor) (MST). The geometry consists of two identical, parallel, silicon waveguides with square cross section in vacuum. A schematic of the geometry is shown below. Due to the parallel orientation of the waveguides, the two modes can be chosen to be either symmetric or anti-symmetric with respect to an $x$ mirror-symmetry plane between them. As the two waveguides are brought closer and closer together, their modes increasingly couple and give rise to a gradient force that is *transverse* to the waveguide axis (i.e., in the $x$ direction). This is different from [radiation pressure](https://en.wikipedia.org/wiki/Radiation_pressure) which involves momentum exchange between photons and is *longitudinal* in nature. An interesting phenomena that occurs for this coupled system is that the force can be tuned to be either attractive or repulsive depending on the relative phase of the modes. This tutorial will demonstrate this effect.\n", "\n", "![](https://meep.readthedocs.io/en/latest/images/Waveguide_forces.png)\n", "\n", "The gradient force on each waveguide arising from the evanescent coupling of the two waveguide modes can be computed analytically:\n", "\n", "$$F=-\\frac{1}{\\omega}\\frac{d\\omega}{ds}\\Bigg\\vert_\\vec{k}U,$$\n", "\n", "where $ω$ is the mode frequency of the coupled-waveguide system, $s$ is the separation distance between the parallel waveguides, $k$ is the conserved wave vector and $U$ is the total energy of the electromagnetic fields. By convention, negative and positive values correspond to attractive and repulsive forces, respectively. For more details, see [Optics Letters, Vol. 30, pp. 3042-4, 2005](https://www.osapublishing.org/ol/abstract.cfm?uri=ol-30-22-3042). This expression has been shown to be mathematically equivalent to the MST in [Optics Express, Vol. 17, pp. 18116-35, 2009](http://www.opticsinfobase.org/oe/abstract.cfm?URI=oe-17-20-18116). We will verify this result in this tutorial. Note: in this particular example, only the fundamental `ODD_Y` mode shows the bidirectional force.\n", "\n", "It is convenient to normalize the force in order to work with dimensionless quantities. Since the total power transmitted through the waveguide is $P=v_gU/L$ where $v_g$ is the group velocity, $L$ is the waveguide length, and $U$ is defined as before, we focus instead on the force per unit length per unit power $(F/L)(ac/P)$ where $a$ is the waveguide width and $c$ is the speed of light. This dimensionless quantity enables us to compute both the flux and the force in a single simulation.\n", "\n", "The gradient force can be computed using two different methods: (1) using MPB, compute the frequency and group velocity for a given mode over a range of separation distances and then use a centered [finite-difference](https://en.wikipedia.org/wiki/Finite_difference) scheme to numerically evaluate the formula from above, and (2) using Meep, directly compute both the gradient force and the power transmitted through the waveguide for the guided mode over the same range of separation distances. This tutorial verifies that (1) and (2) produce equivalent results.\n", "\n", "The main component of the script is the function `parallel_waveguide(s,xodd)` which computes the Poynting flux and the force given the waveguide separation distance `s` and parity of the waveguide mode `xodd`. Since the eigenmode frequency is not known apriori, a preliminary [`Harminv`](../Python_User_Interface.md#harminv) run is required using a broadband pulsed source. The propagating mode never decays away and the runtime is therefore chosen arbitrarily as 200 time units after the pulsed sources have turned off. Once we have determined the eigenmode frequency, we then replace the `Source` with [`EigenModeSource`](https://meep.readthedocs.io/en/latest/Python_User_Interface/#eigenmodesource) to compute: (1) the force on each waveguide due to the mode coupling and (2) the power in the mode. The [eigenmode source](https://meep.readthedocs.io/en/latest/Python_Tutorials/Eigenmode_Source/) enables a more efficient mode excitation than simply using a constant-amplitude point/area source." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import meep as mp\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "resolution = 30 # pixels/μm\n", " \n", "Si = mp.Medium(index=3.45)\n", "\n", "dpml = 1.0\n", "pml_layers = [mp.PML(dpml)]\n", " \n", "sx = 5\n", "sy = 3\n", "cell = mp.Vector3(sx+2*dpml,sy+2*dpml,0)\n", "\n", "a = 1.0 # waveguide width\n", "\n", "k_point = mp.Vector3(z=0.5)\n", "\n", "fcen = 0.22\n", "df = 0.06\n", "\n", "def parallel_waveguide(s,xodd):\n", " geometry = [mp.Block(center=mp.Vector3(-0.5*(s+a)),\n", " size=mp.Vector3(a,a,mp.inf),\n", " material=Si),\n", " mp.Block(center=mp.Vector3(0.5*(s+a)),\n", " size=mp.Vector3(a,a,mp.inf),\n", " material=Si)]\n", "\n", " symmetries = [mp.Mirror(mp.X, phase=-1.0 if xodd else 1.0),\n", " mp.Mirror(mp.Y, phase=-1.0)]\n", "\n", " sources = [mp.Source(src=mp.GaussianSource(fcen, fwidth=df),\n", " component=mp.Ey,\n", " center=mp.Vector3(-0.5*(s+a)),\n", " size=mp.Vector3(a,a)),\n", " mp.Source(src=mp.GaussianSource(fcen, fwidth=df),\n", " component=mp.Ey,\n", " center=mp.Vector3(0.5*(s+a)),\n", " size=mp.Vector3(a,a),\n", " amplitude=-1.0 if xodd else 1.0)]\n", "\n", " sim = mp.Simulation(resolution=resolution,\n", " cell_size=cell,\n", " boundary_layers=pml_layers,\n", " geometry=geometry,\n", " symmetries=symmetries,\n", " k_point=k_point,\n", " sources=sources)\n", "\n", " h = mp.Harminv(mp.Ey, mp.Vector3(0.5*(s+a)), fcen, df)\n", "\n", " sim.run(mp.after_sources(h), until_after_sources=200)\n", "\n", " f = h.modes[0].freq\n", " print(\"freq:, {}, {}\".format(s, f))\n", "\n", " sim.reset_meep()\n", "\n", " eig_sources = [mp.EigenModeSource(src=mp.GaussianSource(f, fwidth=df),\n", " size=mp.Vector3(a,a),\n", " center=mp.Vector3(-0.5*(s+a)),\n", " eig_kpoint=k_point,\n", " eig_match_freq=True,\n", " eig_parity=mp.ODD_Y),\n", " mp.EigenModeSource(src=mp.GaussianSource(f, fwidth=df),\n", " size=mp.Vector3(a,a),\n", " center=mp.Vector3(0.5*(s+a)),\n", " eig_kpoint=k_point,\n", " eig_match_freq=True,\n", " eig_parity=mp.ODD_Y,\n", " amplitude=-1.0 if xodd else 1.0)]\n", "\n", " sim.change_sources(eig_sources)\n", "\n", " flux_reg = mp.FluxRegion(direction=mp.Z, center=mp.Vector3(), size=mp.Vector3(1.2*(2*a+s),1.2*a))\n", " wvg_flux = sim.add_flux(f, 0, 1, flux_reg)\n", "\n", " force_reg1 = mp.ForceRegion(mp.Vector3(0.5*s), direction=mp.X, weight=1.0, size=mp.Vector3(y=a))\n", " force_reg2 = mp.ForceRegion(mp.Vector3(0.5*s+a), direction=mp.X, weight=-1.0, size=mp.Vector3(y=a))\n", " wvg_force = sim.add_force(f, 0, 1, force_reg1, force_reg2)\n", "\n", " sim.run(until_after_sources=500)\n", "\n", " flux = mp.get_fluxes(wvg_flux)[0]\n", " force = mp.get_forces(wvg_force)[0]\n", " \n", " sim.reset_meep()\n", " return flux, force" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are two important items to note in `parallel_waveguide`: (1) a single flux surface is used to compute the Poynting flux in $z$ which spans an area slightly larger than both waveguides rather than two separate flux surfaces (one for each waveguide). This is because in the limit of small separation, two flux surfaces overlap whereas the total power through a single flux surface need, by symmetry, only be halved in order to determine the value for just one of the two waveguides. (2) Instead of defining a closed, four-sided \"box\" surrounding the waveguides, the MST is computed along just two $y$-oriented lines (to obtain the force in the $x$ direction) with different `weight` values to correctly sum the total force. By symmetry, the force in the $y$ direction is zero and need not be computed. Choosing a suitable runtime requires some care. A large runtime is necessary to obtain the steady-state response but this will also lead to large values for the discrete Fourier-transformed fields used to compute both the flux and the MST. Large floating-point numbers may contain [roundoff errors](https://en.wikipedia.org/wiki/Round-off_error).\n", "\n", "The simulation is run over the range of separation distances from 0.1 to 1.00 μm in increments of 0.1 μm. The results are compared with those from MPB. This is shown in the figure above. The two methods show good agreement." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00360179 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.55,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.55,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0422099 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 89.8/366.6666717529297 = 24.5% done in 4.0s, 12.3s to go\n", "on time step 5388 (time=89.8), 0.000742406 s/step\n", "Meep progress: 181.51666666666665/366.6666717529297 = 49.5% done in 8.0s, 8.2s to go\n", "on time step 10892 (time=181.533), 0.000726833 s/step\n", "Meep progress: 270.9166666666667/366.6666717529297 = 73.9% done in 12.0s, 4.2s to go\n", "on time step 16257 (time=270.95), 0.000745663 s/step\n", "Meep progress: 354.48333333333335/366.6666717529297 = 96.7% done in 16.0s, 0.5s to go\n", "on time step 21271 (time=354.517), 0.000797836 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.23374229564948107, -2.0370530376107446e-09, 57372658.27983471, 0.5614173140056927, -0.5571968483946811-0.068710061886171i, 2.1803102586228e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.1, 0.23374229564948107\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00125718 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.55,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.55,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0901592 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.770525) = 0.233378 after 12 iters\n", "MPB solved for omega_1(0,0,0.77174) = 0.233742 after 7 iters\n", "MPB solved for omega_1(0,0,0.77174) = 0.233742 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.770525) = 0.233378 after 12 iters\n", "MPB solved for omega_1(0,0,0.77174) = 0.233742 after 7 iters\n", "MPB solved for omega_1(0,0,0.77174) = 0.233742 after 1 iters\n", "Meep progress: 67.25/666.6666717529297 = 10.1% done in 4.0s, 35.7s to go\n", "on time step 4035 (time=67.25), 0.000991493 s/step\n", "Meep progress: 140.25/666.6666717529297 = 21.0% done in 8.0s, 30.0s to go\n", "on time step 8416 (time=140.267), 0.000913247 s/step\n", "Meep progress: 216.48333333333332/666.6666717529297 = 32.5% done in 12.0s, 25.0s to go\n", "on time step 12991 (time=216.517), 0.000874406 s/step\n", "Meep progress: 296.48333333333335/666.6666717529297 = 44.5% done in 16.0s, 20.0s to go\n", "on time step 17792 (time=296.533), 0.000833313 s/step\n", "Meep progress: 373.5333333333333/666.6666717529297 = 56.0% done in 20.0s, 15.7s to go\n", "on time step 22416 (time=373.6), 0.000865156 s/step\n", "Meep progress: 448.8333333333333/666.6666717529297 = 67.3% done in 24.0s, 11.6s to go\n", "on time step 26934 (time=448.9), 0.0008854 s/step\n", "Meep progress: 524.1833333333333/666.6666717529297 = 78.6% done in 28.0s, 7.6s to go\n", "on time step 31456 (time=524.267), 0.000884651 s/step\n", "Meep progress: 597.2166666666667/666.6666717529297 = 89.6% done in 32.0s, 3.7s to go\n", "on time step 35838 (time=597.3), 0.000912972 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000809908 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.55,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.55,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.041292 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 76.8/366.6666717529297 = 20.9% done in 4.0s, 15.1s to go\n", "on time step 4608 (time=76.8), 0.000868207 s/step\n", "Meep progress: 155.05/366.6666717529297 = 42.3% done in 8.0s, 10.9s to go\n", "on time step 9303 (time=155.05), 0.000851982 s/step\n", "Meep progress: 229.95/366.6666717529297 = 62.7% done in 12.0s, 7.1s to go\n", "on time step 13798 (time=229.967), 0.000889992 s/step\n", "Meep progress: 306.5/366.6666717529297 = 83.6% done in 16.0s, 3.1s to go\n", "on time step 18392 (time=306.533), 0.000870906 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.21431032766411273, 2.2288228830156038e-08, -4807702.067697506, 1.039871452917814, -0.6677554036974251-0.7971419945193543i, 3.6265822866835364e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.1, 0.21431032766411273\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00142908 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.55,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.55,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0933309 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.706244) = 0.214102 after 11 iters\n", "MPB solved for omega_1(0,0,0.706937) = 0.21431 after 6 iters\n", "MPB solved for omega_1(0,0,0.706937) = 0.21431 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.706244) = 0.214102 after 11 iters\n", "MPB solved for omega_1(0,0,0.706937) = 0.21431 after 6 iters\n", "MPB solved for omega_1(0,0,0.706937) = 0.21431 after 1 iters\n", "Meep progress: 69.61666666666666/666.6666717529297 = 10.4% done in 4.0s, 34.3s to go\n", "on time step 4177 (time=69.6167), 0.000957769 s/step\n", "Meep progress: 143.38333333333333/666.6666717529297 = 21.5% done in 8.0s, 29.2s to go\n", "on time step 8603 (time=143.383), 0.000903772 s/step\n", "Meep progress: 217.31666666666666/666.6666717529297 = 32.6% done in 12.0s, 24.8s to go\n", "on time step 13039 (time=217.317), 0.000901732 s/step\n", "Meep progress: 282.18333333333334/666.6666717529297 = 42.3% done in 16.0s, 21.8s to go\n", "on time step 16931 (time=282.183), 0.00102796 s/step\n", "Meep progress: 352.1333333333333/666.6666717529297 = 52.8% done in 20.0s, 17.9s to go\n", "on time step 21128 (time=352.133), 0.000953083 s/step\n", "Meep progress: 423.59999999999997/666.6666717529297 = 63.5% done in 24.0s, 13.8s to go\n", "on time step 25417 (time=423.617), 0.000932828 s/step\n", "Meep progress: 493.98333333333335/666.6666717529297 = 74.1% done in 28.0s, 9.8s to go\n", "on time step 29640 (time=494), 0.000947254 s/step\n", "Meep progress: 565.4166666666666/666.6666717529297 = 84.8% done in 32.0s, 5.7s to go\n", "on time step 33927 (time=565.45), 0.000933248 s/step\n", "Meep progress: 634.6666666666666/666.6666717529297 = 95.2% done in 36.0s, 1.8s to go\n", "on time step 38082 (time=634.7), 0.000962784 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00139594 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.6,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " block, center = (0.6,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0331678 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 73.96666666666667/366.6666717529297 = 20.2% done in 4.0s, 15.8s to go\n", "on time step 4438 (time=73.9667), 0.000901337 s/step\n", "Meep progress: 148.65/366.6666717529297 = 40.5% done in 8.0s, 11.7s to go\n", "on time step 8920 (time=148.667), 0.000892644 s/step\n", "Meep progress: 218.96666666666667/366.6666717529297 = 59.7% done in 12.0s, 8.1s to go\n", "on time step 13140 (time=219), 0.000947903 s/step\n", "Meep progress: 291.5/366.6666717529297 = 79.5% done in 16.0s, 4.1s to go\n", "on time step 17490 (time=291.5), 0.000919692 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.2320582072289672, -7.187375062052522e-10, 161434602.49777028, 0.7086613397470293, -0.3801627466619353-0.5980611845810657i, 1.4487929164079128e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.2, 0.2320582072289672\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00135493 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.6,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.6,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.062665 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.763839) = 0.231711 after 10 iters\n", "MPB solved for omega_1(0,0,0.764994) = 0.232058 after 6 iters\n", "MPB solved for omega_1(0,0,0.764994) = 0.232058 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.763839) = 0.231711 after 10 iters\n", "MPB solved for omega_1(0,0,0.764994) = 0.232058 after 6 iters\n", "MPB solved for omega_1(0,0,0.764994) = 0.232058 after 1 iters\n", "Meep progress: 67.28333333333333/666.6666717529297 = 10.1% done in 4.0s, 35.6s to go\n", "on time step 4037 (time=67.2833), 0.000991073 s/step\n", "Meep progress: 136.85/666.6666717529297 = 20.5% done in 8.0s, 31.0s to go\n", "on time step 8212 (time=136.867), 0.000958243 s/step\n", "Meep progress: 204.4/666.6666717529297 = 30.7% done in 12.0s, 27.1s to go\n", "on time step 12266 (time=204.433), 0.000986883 s/step\n", "Meep progress: 276.31666666666666/666.6666717529297 = 41.4% done in 16.0s, 22.6s to go\n", "on time step 16582 (time=276.367), 0.00092685 s/step\n", "Meep progress: 349.68333333333334/666.6666717529297 = 52.5% done in 20.0s, 18.1s to go\n", "on time step 20985 (time=349.75), 0.000908581 s/step\n", "Meep progress: 414.0/666.6666717529297 = 62.1% done in 24.0s, 14.6s to go\n", "on time step 24843 (time=414.05), 0.00103698 s/step\n", "Meep progress: 479.25/666.6666717529297 = 71.9% done in 28.0s, 11.0s to go\n", "on time step 28760 (time=479.333), 0.00102126 s/step\n", "Meep progress: 551.0166666666667/666.6666717529297 = 82.7% done in 32.0s, 6.7s to go\n", "on time step 33067 (time=551.117), 0.000928792 s/step\n", "Meep progress: 621.55/666.6666717529297 = 93.2% done in 36.0s, 2.6s to go\n", "on time step 37300 (time=621.667), 0.000945015 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000916958 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.6,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.6,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.036346 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 74.08333333333333/366.6666717529297 = 20.2% done in 4.0s, 15.8s to go\n", "on time step 4445 (time=74.0833), 0.000900018 s/step\n", "Meep progress: 151.0/366.6666717529297 = 41.2% done in 8.0s, 11.4s to go\n", "on time step 9060 (time=151), 0.000866776 s/step\n", "Meep progress: 225.86666666666667/366.6666717529297 = 61.6% done in 12.0s, 7.5s to go\n", "on time step 13553 (time=225.883), 0.000890371 s/step\n", "Meep progress: 300.5333333333333/366.6666717529297 = 82.0% done in 16.0s, 3.5s to go\n", "on time step 18034 (time=300.567), 0.000892781 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.21791380596839446, 2.7123554007306713e-08, -4017058.4929558174, 1.2908281667923203, -0.682733883317874+1.095496143650957i, 2.1644312073604896e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.2, 0.21791380596839446\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00139999 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.6,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.6,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0790112 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.717117) = 0.217682 after 10 iters\n", "MPB solved for omega_1(0,0,0.717889) = 0.217914 after 6 iters\n", "MPB solved for omega_1(0,0,0.717889) = 0.217914 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.717117) = 0.217682 after 10 iters\n", "MPB solved for omega_1(0,0,0.717889) = 0.217914 after 6 iters\n", "MPB solved for omega_1(0,0,0.717889) = 0.217914 after 1 iters\n", "Meep progress: 68.16666666666667/666.6666717529297 = 10.2% done in 4.0s, 35.1s to go\n", "on time step 4090 (time=68.1667), 0.000978039 s/step\n", "Meep progress: 141.76666666666665/666.6666717529297 = 21.3% done in 8.0s, 29.6s to go\n", "on time step 8507 (time=141.783), 0.000905737 s/step\n", "Meep progress: 215.56666666666666/666.6666717529297 = 32.3% done in 12.0s, 25.1s to go\n", "on time step 12936 (time=215.6), 0.000903317 s/step\n", "Meep progress: 288.65/666.6666717529297 = 43.3% done in 16.0s, 21.0s to go\n", "on time step 17322 (time=288.7), 0.00091215 s/step\n", "Meep progress: 361.1666666666667/666.6666717529297 = 54.2% done in 20.0s, 16.9s to go\n", "on time step 21673 (time=361.217), 0.000919449 s/step\n", "Meep progress: 428.95/666.6666717529297 = 64.3% done in 24.0s, 13.3s to go\n", "on time step 25741 (time=429.017), 0.000983401 s/step\n", "Meep progress: 501.3666666666667/666.6666717529297 = 75.2% done in 28.0s, 9.2s to go\n", "on time step 30087 (time=501.45), 0.00092055 s/step\n", "Meep progress: 572.0833333333334/666.6666717529297 = 85.8% done in 32.0s, 5.3s to go\n", "on time step 34330 (time=572.167), 0.00094273 s/step\n", "Meep progress: 644.15/666.6666717529297 = 96.6% done in 36.0s, 1.3s to go\n", "on time step 38654 (time=644.233), 0.000925083 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000869036 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.65,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.65,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.036432 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 78.8/366.6666717529297 = 21.5% done in 4.0s, 14.6s to go\n", "on time step 4728 (time=78.8), 0.000846042 s/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Meep progress: 160.58333333333334/366.6666717529297 = 43.8% done in 8.0s, 10.3s to go\n", "on time step 9635 (time=160.583), 0.000815166 s/step\n", "Meep progress: 241.01666666666665/366.6666717529297 = 65.7% done in 12.0s, 6.3s to go\n", "on time step 14462 (time=241.033), 0.000828869 s/step\n", "Meep progress: 319.76666666666665/366.6666717529297 = 87.2% done in 16.0s, 2.3s to go\n", "on time step 19188 (time=319.8), 0.00084651 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.2304584794221163, 1.0634248187984447e-09, -108356733.52184385, 0.8547952870601584, 0.22921259365443036-0.8234904794170165i, 2.6330486575457057e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.30000000000000004, 0.2304584794221163\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00135112 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.65,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.65,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.08955 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.759662) = 0.230124 after 12 iters\n", "MPB solved for omega_1(0,0,0.760778) = 0.230458 after 7 iters\n", "MPB solved for omega_1(0,0,0.760778) = 0.230458 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.759662) = 0.230124 after 12 iters\n", "MPB solved for omega_1(0,0,0.760778) = 0.230458 after 7 iters\n", "MPB solved for omega_1(0,0,0.760778) = 0.230458 after 1 iters\n", "Meep progress: 68.21666666666667/666.6666717529297 = 10.2% done in 4.0s, 35.1s to go\n", "on time step 4093 (time=68.2167), 0.000977362 s/step\n", "Meep progress: 140.58333333333334/666.6666717529297 = 21.1% done in 8.0s, 29.9s to go\n", "on time step 8436 (time=140.6), 0.000921178 s/step\n", "Meep progress: 212.9/666.6666717529297 = 31.9% done in 12.0s, 25.6s to go\n", "on time step 12776 (time=212.933), 0.000921829 s/step\n", "Meep progress: 285.23333333333335/666.6666717529297 = 42.8% done in 16.0s, 21.4s to go\n", "on time step 17117 (time=285.283), 0.000921618 s/step\n", "Meep progress: 357.55/666.6666717529297 = 53.6% done in 20.0s, 17.3s to go\n", "on time step 21456 (time=357.6), 0.000921966 s/step\n", "Meep progress: 429.8833333333333/666.6666717529297 = 64.5% done in 24.0s, 13.2s to go\n", "on time step 25797 (time=429.95), 0.000921627 s/step\n", "Meep progress: 501.06666666666666/666.6666717529297 = 75.2% done in 28.0s, 9.3s to go\n", "on time step 30068 (time=501.133), 0.000936582 s/step\n", "Meep progress: 572.2333333333333/666.6666717529297 = 85.8% done in 32.0s, 5.3s to go\n", "on time step 34338 (time=572.3), 0.000936924 s/step\n", "Meep progress: 640.2166666666667/666.6666717529297 = 96.0% done in 36.0s, 1.5s to go\n", "on time step 38418 (time=640.3), 0.000980588 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00100088 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.65,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.65,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0405252 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 77.73333333333333/366.6666717529297 = 21.2% done in 4.0s, 14.9s to go\n", "on time step 4664 (time=77.7333), 0.000857717 s/step\n", "Meep progress: 159.16666666666666/366.6666717529297 = 43.4% done in 8.0s, 10.4s to go\n", "on time step 9551 (time=159.183), 0.000818637 s/step\n", "Meep progress: 238.26666666666665/366.6666717529297 = 65.0% done in 12.0s, 6.5s to go\n", "on time step 14297 (time=238.283), 0.000842858 s/step\n", "Meep progress: 314.65/366.6666717529297 = 85.8% done in 16.0s, 2.6s to go\n", "on time step 18880 (time=314.667), 0.000872816 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.22023544575691004, 1.635141607559094e-08, -6734445.651030586, 1.3719341569438452, 0.8394390852055893+1.0851476181692623i, 9.647466233746446e-14+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.30000000000000004, 0.22023544575691004\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00134397 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.65,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.65,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.087333 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.725844) = 0.219985 after 11 iters\n", "MPB solved for omega_1(0,0,0.72668) = 0.220235 after 6 iters\n", "MPB solved for omega_1(0,0,0.72668) = 0.220235 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.725844) = 0.219985 after 11 iters\n", "MPB solved for omega_1(0,0,0.72668) = 0.220235 after 6 iters\n", "MPB solved for omega_1(0,0,0.72668) = 0.220235 after 1 iters\n", "Meep progress: 64.31666666666666/666.6666717529297 = 9.6% done in 4.0s, 37.5s to go\n", "on time step 3859 (time=64.3167), 0.00103667 s/step\n", "Meep progress: 131.16666666666666/666.6666717529297 = 19.7% done in 8.0s, 32.7s to go\n", "on time step 7870 (time=131.167), 0.000997371 s/step\n", "Meep progress: 198.25/666.6666717529297 = 29.7% done in 12.0s, 28.4s to go\n", "on time step 11896 (time=198.267), 0.000993774 s/step\n", "Meep progress: 269.68333333333334/666.6666717529297 = 40.5% done in 16.0s, 23.6s to go\n", "on time step 16182 (time=269.7), 0.000933308 s/step\n", "Meep progress: 340.05/666.6666717529297 = 51.0% done in 20.0s, 19.2s to go\n", "on time step 20405 (time=340.083), 0.000947318 s/step\n", "Meep progress: 405.23333333333335/666.6666717529297 = 60.8% done in 24.0s, 15.5s to go\n", "on time step 24316 (time=405.267), 0.00102289 s/step\n", "Meep progress: 474.01666666666665/666.6666717529297 = 71.1% done in 28.0s, 11.4s to go\n", "on time step 28444 (time=474.067), 0.000969117 s/step\n", "Meep progress: 540.7166666666667/666.6666717529297 = 81.1% done in 32.0s, 7.5s to go\n", "on time step 32447 (time=540.783), 0.000999418 s/step\n", "Meep progress: 608.7166666666667/666.6666717529297 = 91.3% done in 36.0s, 3.4s to go\n", "on time step 36528 (time=608.8), 0.000980248 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000908852 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.7,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.7,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.036809 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 64.98333333333333/366.6666717529297 = 17.7% done in 4.0s, 18.6s to go\n", "on time step 3899 (time=64.9833), 0.00102599 s/step\n", "Meep progress: 142.76666666666665/366.6666717529297 = 38.9% done in 8.0s, 12.5s to go\n", "on time step 8566 (time=142.767), 0.000857144 s/step\n", "Meep progress: 216.78333333333333/366.6666717529297 = 59.1% done in 12.0s, 8.3s to go\n", "on time step 13008 (time=216.8), 0.000900648 s/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Meep progress: 292.1666666666667/366.6666717529297 = 79.7% done in 16.0s, 4.1s to go\n", "on time step 17532 (time=292.2), 0.000884238 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.22933726326384737, 2.79426147240498e-09, -41037187.38004503, 0.9591142558886121, 0.7259793855459205-0.6267807332800953i, 5.574464349569071e-14+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.4, 0.22933726326384737\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.0013938 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.7,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.7,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.091202 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.754851) = 0.229014 after 10 iters\n", "MPB solved for omega_1(0,0,0.755926) = 0.229337 after 6 iters\n", "MPB solved for omega_1(0,0,0.755926) = 0.229337 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.754851) = 0.229014 after 10 iters\n", "MPB solved for omega_1(0,0,0.755926) = 0.229337 after 6 iters\n", "MPB solved for omega_1(0,0,0.755926) = 0.229337 after 1 iters\n", "Meep progress: 57.11666666666667/666.6666717529297 = 8.6% done in 4.0s, 42.7s to go\n", "on time step 3427 (time=57.1167), 0.00116738 s/step\n", "Meep progress: 115.03333333333333/666.6666717529297 = 17.3% done in 8.0s, 38.4s to go\n", "on time step 6902 (time=115.033), 0.00115118 s/step\n", "Meep progress: 181.56666666666666/666.6666717529297 = 27.2% done in 12.0s, 32.1s to go\n", "on time step 10894 (time=181.567), 0.0010022 s/step\n", "Meep progress: 246.36666666666667/666.6666717529297 = 37.0% done in 16.0s, 27.3s to go\n", "on time step 14783 (time=246.383), 0.00102871 s/step\n", "Meep progress: 311.75/666.6666717529297 = 46.8% done in 20.0s, 22.8s to go\n", "on time step 18706 (time=311.767), 0.00101967 s/step\n", "Meep progress: 379.15/666.6666717529297 = 56.9% done in 24.0s, 18.2s to go\n", "on time step 22750 (time=379.167), 0.000989141 s/step\n", "Meep progress: 447.96666666666664/666.6666717529297 = 67.2% done in 28.0s, 13.7s to go\n", "on time step 26880 (time=448), 0.000968637 s/step\n", "Meep progress: 518.35/666.6666717529297 = 77.8% done in 32.0s, 9.2s to go\n", "on time step 31103 (time=518.383), 0.000947198 s/step\n", "Meep progress: 586.1/666.6666717529297 = 87.9% done in 36.0s, 4.9s to go\n", "on time step 35168 (time=586.133), 0.000984087 s/step\n", "Meep progress: 651.35/666.6666717529297 = 97.7% done in 40.0s, 0.9s to go\n", "on time step 39083 (time=651.383), 0.00102175 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000927925 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.7,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.7,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.03809 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 74.51666666666667/366.6666717529297 = 20.3% done in 4.0s, 15.7s to go\n", "on time step 4471 (time=74.5167), 0.000894717 s/step\n", "Meep progress: 154.1/366.6666717529297 = 42.0% done in 8.0s, 11.0s to go\n", "on time step 9247 (time=154.117), 0.00083769 s/step\n", "Meep progress: 230.6/366.6666717529297 = 62.9% done in 12.0s, 7.1s to go\n", "on time step 13838 (time=230.633), 0.000871328 s/step\n", "Meep progress: 308.26666666666665/366.6666717529297 = 84.1% done in 16.0s, 3.0s to go\n", "on time step 18499 (time=308.317), 0.000858298 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.22192961434798275, 2.2238819996785375e-09, -49896895.24445602, 1.3811826261105158, 1.3807432587120034+0.03483532963671006i, 1.7205571155532076e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.4, 0.22192961434798275\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00138497 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.7,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.7,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0894089 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.730382) = 0.221667 after 10 iters\n", "MPB solved for omega_1(0,0,0.731255) = 0.22193 after 6 iters\n", "MPB solved for omega_1(0,0,0.731255) = 0.22193 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.730382) = 0.221667 after 10 iters\n", "MPB solved for omega_1(0,0,0.731255) = 0.22193 after 6 iters\n", "MPB solved for omega_1(0,0,0.731255) = 0.22193 after 1 iters\n", "Meep progress: 64.7/666.6666717529297 = 9.7% done in 4.0s, 37.2s to go\n", "on time step 3882 (time=64.7), 0.00103063 s/step\n", "Meep progress: 130.3/666.6666717529297 = 19.5% done in 8.0s, 32.9s to go\n", "on time step 7819 (time=130.317), 0.00101616 s/step\n", "Meep progress: 195.48333333333332/666.6666717529297 = 29.3% done in 12.0s, 28.9s to go\n", "on time step 11730 (time=195.5), 0.00102293 s/step\n", "Meep progress: 264.5833333333333/666.6666717529297 = 39.7% done in 16.0s, 24.3s to go\n", "on time step 15877 (time=264.617), 0.000964712 s/step\n", "Meep progress: 333.01666666666665/666.6666717529297 = 50.0% done in 20.0s, 20.0s to go\n", "on time step 19983 (time=333.05), 0.000974242 s/step\n", "Meep progress: 402.6166666666667/666.6666717529297 = 60.4% done in 24.0s, 15.7s to go\n", "on time step 24160 (time=402.667), 0.000957755 s/step\n", "Meep progress: 470.3666666666667/666.6666717529297 = 70.6% done in 28.0s, 11.7s to go\n", "on time step 28223 (time=470.383), 0.000985074 s/step\n", "Meep progress: 536.35/666.6666717529297 = 80.5% done in 32.0s, 7.8s to go\n", "on time step 32185 (time=536.417), 0.0010097 s/step\n", "Meep progress: 599.6166666666667/666.6666717529297 = 89.9% done in 36.0s, 4.0s to go\n", "on time step 35982 (time=599.7), 0.00105374 s/step\n", "Meep progress: 659.3333333333334/666.6666717529297 = 98.9% done in 40.0s, 0.4s to go\n", "on time step 39565 (time=659.417), 0.00111639 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000865936 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.75,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.75,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.040071 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 68.25/366.6666717529297 = 18.6% done in 4.0s, 17.5s to go\n", "on time step 4095 (time=68.25), 0.000976983 s/step\n", "Meep progress: 143.75/366.6666717529297 = 39.2% done in 8.0s, 12.4s to go\n", "on time step 8625 (time=143.75), 0.000883045 s/step\n", "Meep progress: 221.43333333333334/366.6666717529297 = 60.4% done in 12.0s, 7.9s to go\n", "on time step 13287 (time=221.45), 0.000858078 s/step\n", "Meep progress: 298.5833333333333/366.6666717529297 = 81.4% done in 16.0s, 3.6s to go\n", "on time step 17917 (time=298.617), 0.00086411 s/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.22835035053721117, 4.685319627884293e-09, -24368705.7312166, 1.0451771206496243, 1.0252873926430903-0.2029309636713261i, 2.7856797013746015e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.5, 0.22835035053721117\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00148392 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.75,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.75,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0936301 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.752688) = 0.228034 after 12 iters\n", "MPB solved for omega_1(0,0,0.753743) = 0.22835 after 7 iters\n", "MPB solved for omega_1(0,0,0.753743) = 0.22835 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.752688) = 0.228034 after 12 iters\n", "MPB solved for omega_1(0,0,0.753743) = 0.22835 after 7 iters\n", "MPB solved for omega_1(0,0,0.753743) = 0.22835 after 1 iters\n", "Meep progress: 65.31666666666666/666.6666717529297 = 9.8% done in 4.0s, 36.8s to go\n", "on time step 3919 (time=65.3167), 0.00102092 s/step\n", "Meep progress: 132.61666666666667/666.6666717529297 = 19.9% done in 8.0s, 32.2s to go\n", "on time step 7958 (time=132.633), 0.000990575 s/step\n", "Meep progress: 201.06666666666666/666.6666717529297 = 30.2% done in 12.0s, 27.8s to go\n", "on time step 12065 (time=201.083), 0.000974086 s/step\n", "Meep progress: 264.2833333333333/666.6666717529297 = 39.6% done in 16.0s, 24.4s to go\n", "on time step 15858 (time=264.3), 0.00105464 s/step\n", "Meep progress: 328.9/666.6666717529297 = 49.3% done in 20.0s, 20.5s to go\n", "on time step 19735 (time=328.917), 0.00103181 s/step\n", "Meep progress: 390.4/666.6666717529297 = 58.6% done in 24.0s, 17.0s to go\n", "on time step 23427 (time=390.45), 0.00108362 s/step\n", "Meep progress: 450.73333333333335/666.6666717529297 = 67.6% done in 28.0s, 13.4s to go\n", "on time step 27047 (time=450.783), 0.001105 s/step\n", "Meep progress: 509.4166666666667/666.6666717529297 = 76.4% done in 32.0s, 9.9s to go\n", "on time step 30568 (time=509.467), 0.00113631 s/step\n", "Meep progress: 573.25/666.6666717529297 = 86.0% done in 36.0s, 5.9s to go\n", "on time step 34400 (time=573.333), 0.00104404 s/step\n", "Meep progress: 641.2833333333333/666.6666717529297 = 96.2% done in 40.0s, 1.6s to go\n", "on time step 38483 (time=641.383), 0.000979924 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000879049 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.75,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.75,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.041075 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 68.18333333333334/366.6666717529297 = 18.6% done in 4.0s, 17.5s to go\n", "on time step 4091 (time=68.1833), 0.000977879 s/step\n", "Meep progress: 137.38333333333333/366.6666717529297 = 37.5% done in 8.0s, 13.4s to go\n", "on time step 8244 (time=137.4), 0.000963344 s/step\n", "Meep progress: 208.11666666666667/366.6666717529297 = 56.8% done in 12.0s, 9.1s to go\n", "on time step 12488 (time=208.133), 0.000942547 s/step\n", "Meep progress: 278.71666666666664/366.6666717529297 = 76.0% done in 16.0s, 5.0s to go\n", "on time step 16725 (time=278.75), 0.000944156 s/step\n", "Meep progress: 350.8333333333333/366.6666717529297 = 95.7% done in 20.0s, 0.9s to go\n", "on time step 21053 (time=350.883), 0.000924314 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.22298117105327928, -8.416854523898624e-09, 13246110.55235371, 1.362712783673582, 1.1788975604245882-0.6835105506225614i, 7.22252727711167e-14+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.5, 0.22298117105327928\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.001441 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.75,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.75,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0880821 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.734927) = 0.222709 after 11 iters\n", "MPB solved for omega_1(0,0,0.735834) = 0.222981 after 6 iters\n", "MPB solved for omega_1(0,0,0.735834) = 0.222981 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.734927) = 0.222709 after 11 iters\n", "MPB solved for omega_1(0,0,0.735834) = 0.222981 after 6 iters\n", "MPB solved for omega_1(0,0,0.735834) = 0.222981 after 1 iters\n", "Meep progress: 64.91666666666667/666.6666717529297 = 9.7% done in 4.0s, 37.1s to go\n", "on time step 3895 (time=64.9167), 0.00102715 s/step\n", "Meep progress: 129.71666666666667/666.6666717529297 = 19.5% done in 8.0s, 33.1s to go\n", "on time step 7784 (time=129.733), 0.00102878 s/step\n", "Meep progress: 195.51666666666665/666.6666717529297 = 29.3% done in 12.0s, 28.9s to go\n", "on time step 11733 (time=195.55), 0.00101313 s/step\n", "Meep progress: 261.93333333333334/666.6666717529297 = 39.3% done in 16.0s, 24.7s to go\n", "on time step 15719 (time=261.983), 0.00100375 s/step\n", "Meep progress: 320.31666666666666/666.6666717529297 = 48.0% done in 20.0s, 21.6s to go\n", "on time step 19223 (time=320.383), 0.00114178 s/step\n", "Meep progress: 385.25/666.6666717529297 = 57.8% done in 24.0s, 17.5s to go\n", "on time step 23120 (time=385.333), 0.00102654 s/step\n", "Meep progress: 452.6333333333333/666.6666717529297 = 67.9% done in 28.0s, 13.2s to go\n", "on time step 27163 (time=452.717), 0.000989575 s/step\n", "Meep progress: 518.1333333333333/666.6666717529297 = 77.7% done in 32.0s, 9.2s to go\n", "on time step 31094 (time=518.233), 0.00101761 s/step\n", "Meep progress: 586.7833333333333/666.6666717529297 = 88.0% done in 36.0s, 4.9s to go\n", "on time step 35213 (time=586.883), 0.000971111 s/step\n", "Meep progress: 655.5833333333334/666.6666717529297 = 98.3% done in 40.0s, 0.7s to go\n", "on time step 39342 (time=655.7), 0.000968887 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000882864 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.8,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.8,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.038204 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 75.48333333333333/366.6666717529297 = 20.6% done in 4.0s, 15.4s to go\n", "on time step 4529 (time=75.4833), 0.000883389 s/step\n", "Meep progress: 151.2/366.6666717529297 = 41.2% done in 8.0s, 11.4s to go\n", "on time step 9072 (time=151.2), 0.000880533 s/step\n", "Meep progress: 222.35/366.6666717529297 = 60.6% done in 12.0s, 7.8s to go\n", "on time step 13342 (time=222.367), 0.000936968 s/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Meep progress: 296.05/366.6666717529297 = 80.7% done in 16.0s, 3.8s to go\n", "on time step 17765 (time=296.083), 0.000904528 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.2277481607926663, 6.590783575316441e-09, -17277775.71437942, 1.0971848191249656, 1.089302838353774+0.13127777295755527i, 1.5429683557892107e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.6, 0.2277481607926663\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.0014081 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.8,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.8,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0927281 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.749602) = 0.227439 after 10 iters\n", "MPB solved for omega_1(0,0,0.750632) = 0.227748 after 6 iters\n", "MPB solved for omega_1(0,0,0.750632) = 0.227748 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.749602) = 0.227439 after 10 iters\n", "MPB solved for omega_1(0,0,0.750632) = 0.227748 after 6 iters\n", "MPB solved for omega_1(0,0,0.750632) = 0.227748 after 1 iters\n", "Meep progress: 64.96666666666667/666.6666717529297 = 9.7% done in 4.0s, 37.1s to go\n", "on time step 3898 (time=64.9667), 0.00102628 s/step\n", "Meep progress: 133.61666666666667/666.6666717529297 = 20.0% done in 8.0s, 31.9s to go\n", "on time step 8018 (time=133.633), 0.000971055 s/step\n", "Meep progress: 202.26666666666665/666.6666717529297 = 30.3% done in 12.0s, 27.6s to go\n", "on time step 12138 (time=202.3), 0.000971013 s/step\n", "Meep progress: 267.01666666666665/666.6666717529297 = 40.1% done in 16.0s, 23.9s to go\n", "on time step 16023 (time=267.05), 0.00102969 s/step\n", "Meep progress: 332.71666666666664/666.6666717529297 = 49.9% done in 20.0s, 20.1s to go\n", "on time step 19965 (time=332.75), 0.00101474 s/step\n", "Meep progress: 394.5333333333333/666.6666717529297 = 59.2% done in 24.0s, 16.6s to go\n", "on time step 23673 (time=394.55), 0.00107889 s/step\n", "Meep progress: 459.5/666.6666717529297 = 68.9% done in 28.0s, 12.6s to go\n", "on time step 27573 (time=459.55), 0.00102586 s/step\n", "Meep progress: 524.3166666666666/666.6666717529297 = 78.6% done in 32.0s, 8.7s to go\n", "on time step 31463 (time=524.383), 0.00102848 s/step\n", "Meep progress: 586.0166666666667/666.6666717529297 = 87.9% done in 36.0s, 5.0s to go\n", "on time step 35165 (time=586.083), 0.00108059 s/step\n", "Meep progress: 648.8333333333334/666.6666717529297 = 97.3% done in 40.0s, 1.1s to go\n", "on time step 38935 (time=648.917), 0.00106121 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000964165 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.8,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.8,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.037488 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 72.78333333333333/366.6666717529297 = 19.8% done in 4.0s, 16.2s to go\n", "on time step 4367 (time=72.7833), 0.000916042 s/step\n", "Meep progress: 147.68333333333334/366.6666717529297 = 40.3% done in 8.0s, 11.9s to go\n", "on time step 8861 (time=147.683), 0.000890112 s/step\n", "Meep progress: 222.21666666666667/366.6666717529297 = 60.6% done in 12.0s, 7.8s to go\n", "on time step 13334 (time=222.233), 0.000894323 s/step\n", "Meep progress: 295.8333333333333/366.6666717529297 = 80.7% done in 16.0s, 3.8s to go\n", "on time step 17751 (time=295.85), 0.000905646 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.22384199660227042, -1.78395891602329e-08, 6273743.038355602, 1.3369127292696077, 0.7489076806970392-1.1074623837747686i, 1.5386734780049519e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.6, 0.22384199660227042\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00150204 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.8,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.8,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0955219 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.736699) = 0.223565 after 10 iters\n", "MPB solved for omega_1(0,0,0.737622) = 0.223842 after 6 iters\n", "MPB solved for omega_1(0,0,0.737622) = 0.223842 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.736699) = 0.223565 after 10 iters\n", "MPB solved for omega_1(0,0,0.737622) = 0.223842 after 6 iters\n", "MPB solved for omega_1(0,0,0.737622) = 0.223842 after 1 iters\n", "Meep progress: 64.53333333333333/666.6666717529297 = 9.7% done in 4.0s, 37.3s to go\n", "on time step 3872 (time=64.5333), 0.00103314 s/step\n", "Meep progress: 131.46666666666667/666.6666717529297 = 19.7% done in 8.0s, 32.6s to go\n", "on time step 7889 (time=131.483), 0.000995981 s/step\n", "Meep progress: 199.76666666666665/666.6666717529297 = 30.0% done in 12.0s, 28.1s to go\n", "on time step 11987 (time=199.783), 0.000976155 s/step\n", "Meep progress: 268.23333333333335/666.6666717529297 = 40.2% done in 16.0s, 23.8s to go\n", "on time step 16096 (time=268.267), 0.00097369 s/step\n", "Meep progress: 331.65/666.6666717529297 = 49.7% done in 20.0s, 20.2s to go\n", "on time step 19902 (time=331.7), 0.00105124 s/step\n", "Meep progress: 398.21666666666664/666.6666717529297 = 59.7% done in 24.0s, 16.2s to go\n", "on time step 23896 (time=398.267), 0.00100151 s/step\n", "Meep progress: 465.0333333333333/666.6666717529297 = 69.8% done in 28.0s, 12.1s to go\n", "on time step 27906 (time=465.1), 0.000997537 s/step\n", "Meep progress: 531.6333333333333/666.6666717529297 = 79.7% done in 32.0s, 8.1s to go\n", "on time step 31903 (time=531.717), 0.00100085 s/step\n", "Meep progress: 596.5/666.6666717529297 = 89.5% done in 36.0s, 4.2s to go\n", "on time step 35795 (time=596.583), 0.00102784 s/step\n", "Meep progress: 664.0166666666667/666.6666717529297 = 99.6% done in 40.0s, 0.2s to go\n", "on time step 39847 (time=664.117), 0.000987272 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000895977 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.85,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.85,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0382059 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 72.41666666666667/366.6666717529297 = 19.7% done in 4.0s, 16.3s to go\n", "on time step 4345 (time=72.4167), 0.000920756 s/step\n", "Meep progress: 145.0/366.6666717529297 = 39.5% done in 8.0s, 12.2s to go\n", "on time step 8700 (time=145), 0.0009185 s/step\n", "Meep progress: 218.91666666666666/366.6666717529297 = 59.7% done in 12.0s, 8.1s to go\n", "on time step 13136 (time=218.933), 0.0009019 s/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Meep progress: 290.9166666666667/366.6666717529297 = 79.3% done in 16.0s, 4.2s to go\n", "on time step 17457 (time=290.95), 0.000925947 s/step\n", "Meep progress: 364.26666666666665/366.6666717529297 = 99.3% done in 20.0s, 0.1s to go\n", "on time step 21858 (time=364.3), 0.000908912 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.227168908860377, 8.795584365758671e-09, -12913804.212074222, 1.1420749012296723, 1.041290755826275+0.46909342550233035i, 1.338451142437783e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.7000000000000001, 0.227168908860377\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00138187 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.85,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.85,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.090616 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.74878) = 0.226863 after 12 iters\n", "MPB solved for omega_1(0,0,0.749801) = 0.227169 after 7 iters\n", "MPB solved for omega_1(0,0,0.749801) = 0.227169 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.74878) = 0.226863 after 12 iters\n", "MPB solved for omega_1(0,0,0.749801) = 0.227169 after 7 iters\n", "MPB solved for omega_1(0,0,0.749801) = 0.227169 after 1 iters\n", "Meep progress: 60.46666666666667/666.6666717529297 = 9.1% done in 4.0s, 40.1s to go\n", "on time step 3628 (time=60.4667), 0.00110274 s/step\n", "Meep progress: 122.2/666.6666717529297 = 18.3% done in 8.0s, 35.6s to go\n", "on time step 7333 (time=122.217), 0.00107982 s/step\n", "Meep progress: 186.6/666.6666717529297 = 28.0% done in 12.0s, 30.9s to go\n", "on time step 11197 (time=186.617), 0.00103533 s/step\n", "Meep progress: 248.2/666.6666717529297 = 37.2% done in 16.0s, 27.0s to go\n", "on time step 14894 (time=248.233), 0.00108221 s/step\n", "Meep progress: 315.75/666.6666717529297 = 47.4% done in 20.0s, 22.2s to go\n", "on time step 18947 (time=315.783), 0.000986936 s/step\n", "Meep progress: 381.8833333333333/666.6666717529297 = 57.3% done in 24.0s, 17.9s to go\n", "on time step 22915 (time=381.917), 0.00100808 s/step\n", "Meep progress: 449.55/666.6666717529297 = 67.4% done in 28.0s, 13.5s to go\n", "on time step 26976 (time=449.6), 0.000985198 s/step\n", "Meep progress: 517.5833333333334/666.6666717529297 = 77.6% done in 32.0s, 9.2s to go\n", "on time step 31059 (time=517.65), 0.000979885 s/step\n", "Meep progress: 578.3833333333333/666.6666717529297 = 86.8% done in 36.0s, 5.5s to go\n", "on time step 34708 (time=578.467), 0.00109634 s/step\n", "Meep progress: 643.55/666.6666717529297 = 96.5% done in 40.0s, 1.4s to go\n", "on time step 38619 (time=643.65), 0.00102308 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000891924 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.85,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.85,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.037086 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 73.85/366.6666717529297 = 20.1% done in 4.0s, 15.9s to go\n", "on time step 4431 (time=73.85), 0.000902851 s/step\n", "Meep progress: 150.88333333333333/366.6666717529297 = 41.1% done in 8.0s, 11.4s to go\n", "on time step 9053 (time=150.883), 0.000865439 s/step\n", "Meep progress: 226.91666666666666/366.6666717529297 = 61.9% done in 12.0s, 7.4s to go\n", "on time step 13616 (time=226.933), 0.00087675 s/step\n", "Meep progress: 299.0833333333333/366.6666717529297 = 81.6% done in 16.0s, 3.6s to go\n", "on time step 17947 (time=299.117), 0.000923777 s/step\n", "Meep progress: 354.35/366.6666717529297 = 96.6% done in 20.0s, 0.7s to go\n", "on time step 21262 (time=354.367), 0.00120683 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.2243242241557239, -2.3795502230840202e-08, 4713584.566939463, 1.3161140220947878, 0.44148767953440904-1.2398567449402542i, 1.7636065651441524e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.7000000000000001, 0.2243242241557239\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00143099 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.85,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.85,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.09251 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.73937) = 0.224042 after 12 iters\n", "MPB solved for omega_1(0,0,0.740313) = 0.224324 after 6 iters\n", "MPB solved for omega_1(0,0,0.740313) = 0.224324 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.73937) = 0.224042 after 12 iters\n", "MPB solved for omega_1(0,0,0.740313) = 0.224324 after 6 iters\n", "MPB solved for omega_1(0,0,0.740313) = 0.224324 after 1 iters\n", "Meep progress: 64.31666666666666/666.6666717529297 = 9.6% done in 4.0s, 37.5s to go\n", "on time step 3859 (time=64.3167), 0.0010367 s/step\n", "Meep progress: 130.3/666.6666717529297 = 19.5% done in 8.0s, 32.9s to go\n", "on time step 7819 (time=130.317), 0.0010103 s/step\n", "Meep progress: 195.0/666.6666717529297 = 29.2% done in 12.0s, 29.0s to go\n", "on time step 11701 (time=195.017), 0.00103049 s/step\n", "Meep progress: 263.2833333333333/666.6666717529297 = 39.5% done in 16.0s, 24.5s to go\n", "on time step 15798 (time=263.3), 0.000976334 s/step\n", "Meep progress: 330.76666666666665/666.6666717529297 = 49.6% done in 20.0s, 20.3s to go\n", "on time step 19847 (time=330.783), 0.000987995 s/step\n", "Meep progress: 397.68333333333334/666.6666717529297 = 59.7% done in 24.0s, 16.2s to go\n", "on time step 23862 (time=397.7), 0.000996276 s/step\n", "Meep progress: 465.0833333333333/666.6666717529297 = 69.8% done in 28.0s, 12.1s to go\n", "on time step 27907 (time=465.117), 0.00098904 s/step\n", "Meep progress: 531.85/666.6666717529297 = 79.8% done in 32.0s, 8.1s to go\n", "on time step 31913 (time=531.883), 0.00099852 s/step\n", "Meep progress: 591.35/666.6666717529297 = 88.7% done in 36.0s, 4.6s to go\n", "on time step 35483 (time=591.383), 0.0011206 s/step\n", "Meep progress: 651.7666666666667/666.6666717529297 = 97.8% done in 40.0s, 0.9s to go\n", "on time step 39109 (time=651.817), 0.0011032 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000898123 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.9,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.9,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0368001 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 72.36666666666666/366.6666717529297 = 19.7% done in 4.0s, 16.3s to go\n", "on time step 4342 (time=72.3667), 0.000921443 s/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Meep progress: 150.95/366.6666717529297 = 41.2% done in 8.0s, 11.4s to go\n", "on time step 9058 (time=150.967), 0.000848313 s/step\n", "Meep progress: 228.11666666666667/366.6666717529297 = 62.2% done in 12.0s, 7.3s to go\n", "on time step 13688 (time=228.133), 0.000863986 s/step\n", "Meep progress: 304.0833333333333/366.6666717529297 = 82.9% done in 16.0s, 3.3s to go\n", "on time step 18247 (time=304.117), 0.000877569 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.22687607958369985, 1.1400643119296407e-08, -9950143.917745123, 1.1655794014114116, 0.977127312310812+0.6354506719886552i, 1.4997457957847012e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.8, 0.22687607958369985\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00149512 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.9,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.9,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0977569 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.746721) = 0.226574 after 10 iters\n", "MPB solved for omega_1(0,0,0.747727) = 0.226876 after 6 iters\n", "MPB solved for omega_1(0,0,0.747727) = 0.226876 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.746721) = 0.226574 after 10 iters\n", "MPB solved for omega_1(0,0,0.747727) = 0.226876 after 6 iters\n", "MPB solved for omega_1(0,0,0.747727) = 0.226876 after 1 iters\n", "Meep progress: 52.28333333333333/666.6666717529297 = 7.8% done in 4.0s, 47.0s to go\n", "on time step 3137 (time=52.2833), 0.00127588 s/step\n", "Meep progress: 112.55/666.6666717529297 = 16.9% done in 8.0s, 39.4s to go\n", "on time step 6753 (time=112.55), 0.0011062 s/step\n", "Meep progress: 178.53333333333333/666.6666717529297 = 26.8% done in 12.0s, 32.8s to go\n", "on time step 10712 (time=178.533), 0.0010104 s/step\n", "Meep progress: 245.7/666.6666717529297 = 36.9% done in 16.0s, 27.4s to go\n", "on time step 14743 (time=245.717), 0.000992504 s/step\n", "Meep progress: 312.8833333333333/666.6666717529297 = 46.9% done in 20.0s, 22.6s to go\n", "on time step 18774 (time=312.9), 0.000992323 s/step\n", "Meep progress: 378.5833333333333/666.6666717529297 = 56.8% done in 24.0s, 18.3s to go\n", "on time step 22716 (time=378.6), 0.00101474 s/step\n", "Meep progress: 445.01666666666665/666.6666717529297 = 66.8% done in 28.0s, 13.9s to go\n", "on time step 26703 (time=445.05), 0.0010035 s/step\n", "Meep progress: 505.96666666666664/666.6666717529297 = 75.9% done in 32.0s, 10.2s to go\n", "on time step 30359 (time=505.983), 0.00109431 s/step\n", "Meep progress: 560.5333333333333/666.6666717529297 = 84.1% done in 36.0s, 6.8s to go\n", "on time step 33635 (time=560.583), 0.00122128 s/step\n", "Meep progress: 628.1/666.6666717529297 = 94.2% done in 40.0s, 2.5s to go\n", "on time step 37689 (time=628.15), 0.000986733 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.000888109 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.9,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.9,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.037467 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 75.78333333333333/366.6666717529297 = 20.7% done in 4.0s, 15.4s to go\n", "on time step 4547 (time=75.7833), 0.000879852 s/step\n", "Meep progress: 154.4/366.6666717529297 = 42.1% done in 8.0s, 11.0s to go\n", "on time step 9264 (time=154.4), 0.000848002 s/step\n", "Meep progress: 227.93333333333334/366.6666717529297 = 62.2% done in 12.0s, 7.3s to go\n", "on time step 13676 (time=227.933), 0.000906679 s/step\n", "Meep progress: 304.46666666666664/366.6666717529297 = 83.0% done in 16.0s, 3.3s to go\n", "on time step 18268 (time=304.467), 0.000871124 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.22479731243789122, -3.0000469700458526e-08, 3746563.215216184, 1.2948302869370316, 0.12198324559450935-1.2890715883005355i, 2.0241172522256874e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.8, 0.22479731243789122\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.0015111 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.9,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.9,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.090904 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.739855) = 0.224512 after 10 iters\n", "MPB solved for omega_1(0,0,0.740803) = 0.224797 after 6 iters\n", "MPB solved for omega_1(0,0,0.740803) = 0.224797 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.739855) = 0.224512 after 10 iters\n", "MPB solved for omega_1(0,0,0.740803) = 0.224797 after 6 iters\n", "MPB solved for omega_1(0,0,0.740803) = 0.224797 after 1 iters\n", "Meep progress: 64.66666666666667/666.6666717529297 = 9.7% done in 4.0s, 37.2s to go\n", "on time step 3880 (time=64.6667), 0.001031 s/step\n", "Meep progress: 132.98333333333332/666.6666717529297 = 19.9% done in 8.0s, 32.1s to go\n", "on time step 7980 (time=133), 0.000975751 s/step\n", "Meep progress: 186.4/666.6666717529297 = 28.0% done in 12.0s, 30.9s to go\n", "on time step 11184 (time=186.4), 0.00124851 s/step\n", "Meep progress: 240.0/666.6666717529297 = 36.0% done in 16.0s, 28.4s to go\n", "on time step 14401 (time=240.017), 0.00124372 s/step\n", "Meep progress: 302.56666666666666/666.6666717529297 = 45.4% done in 20.0s, 24.1s to go\n", "on time step 18155 (time=302.583), 0.00106558 s/step\n", "Meep progress: 365.55/666.6666717529297 = 54.8% done in 24.0s, 19.8s to go\n", "on time step 21934 (time=365.567), 0.00105857 s/step\n", "Meep progress: 431.7/666.6666717529297 = 64.8% done in 28.0s, 15.2s to go\n", "on time step 25903 (time=431.717), 0.0010079 s/step\n", "Meep progress: 492.9166666666667/666.6666717529297 = 73.9% done in 32.0s, 11.3s to go\n", "on time step 29576 (time=492.933), 0.00108904 s/step\n", "Meep progress: 556.9833333333333/666.6666717529297 = 83.5% done in 36.0s, 7.1s to go\n", "on time step 33421 (time=557.017), 0.00104054 s/step\n", "Meep progress: 618.4333333333333/666.6666717529297 = 92.8% done in 40.0s, 3.1s to go\n", "on time step 37109 (time=618.483), 0.0010848 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00135803 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.95,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.95,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0369499 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 68.3/366.6666717529297 = 18.6% done in 4.0s, 17.5s to go\n", "on time step 4098 (time=68.3), 0.000976214 s/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Meep progress: 145.16666666666666/366.6666717529297 = 39.6% done in 8.0s, 12.2s to go\n", "on time step 8711 (time=145.183), 0.000867321 s/step\n", "Meep progress: 219.95/366.6666717529297 = 60.0% done in 12.0s, 8.0s to go\n", "on time step 13199 (time=219.983), 0.000891398 s/step\n", "Meep progress: 295.3333333333333/366.6666717529297 = 80.5% done in 16.0s, 3.9s to go\n", "on time step 17723 (time=295.383), 0.000884263 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.2265278474245952, 1.4539532530172293e-08, -7790066.391560625, 1.1896334548994774, 0.8631437981019856+0.818663875356758i, 9.44069094162509e-14+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.9, 0.2265278474245952\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00146699 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.95,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.95,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0906651 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.746659) = 0.226227 after 12 iters\n", "MPB solved for omega_1(0,0,0.747663) = 0.226528 after 7 iters\n", "MPB solved for omega_1(0,0,0.747663) = 0.226528 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.746659) = 0.226227 after 12 iters\n", "MPB solved for omega_1(0,0,0.747663) = 0.226528 after 7 iters\n", "MPB solved for omega_1(0,0,0.747663) = 0.226528 after 1 iters\n", "Meep progress: 63.166666666666664/666.6666717529297 = 9.5% done in 4.0s, 38.2s to go\n", "on time step 3790 (time=63.1667), 0.0010555 s/step\n", "Meep progress: 128.1/666.6666717529297 = 19.2% done in 8.0s, 33.6s to go\n", "on time step 7686 (time=128.1), 0.0010267 s/step\n", "Meep progress: 194.46666666666667/666.6666717529297 = 29.2% done in 12.0s, 29.1s to go\n", "on time step 11668 (time=194.467), 0.00100457 s/step\n", "Meep progress: 260.3833333333333/666.6666717529297 = 39.1% done in 16.0s, 25.0s to go\n", "on time step 15624 (time=260.4), 0.00101129 s/step\n", "Meep progress: 325.6/666.6666717529297 = 48.8% done in 20.0s, 21.0s to go\n", "on time step 19538 (time=325.633), 0.00102221 s/step\n", "Meep progress: 393.1666666666667/666.6666717529297 = 59.0% done in 24.0s, 16.7s to go\n", "on time step 23592 (time=393.2), 0.000987037 s/step\n", "Meep progress: 460.56666666666666/666.6666717529297 = 69.1% done in 28.0s, 12.5s to go\n", "on time step 27638 (time=460.633), 0.000988785 s/step\n", "Meep progress: 527.6166666666667/666.6666717529297 = 79.1% done in 32.0s, 8.4s to go\n", "on time step 31661 (time=527.683), 0.00099439 s/step\n", "Meep progress: 595.5333333333333/666.6666717529297 = 89.3% done in 36.0s, 4.3s to go\n", "on time step 35737 (time=595.617), 0.000981597 s/step\n", "Meep progress: 663.55/666.6666717529297 = 99.5% done in 40.0s, 0.2s to go\n", "on time step 39818 (time=663.633), 0.000980212 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.001091 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.95,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.95,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0367699 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 74.53333333333333/366.6666717529297 = 20.3% done in 4.0s, 15.7s to go\n", "on time step 4472 (time=74.5333), 0.000894657 s/step\n", "Meep progress: 151.4/366.6666717529297 = 41.3% done in 8.0s, 11.4s to go\n", "on time step 9085 (time=151.417), 0.000867297 s/step\n", "Meep progress: 227.21666666666667/366.6666717529297 = 62.0% done in 12.0s, 7.4s to go\n", "on time step 13635 (time=227.25), 0.000879315 s/step\n", "Meep progress: 301.68333333333334/366.6666717529297 = 82.3% done in 16.0s, 3.4s to go\n", "on time step 18104 (time=301.733), 0.00089524 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.225007444260206, -3.411140661225682e-08, 3298126.149089333, 1.282850723732187, -0.020124749229969874-1.2826928602937753i, 1.9977197754650086e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 0.9, 0.225007444260206\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00139499 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-0.95,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (0.95,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0888979 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.74163) = 0.224719 after 12 iters\n", "MPB solved for omega_1(0,0,0.742591) = 0.225007 after 6 iters\n", "MPB solved for omega_1(0,0,0.742591) = 0.225007 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.151963 after 15 iters\n", "MPB solved for omega_1(0,0,0.74163) = 0.224719 after 12 iters\n", "MPB solved for omega_1(0,0,0.742591) = 0.225007 after 6 iters\n", "MPB solved for omega_1(0,0,0.742591) = 0.225007 after 1 iters\n", "Meep progress: 62.75/666.6666717529297 = 9.4% done in 4.0s, 38.5s to go\n", "on time step 3765 (time=62.75), 0.0010625 s/step\n", "Meep progress: 129.05/666.6666717529297 = 19.4% done in 8.0s, 33.3s to go\n", "on time step 7744 (time=129.067), 0.00100546 s/step\n", "Meep progress: 194.6/666.6666717529297 = 29.2% done in 12.0s, 29.1s to go\n", "on time step 11677 (time=194.617), 0.00101706 s/step\n", "Meep progress: 259.8666666666667/666.6666717529297 = 39.0% done in 16.0s, 25.0s to go\n", "on time step 15594 (time=259.9), 0.00102137 s/step\n", "Meep progress: 327.4/666.6666717529297 = 49.1% done in 20.0s, 20.7s to go\n", "on time step 19647 (time=327.45), 0.000987002 s/step\n", "Meep progress: 395.06666666666666/666.6666717529297 = 59.3% done in 24.0s, 16.5s to go\n", "on time step 23708 (time=395.133), 0.000985119 s/step\n", "Meep progress: 462.43333333333334/666.6666717529297 = 69.4% done in 28.0s, 12.4s to go\n", "on time step 27751 (time=462.517), 0.000989585 s/step\n", "Meep progress: 527.6666666666666/666.6666717529297 = 79.1% done in 32.0s, 8.4s to go\n", "on time step 31665 (time=527.75), 0.00102228 s/step\n", "Meep progress: 595.3/666.6666717529297 = 89.3% done in 36.0s, 4.3s to go\n", "on time step 35724 (time=595.4), 0.000985666 s/step\n", "Meep progress: 660.4166666666666/666.6666717529297 = 99.1% done in 40.0s, 0.4s to go\n", "on time step 39633 (time=660.55), 0.00102353 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.0011251 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-1,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (1,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.035866 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 75.86666666666666/366.6666717529297 = 20.7% done in 4.0s, 15.3s to go\n", "on time step 4552 (time=75.8667), 0.000878903 s/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Meep progress: 150.81666666666666/366.6666717529297 = 41.1% done in 8.0s, 11.5s to go\n", "on time step 9050 (time=150.833), 0.000889439 s/step\n", "Meep progress: 220.75/366.6666717529297 = 60.2% done in 12.0s, 7.9s to go\n", "on time step 13246 (time=220.767), 0.000953549 s/step\n", "Meep progress: 288.1/366.6666717529297 = 78.6% done in 16.0s, 4.4s to go\n", "on time step 17287 (time=288.117), 0.000990054 s/step\n", "Meep progress: 361.7833333333333/366.6666717529297 = 98.7% done in 20.0s, 0.3s to go\n", "on time step 21709 (time=361.817), 0.000904671 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.22640536408982545, 1.8701411305075058e-08, -6053162.523311413, 1.1994351446619307, 0.8155612905569631+0.8794910162106531i, 1.4151611110599002e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 1.0, 0.22640536408982545\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00133705 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-1,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (1,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.070148 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.745166) = 0.226107 after 10 iters\n", "MPB solved for omega_1(0,0,0.746159) = 0.226405 after 6 iters\n", "MPB solved for omega_1(0,0,0.746159) = 0.226405 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.745166) = 0.226107 after 10 iters\n", "MPB solved for omega_1(0,0,0.746159) = 0.226405 after 6 iters\n", "MPB solved for omega_1(0,0,0.746159) = 0.226405 after 1 iters\n", "Meep progress: 57.88333333333333/666.6666717529297 = 8.7% done in 4.0s, 42.1s to go\n", "on time step 3473 (time=57.8833), 0.00115196 s/step\n", "Meep progress: 122.18333333333334/666.6666717529297 = 18.3% done in 8.0s, 35.7s to go\n", "on time step 7332 (time=122.2), 0.00103677 s/step\n", "Meep progress: 189.01666666666665/666.6666717529297 = 28.4% done in 12.0s, 30.3s to go\n", "on time step 11343 (time=189.05), 0.000997474 s/step\n", "Meep progress: 256.73333333333335/666.6666717529297 = 38.5% done in 16.0s, 25.6s to go\n", "on time step 15406 (time=256.767), 0.000984541 s/step\n", "Meep progress: 324.5333333333333/666.6666717529297 = 48.7% done in 20.0s, 21.1s to go\n", "on time step 19475 (time=324.583), 0.000983217 s/step\n", "Meep progress: 389.68333333333334/666.6666717529297 = 58.5% done in 24.0s, 17.1s to go\n", "on time step 23385 (time=389.75), 0.00102323 s/step\n", "Meep progress: 457.26666666666665/666.6666717529297 = 68.6% done in 28.0s, 12.8s to go\n", "on time step 27441 (time=457.35), 0.000986341 s/step\n", "Meep progress: 524.8333333333334/666.6666717529297 = 78.7% done in 32.0s, 8.6s to go\n", "on time step 31496 (time=524.933), 0.000986734 s/step\n", "Meep progress: 592.5/666.6666717529297 = 88.9% done in 36.0s, 4.5s to go\n", "on time step 35557 (time=592.617), 0.000985192 s/step\n", "Meep progress: 659.4833333333333/666.6666717529297 = 98.9% done in 40.0s, 0.4s to go\n", "on time step 39577 (time=659.617), 0.000995131 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00095582 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-1,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (1,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0355389 s\n", "-----------\n", "Meep: using complex fields.\n", "Meep progress: 75.28333333333333/366.6666717529297 = 20.5% done in 4.0s, 15.5s to go\n", "on time step 4517 (time=75.2833), 0.000885723 s/step\n", "Meep progress: 154.68333333333334/366.6666717529297 = 42.2% done in 8.0s, 11.0s to go\n", "on time step 9282 (time=154.7), 0.000839545 s/step\n", "Meep progress: 232.36666666666667/366.6666717529297 = 63.4% done in 12.0s, 6.9s to go\n", "on time step 13944 (time=232.4), 0.00085817 s/step\n", "Meep progress: 310.01666666666665/366.6666717529297 = 84.5% done in 16.0s, 2.9s to go\n", "on time step 18604 (time=310.067), 0.000858523 s/step\n", "harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error\n", "harminv0:, 0.2252900344060825, -3.972875600686559e-08, 2835352.23664126, 1.268528226017774, -0.20669047620325842-1.251576169176559i, 1.682966756410931e-13+0.0i\n", "run 0 finished at t = 366.68333333333334 (22001 timesteps)\n", "freq:, 1.0, 0.2252900344060825\n", "-----------\n", "Initializing structure...\n", "Halving computational cell along direction x\n", "Halving computational cell along direction y\n", "time for choose_chunkdivision = 0.00120592 s\n", "Working in 3D dimensions.\n", "Computational cell is 7 x 5 x 0.0333333 with resolution 30\n", " block, center = (-1,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", " block, center = (1,0,0)\n", " size (1,1,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)\n", "time for set_epsilon = 0.0628369 s\n", "-----------\n", "Meep: using complex fields.\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.741482) = 0.225001 after 10 iters\n", "MPB solved for omega_1(0,0,0.742444) = 0.22529 after 6 iters\n", "MPB solved for omega_1(0,0,0.742444) = 0.22529 after 1 iters\n", "MPB solved for omega_1(0,0,0.5) = 0.152184 after 14 iters\n", "MPB solved for omega_1(0,0,0.741482) = 0.225001 after 10 iters\n", "MPB solved for omega_1(0,0,0.742444) = 0.22529 after 6 iters\n", "MPB solved for omega_1(0,0,0.742444) = 0.22529 after 1 iters\n", "Meep progress: 64.55/666.6666717529297 = 9.7% done in 4.0s, 37.3s to go\n", "on time step 3873 (time=64.55), 0.00103291 s/step\n", "Meep progress: 131.83333333333334/666.6666717529297 = 19.8% done in 8.0s, 32.5s to go\n", "on time step 7910 (time=131.833), 0.000990937 s/step\n", "Meep progress: 199.6/666.6666717529297 = 29.9% done in 12.0s, 28.1s to go\n", "on time step 11976 (time=199.6), 0.000983864 s/step\n", "Meep progress: 267.43333333333334/666.6666717529297 = 40.1% done in 16.0s, 23.9s to go\n", "on time step 16046 (time=267.433), 0.000982824 s/step\n", "Meep progress: 335.15/666.6666717529297 = 50.3% done in 20.0s, 19.8s to go\n", "on time step 20110 (time=335.167), 0.000984433 s/step\n", "Meep progress: 402.8333333333333/666.6666717529297 = 60.4% done in 24.0s, 15.7s to go\n", "on time step 24171 (time=402.85), 0.000985015 s/step\n", "Meep progress: 470.55/666.6666717529297 = 70.6% done in 28.0s, 11.7s to go\n", "on time step 28235 (time=470.583), 0.000984423 s/step\n", "Meep progress: 538.3/666.6666717529297 = 80.7% done in 32.0s, 7.6s to go\n", "on time step 32301 (time=538.35), 0.000983948 s/step\n", "Meep progress: 604.8833333333333/666.6666717529297 = 90.7% done in 36.0s, 3.7s to go\n", "on time step 36296 (time=604.933), 0.00100132 s/step\n", "run 1 finished at t = 666.6666666666666 (40000 timesteps)\n" ] } ], "source": [ "s = np.arange(0.1,1.1,0.1)\n", "fluxes_odd = np.zeros(s.size)\n", "forces_odd = np.zeros(s.size)\n", "\n", "fluxes_even = np.zeros(s.size)\n", "forces_even = np.zeros(s.size)\n", "\n", "for k in range(len(s)):\n", " fluxes_odd[k], forces_odd[k] = parallel_waveguide(s[k],True)\n", " fluxes_even[k], forces_even[k] = parallel_waveguide(s[k],False)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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kw8fPtwBv++++2q0TZ8+3QEH/Kc//alv3769uu22225zwAcNGlTjnLlz5zrg5557bsw4AO/cuXNcMX/00UcO+DHHHOObN2+u0VZRUeH/+Mc/qr//6quvPD8/3w844ADftm1bjWN37NjhHTp08KZNm/rq1aujvsdLLrmk+n6prKz00aNHO+Ddu3f3nj17+sqVK6vPe+mll6K+j6p4AS8uLvb169fvdq1u3br5fvvt5/Pnz69u++yzz/yAAw5wwJcvX16jz2HDhjngl19+eY33tXz5cu/atavn5OT422+/vVsMRUVFMX+uVTF269bNP/30093aqz7Hs846yzdu3Fi9/89//rMD3rFjxxrXdHcvKyuL679Hifz77N69uwOLPcnfkTX8TERERKSRGT58OAW1ChUUFhZy6623AvDUU09FPe+QQw7h5ptvpmnT/w7mueCCC9h333159dVX2bZtW73FvHbtWgAGDhxI8+bNa7Tl5eUxYMCA6u9btWrFmWeeydq1a3n66adrHDtr1iw+++wzTjnlFNq1a7fbdbp27cr//d//VU+MNzMuueQSAJYsWcIf//hHOnbsWH38kCFD6NOnDx9//DErVqzYrb+cnBwmT57MvvvuW73vnHPOoW3btnz44YdceOGFDBo0qLrtoIMOYtSoUQDMnz+/ev9bb73FrFmzGDhwIL///e9rFFio+lx27tzJlClTYvwE63bDDTfQoUOHuI+//vrrAbjtttvo1atXjbaCggIGDx6cVBz1RcPPRERERBqh5cuXM3/+fD788EPKy8uprKysGvXBBx98EPWc4uLi3aqVNW3alEMOOYQ33niDdevWceCBB9ZLvIcffjgFBQVMnz6dHj16cNppp9U5ROr8889n+vTpTJ48mdNPP716/+TJkwGiDhWD4D3umrRBkDQA7LPPPhQVFe12TteuXXnzzTf5/PPPd5sj1KVLF7p161ZjX5MmTejcuTNffPEFJ510UtT+AD7//PPqfS+++CIAp5566m5D5uC/Q8pef/31qO+rLmbGd7/73biPX7VqFe+99x77779/jZ9tQ6akRmrKzw/KUCZ7roiIiKSVu3PllVdy5513VicxtZWWlkbdv+sTil21iJS2jlZkICwtW7Zk8uTJjBs3jnHjxjF+/HgOO+wwTjjhBM455xz69+9f4/h+/frRp08fXnzxRT7++GM6d+7M559/zt///ncOPvjg6vk/tUV7WlH1VKt9+/ZRSxtXtUd7/7GeflSdU9f1du2v6inQL37xC37xi19E7RPgyy+/jNkWS9Uk/3itXLkS+G/ylQmU1EhNZqqrLyIiksFmzpzJHXfcQYcOHZg0aRIDBgygbdu25Obmsm3bNpo1axYz2Yn2hGBv+t///V9OPPFEnnrqKV544QXmzZvHXXfdxV133cVll122W1GA8ePHc/755zNt2jSuvvpqpk+fzo4dOzjvvPNirrtS13tM5v3v6Zx4+9y5cycAgwYNqn5yFE2bNm3iDy6i9nC+eKX7fkiEkhoRERGRRuSJJ54A4JZbbtlt6NB//vOfdISUkLZt2zJ27FjGjh2Lu/P8889z5plnctNNNzF69Gi6d+9efeyoUaO47LLLmDZtGr/+9a+ZOnUqTZo04Yc//GEa30Fyqp6SnXHGGVx00UVpjaVTp04AfPjhh2mNIxEqFCAiIiLSiGzYsAGIPuzpr3/9a2jX2WeffYBgXZf6YmacfPLJ1aWD33333RrtLVq04KyzzuLTTz/lsssu4z//+Q/Dhg2LOYyuITvxxBMBdluPpi719RkcdNBBHHHEEaxbt47HH3881L7ri5IaERERkUbk0EMPBYLFJncdZrZgwQJuuumm0K5z0EEHAbB06dJQ+nvzzTd5/PHH2b59e439GzZs4J///CcABx988G7nnX/++UBQpQtiFwho6Pr378+QIUOYO3cuP/vZzyirNce5srKSF154gYULF1bva9OmDbm5uSxfvrx6+FpYqtbDmTBhAosXL67RVl5ezpw5c0K9Xqo0/ExERESkEbnooouYMWMGU6ZM4R//+Ae9evXis88+Y+HChVx66aX84Q9/COU6Xbp0oVevXvzrX/+iX79+9OjRg5ycHE455RROOeWUhPv7+OOPOf3002nVqhVHH3007du356uvvmLBggVs2rSJkSNH7lYsAIJFKPv168drr73GgQce2LAWhEzQgw8+yNChQ7ntttu4//77OfLII2nbti2fffYZS5cu5YsvvuDWW2+troS2zz77cPLJJ/PMM8/Qu3dvjjrqKPbZZx+++c1vMmbMmJRiOeecc3j99de544476N27NwMHDqxefPPNN9+kT58+Daqss57UiIiIiDQihx56KHPnzmXYsGF8+eWXPP3005SVlXHPPfeE+qQG4LHHHmPEiBH85z//4f7772fq1KksWrQoqb769+/PtddeS9++fVm6dCmPPPII//rXv+jVqxf33XdfnUPnhgwZAsCYMWN2K9ecSdq1a8err77KLbfcwte//nVef/11nnzyST799FP69OnDnXfeydlnn13jnClTpvCDH/yAdevW8dBDDzF16lTmzZsXSjy33347TzzxBEOGDOHdd9/lscce46OPPmLIkCF1VmhLB4tV/UIaJjNb3L179+61HwPKXuAOFRVRm0pKSoCg9n1U+flBZTmRiKrH9g3pr1zSsOmeia6ysrJ6+NNhhx0Ws+JVUur47/4epfm/+5s2bQKCMsmNnbtz+OGH88EHH/Dhhx/WWTlMYquPeyaRf589evRgyZIlS9y9RzLXytxUVmRvq6iASJ3+2or3dG5ZmUpli4hkGi1zkBEeffRRli1bxne+8x0lNFlMSY2IiIiIZJyxY8fy1Vdf8eyzz5KTk8M111yT7pAkjZTUiIiIiEjGmTp1Kk2bNuXQQw/ld7/7HUcddVS6Q5I0UlIjIiIiIhlH88JlV6p+JiIiIiIiGU1JjYiIiIiIZDQlNSIiIiIiktGU1IiIiIiISEZTUiMiIiIiIhlNSY2IiIiIiGQ0JTUiIiIiIpLRlNSIiIiIiEhGU1IjIiIiIiIZLeuTGjNrbmZXm9kyM9tiZqvMbJqZdUyx36+b2WYzczN7Lqx4RURERESkpqxOasysOTAb+A3QAngKWAmMARaZWdcUur8HaJZykNJw5OdDWVnUV8mzz1Ly7LMx28nPT3f0IiIiUk+Ki4sxM1asWJHuULJWVic1wBXAQOAV4FB3P9PdjwUuBdoC05Lp1MzOA04AJocVqDQAZlBQEPVVmZdHZV5ezHbM0h29iIiEYM0auO46GDoUBgwIttdfH+yXzDR69GjMjJKSknSHIilomu4A0sXMcoGfRr69wN3Lqtrc/RYzOxc43sz6uvsbCfR7AHAT8BLwMDAuxLBFREQkDTZvhosvhhkzYPv2mm0vvggTJ8KYMTBpEjRvno4IJZ3uv/9+Kioq6NChQ7pDyVpZm9QAxwGtgeXu/maU9keBXsB3gbiTGuCPQB7wYyCleTkiIiKSfps3w7BhMG9e7GO2b4d774WlS2HWLMjL23vxSfodfPDB6Q4h62Xz8LPeke2iGO2Lah23R2b2beBM4Hp3/zCF2ERERKSBuPjiuhOaXc2bBxMm1G888Vi6dCnjxo2ja9euNG/enLZt23LkkUcyYcIEPv/8cx555BHMjFGjRsXsY8yYMZgZDzzwQPW+Ll26YJEh1XfeeSc9e/YkLy+Pr33ta9x44424OwCLFi1i+PDh7LfffhQWFjJixAg+/vjj3a6x69Cvl156iaKiIgoLCznggAP40Y9+xMaNGwFYu3Yt48eP56CDDqJ58+b069evzuFiCxcuZOTIkRxwwAE0a9aMLl26cNFFF/HFF1/UOM7MuO+++wA44YQTMLPqV9X8mIkTJ2JmzJgxg9dee43hw4ez//77Y2a89dZbQN1zar788kt+9atf0bNnTwoKCmjdujVHHnkkV155JevWrYv5HiQx2fykpiql/jRG+6e1jquTmRUAfwKWAv+XWmhgZotjNHUtLy9nzpw5qV5CQlReXg6gz0XipntGEqV7JraCggIKCgrYtGkTTZqE+/faNWuMGTNaAPHPjZw+3bnssjIOOMBDjSVeb731FieffDJbtmyhb9++9OnTh7KyMlasWMGkSZM46aSTGDx4MO3ateOxxx7juuuuY7/99qvRx6ZNm3jkkUdo1aoVQ4cOZdOmTQDVScsFF1zAtGnTOOaYY+jUqRMvv/wyv/jFL1i/fj2DBw9m5MiRHHzwwQwaNIh3332Xp556infeeYdXXnmFvF0eY22PjOWbOXMm9957L7169eKEE05g0aJFTJkyhffff5/777+fwYMHs3XrVvr27cvq1at5/fXXOfnkk5k7dy49evSoEfvdd9/NL3/5S5o0aULfvn058MADee+997j99tt5+umneeGFF2jfvj0AZ511Fq+88gofffQRQ4YMoV27dtX9uDubNm1i69atAMyePZtx48bRrVs3TjjhBFavXk1FRQWbNm1i586dAJSWllb/rADef/99Ro4cyapVq2jfvj1DhgyhsrKSDz74gOuvv56BAwcyaNCgUD73VFVWVgLUiD+MPnfu3El5efke5yxV/TcuWdmc1LSIbCtitJfXOm5PrgU6A4PdfVsqgYmIiEjDcP/9uWzfnlixl+3bjfvvz+XnP0/PrwP33HMPmzdv5v777+fUU0+t0bZ06VJatWpFbm4uZ599NjfffDMzZ87kxz/+cY3jHnnkEcrLyxk/fjzNo0wSevLJJykpKeGII44AYNmyZRx33HHcfvvt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fXnggQe4+eabeeGFF9i8eTMAV111Ffvvv39KsfTs2ZO33nqLm266iaeffppnnnmG/Px8OnfuzFVXXRWzZLYkzjTGL7OY2eLu3bt3X7x4cbpDkV3MmTMHgMGDB6c5kjQoL4dkJ5OWlUFBrKWiGresvmckKbpnoqusrKweNnTYYYdpPZCITZs2AUEltHg89NBDjBo1inPPPbdBTLKXvS/ReyYeifz77NGjB0uWLFni7j2SuZb+5YuIiIhkse3bt3PjjTcCcMEFF6Q5GpHkZP3wMxEREZFs9PTTT/Pkk0/y2muvsXjxYkaOHMkxxxyT7iWaURoAACAASURBVLBEkqInNSIiIiJZaNGiRUyfPp1Vq1YxatQopk2blu6QRJKmpEZEREQkC02cOBF3Z/369TzwwAO0bt063SGJJE1JjYiIiIiIZDQlNSIiIiIiktGU1IiIiEjGsl3WutIyFSINS2VlZfXXVs/r0impERERkYxlZuTk5ACwdevWNEcjIrvasmULAE2bNlVSIyIiIlKX/Px8AEpLS9MciYhUcXc2bNgAQGFhYb1fT+vUiIiISEZr2bIlpaWlrF+/nqZNm9KyZcvqpzfZqmrYz67Df0TqEtY9U1lZyZYtW9iwYQNlZWUAtGrVKuX49kRJjYiIiGS0wsJCWrVqxcaNG1m7di1r165Nd0hpt3PnToCsT+4kfvV1z3To0IG8vLxQ+4xGSY2IiIhkNDOjffv25OXlsWHDBs2tAcrLy4HgKZZIPMK8Z5o2bVr9x4a9kdCAkhoRERFpBJo0acK+++7Lvvvui7tnfSW0kpISAI455pj0BiIZI6x7xszqvShANEpqRCQ1+fkQGTOb1LkiIiFL1y9VDVGTJqoJJYnJ1HtGSY2IpMYMCgrSHYWIiIhkscxMxURERERERCKU1IiIiIiISEZTUiMiIiIiIhlNc2pEROqLO1RURG1qsnlz8EWkhOZu8vOD+UoiIiKyR0pqRETqS0UFtGgRtal4T+eWlakAg4iISJw0/ExERERERDKakhoREREREcloSmpERERERCSjKakREREREZGMpqRGREREREQympIaERERERHJaEpqREREREQkoympERERERGRjKakRkREREREMpqSGhERERERyWhKakREREREJKMpqRERERERkYympEZERERERDJa03QHICLSaOXnQ1lZ1KaSkhIA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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(dpi=150)\n", "plt.plot(s,-forces_odd/fluxes_odd,'rs',label='anti symmetric')\n", "plt.plot(s,-forces_even/fluxes_even,'bo',label='symmetric')\n", "plt.grid(True)\n", "plt.xlabel('waveguide separation s/a')\n", "plt.ylabel('optical force (F/L)(ac/P)')\n", "plt.legend(loc='upper right')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The MPB simulation is below. Note: since MPB permits symmetries only in the $y$ and $z$ directions, the coordinate axes used in the MPB script to define the waveguide geometry are different than those in the Meep script. In MPB, the propagating axis is $x$ whereas in Meep it is $z$." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.55,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.55,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyodd.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.1171050071716309\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 18 iterations.\n", "zoddyoddfreqs:, 1, 0.5, 0, 0, 0.5, 0.233911\n", "elapsed time for k point: 23.74375629425049\n", "total elapsed time for run: 24.861119985580444\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.55,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.55,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyeven.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.198291540145874\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 19 iterations.\n", "zoddyevenfreqs:, 1, 0.5, 0, 0, 0.5, 0.214446\n", "elapsed time for k point: 25.20313835144043\n", "total elapsed time for run: 26.401572704315186\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.6,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.6,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyodd.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.2093915939331055\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 20 iterations.\n", "zoddyoddfreqs:, 1, 0.5, 0, 0, 0.5, 0.232136\n", "elapsed time for k point: 26.406787872314453\n", "total elapsed time for run: 27.616334676742554\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.6,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.6,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyeven.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.194544792175293\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 18 iterations.\n", "zoddyevenfreqs:, 1, 0.5, 0, 0, 0.5, 0.218002\n", "elapsed time for k point: 23.89072322845459\n", "total elapsed time for run: 25.08543825149536\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.65,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.65,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyodd.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.2202491760253906\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 19 iterations.\n", "zoddyoddfreqs:, 1, 0.5, 0, 0, 0.5, 0.230609\n", "elapsed time for k point: 27.146918058395386\n", "total elapsed time for run: 28.367331981658936\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.65,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.65,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyeven.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.4451804161071777\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 18 iterations.\n", "zoddyevenfreqs:, 1, 0.5, 0, 0, 0.5, 0.220388\n", "elapsed time for k point: 24.16555118560791\n", "total elapsed time for run: 25.610894203186035\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.7,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.7,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyodd.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.2811601161956787\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 18 iterations.\n", "zoddyoddfreqs:, 1, 0.5, 0, 0, 0.5, 0.229408\n", "elapsed time for k point: 24.277979135513306\n", "total elapsed time for run: 25.559289693832397\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.7,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.7,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyeven.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.2923684120178223\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 18 iterations.\n", "zoddyevenfreqs:, 1, 0.5, 0, 0, 0.5, 0.222012\n", "elapsed time for k point: 24.478357791900635\n", "total elapsed time for run: 25.771002054214478\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.75,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.75,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyodd.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.2905426025390625\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 17 iterations.\n", "zoddyoddfreqs:, 1, 0.5, 0, 0, 0.5, 0.2285\n", "elapsed time for k point: 23.339821100234985\n", "total elapsed time for run: 24.63052201271057\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.75,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.75,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyeven.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.2385966777801514\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 18 iterations.\n", "zoddyevenfreqs:, 1, 0.5, 0, 0, 0.5, 0.223137\n", "elapsed time for k point: 24.006115198135376\n", "total elapsed time for run: 25.244858741760254\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.8,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.8,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyodd.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.2169744968414307\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 17 iterations.\n", "zoddyoddfreqs:, 1, 0.5, 0, 0, 0.5, 0.227819\n", "elapsed time for k point: 22.855571508407593\n", "total elapsed time for run: 24.072863817214966\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.8,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.8,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyeven.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.2518179416656494\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 18 iterations.\n", "zoddyevenfreqs:, 1, 0.5, 0, 0, 0.5, 0.223921\n", "elapsed time for k point: 24.147750854492188\n", "total elapsed time for run: 25.40097951889038\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.85,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.85,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyodd.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.331031322479248\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 17 iterations.\n", "zoddyoddfreqs:, 1, 0.5, 0, 0, 0.5, 0.227319\n", "elapsed time for k point: 23.37817120552063\n", "total elapsed time for run: 24.7093608379364\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.85,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.85,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyeven.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.327040672302246\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 17 iterations.\n", "zoddyevenfreqs:, 1, 0.5, 0, 0, 0.5, 0.224479\n", "elapsed time for k point: 23.153270483016968\n", "total elapsed time for run: 24.48114776611328\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.9,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.9,0)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyodd.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.3384766578674316\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 18 iterations.\n", "zoddyoddfreqs:, 1, 0.5, 0, 0, 0.5, 0.226949\n", "elapsed time for k point: 24.747398614883423\n", "total elapsed time for run: 26.086078643798828\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.9,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.9,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyeven.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.233776330947876\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 18 iterations.\n", "zoddyevenfreqs:, 1, 0.5, 0, 0, 0.5, 0.224876\n", "elapsed time for k point: 24.158668041229248\n", "total elapsed time for run: 25.392586946487427\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.95,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.95,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyodd.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.2510592937469482\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 19 iterations.\n", "zoddyoddfreqs:, 1, 0.5, 0, 0, 0.5, 0.226677\n", "elapsed time for k point: 25.66195845603943\n", "total elapsed time for run: 26.913161277770996\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-0.95,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0.95,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyeven.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.2212038040161133\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 20 iterations.\n", "zoddyevenfreqs:, 1, 0.5, 0, 0, 0.5, 0.22516\n", "elapsed time for k point: 26.67510437965393\n", "total elapsed time for run: 27.89653754234314\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-1,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,1,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyodd.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.3138513565063477\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 16 iterations.\n", "zoddyoddfreqs:, 1, 0.5, 0, 0, 0.5, 0.22648\n", "elapsed time for k point: 22.287580251693726\n", "total elapsed time for run: 23.60159468650818\n", "done\n", "Initializing eigensolver data\n", "Computing 1 bands with 1e-09 tolerance\n", "Working in 3 dimensions.\n", "Grid size is 1 x 1280 x 1280.\n", "Solving for 1 bands at a time.\n", "Creating Maxwell data...\n", "Mesh size is 3.\n", "Lattice vectors:\n", " (1, 0, 0)\n", " (0, 10, 0)\n", " (0, 0, 10)\n", "Cell volume = 100\n", "Reciprocal lattice vectors (/ 2 pi):\n", " (1, -0, 0)\n", " (-0, 0.1, -0)\n", " (0, -0, 0.1)\n", "Geometric objects:\n", " block, center = (0,-1,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,1,0)\n", " size (1e+20,1,1)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Geometric object tree has depth 2 and 6 object nodes (vs. 2 actual objects)\n", "Initializing epsilon function...\n", "Allocating fields...\n", "Solving for band polarization: zoddyeven.\n", "Initializing fields to random numbers...\n", "1 k-points\n", " Vector3<0.5, 0.0, 0.0>\n", "elapsed time for initialization: 1.3500831127166748\n", "solve_kpoint (0.5,0,0):\n", "Solving for bands 1 to 1...\n", "Finished solving for bands 1 to 1 after 18 iterations.\n", "zoddyevenfreqs:, 1, 0.5, 0, 0, 0.5, 0.225369\n", "elapsed time for k point: 23.889298915863037\n", "total elapsed time for run: 25.23954153060913\n", "done\n" ] } ], "source": [ "import meep as mp\n", "from meep import mpb\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "resolution = 128 # pixels/μm\n", "\n", "Si = mp.Medium(index=3.45)\n", "\n", "syz = 10\n", "geometry_lattice = mp.Lattice(size=mp.Vector3(0,syz,syz))\n", "\n", "k_points = [mp.Vector3(0.5)]\n", "\n", "num_bands = 1\n", "tolerance = 1e-9\n", "\n", "a = 1.0 # waveguide width\n", "\n", "def parallel_waveguide(s,yodd):\n", " geometry = [mp.Block(center=mp.Vector3(0,-0.5*(s+a),0),\n", " size=mp.Vector3(mp.inf,a,a),\n", " material=Si),\n", " mp.Block(center=mp.Vector3(0,0.5*(s+a),0),\n", " size=mp.Vector3(mp.inf,a,a),\n", " material=Si)]\n", "\n", " ms = mpb.ModeSolver(resolution=resolution,\n", " k_points=k_points,\n", " geometry_lattice=geometry_lattice,\n", " geometry=geometry,\n", " num_bands=num_bands,\n", " tolerance=tolerance)\n", "\n", " if yodd:\n", " ms.run_yodd_zodd()\n", " else:\n", " ms.run_yeven_zodd()\n", "\n", " f = ms.get_freqs()[0]\n", " vg = ms.compute_group_velocity_component(mp.Vector3(1,0,0))[0]\n", "\n", " return f,vg\n", "\n", "ss = np.arange(0.1,1.1,0.1)\n", "\n", "f_odd = np.zeros(len(ss))\n", "vg_odd = np.zeros(len(ss))\n", "f_even = np.zeros(len(ss))\n", "vg_even = np.zeros(len(ss))\n", "\n", "for j in range(len(ss)):\n", " f_odd[j], vg_odd[j] = parallel_waveguide(ss[j],True)\n", " f_even[j], vg_even[j] = parallel_waveguide(ss[j],False)\n", "\n", "ds = ss[1]-ss[0]\n", "\n", "def compute_force(f,vg):\n", " f_avg = 0.5*(f[:-1]+f[1:])\n", " df = f[1:]-f[:-1]\n", " vg_avg = 0.5*(vg[:-1]+vg[1:])\n", " return np.multiply(np.multiply(-1/f_avg,df/ds), 1/vg_avg)\n", "\n", "force_odd = compute_force(f_odd,vg_odd)\n", "force_even = compute_force(f_even,vg_even)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEKCAYAAAA4t9PUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deZgU1dn+8e/D5rBv4gKoLOLGpoKI4oK7ArIkEvE1bkGJiSbRV6Mmghqj+Wli1LhEgsY9BkUUeSNRISpuiIAiICAiooxo2BGQdXh+f5xqpmfraaanu6dn7s911dXdVdVdzxRD33PqVJ0yd0dERKSiamW7ABERyW0KEhERSYmCREREUqIgERGRlChIREQkJQoSERFJSVaDxMzONLNPzWyxmd1QyvK+ZrbezGZH003ZqFNERMpWJ1sbNrPawIPAaUA+MMPMJrr7/GKrvu3uAzJeoIiIJCWbLZJewGJ3X+Lu24CxwKAs1iMiIhWQtRYJ0AZYFvc6Hzi6lPWOMbOPgeXAte7+SWkfZmYjgBEADRs27HHIIYdUcrkiItXXrFmzVrl7q4q8N5tBYqXMKz5ey4fAAe6+0cz6AROATqV9mLuPAcYA9OzZ02fOnFmZtYqIVGtm9mVF35vNQ1v5wH5xr9sSWh27uPt37r4xej4JqGtme2auRBERKU82g2QG0MnM2ptZPWAYMDF+BTPbx8wset6LUO/qjFcqIiJlytqhLXffYWZXAq8CtYFH3f0TM7s8Wj4aOAf4mZntADYDw1zDFYuIVClWHb+X1Uciklnbt28nPz+fLVu2ZLsUKUdeXh5t27albt26Reab2Sx371mRz8xmZ7uIVBP5+fk0btyYdu3aER2NlirI3Vm9ejX5+fm0b9++0j5XQ6SISMq2bNlCy5YtFSJVnJnRsmXLSm85KkhEpFIoRHJDOv6ddGgrDV54AdauhW7doHNnaNAg2xWJiKSPWiRpMGYMXHop9OoFjRrBwQfD0KHw+9/DSy/BF1/Azp3ZrlKkZpswYQLz5xcO7XfTTTcxZcqULFZUttmzZzNp0qQyl8+cOZNf/vKXGayoKLVI0mDSpBAWc+YUTrNnw/jxEDtJrnFj6No1tFpiU9eu0KRJdmsXqSkmTJjAgAEDOOywwwC49dZbs1xR2WbPns3MmTPp169fiWU7duygZ8+e9OxZoROuKoe7V7upR48eXhVt2OD+/vvuY8a4X3ml+wknuDdr5h7iJUzt2rkPHOg+cqT7c8+5L1zovmNHtisXSWz+/PnZLsHd3QcNGuRHHnmkH3bYYf63v/3N3d0bNmzov/3tb71bt25+9NFH+7fffuvvvvuuN2/e3Nu1a+fdu3f3xYsX+0UXXeTjxo1zd/frr7/eDz30UO/atatfc801/t1333m7du1827Zt7u6+fv16P+CAA3zbtm1+4okn+lVXXeXHH3+8H3LIIf7BBx/4kCFD/MADD/Qbb7zR3d2/+OILP/jgg3348OHeuXNn/5//+R+fPHmyH3vssX7ggQf69OnT3d1948aNfskll3jPnj398MMP9wkTJvjWrVt9v/328z333NO7d+/uY8eO9Ztvvtkvu+wyP+200/y8887zN954w/v37+/u7hs2bPCLL77Yu3Tp4l27dvXnn3++xH4q7d8LmOkV/M5ViySDGjWCo48OU4w75OcXbb3MmQMvvwwFBWGdvDzo0qVk62VPDRYjVdBVV4UWeGU6/HC4997y13v00Udp0aIFmzdv5qijjuKHP/whmzZtonfv3tx+++1cd911PPzww4wcOZKBAwcyYMAAzjnnnCKfsWbNGl588UUWLlyImbFu3ToaN25M3759efnllxk8eDBjx47lhz/84a5rMerVq8dbb73FX/7yFwYNGsSsWbNo0aIFHTt25OqrrwZg8eLFjBs3jjFjxnDUUUfxzDPP8M477zBx4kT+8Ic/MGHCBG6//XZOPvlkHn30UdatW0evXr049dRTufXWW5k5cyYPPPAAALfccguzZs3inXfeoX79+rz55pu76v/9739P06ZNmTt3LgBr166thH+BxBQkWWYG++0Xpv79C+dv2QILFhQNl3/9Cx59tHCd1q2Lhku3bqE/pl69zP8cIlXBfffdx4svvgjAsmXL+Oyzz6hXrx4DBoRbGvXo0YPJkycn/IwmTZqQl5fHpZdeSv/+/Xe999JLL+WPf/wjgwcP5rHHHuPhhx/e9Z6BAwcC0LVrVzp37sy+++4LQIcOHVi2bBnNmjWjffv2dO3aFYDOnTtzyimnYGZ07dqVpUuXAvDaa68xceJE7rrrLiCcVv3VV1+VWufAgQOpX79+iflTpkxh7Nixu143b9488U6rBAqSKiovD444Ikzx/vtfmDu3aMDcey9s2xaW160Lhx5aGCx9+kDPngoXyZxkWg7p8OabbzJlyhSmTZtGgwYN6Nu3L1u2bKFu3bq7TnmtXbs2O3bsSPg5derU4YMPPuA///kPY8eO5YEHHuD111+nT58+LF26lKlTp1JQUECXLl12vWePPfYAoFatWruex17Htld8fvx7Yuu4O+PHj+fggw8uUtP06dNL1NmwYcNS63f3jJ+KrSDJMXvvHaZTTy2ct307fPZZ0XCZOhWefjosb9AAjjkG+vaFE08MZ5PF/U6LVAvr16+nefPmNGjQgIULF/L+++8nXL9x48Zs2LChxPyNGzfy/fff069fP3r37s2BBx64a9mFF17Ieeedx6hRoyq9foAzzjiD+++/n/vvvx8z46OPPuKII44os9bSnH766TzwwAPcGyX62rVr094q0em/1UDdunDYYTBsGPzhD+EQ2FdfwYoV4UyxSy+FVavgppvghBOgWTM46SS45RZ44w3YvDnbP4FI6s4880x27NhBt27dGDVqFL179064/rBhw/jTn/7EEUccweeff75r/oYNGxgwYADdunXjxBNP5J577tm17Pzzz2ft2rWcd955afkZRo0axfbt2+nWrRtdunTZFVgnnXQS8+fP5/DDD+fZZ59N+BkjR45k7dq1dOnShe7du/PGG2+kpdZ4GrSxBlmzBt55J7RW3nwzdIju3BkOe/XqFVorffuG1ksZrWaRUi1YsIBDDz0022Wk3fPPP89LL73EU089le1SUlLav5cGbZSktGgBAweGCWD9+sJgmToV7rgDbr8d6tSBo44KwXLiiaGfpXHj7NYukm2/+MUv+Pe//53wwsCaSi0S2WXDBnjvvdBamToVZsyAHTugdm048sjCYDnuuHB4TCSmprRIqgu1SCRtGjeGM84IE8CmTTBtWmGL5b774K67oFatcF5/LFiOPz60dkSkZlKQSJkaNgxnh8XOENu8Gd5/vzBY/vpXuOeecC1M166FwXLCCdCqVXZrF5HMUZBI0urXD2d7nXRSeL11K3zwQWHn/SOPwP33h2WdOxdtsUTXZ4lINaQgkQrbY48QEscfDyNHhosiZ84sbLE8+WRotQAccEA4Gyw2HX54OG1ZRHKfgkQqTb16cOyxYfrNb0JH/Ycfwrvvhk78t9+G2MgNeXnhivv4cNlnn+zWL1KZJkyYwEEHHbRrdOHiRo8eTYMGDbjwwgszXFnl01lbklHLloUO/Nj04YfhynyAdu2KBkv37mq15AqdtVXSxRdfXOqgkBCGfq9TJ3t/x+usLclpsQEqf/Sj8HrLlhAmsWCZOhX++c+wrH79cD1LfLjstVf2apeqbdOmTfzoRz8iPz+fgoICRo0axdixY3cN4jh58mQeeughXnjhBRo1asQVV1zBlClTaN68OX/4wx+47rrr+Oqrr7j33nsZOHAgjz/+OBMmTKCgoIB58+ZxzTXXsG3bNp566in22GMPJk2aRIsWLfj888+54oorWLlyJQ0aNODhhx9mzZo1TJw4kalTp3Lbbbcxfvx4hg8fzrHHHsu7777LwIED2bBhA40aNeLaa69l8eLFXH755axcuZLatWszbtw4OnbsmOU9mjwFiWRVXl7h4TAIw+oXb7XcfXdhq6VDh6LB0q1buIBSqpAsjSP/yiuv0Lp1a15++WUgjL118803s3LlSlq1asVjjz3GJZdcAoTQ6du3L3feeSdDhgxh5MiRTJ48mfnz53PRRRftGs133rx5fPTRR2zZsoUDDzyQO++8k48++oirr76aJ598kquuuooRI0YwevRoOnXqxPTp0/n5z3/O66+/Xuow9evWrWPq1KlAGAo+5vzzz+eGG25gyJAhbNmyhZ05dgtV/ReUKsUM9t8/TOeeG+Zt3ly01fL66/CPf4RlDRqUbLXo1OOaqWvXrlx77bVcf/31DBgwgOOPP54LLriAp59+mksuuYRp06bx5JNPAuH+IWeeeeau9+2xxx7UrVu3yJDuEMa4aty4MY0bN6Zp06acffbZu94zZ84cNm7cyHvvvcfQoUN3vWfr1q1l1nhu7Jc6zoYNG/j6668ZMmQIAHl5eSnvi0xTkEiVV79+GKalT5/w2j0MShnfarnrrtC5D9CxY9Fg6dpVrZaMytI48gcddBCzZs1i0qRJ/OY3v+H000/n0ksv5eyzzyYvL4+hQ4fu6peIH1q+rCHdofyh33fu3EmzZs2YnWQLrLSh36tDP7X+e0nOMQunEx9wQBjxGEKrZdaswmCZMqVwGP2GDcMZYt27h1Dp0iVc56Lxw6qX5cuX06JFC3784x/TqFEjHn/8cVq3bk3r1q257bbbyr2hVUU0adKE9u3bM27cOIYOHYq7M2fOHLp375700O9NmjShbdu2TJgwgcGDB7N161YKCgpo0KBBpdebLgoSqRbq1w9jgB13XHjtDl9+WRgs06fD3/8ehn2JOeCAECrx0yGHhH4byT1z587l17/+NbVq1aJu3bo89NBDQOh/WLlyZZmn4abqH//4Bz/72c+47bbb2L59O8OGDaN79+4MGzaMyy67jPvuu4/nn38+4Wc89dRT/PSnP+Wmm26ibt26jBs3jg4dOqSl3nTQ6b9SY+zcCUuXwrx5RaeFCws782vXhk6dSgZMx446PJZIVT7998orr+SII45g+PDh2S6lytDpvyIVVKtWOOurQ4fCofSh8A6T8+aF2xjPmxdOOho/PrRsIFzFf+ihhYfGYtN++4VDbVI19ejRg4YNG/LnP/8526VUawoSqfFid5g87LDC61sAvv8eFiwobLnMnRvOGIu/p1HjxkWDJRY0OnOsapg1a1a2S6gRFCQiZWjQAHr0CFO8tWvhk0+KHh4bPx4efrhwnb32Knl4rHNnaNIksz9DJrn7rjOhpOpKR3eGgkRkNzVvXrRjH8IhsG+/Ldn/UryDv3Xr0N9S2tSiRe4eJsvLy2P16tW0bNlSYVKFuTurV6+u9GtVFCQilcAsDJW/775w2mmF83fuDGePxfpeFi2Czz+HV1+Fb74p+hlNm5YdMm3ahBMBqqq2bduSn5/PypUrs12KlCMvL4+2bdtW6mfqrC2RLPn+e1iyJARL8Wnp0sILLCGMrNy+fQiVDh2KhkyHDjplWVKns7ZEclCDBoX9J8Xt2AH5+aWHzNtvQ/Hr3Nq0SXzITCSdFCQiVVCdOmFY/Xbt4JRTii5zh1WrSg+ZV14pecisWbOSLZjWrcNhuNatwxlmtWpl6ieT6khBIpJjzMKXf6tW0Lt3yeWbNsEXX5QMmQ8/hBdeKHrIDELfy957F/bxxAIm/vW++4Z1dH8YKY2CRKSaadgw8SGzr78OrZbly8Nj/LRsGXzwAaxcWXgxZkwswIoHTPHg2Wcf9dnUNAoSkRqkTp3CAS8T2b4dVqwoO3CWL4c5c+C//4WCgpLvb9687JZNbP5ee4ULOnW2cO5TkIhICXXrhg78Nm0Sr1dQEPpr4gOmeOhMnRqusdm2reT7a9cOJwO0bFn0sbx5jRopgKoSBYmIVFisf2XvvcNNDMviDmvWFA2cVatg9eowf82a8HzZsjDO2Zo1RS/kLK5u3eQCp/hjgwYKoHRQkIhI2pmFL/OWLUvvuynN1q1FQ6b48/h5S5eGkwnWrAnX55SlXr2i4dK8ebgQtGnTMHxNkyalP489Nm6sUaBLo10iIlXSHnsU9qnsjs2bw3ho5YXP6tXhgtDvvgvT+vVhJILyNGxYdtCUNy/2vFGj6nXKtYJERKqV+vXD1Lr17r3PPbRm1q8vGi7xj2XNW768cF4SN0XELLRuYuEyeDDcfnvFft6qQEEiIkL4cm/YMEy7G0Lxdu6EjRuTD6H163N/9AEFiYhIJapVq7ClUVNk9SidmZ1pZp+a2WIzu6GU5WZm90XL55jZkdmoU0REylZui8TM9gL6AK2BzcA8YKa7J9EtlfBzawMPAqcB+cAMM5vo7vPjVjsL6BRNRwMPRY8iIlJFlNkiMbOTzOxV4GXCF/q+wGHASGCumf3OzFJpvPUCFrv7EnffBowFBhVbZxDwpAfvA83MbDfP4RARkXRK1CLpB1zm7l8VX2BmdYABhNbE+Apuuw2wLO51PiVbG6Wt0wYoNr4pmNkIYATA/vvvX8GSRERkd5UZJO7+6wTLdgATUtx2adeXFr/LVjLrxGoaA4yBcGOr1EoTEZFkJTq0dbSZfWxmG81smpkdVsnbzgf2i3vdFlhegXVERCSLEp219SBwLdASuBu4p5K3PQPoZGbtzaweMAyYWGydicCF0dlbvYH17l7isJaISE5xDxebfPMNLFoEX5XoQcgpifpIarn75Oj5ODP7TWVu2N13mNmVwKtAbeBRd//EzC6Plo8GJhH6ahYD3wOXVGYNIiJJ27EjfPl/9124fD02lfe6rHnxN3w5/3x4+uns/WwpShQkzczsB2W9dvcXUt24u08ihEX8vNFxzx24ItXtiEgN5x4uIV+9Ogw7HJvWrCn6JZ8oFDZvTm5bdesWjvAYGwelZctw3+TY69iy2NSpU1p//HRLFCRTgbPLeO1AykEiIrLbSguF4gFRfNnq1SXvMRyvQYOSX/Jt2sChh5b80i8eBMVf77FH5vZFFZEoSMYA70etAhGRyldeKJQWEIlCoXZt2HPPwumQQwqft2xZdFlsXPvGjcP7pMISBclFwINmtgh4BXjF3b/NTFkiktPcw2Gh/Pxwk/j8/KLT11+H+/QmEwqxAIiFQnwgFA+HJk1056osSHQdyeUAZnYI4cr2x82sKfAGIVjedfdS7tYsItWaewiA0sIh/vXGjSXfu9de0LZtuGl8r17QqlXZrYWmTRUKOaLcsbbcfSGwELjHzOoDJwFDCacE90xveSKSUQUFoaWQKCC+/jrcvjBerVph7PU2baBzZzjjjBAYbduGeW3bhuU1sP+gJkhm0MbewCfuvsHdN5vZ28Bqd/9F+ssTkUrjDitWwOLFJVsTsYBYvjyESbx69QrD4OijSwZE27bhpu26B22Nlcy//ENA/PDtm0qZJyJVxZYt8Nln8OmnRadFi2DduqLrNmxYGAYnn1wyINq2DYeadIhJEkgmSCz+zC133xkN2igi2eIeWhGLFpUMjC+/LHqxW5s2cPDBcN554fGgg2D//UNIqHNaKkEygbDEzH5JaIUA/BxYkr6SRGSXDRtKD4tFi8INxmMaNgwhccwxcPHFhYFx0EHQqFHWypeaIZkguRy4j3AfEgf+QzRcu4hUgoKC0IooHhaffhr6LGLMwtXRBx8MJ54YHmNT69ZqWUjWJHPW1grCgIoikorvvoNPPikZFosXw7Zthes1bx7C4bTTQosiFhYHHgh5edmrX6QMyZy1lQcMBzoDu36L3f0naaxLJLe5wxdfwHvvwbvvhse5cwv7LurUgY4dQ0D071+0daHObckxyRzaeopwHckZwK3A+cCCdBYlknO2boUPPwyBEZu+jQaCaNwYeveGH/wAjjwyhEX79mFwP5FqIJkgOdDdh5rZIHd/wsyeIQz9LlJzrVgB06YVtjZmziy8SK9DBzj1VOjTB449Nlygp7GcpBpLJki2R4/rzKwL8C3QLm0ViVQ1O3fC/PlFD1MtXhyW1asHPXrAlVeG0Dj2WNhnn+zWK5JhyQTJGDNrTjhrayLQCBiV1qpEsmnjRpg+vfAQ1bRpYYRaCGND9ekDI0aE0OjRQx3gUuMlc9bWI9HTt4AO6S1HJMPcw21O41sbH38cWiFm4bDUuecWHqbq2FEd4SLFlBkkZvZj4Bl331nG8o7Avu7+TrqKE6l027fDRx8VtjbefbfwWo2GDUOn+I03htDo3RuaNctuvSI5IFGLpCXwkZnNAmYBKwmn/x4InAisAm5Ie4UiqXCHDz6Al14KoTFjRuEtUw84APr2Lezb6NpVAw+KVECi+5H8xcweAE4G+gDdgM2EU38vcPevMlOiyG5yD4Hx3HPw/PPhqvE6dcKptz/9aThMdcwxYQwqEUlZwj+/ohtXTY4mkaorFh7jxoXpyy/DdRqnnw633goDB+owlUiaJAyS6Kr2AcDxQGtCi2Qe8LK7f5L+8kQScA/Xb8TCY+nSEB6nnQa/+x0MGqTwEMmARJ3ttwBnA28C04EVhD6Sg4A7opC5xt3npL9MkYg7zJoVguO550J41KkTwuPmm0N4NG+e7SpFapRELZIZ7n5LGcvuNrO9gP0rvySRYtzD8CPPPRcC5IsvCsPjpptCeLRoke0qRWqsRJ3tL5e1zMzucvdrCa0UkcrnHk7TjYXHkiUhPE49FUaOhMGDFR4iVURFz3X8EXBtZRYigjvMnh3C47nnQnjUrh3C47e/DeHRsmW2qxSRYioaJLq0VypHLDxifR6ffx7C45RTFB4iOSJRZ3tZxw0MBYmkwj0MQxILj8WLQ3icfDLccEMIjz33zHaVIpKkRC2SWQmWbUuwTKQkd5gzp7DP47PPQnicdBJcdx0MGaLwEMlRiYLkIHffnmC5SPk++wyeeCKEx6JFUKtWCI9rrw3h0apVtisUkRQlCpJpZpYPvAK84u5LM1OSVAtLl4aLAp98Mrzu2xf+939DeOy1VzYrE5FKluj0355mdgBwFnCvmbUB3gH+DUx1960ZqlFyyfLlcNtt8MgjofXxq1/Br38N++6b7cpEJE3KG2vrS2A0MNrM6hKGSjkTuM3MVrp7/wzUKLlg1Sq44w548EHYsQMuvTRc76GBEUWqvURnbe0fP8Jv1F/yejQRtVCkplu3Du6+G+65B77/Hn784zBUSQfdA02kpqiVYNmE2BMzG198obt/nZaKJDds2gT/7/+FwPj97+Gss2DevNCxrhARqVESHdqKv1ZE3wwSbNkCo0eHEFmxAvr3D0FyxBHZrkxEsiRRi8TLeC410fbtMGYMdOoEV18NXbqEW9X+618KEZEaLlGLpLuZfUdomdSPnhO9dndvkvbqJPsKCuCZZ+CWW8LYV717h8NXJ5+c7cpEpIpIdPpv7UwWIlXMzp3w4othmPb58+Hww0Pro18/MI2QIyKFyjy0ZWaNyntzMutIjnGHSZOgZ08455wQKM89F24m1b+/QkRESkjUR/KSmf3ZzE4ws4axmWbWwcyGm9mrhGtKpLp48004/vgQGOvWhUNY8+bB0KHh4kIRkVIkOrR1ipn1A34K9DGz5sAO4FPgZeAid/82M2VKWk2fHi4enDIlXEA4ejRccgnUq5ftykQkB5R3ZfskYFKGapFM+/hjGDUK/u//wuCJd98Nl18O9etnuzIRySEVvbGV5LJPPw1Xnz/7LDRtGsbG+tWvoJG6vERk9ylIapL4EXnr14cbb4RrroHmzbNdmYjksKwESXT3xWeBdsBS4EfuvraU9ZYCG4ACYIe798xcldXI8uVw++3w8MOh0/yqq+D66zWcu4hUiqROxTGz48zskuh5KzNrn+J2bwD+4+6dgP9Er8tykrsfrhCpgFWrwg2kOnYMV6UPHx7uif7nPytERKTSlNsiMbObgZ7AwcBjQF3gaaBPCtsdBPSNnj8BvAlcn8LnSXHjx4czrzZtggsuCH0i7VPNfxGRkpJpkQwBBgKbANx9OdA4xe3u7e7fRJ/3DVDWn8cOvGZms8xsRKIPNLMRZjbTzGauXLkyxfJymHsYRPGcc6Bz53AdyOOPK0REJG2S6SPZ5u5uZg4Qf3FiImY2BdinlEU37kZ9fdx9uZntBUw2s4Xu/lZpK7r7GGAMQM+ePWvmIJPffw8/+Uk4G+uCC8LhrLy8bFclItVcMkHynJn9DWhmZpcBPwEeLu9N7n5qWcvM7L9mtq+7f2Nm+wIryviM5dHjCjN7EegFlBokNd7XX8OgQfDhh3DnneH2thrOREQyoNwgcfe7zOw04DtCP8lN7j45xe1OBC4C7ogeXyq+QtTyqeXuG6LnpwO3prjd6mnGjBAiGzbASy/B2WdnuyIRqUGS6WxvD7wdCw8zq29m7dx9aQrbvYPQ0hkOfAUMjT67NfCIu/cD9gZetPBXdR3gGXd/JYVtVk///Gc4nLXPPvDaa+E+ISIiGZTMoa1xwLFxrwuieUdVdKPuvho4pZT5y4F+0fMlQPeKbqPa27kznIl1221hoMXx48MwJyIiGZZMkNRx922xF+6+zcw0ml82bdwIF14Y7hcyfDj89a8aYFFEsiaZ039XmtnA2AszGwSsSl9JktBXX8Fxx4W+kHvvDVerK0REJIuSaZFcDvzDzB6IXucDF6SvJCnTe+/BkCGwdWu4+dQZZ2S7IhGRxEFiZrWAHu7eO7oborn7hsyUJkU88QSMGAH77x+GfT/kkGxXJCIClHNoy913AldGzzcqRLKgoACuuw4uvjgc0po+XSEiIlVKMn0kk83sWjPbz8xaxKa0Vybw3Xfh+pA//Ql+/nN45RVooV0vIlVLMn0kP4ker4ib50CHyi9HdlmyBAYOhIUL4cEHQ5CIiFRByVzZrtH+Mm3qVPjhD8O1Iq+9BiefnO2KRETKVO6hLTOra2a/NLPno+lKM6ubieJqpIcfhlNPhT33DP0hChERqeKS6SN5COgB/DWaekTzpDLt2BHumz5iBJxyCrz/PnTqlO2qRETKlUwfyVHuHj9Uyetm9nG6CqqR1q2Dc88Nh7Guvhr++Eeok5W7IIuI7LZkvq0KzKyju38OYGYdCONtSWVYtCh0qi9ZAo88EoY8ERHJIckEya+BN8xsCWDAAcAlaa2qppgyBYYODa2PKVPghBOyXWkwYooAAA9aSURBVJGIyG4rM0jMbKi7jwOWAJ0I9yIxYKG7b81QfdWTexho8Ve/gkMPhYkTdStcEclZiTrbfxM9jnf3re4+x90/VoikaPv2cE3IlVdCv35h/CyFiIjksESHtlab2RtAezObWHyhuw8s5T2SyOrVcM458OabcP31cPvtULt2tqsSEUlJoiDpDxwJPAX8OTPlVGMLFoRb4C5bBk8+CRdoAGURqR7KDJLoZlbvm9mx7r4ygzVVP//+NwwbBvXrh9bIMcdkuyIRkUpT7gWJCpEUuMPdd8OAAdChA3zwgUJERKqdZK5sl4rYujVcE3LNNTB4MLzzTriXiIhINaMgSYcVK8J4WY89BqNGwbhx0LBhtqsSEUmLRNeR3E8YLr5U7v7LtFRUHQwdCjNnwtixYegTEZFqLNFZWzMzVkV1c9994XqRnj2zXYmISNolOmvriUwWUq10717+OiIi1US5Y22ZWSvgeuAwIC823911owwREUmqs/0fwAKgPfA7YCkwI401iYhIDkkmSFq6+9+B7e4+1d1/AvROc10iIpIjkhlGfnv0+I2Z9QeWA23TV5KIiOSSZILkNjNrClwD3A80Aa5Oa1UiIpIzyg0Sd/9X9HQ9cFJ6yxERkVxTbh+JmT1hZs3iXjc3s0fTW5aIiOSKZDrbu7n7utgLd18LHJG+kkREJJckEyS1zKx57IWZtSC5vhUREakBkgmEPwPvmdnz0euhwO3pK0lERHJJMp3tT5rZTOBkwIAfuPv8tFcmIiI5IdHov03c/bvoUNa3wDNxy1q4+5pMFCgiIlVbohbJM8AAYBZFh5O36HWHNNYlIiI5ItHovwOix/aZK0dERHJNMteR/CeZeSIiUjMl6iPJAxoAe0an/1q0qAnQOgO1iYhIDkjUR/JT4CpCaHwYN/874MF0FiUiIrkjUR/JX4C/mNkv3P3+DNYkIiI5JJkLEh8xs/8FjiOcrfU2MNrdt6S1MhERyQnJBMkTwAbCEPIA5wFPEa5wFxGRGi6ZIDnY3bvHvX7DzD5OV0EiIpJbkhm08SMz23VrXTM7Gng3lY2a2VAz+8TMdppZzwTrnWlmn5rZYjO7IZVtiohIeiQTJEcTBm1camZLgWnAiWY218zmVHC784AfAG+VtYKZ1SacHXYWcBhwnpkdVsHtiYhImiRzaOvMyt6ouy8AMLNEq/UCFrv7kmjdscAgQANGiohUIcmM/vulmXUHjo9mve3umegjaQMsi3udT2gdlcrMRgAjAPbff//0ViYiIrskM0TKr4B/AHtF09Nm9osk3jfFzOaVMg1KsrbSmiteyrywwH2Mu/d0956tWrVKchMiIpKqZA5tDQeOdvdNAGZ2J6GfJOFFiu5+aoq15QP7xb1uCyxP8TNFRKSSJdPZbkBB3OsCSm8tVLYZQCcza29m9YBhwMQMbFdERHZDMkHyGDDdzG4xs1uA94G/p7JRMxtiZvnAMcDLZvZqNL+1mU0CcPcdwJXAq8AC4Dl3/ySV7YqISOUz9zK7HQpXMjuSMESKAW+5+0fpLiwVPXv29JkzZ2a7DBGRnGFms9y9zOv6EkmmjwR3/5CiIwCLiIgAyR3aEhERKZOCREREUqIgERGRlChIREQkJQoSERFJiYJERERSoiAREZGUKEhERCQlChIREUmJgkRERFKiIBERkZQoSEREJCUKEhERSYmCREREUqIgERGRlChIREQkJQoSERFJiYJERERSoiAREZGUKEhERCQlChIREUmJgkRERFKiIBERkZQoSEREJCUKEhERSYmCREREUqIgERGRlChIREQkJQoSERFJiYJERERSoiAREZGUKEhERCQlChIREUmJgkRERFKiIBERkZQoSEREJCUKEhERSYmCREREUqIgERGRlChIREQkJQoSERFJiYJERERSoiAREZGUKEhERCQlChIREUlJVoLEzIaa2SdmttPMeiZYb6mZzTWz2WY2M5M1iohIcupkabvzgB8Af0ti3ZPcfVWa6xERkQrKSpC4+wIAM8vG5kVEpBJlq0WSLAdeMzMH/ubuY8pa0cxGACOil1vNbF4mCswBewJq0Wk/xNO+KKR9Uejgir4xbUFiZlOAfUpZdKO7v5Tkx/Rx9+Vmthcw2cwWuvtbpa0YhcyYaNsz3b3MvpeaRPsi0H4opH1RSPuiUCr90GkLEnc/tRI+Y3n0uMLMXgR6AaUGiYiIZEeVPf3XzBqaWePYc+B0Qie9iIhUIdk6/XeImeUDxwAvm9mr0fzWZjYpWm1v4B0z+xj4AHjZ3V9JchNl9qXUQNoXgfZDIe2LQtoXhSq8L8zdK7MQERGpYarsoS0REckNChIREUlJzgaJmZ1pZp+a2WIzu6GU5WZm90XL55jZkdmoMxOS2BfnR/tgjpm9Z2bds1FnJpS3L+LWO8rMCszsnEzWl0nJ7Asz6xsNQfSJmU3NdI2ZksT/kaZm9n9m9nG0Ly7JRp3pZmaPmtmKsq6zq/D3prvn3ATUBj4HOgD1gI+Bw4qt0w/4N2BAb2B6tuvO4r44FmgePT+rJu+LuPVeByYB52S77iz+XjQD5gP7R6/3ynbdWdwXvwXujJ63AtYA9bJdexr2xQnAkcC8MpZX6HszV1skvYDF7r7E3bcBY4FBxdYZBDzpwftAMzPbN9OFZkC5+8Ld33P3tdHL94G2Ga4xU5L5vQD4BTAeWJHJ4jIsmX3xP8AL7v4VhOu1MlxjpiSzLxxobGHcpkaEINmR2TLTz8MF3WsSrFKh781cDZI2wLK41/nRvN1dpzrY3Z9zOOEvjuqo3H1hZm2AIcDoDNaVDcn8XhwENDezN81slpldmLHqMiuZffEAcCiwHJgL/Mrdd2amvCqlQt+bVX2srbKUNtpj8fOYk1mnOkj65zSzkwhBclxaK8qeZPbFvcD17l5QzQcNTWZf1AF6AKcA9YFpZva+uy9Kd3EZlsy+OAOYDZwMdCQMyfS2u3+X7uKqmAp9b+ZqkOQD+8W9bkv4S2J316kOkvo5zawb8AhwlruvzlBtmZbMvugJjI1CZE+gn5ntcPcJmSkxY5L9P7LK3TcBm8zsLaA7UN2CJJl9cQlwh4eOgsVm9gVwCOFi6JqkQt+buXpoawbQyczam1k9YBgwsdg6E4ELo7MQegPr3f2bTBeaAeXuCzPbH3gBuKAa/rUZr9x94e7t3b2du7cDngd+Xg1DBJL7P/IScLyZ1TGzBsDRwIIM15kJyeyLrwgtM8xsb8JIuEsyWmXVUKHvzZxskbj7DjO7EniVcEbGo+7+iZldHi0fTTgjpx+wGPie8BdHtZPkvrgJaAn8NfpLfIdXwxFPk9wXNUIy+8LdF5jZK8AcYCfwiLtXu/Hskvy9+D3wuJnNJRzeud6r4Q31zOyfQF9gz2iYqpuBupDa96aGSBERkZTk6qEtERGpIhQkIiKSEgWJiIikREEiIiIpUZCIiEhKFCQicczsvTLmP56LIwWb2WAzOyzu9a1mdmqat/k3M+uTzm1I1aIgEYnj7sdmu4bdZWa1EyweDOwKEne/yd2npLmkowmDg0oNoSCRjDKz68zsl9Hze8zs9ej5KWb2dPT8ITObGd0X4nfRvLPM7Lm4z+lrZv8XPT/dzKaZ2YdmNs7MGkXz+5nZQjN7J7rHwr+i+beY2bVxnzXPzNpFzzdGj2ZmD5jZfDN7Gdgrbv0eZjY1Gujw1dJGRzWzodHnfhwNPYKZ1TazP5nZjOheDz+N+1neMrMXo+2NNrNaZe2LaP5SM7vJzN4BhprZZdHnfmxm482sgZkdCwwE/mThniMd41tW0T7/yMzmWrhPxR5xn/27aH/ONbNDSvn5OpvZB9HnzjGzTtH8Q4FF0VhmJWpK+hdFcoqCRDLtLeD46HlPoJGZ1SUMJPl2NP/G6Mr7bsCJFsYJmwz0NrOG0TrnAs+a2Z7ASOBUdz8SmAn8r5nlAX8jjC12HOEeE7tjCGGYjK7AZYR7uhDVej/hPiY9gEeB20t5/03AGe7enfBlDmHAzPXufhRwFHCZmbWPlvUCrom21xH4QYJ9EbPF3Y9z97GE4eCPira3ABju7u8Rhrz4tbsf7u6fx94Y7Z/HgXPdvSthlIufxX32qmh/PgRcS0mXA39x98MJ/4750fyzgFei5yVqKuVzpBpQkEimzQJ6mFljYCswjfBFdDyFQfIjM/sQ+AjoTLgJ0Q7CF9TZZlYH6E8YK6o34dDNu2Y2G7gIOIAw4N4Sd/8i+sx/7madJwD/dPcCd19OuBEWhHDpQhgddjYhxEq7v8u7hCE3LiMMywFwOmEco9nAdMKwNZ2iZR9E98soiGqNjdBcYl/EbePZuOddzOztaIiP86N1EzkY+CJu7LUnop855oXocRbQrpT3TwN+a2bXAwe4++Zo/hkUBsnu1iQ5KifH2pLc5e7bzWwpYQyf9wjjPJ1E+Ct8QfQX+rXAUe6+1sweB/Kitz8LXEG4Mc8Md99gZgZMdvfz4rdjZkckKGMHRf+IyitjvdLGDzLgE3c/JsHn4+6Xm9nRhMCbbWaHR+/9hbu/WqzWvqVsy8vZFwCb4p4/Dgx294/N7GLCeEqJlDeG/tbosYBSvifc/Rkzm074+V41s0sJ/SLNouCtSE2So9QikWx4i/AF+RahFXI5MDsawrsJ4QtyvYVRWM+Ke9+bhNuEXkbhX+PvA33M7ECAqG/gIGAh0CHW90E4FBazNPocLNyTuj0lvQUMi/o19iWEHcCnQCszOyZ6f10zK/GXtpl1dPfp7n4TsIowNPerwM+iw2OY2UFxh+p6WRidtlZU6zvl7IviGgPfRJ99ftz8DdGy4hYC7WL7DbgASPqe7WbWgdDiu49w+KwbYR+9kURNUs2oRSLZ8DZwIzDN3TeZ2ZZoHtFfrx8BnxCG8X439qaoA/dfwMWEQ1i4+8ror91/xjqLgZHuvsjMfg68YmarKHpfifEUHmKaQen333iRcJOjudHyqdH2tkWd1feZWVPC/6F7o3rj/SnqgDbgP4T7hM8hHCb6MGpJrSScVQXhUNEdhD6St4AX3X1nWfuiFKMIh8u+jGqOhcdY4GELJzjsOn3Z3beY2SXAuOhQ4Qx2766R5wI/NrPtwLfArdH0fBI1STWj0X+l2jKzRu6+MfrSfhD4zN3vyXZdxUWHtq519wHZriUVUV/O0e6+Pdu1SGbp0JZUZ5dFrY5PgKaEs7gkTdz9SIVIzaQWiYiIpEQtEhERSYmCREREUqIgERGRlChIREQkJQoSERFJyf8HehngQmMgYO8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(ss[:-1],force_odd,'b-',label='antisymmetric')\n", "plt.plot(ss[:-1],force_even,'r-',label='symmetric')\n", "plt.xlabel(\"waveguide separation s/a\")\n", "plt.ylabel(\"optical force (F/L)(ac/P)\")\n", "plt.legend(loc='upper right')\n", "plt.xticks(np.arange(0,1.2,0.2))\n", "plt.yticks(np.arange(-1.5,1.0,0.5))\n", "plt.show()" ] } ], "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 }