{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Reflectance and Transmittance Spectra for Planewave at Oblique Incidence" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As an additional demonstration of the mode-decomposition feature, the reflectance and transmittance of all diffracted orders for any grating with no material absorption and a planewave source incident at any arbitrary angle and wavelength must necessarily sum to unity. Also, the total reflectance and transmittance must be equivalent to values computed using the Poynting flux. This demonstration is somewhat similar to the [single-mode waveguide example](https://nbviewer.jupyter.org/github/NanoComp/meep/blob/master/python/examples/mode-decomposition.ipynb).\n", "\n", "The following example is adapted from the previous binary-grating example involving a [normally-incident planewave](https://nbviewer.jupyter.org/github/NanoComp/meep/blob/master/python/examples/binary_grating.ipynb). \n", "\n", "The total reflectance, transmittance, and their sum are plotted at the end of the simulation.\n", "\n", "Results are computed for a single wavelength of 0.5 μm. The pulsed planewave is incident at an angle of 10.7°. Its spatial profile is defined using the source amplitude function `pw_amp`. This [anonymous function](https://en.wikipedia.org/wiki/Anonymous_function) takes two arguments, the wavevector and a point in space (both `mp.Vector3`s), and returns a function of one argument which defines the planewave amplitude at that point. A narrow bandwidth pulse is used in order to mitigate the intrinsic discretization effects of the [Yee grid](../Yee_Lattice.md) for oblique planewaves. Also, the `stop_when_fields_decayed` termination criteria is replaced with `until_after_sources`. As a general rule of thumb, the more oblique the planewave source, the longer the run time required to ensure accurate results. There is an additional line monitor between the source and the grating for computing the reflectance. The angle of each reflected/transmitted mode, which can be positive or negative, is computed using its dominant planewave vector. Since the oblique source breaks the symmetry in the $y$ direction, each diffracted order must be computed separately. In total, there are 59 reflected and 39 transmitted orders." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As usual, we'll begin by loading our required modules:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using MPI version 3.1, 1 processes\n" ] } ], "source": [ "import meep as mp\n", "import math\n", "import cmath\n", "import numpy as np\n", "from matplotlib import pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we'll define our simulation domain:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "resolution = 50 # pixels/μm\n", "\n", "dpml = 1.0 # PML thickness\n", "dsub = 3.0 # substrate thickness\n", "dpad = 3.0 # length of padding between grating and PML\n", "gp = 10.0 # grating period\n", "gh = 0.5 # grating height\n", "gdc = 0.5 # grating duty cycle\n", "\n", "sx = dpml + dsub + gh + dpad + dpml\n", "sy = gp\n", "\n", "cell_size = mp.Vector3(sx, sy, 0)\n", "pml_layers = [mp.PML(thickness=dpml, direction=mp.X)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now define the oblique source we'll use to excite the grating structure." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "ng = 1.5\n", "glass = mp.Medium(index=ng)\n", "\n", "wvl = 0.5 # center wavelength\n", "fcen = 1 / wvl # center frequency\n", "df = 0.05 * fcen # frequency width\n", "\n", "# rotation angle of incident planewave; counter clockwise (CCW) about Z axis, 0 degrees along +X axis\n", "theta_in = math.radians(10.7)\n", "\n", "# k (in source medium) with correct length (plane of incidence: XY)\n", "k = mp.Vector3(fcen * ng).rotate(mp.Vector3(z=1), theta_in)\n", "\n", "symmetries = []\n", "eig_parity = mp.ODD_Z\n", "if theta_in == 0:\n", " k = mp.Vector3(0, 0, 0)\n", " symmetries = [mp.Mirror(mp.Y)]\n", " eig_parity += mp.EVEN_Y\n", "\n", "\n", "def pw_amp(k, x0):\n", " def _pw_amp(x):\n", " return cmath.exp(1j * 2 * math.pi * k.dot(x + x0))\n", "\n", " return _pw_amp\n", "\n", "\n", "src_pt = mp.Vector3(-0.5 * sx + dpml + 0.3 * dsub, 0, 0)\n", "sources = [\n", " mp.Source(\n", " mp.GaussianSource(fcen, fwidth=df),\n", " component=mp.Ez,\n", " center=src_pt,\n", " size=mp.Vector3(0, sy, 0),\n", " amp_func=pw_amp(k, src_pt),\n", " )\n", "]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll now initialize our simulation object. Since our first run is a normalization run, we'll set the entire domain to be the same material (glass in this case)." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "sim = mp.Simulation(\n", " resolution=resolution,\n", " cell_size=cell_size,\n", " boundary_layers=pml_layers,\n", " k_point=k,\n", " default_material=glass,\n", " sources=sources,\n", " symmetries=symmetries,\n", ")\n", "\n", "refl_pt = mp.Vector3(-0.5 * sx + dpml + 0.5 * dsub, 0, 0)\n", "refl_flux = sim.add_flux(\n", " fcen, 0, 1, mp.FluxRegion(center=refl_pt, size=mp.Vector3(0, sy, 0))\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since everything looks as expected, we can now run our normalization simulation. We'll record the flux data for future use." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-----------\n", "Initializing structure...\n", "Meep: using complex fields.\n", "Meep progress: 9.32/200.0 = 4.7% done in 4.0s, 81.9s to go\n", "Meep progress: 17.79/200.0 = 8.9% done in 8.0s, 82.0s to go\n", "Meep progress: 26.91/200.0 = 13.5% done in 12.0s, 77.2s to go\n", "Meep progress: 36.730000000000004/200.0 = 18.4% done in 16.0s, 71.2s to go\n", "Meep progress: 46.550000000000004/200.0 = 23.3% done in 20.0s, 66.0s to go\n", "Meep progress: 56.34/200.0 = 28.2% done in 24.0s, 61.2s to go\n", "Meep progress: 66.34/200.0 = 33.2% done in 28.0s, 56.4s to go\n", "Meep progress: 76.15/200.0 = 38.1% done in 32.0s, 52.1s to go\n", "Meep progress: 86.03/200.0 = 43.0% done in 36.0s, 47.7s to go\n", "Meep progress: 95.34/200.0 = 47.7% done in 40.0s, 43.9s to go\n", "Meep progress: 104.71000000000001/200.0 = 52.4% done in 44.0s, 40.1s to go\n", "Meep progress: 114.54/200.0 = 57.3% done in 48.0s, 35.8s to go\n", "Meep progress: 124.45/200.0 = 62.2% done in 52.0s, 31.6s to go\n", "Meep progress: 134.25/200.0 = 67.1% done in 56.0s, 27.4s to go\n", "Meep progress: 144.12/200.0 = 72.1% done in 60.0s, 23.3s to go\n", "Meep progress: 154.06/200.0 = 77.0% done in 64.0s, 19.1s to go\n", "Meep progress: 163.6/200.0 = 81.8% done in 68.0s, 15.1s to go\n", "Meep progress: 173.31/200.0 = 86.7% done in 72.0s, 11.1s to go\n", "Meep progress: 182.85/200.0 = 91.4% done in 76.1s, 7.1s to go\n", "Meep progress: 192.52/200.0 = 96.3% done in 80.1s, 3.1s to go\n", "run 0 finished at t = 200.0 (20000 timesteps)\n" ] } ], "source": [ "sim.run(until_after_sources=100)\n", "\n", "input_flux = mp.get_fluxes(refl_flux)\n", "input_flux_data = sim.get_flux_data(refl_flux)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll now reset our simulation domain using the `reset_meep` command and generate the periodic grating structure." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-----------\n", "Initializing structure...\n", " block, center = (-2.25,0,0)\n", " size (4,1e+20,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", " block, center = (0,0,0)\n", " size (0.5,5,1e+20)\n", " axes (1,0,0), (0,1,0), (0,0,1)\n", "Meep: using complex fields.\n" ] } ], "source": [ "sim.reset_meep()\n", "\n", "geometry = [\n", " mp.Block(\n", " material=glass,\n", " size=mp.Vector3(dpml + dsub, mp.inf, mp.inf),\n", " center=mp.Vector3(-0.5 * sx + 0.5 * (dpml + dsub), 0, 0),\n", " ),\n", " mp.Block(\n", " material=glass,\n", " size=mp.Vector3(gh, gdc * gp, mp.inf),\n", " center=mp.Vector3(-0.5 * sx + dpml + dsub + 0.5 * gh, 0, 0),\n", " ),\n", "]\n", "\n", "sim = mp.Simulation(\n", " resolution=resolution,\n", " cell_size=cell_size,\n", " boundary_layers=pml_layers,\n", " geometry=geometry,\n", " k_point=k,\n", " sources=sources,\n", " symmetries=symmetries,\n", ")\n", "\n", "refl_flux = sim.add_flux(\n", " fcen, 0, 1, mp.FluxRegion(center=refl_pt, size=mp.Vector3(0, sy, 0))\n", ")\n", "sim.load_minus_flux_data(refl_flux, input_flux_data)\n", "\n", "tran_pt = mp.Vector3(0.5 * sx - dpml - 0.5 * dpad, 0, 0)\n", "tran_flux = sim.add_flux(\n", " fcen, 0, 1, mp.FluxRegion(center=tran_pt, size=mp.Vector3(0, sy, 0))\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we'll simulate the actual grating structure." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Meep progress: 9.58/300.0 = 3.2% done in 4.0s, 121.4s to go\n", "Meep progress: 18.59/300.0 = 6.2% done in 8.0s, 121.2s to go\n", "Meep progress: 28.060000000000002/300.0 = 9.4% done in 12.0s, 116.4s to go\n", "Meep progress: 37.59/300.0 = 12.5% done in 16.0s, 111.8s to go\n", "Meep progress: 47.0/300.0 = 15.7% done in 20.0s, 107.7s to go\n", "Meep progress: 56.58/300.0 = 18.9% done in 24.0s, 103.3s to go\n", "Meep progress: 65.96000000000001/300.0 = 22.0% done in 28.0s, 99.4s to go\n", "Meep progress: 75.53/300.0 = 25.2% done in 32.0s, 95.2s to go\n", "Meep progress: 85.19/300.0 = 28.4% done in 36.0s, 90.8s to go\n", "Meep progress: 94.8/300.0 = 31.6% done in 40.0s, 86.6s to go\n", "Meep progress: 103.02/300.0 = 34.3% done in 44.0s, 84.2s to go\n", "Meep progress: 108.78/300.0 = 36.3% done in 48.0s, 84.4s to go\n", "Meep progress: 117.64/300.0 = 39.2% done in 52.0s, 80.7s to go\n", "Meep progress: 126.28/300.0 = 42.1% done in 56.0s, 77.1s to go\n", "Meep progress: 134.91/300.0 = 45.0% done in 60.0s, 73.5s to go\n", "Meep progress: 144.69/300.0 = 48.2% done in 64.1s, 68.8s to go\n", "Meep progress: 154.22/300.0 = 51.4% done in 68.1s, 64.3s to go\n", "Meep progress: 163.89000000000001/300.0 = 54.6% done in 72.1s, 59.8s to go\n", "Meep progress: 173.19/300.0 = 57.7% done in 76.1s, 55.7s to go\n", "Meep progress: 182.75/300.0 = 60.9% done in 80.1s, 51.4s to go\n", "Meep progress: 192.55/300.0 = 64.2% done in 84.1s, 46.9s to go\n", "Meep progress: 202.20000000000002/300.0 = 67.4% done in 88.1s, 42.6s to go\n", "Meep progress: 212.06/300.0 = 70.7% done in 92.1s, 38.2s to go\n", "Meep progress: 221.95000000000002/300.0 = 74.0% done in 96.1s, 33.8s to go\n", "Meep progress: 231.65/300.0 = 77.2% done in 100.1s, 29.5s to go\n", "Meep progress: 241.43/300.0 = 80.5% done in 104.1s, 25.2s to go\n", "Meep progress: 251.13/300.0 = 83.7% done in 108.1s, 21.0s to go\n", "Meep progress: 260.92/300.0 = 87.0% done in 112.1s, 16.8s to go\n", "Meep progress: 270.72/300.0 = 90.2% done in 116.1s, 12.6s to go\n", "Meep progress: 280.64/300.0 = 93.5% done in 120.1s, 8.3s to go\n", "Meep progress: 290.5/300.0 = 96.8% done in 124.1s, 4.1s to go\n", "run 0 finished at t = 300.0 (30000 timesteps)\n" ] } ], "source": [ "sim.run(until_after_sources=200)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With both simulation runs complete, we can use the `get_eigenmode_coefficients` routine to extract the reflection and transmission diffraction orders and relative power." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " iteration 60: trace = 166.7770726644721 (1.83568e-09% change)\n", " iteration 55: trace = 177.9876051266832 (7.99025e-10% change)\n", " iteration 51: trace = 189.5448069917852 (5.38133e-07% change)\n", " iteration 48: trace = 201.4664481059231 (1.8864e-08% change)\n", " iteration 46: trace = 207.5342915143063 (3.85266e-10% change)\n", " iteration 43: trace = 213.7703137192983 (4.51554e-09% change)\n", " iteration 41: trace = 220.034335071049 (1.36799e-09% change)\n", " iteration 41: trace = 226.4741893511782 (4.77871e-07% change)\n", " iteration 41: trace = 232.9432676387035 (5.52227e-08% change)\n", " iteration 39: trace = 239.595834286208 (3.53174e-06% change)\n", " iteration 38: trace = 246.2788666241614 (2.25977e-09% change)\n", " iteration 37: trace = 253.1530499209222 (9.10884e-06% change)\n", " iteration 37: trace = 260.0589101770202 (1.34992e-09% change)\n", " iteration 35: trace = 267.1635561942985 (5.91227e-07% change)\n", " iteration 35: trace = 274.3011759549739 (1.72579e-09% change)\n", " iteration 32: trace = 281.6452308165144 (1.0722e-05% change)\n", " iteration 31: trace = 289.0234421086738 (1.50935e-07% change)\n", " iteration 30: trace = 296.6161748479355 (0.000100081% change)\n", " iteration 59: trace = 296.6157305576143 (5.87185e-11% change)\n", " iteration 29: trace = 304.2434860777851 (2.93797e-07% change)\n", " iteration 28: trace = 312.0938090067969 (0.000189191% change)\n", " iteration 58: trace = 312.0929296806977 (1.19518e-10% change)\n" ] } ], "source": [ "# Calculate the number of reflected orders\n", "nm_r = np.floor((fcen * ng - k.y) * gp) - np.ceil(\n", " (-fcen * ng - k.y) * gp\n", ") # number of reflected orders\n", "if theta_in == 0:\n", " nm_r = nm_r / 2 # since eig_parity removes degeneracy in y-direction\n", "nm_r = int(nm_r)\n", "\n", "# Extract the coefficients for the reflected orders\n", "res = sim.get_eigenmode_coefficients(\n", " refl_flux, range(1, nm_r + 1), eig_parity=eig_parity\n", ")\n", "r_coeffs = res.alpha\n", "\n", "# Calculate the number of transmitted orders\n", "nm_t = np.floor((fcen - k.y) * gp) - np.ceil(\n", " (-fcen - k.y) * gp\n", ") # number of transmitted orders\n", "if theta_in == 0:\n", " nm_t = nm_t / 2 # since eig_parity removes degeneracy in y-direction\n", "nm_t = int(nm_t)\n", "\n", "# Extract the coefficients for the transmitted orders\n", "res = sim.get_eigenmode_coefficients(\n", " tran_flux, range(1, nm_t + 1), eig_parity=eig_parity\n", ")\n", "t_coeffs = res.alpha" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we'll compute the corresponding angles and relative powers and visualize the results." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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19HQcwHcdttt/PrXv6aoqIghQ4bQqVMn5syZwx133MHkyZOZNWsWXeKMF5w3bx6XXXYZPXv25MQTT+S9995j1qxZHHvssbz55psccMABDbadV9xdr2b6Ahb16dPHm4uXX37ZX3755aZ+jJymPsyc+jBz6sPM5XwfXnyxOyT/+vGPk6/7+ONTqzv6Ov747H3fBCorK33x4sW+ePFir6ysDL3+Tz5xLy5OrRuKi93Xrk2u/k2bNvmmTZtCf26C9RXilg0ePNgB/9///d86ZT/5yU8c8HPOOce/+OKL6vObN2/2b3/72w74PffcU+ueG2+80QGfOHFinfomTpzogN944421zt95550O+NChQ/2TTz6pPv/VV1/5RRdd5IBfc801te6Jnh88eLB/+umn1ec3bdrkS5cu9ddff7363PTp0x3wkSNHxu0D96CPunfvXuvcG2+84QUFBd6mTZta9W3fvt3PPvtsB/yss86K+/0BHz9+fK2yK6+80gH/wQ9+kPA5moPoz2Gq/5769OnjwCJP43dkDSETERHJN+PHJz+UbMiQ4PpkZXuIWiNyhy++SP81YUJ604EmTMis3eBvoOGpqqpi2bJlXHrppcyaNYvTTjuNc845p9Y1n376Kffffz977LEHEydOpH379tVlbdu25cEHH6RFixbcc889GT3Ljh07uPPOOyktLeXvf/87Xbt2rS5r0aIFf/rTn+jatSv33XcfVVVVAKxZs4ZJkybRsmVLHnnkEXbZZZdadXbu3Jkjjjgio+cCmDBhAlVVVVx++eW16mvZsiUTJkygpKSEyZMns2rVqjr3Hn300fz0pz+tde76668HYNasWRk/2zeNAhgREZF8U1ICL7wQzCxPtJJScXFQ/uKLqW00edFFietMJJUhao1o0ybo2DH91623ptfuLbckV3/37u3o3r1dnfObNoXz/aNzPwoLC+nVqxd/+ctfuPjii5k8eXKdJZRnzJhBRUUFJ510Uq2hW1Fdu3Zln3324Z133mFbBhN95s+fz4YNGzjqqKPiDsUqKSnh0EMP5fPPP2fp0qXVz1ZZWclJJ51E9+7d0267IbNnzwbgvPPOq1PWuXNnTjjhBKqqqpgzZ06d8hNOOKHOuZ133pmddtqJTz75JPyHzXEKYERERPJRSUkw2WLVKujX7+vzRUXBb96rVgXlqQQvAF27QmSlqoZU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MGbWCpgGDAQ+AZ4CegCjgFPMbKC7L0+iqlbAjcCXwELgLaAF0B+4FDjPzI5193kJ7p8CrI1zfkny30ZERKSJZDsD0xj7zDR327bBFVfApElQUVG7bOpUGDsWRo2C8eOhVaumeEIJwS677MIuu+zSaO316tWr0dpqbnJ5Dsz1BMHLa8C+7n6Oux8B/Iwgi/JQkvVsBwYBHd39aHc/291PA/YGbgfaAfVlUm539wvivKan+8VEREQaTVNkYPJpEv+2bfCtb8H999cNXqIqKuC+++Ckk4Lrc8yzzz6LmTF69GhWrVrFyJEj6datG4WFhTzwwAMArFq1it/+9rccc8wxdOvWjRYtWrDrrrvy3e9+l7fffjtuvdE5Hu7O3XffTd++fWnVqhXdunXj8ssv58svv6xzz6ZNm7jppps48MADadeuHW3btqVXr15873vfY/r06XXq79atG1VVVYwbN47evXtTUlJCr169GD9+fPV1r7/+OieddBIdO3akXbt2nH322axZs6ZO24nmwKTyTJ988glXX301vXv3prS0lA4dOrD//vszatQoFixYELd/4pk5cyannHIKnTp1omXLlvTs2ZMrrriCTz/9tM61EyZMwMz4/e9/z7Jlyzj77LPZeeedKSkpYeDAgbz00ktx22hKOZmBMbMWwOjIx8vcvfon2N3HmdlIYIiZHerub9VXl7vvAObEOV9pZmOAK4FDzay9u28K71uIiIg0A9nOkOT7ELIrrgiGjCVj5ky48kq4997sPlOWrF69msMOO4zi4mKOOeYYvvzyS1pFMkr/93//x3XXXUefPn04+OCDKS0tZcmSJfzzn//kmWee4aWXXuKYY46JW+9ll13GxIkTGTZsGPvssw+vvPIKEyZMYOnSpbz44ovV15WXlzN48GAWLlxIly5dGD58OC1atODjjz/mySefpFOnTgwbNqxO/VdccQVPPPEEw4cPZ++992bGjBlceeWVlJeXc/DBB3PKKadw0EEHccIJJ/Dmm2/y+OOP89577zF//nyKi4vr7ZNUnmnjxo0MGDCA1atX06NHD0488UQKCgpYuXIljz76KH379q0zDymee++9l0svvRSgOmB84403uOuuu/jXv/7FrFmz2Guvverct2TJEgYMGEDnzp05/vjjWb58OXPnzuXkk09m+vTpDBo0qMG2G0tOBjDA0UB7YJm7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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "r_angle = np.squeeze(\n", " [\n", " math.degrees(np.sign(r_kdom.y) * math.acos(r_kdom.x / (ng * fcen)))\n", " for r_kdom in res.kdom\n", " ]\n", ")\n", "Rmode = abs(r_coeffs[:, 0, 1]) ** 2 / input_flux[0]\n", "idx_r = np.argsort(r_angle)\n", "\n", "t_angle = np.squeeze(\n", " [\n", " math.degrees(np.sign(t_kdom.y) * math.acos(t_kdom.x / fcen))\n", " for t_kdom in res.kdom\n", " ]\n", ")\n", "Tmode = abs(t_coeffs[:, 0, 0]) ** 2 / input_flux[0]\n", "idx_t = np.argsort(t_angle)\n", "\n", "plt.figure(dpi=150)\n", "plt.plot(r_angle[idx_r], Rmode[idx_r], \"o-\", color=\"blue\", label=\"Reflection\")\n", "plt.plot(t_angle[idx_t], Tmode[idx_t], \"o-\", color=\"red\", label=\"Transmission\")\n", "plt.grid(True)\n", "plt.xlabel(\"Diffraction Angle (degrees)\")\n", "plt.ylabel(\"Relative Power (au)\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a sanity check, we'll compare the total flux derived from the `get_eigenmode_coefficients` routine to the flux computed from the flux monitors:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mode-coeff:, 0.061047, 0.937862, 0.998909\n", "poynting-flux:, 0.061102, 0.938344, 0.999447\n" ] } ], "source": [ "print(\n", " \"mode-coeff:, {:.6f}, {:.6f}, {:.6f}\".format(\n", " np.sum(Rmode), np.sum(Tmode), np.sum(Rmode) + np.sum(Tmode)\n", " )\n", ")\n", "r_flux = mp.get_fluxes(refl_flux)\n", "t_flux = mp.get_fluxes(tran_flux)\n", "Rflux = -r_flux[0] / input_flux[0]\n", "Tflux = t_flux[0] / input_flux[0]\n", "print(\"poynting-flux:, {:.6f}, {:.6f}, {:.6f}\".format(Rflux, Tflux, Rflux + Tflux))" ] } ], "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.8" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }