{ "cells": [ { "cell_type": "markdown", "id": "1d266682", "metadata": {}, "source": [ "# Tidy3D Primer\n", "\n", "This notebook will walk through the basic working principles of the Tidy3D front end, including setting up and post processing simulation results.\n", "\n", "Note that this content serves as a reference for the details of operating the front end, but a lot of content is covered indirectly in the other example notebooks." ] }, { "cell_type": "code", "execution_count": 1, "id": "1382cd8c", "metadata": { "tags": [] }, "outputs": [], "source": [ "# First, let's import the main packages we'll need\n", "import numpy as np\n", "import matplotlib.pylab as plt\n", "import tidy3d as td\n" ] }, { "cell_type": "markdown", "id": "acd56cab", "metadata": {}, "source": [ "## Basics\n", "\n", "A Tidy3D simulation is essentially a python class that combines many Tidy3D \"components\", which store the specification for how we will run the simulation on our servers.\n", "\n", "Here we will discuss some of the basics that apply to all of these components.\n", "\n", "Topics covered will include:\n", "\n", "- Defining Tidy3D components.\n", "\n", "- Saving and loading from file.\n", "\n", "- Getting help / debugging.\n", "\n", "- logging.\n", "\n", "### Background\n", "\n", "All Tidy3d components are defined using the [pydantic](https://pydantic-docs.helpmanual.io) package. This means that each tidy3d object corresponds to a data structure that has rigidly defined allowable types and values, which get validated automatically whenever you initialize an object.\n", "\n", "This has several advantages, including.\n", "\n", "- Catching bugs in the tidy3d components as early as possible.\n", "\n", "- Automatically generated schema for tidy3d simulation specifications.\n", "\n", "- Simple and reliable IO, including exporting to various formats such as dictionaries or json.\n", "\n", "### Defining Tidy3d Components\n", "\n", "It also requires a bit more work on the user side to define these components, for example\n", "\n", "- All tidy3d components must use keyword arguments in their definitions, eg. `Medium(2.0)` becomes `Medium(permittivity=2.0)` to be explicit.\n", "\n", "- Components are immutable to avoid complications from not validating changes on components. This means modifying a component requires calling `new_obj = old_obj.updated_copy(val=new_val, ...)`.\n", "\n", "However, these decisions were made to make the overall use of Tidy3D more explicit and ensure that components are safely validated at all times, which pays off in the long run.\n", "\n", "Here's one example of what would happen if a user tried to pass fields (in this case, the relative permittivity of a medium) without using keyword arguments), followed by the correct way. We see that the positional argument construction fails. This is good practice in general to avoid bugs, but pydantic and Tidy3D require it." ] }, { "cell_type": "code", "execution_count": 2, "id": "19eab659", "metadata": {}, "outputs": [], "source": [ "# wrong way\n", "try:\n", " td.Medium(2.0)\n", "except Exception as e:\n", " td.log.info(e)\n", "\n", "# correct way\n", "m = td.Medium(permittivity=2.0)\n" ] }, { "cell_type": "markdown", "id": "8ee136f4", "metadata": {}, "source": [ "### Saving and Loading Tidy3d Components\n", "\n", "All tidy3d components can be saved to file as json or yaml format using the `instance.to_file(path)` and `class.from_file(path)` methods.\n", "\n", "For example, let's save and load a [td.Box](../_autosummary/tidy3d.Box.html) instance." ] }, { "cell_type": "code", "execution_count": 3, "id": "20e27567", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "type='Box' center=(1.0, 2.0, 3.0) size=(2.0, 2.0, 3.0)\n", "type='Box' center=(1.0, 2.0, 3.0) size=(2.0, 2.0, 3.0)\n", "True\n" ] } ], "source": [ "my_box = td.Box(center=(1, 2, 3), size=(2, 2, 3))\n", "\n", "my_box.to_file(\"data/box.json\")\n", "\n", "# note, `from_file` is a @classmethod so it can be called from `td.Box` or `my_box`.\n", "your_box = td.Box.from_file(\"data/box.json\")\n", "\n", "print(my_box)\n", "print(your_box)\n", "print(my_box == your_box)\n" ] }, { "cell_type": "markdown", "id": "bcb67b0f-970d-44d9-82d3-2060ae4e9ec3", "metadata": {}, "source": [ "Similarly, the component can be converted to a `dict` or `str` in json format. Many other options exist and the [pydantic documentation](https://docs.pydantic.dev/usage/exporting_models/) is a good place to see what else is supported." ] }, { "cell_type": "code", "execution_count": 4, "id": "5c05d911-dfd0-4d5f-ba60-54eb59d2a041", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\"type\": \"Box\", \"center\": [1.0, 2.0, 3.0], \"size\": [2.0, 2.0, 3.0]}\n", "{'type': 'Box', 'center': (1.0, 2.0, 3.0), 'size': (2.0, 2.0, 3.0)}\n" ] } ], "source": [ "print(my_box.json())\n", "print(my_box.dict())\n" ] }, { "cell_type": "markdown", "id": "1f1b74db", "metadata": {}, "source": [ "### Getting Help\n", "\n", "Sometimes you might want to get some information about a component without needing to look at the documentation. For this, each tidy3d component has a `.help()` method that will print out information about the stored data inside of the component.\n", "\n", "Here's an example." ] }, { "cell_type": "code", "execution_count": 5, "id": "b34de32a", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
╭─────────────────────── <class 'tidy3d.components.monitor.FieldMonitor'> ───────────────────────╮\n", "│ :class:`Monitor` that records electromagnetic fields in the frequency domain. │\n", "│ │\n", "│ ╭────────────────────────────────────────────────────────────────────────────────────────────╮ │\n", "│ │ FieldMonitor( │ │\n", "│ │ │ type='FieldMonitor', │ │\n", "│ │ │ center=(0.0, 0.0, 0.0), │ │\n", "│ │ │ size=(2.0, 2.0, 0.0), │ │\n", "│ │ │ name='monitor', │ │\n", "│ │ │ freqs=(200000000000000.0,), │ │\n", "│ │ │ apodization=ApodizationSpec( │ │\n", "│ │ │ │ start=None, │ │\n", "│ │ │ │ end=None, │ │\n", "│ │ │ │ width=None, │ │\n", "│ │ │ │ type='ApodizationSpec' │ │\n", "│ │ │ ), │ │\n", "│ │ │ fields=('Ex', 'Ey', 'Ez', 'Hx', 'Hy', 'Hz'), │ │\n", "│ │ │ interval_space=(1, 1, 1), │ │\n", "│ │ │ colocate=False │ │\n", "│ │ ) │ │\n", "│ ╰────────────────────────────────────────────────────────────────────────────────────────────╯ │\n", "│ │\n", "│ apodization = ApodizationSpec(start=None, end=None, width=None, type='ApodizationSpec') │\n", "│ bounding_box = Box(type='Box', center=(0.0, 0.0, 0.0), size=(2.0, 2.0, 0.0)) │\n", "│ bounds = ((-1.0, -1.0, 0.0), (1.0, 1.0, 0.0)) │\n", "│ center = (0.0, 0.0, 0.0) │\n", "│ colocate = False │\n", "│ fields = ('Ex', 'Ey', 'Ez', 'Hx', 'Hy', 'Hz') │\n", "│ freqs = (200000000000000.0,) │\n", "│ geometry = Box(type='Box', center=(0.0, 0.0, 0.0), size=(2.0, 2.0, 0.0)) │\n", "│ interval_space = (1, 1, 1) │\n", "│ name = 'monitor' │\n", "│ plot_params = PlotParams( │\n", "│ alpha=0.4, │\n", "│ edgecolor='orange', │\n", "│ facecolor='orange', │\n", "│ fill=True, │\n", "│ hatch=None, │\n", "│ linewidth=3.0, │\n", "│ type='PlotParams' │\n", "│ ) │\n", "│ size = (2.0, 2.0, 0.0) │\n", "│ type = 'FieldMonitor' │\n", "│ zero_dims = [2] │\n", "╰────────────────────────────────────────────────────────────────────────────────────────────────╯\n", "\n" ], "text/plain": [ "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'tidy3d.components.monitor.FieldMonitor'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[36m:class:`Monitor` that records electromagnetic fields in the frequency domain.\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m╭────────────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1;35mFieldMonitor\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'FieldMonitor'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mname\u001b[0m=\u001b[32m'monitor'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mfreqs\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m200000000000000.0\u001b[0m,\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mapodization\u001b[0m=\u001b[1;35mApodizationSpec\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mstart\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mend\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mwidth\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'ApodizationSpec'\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mfields\u001b[0m=\u001b[1m(\u001b[0m\u001b[32m'Ex'\u001b[0m, \u001b[32m'Ey'\u001b[0m, \u001b[32m'Ez'\u001b[0m, \u001b[32m'Hx'\u001b[0m, \u001b[32m'Hy'\u001b[0m, \u001b[32m'Hz'\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33minterval_space\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m, \u001b[1;36m1\u001b[0m, \u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mcolocate\u001b[0m=\u001b[3;91mFalse\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m╰────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mapodization\u001b[0m = \u001b[1;35mApodizationSpec\u001b[0m\u001b[1m(\u001b[0m\u001b[33mstart\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mend\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mwidth\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'ApodizationSpec'\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mbounding_box\u001b[0m = \u001b[1;35mBox\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Box'\u001b[0m, \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mbounds\u001b[0m = \u001b[1m(\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m-1.0\u001b[0m, \u001b[1;36m-1.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[1m(\u001b[0m\u001b[1;36m1.0\u001b[0m, \u001b[1;36m1.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mcenter\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mcolocate\u001b[0m = \u001b[3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mfields\u001b[0m = \u001b[1m(\u001b[0m\u001b[32m'Ex'\u001b[0m, \u001b[32m'Ey'\u001b[0m, \u001b[32m'Ez'\u001b[0m, \u001b[32m'Hx'\u001b[0m, \u001b[32m'Hy'\u001b[0m, \u001b[32m'Hz'\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mfreqs\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m200000000000000.0\u001b[0m,\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mgeometry\u001b[0m = \u001b[1;35mBox\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Box'\u001b[0m, \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33minterval_space\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m, \u001b[1;36m1\u001b[0m, \u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mname\u001b[0m = \u001b[32m'monitor'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mplot_params\u001b[0m = \u001b[1;35mPlotParams\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33malpha\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.4\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33medgecolor\u001b[0m=\u001b[32m'orange'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfacecolor\u001b[0m=\u001b[32m'orange'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfill\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mhatch\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mlinewidth\u001b[0m=\u001b[1;36m3\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'PlotParams'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33msize\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mtype\u001b[0m = \u001b[32m'FieldMonitor'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mzero_dims\u001b[0m = \u001b[1m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m╰────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "monitor = td.FieldMonitor(size=(2, 2, 0), freqs=[200e12], name=\"monitor\")\n", "\n", "monitor.help()\n" ] }, { "cell_type": "markdown", "id": "096ee0ec-5a39-4143-9c29-a5bb086efbe8", "metadata": {}, "source": [ "Alternatively, one can use the standard `help(cls)` syntax to get a look at the docstring of a component." ] }, { "cell_type": "code", "execution_count": 6, "id": "c21b0749-9ab2-489e-b4a4-d977f3ff9dd1", "metadata": {}, "outputs": [], "source": [ "# help(td.FieldMonitor) # commented out for brevity\n" ] }, { "cell_type": "markdown", "id": "fb0ac2bf-984a-472f-8a01-b886ffe9a18e", "metadata": {}, "source": [ "### Logging\n", "\n", "Tidy3D logs information based on the following levels ranked from least to most critical.\n", "```\n", "\"DEBUG\"\n", "\"INFO\"\n", "\"WARNING\"\n", "\"ERROR\"\n", "\"CRITICAL\"\n", "```\n", "The \"logging level\" controls what types of messages get shown. The default logging level is `\"WARNING\"`, which means logging messages of \"warning\" or more critical (\"error\", \"critical\") will be shown, whereas \"info\" and \"debug\" messages will not. The \"info\" and \"debug\" messages are sometimes useful for the user, but are mainly for debugging purposes.\n", "\n", "The user can change this logging level through modifying the `tidy3d.config.logging_level` value, for example\n", "```\n", "tidy3d.config.logging_level = \"INFO\"\n", "```\n", "will make it so that \"info\" messages are shown in addition to the \"warning\", \"error\", and \"critical\" messages." ] }, { "cell_type": "markdown", "id": "d91a3920", "metadata": {}, "source": [ "## Core Components\n", "\n", "Here we will discuss the core components of the package (sources, monitors, etc) and how they are defined.\n", "\n", "Topics covered will include:\n", "\n", "- Mediums.\n", "\n", "- Geometries.\n", "\n", "- Structures.\n", "\n", "- Sources.\n", "\n", "- Monitors.\n", "\n", "- Modes.\n", "\n", "- PML / Absorbing boundaries.\n", "\n", "- Simulations." ] }, { "cell_type": "markdown", "id": "c09c862b", "metadata": {}, "source": [ "### Mediums\n", "\n", "Mediums define the optical properties of the materials within the simulation.\n", "\n", "#### PEC\n", "The simplest medium is `td.PEC`, which just signifies a perfect electrical conductor (no E field allowed within)." ] }, { "cell_type": "code", "execution_count": 7, "id": "a197e0c0", "metadata": { "tags": [] }, "outputs": [], "source": [ "pec_medium = td.PEC\n" ] }, { "cell_type": "markdown", "id": "345d55ad", "metadata": {}, "source": [ "#### Non-dispersive mediums\n", "Non-dispersive mediums are defined using the [Medium](../_autosummary/tidy3d.Medium.html) object and can be specified by either `permittivity` and `conductivity` (optional) values, or from `n`, `k` refractive index values." ] }, { "cell_type": "code", "execution_count": 8, "id": "6bde0e4e", "metadata": { "tags": [] }, "outputs": [], "source": [ "lossless_dielectric = td.Medium(permittivity=4.0)\n", "lossy_dielectric = td.Medium(permittivity=4.0, conductivity=1.0)\n", "lossy_dielectric_from_nk = td.Medium.from_nk(n=2.0, k=0.1, freq=150e12)\n" ] }, { "cell_type": "markdown", "id": "598daf38", "metadata": {}, "source": [ "#### Anisotropic mediums\n", "\n", "Tidy3d supports fully anisotropic mediums, but in this example, we will show how to model diagonally anisotropic mediums. See [this tutorial](../notebooks/FullyAnisotropic.html) for the complete guide.\n", "\n", "Diagonally anisotropic mediums can be simply defined by specifying three [Medium](../_autosummary/tidy3d.Medium.html) objects for the xx, yy, zz components of the permittivity / conductivity tensor.\n" ] }, { "cell_type": "code", "execution_count": 9, "id": "e7a92005", "metadata": { "tags": [] }, "outputs": [], "source": [ "anisotropic_medium = td.AnisotropicMedium(\n", " xx=lossless_dielectric, yy=lossy_dielectric, zz=lossy_dielectric_from_nk\n", ")\n" ] }, { "cell_type": "markdown", "id": "84b4fca5", "metadata": {}, "source": [ "#### Dispersive mediums\n", "\n", "Dispersive mediums can be defined in three ways:\n", "\n", "- Imported from our [material_library](../material_library.html).\n", "\n", "- Defined directly by specifying the parameters in the various supplied dispersive models.\n", "\n", "- Fitted to optical n-k data using the dispersion fitting tool plugin (more info later)." ] }, { "cell_type": "code", "execution_count": 10, "id": "43618ec5", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "variants for silver include: ['Rakic1998BB', 'JohnsonChristy1972', 'RakicLorentzDrude1998', 'Yang2015Drude']\n" ] } ], "source": [ "# material library\n", "silver = td.material_library[\"Ag\"]\n", "silver_variants = silver.variants\n", "print(\"variants for silver include: \", list(silver_variants.keys()))\n", "silver = silver_variants[\"JohnsonChristy1972\"]\n", "\n", "# models\n", "lorentz_model = td.Lorentz(eps_inf=2.0, coeffs=[(1, 2, 3), (4, 5, 6)])\n", "sellmeier_model = td.Sellmeier(coeffs=[(1, 2), (3, 4)])\n" ] }, { "cell_type": "markdown", "id": "1c95eada", "metadata": {}, "source": [ "### Medium Methods\n", "\n", "The complex-valued permittivity of a medium at a given frequency can be sampled using the `.eps_model(freq)` method.\n", "\n", "And the n, k values can be plotted over a frequency range using the `.plot(freqs)` method." ] }, { "cell_type": "code", "execution_count": 11, "id": "789f0ac9", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "complex relative permittivity at freqs_hz = \n", "\t [4.+359.50207169j 4.+358.42679132j 4.+357.35792415j ... 4. +90.01053372j\n", " 4. +89.94297515j 4. +89.87551792j]\n", "\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABQHElEQVR4nO3dd3hUVcLH8d/MpANJgIQUCBC6IG1BYrCAGgnIIliRVSkCvu6CirHiSlF5N+IKosKSRUFw7b4qdhCpIm0BUbHQjNQkgJIMCZA29/1jkkmGTCADadx8P89znpl77rnnnnNx2R+3jcUwDEMAAAC44FlregAAAACoHAQ7AAAAkyDYAQAAmATBDgAAwCQIdgAAACZBsAMAADAJgh0AAIBJEOwAAABMgmAHAABgEgQ7ADXOYrFo6tSpruWFCxfKYrHot99+q7ExVVTLli01cuRI1/KqVatksVi0atWqGhtTZZg6daosFktNDwOAlwh2AAAAJkGwA1Dr3HnnnTp58qRatGhR00Px2pVXXqmTJ0/qyiuvrOmhnJcnnnhCJ0+erOlhAPCST00PAABOZ7PZZLPZanoY58RqtSogIKCmh+HRqVOn5OfnJ6v17P+m9/HxkY8P/xcBXGg4YwfUccX3Uu3cuVN33HGHQkJCFB4erkmTJskwDO3fv1+DBw9WcHCwIiMjNWPGjDJ95ObmasqUKWrTpo38/f0VExOjRx55RLm5uWXaPfDAAwoPD1eDBg10/fXX68CBA2X683SP3en34RU7/R634m3Xrl2r++67T+Hh4QoNDdX//M//KC8vT5mZmRo+fLgaNmyohg0b6pFHHpFhGGc9ToZhaNq0aWrWrJmCgoJ01VVX6ccffyzTztM9drt27dJNN92kyMhIBQQEqFmzZrrtttuUlZXlNr/x48frjTfeUPv27RUQEKAePXpozZo1ZfZx8OBB3XXXXYqIiJC/v786deqkBQsWeBzH22+/rSeeeEJNmzZVUFCQ7Ha78vPz9eSTT6pt27YKCAhQ48aNdfnll2vZsmWu7T3dY1dQUKCnn35arVu3lr+/v1q2bKnHH3+8zJ9zy5Yt9ec//1lr165Vr169FBAQoFatWum1114763EGcH745xgASdLQoUN10UUX6ZlnntFnn32madOmqVGjRvr3v/+tq6++WtOnT9cbb7yhhx56SJdcconrUqPD4dD111+vtWvX6u6779ZFF12kH374Qc8//7x27typxYsXu/YxZswYvf766/rLX/6i3r17a8WKFRo4cGCVzOfee+9VZGSknnzySW3YsEHz5s1TaGio1q1bp+bNm+sf//iHPv/8c/3zn//UxRdfrOHDh5+xv8mTJ2vatGm67rrrdN1112nr1q3q16+f8vLyzrhdXl6eEhMTlZub6xrTwYMH9emnnyozM1MhISGutqtXr9Y777yj++67T/7+/vrXv/6l/v37a9OmTbr44oslSRkZGbr00ktdQTA8PFxffPGFRo8eLbvdrgkTJrjt/+mnn5afn58eeugh5ebmys/PT1OnTlVycrLGjBmjXr16yW63a/Pmzdq6dauuvfbacucyZswYLVq0SDfffLMefPBBbdy4UcnJyfr555/14YcfurXdvXu3br75Zo0ePVojRozQggULNHLkSPXo0UOdOnU64zEDcB4MAHXalClTDEnG3Xff7aorKCgwmjVrZlgsFuOZZ55x1R87dswIDAw0RowY4ar7z3/+Y1itVuPrr7926zclJcWQZHzzzTeGYRjGtm3bDEnG3/72N7d2f/nLXwxJxpQpU1x1r776qiHJSE1NddWd3qZYixYt3MZTvG1iYqLhcDhc9fHx8YbFYjHuueeeMvPs06fPmQ6RcfjwYcPPz88YOHCgW5+PP/64Iclt/ytXrjQkGStXrjQMwzC+/fZbQ5Lx3nvvnXEfkgxJxubNm111e/fuNQICAowbbrjBVTd69GgjKirKOHr0qNv2t912mxESEmKcOHHCbRytWrVy1RXr2rWrMXDgwDOOp/i/i2LFf35jxoxxa/fQQw8ZkowVK1a46lq0aGFIMtasWeOqO3z4sOHv7288+OCDZ9wvgPPDpVgAkpxnY4rZbDb17NlThmFo9OjRrvrQ0FC1b99ev/76q6vuvffe00UXXaQOHTro6NGjrnL11VdLklauXClJ+vzzzyVJ9913n9t+Tz/DVFlGjx7tdikxLi6uzHyK51l6Pp589dVXysvL07333uvWZ0XGXnxGbunSpTpx4sQZ28bHx6tHjx6u5ebNm2vw4MFaunSpCgsLZRiG3n//fQ0aNEiGYbgd78TERGVlZWnr1q1ufY4YMUKBgYFudaGhofrxxx+1a9eus46/WPGfX1JSklv9gw8+KEn67LPP3Oo7duyoK664wrUc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yXryySerfLwAAAAXEq8uxYaFhclmsykjI8OtPiMjQ5GRkWfcNicnR2+//bZGjx591v20atVKYWFh2r17t8f1EydOVFZWlqvs37+/4pMAAAAwKa+CnZ+fn3r06KHly5e76hwOh5YvX674+Pgzbvvee+8pNzdXd9xxx1n3c+DAAf3++++KioryuN7f31/BwcFuBQAAoK7z+qnYpKQkvfzyy1q0aJF+/vln/fWvf1VOTo5GjRolSRo+fLgmTpxYZrv58+dryJAhaty4sVt9dna2Hn74YW3YsEG//fabli9frsGDB6tNmzZKTEw8x2kBAADUPV7fYzd06FAdOXJEkydPVnp6urp166YlS5a4HqjYt2+frFb3vLhjxw6tXbtWX375ZZn+bDabvv/+ey1atEiZmZmKjo5Wv3799PTTT/MuOwAAAC9YDMMwanoQ58tutyskJERZWVlclgUAAKbiTc7ht2IBAABMgmAHAABgEgQ7AAAAkyDYAQAAmATBDgAAwCQIdgAAACZBsAMAADAJgh0AAIBJEOwAAABMgmAHAABgEgQ7AAAAkyDYAQAAmATBDgAAwCQIdgAAACZBsAMAADAJgh0AAIBJEOwAAABMgmAHAABgEgQ7AAAAkyDYAQAAmATBDgAAwCQIdgAAACZBsAMAADAJgh0AAIBJEOwAAABMgmAHAABgEgQ7AAAAkyDYAQAAmATBDgAAwCQIdgAAACZBsAMAADAJgh0AAIBJEOwAAABMgmAHAABgEucU7ObMmaOWLVsqICBAcXFx2rRpU7ltFy5cKIvF4lYCAgLc2hiGocmTJysqKkqBgYFKSEjQrl27zmVoAAAAdZbXwe6dd95RUlKSpkyZoq1bt6pr165KTEzU4cOHy90mODhYaWlprrJ371639c8++6xefPFFpaSkaOPGjapXr54SExN16tQp72cEAABQR3kd7GbOnKmxY8dq1KhR6tixo1JSUhQUFKQFCxaUu43FYlFkZKSrREREuNYZhqFZs2bpiSee0ODBg9WlSxe99tprOnTokBYvXnxOkwIAAKiLvAp2eXl52rJlixISEko6sFqVkJCg9evXl7tddna2WrRooZiYGA0ePFg//vija11qaqrS09Pd+gwJCVFcXNwZ+wQAAIA7r4Ld0aNHVVhY6HbGTZIiIiKUnp7ucZv27dtrwYIF+uijj/T666/L4XCo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0ksvudqY/Zjk5OSoa9eumjNnjsf1FZn/7bffrh9//FHLli3Tp59+qjVr1ujuu++urilUujMdkxMnTmjr1q2aNGmStm7dqg8++EA7duzQ9ddf79auLh2T0j788ENt2LBB0dHRZdbVtWOyZ88eXX755erQoYNWrVql77//XpMmTVJAQICrzQMPPKBPPvlE7733nlavXq1Dhw7pxhtvrK4pVLqzHZOkpCQtWbJEr7/+un7++WdNmDBB48eP18cff+xqY7Zjsnr1ao0bN04bNmzQsmXLlJ+fr379+iknJ8fV5mxzLiws1MCBA5WXl6d169Zp0aJFWrhwoSZPnlz1E6jwD7Ki2j366KPG5ZdfXu56h8NhREZGGv/85z9ddZmZmYa/v7/x1ltvVccQq93AgQONu+66y63uxhtvNG6//XbDMOreMZFkfPjhh67lisz/p59+MiQZ//3vf11tvvjiC8NisRgHDx6strFXldOPiSebNm0yJBl79+41DKPuHpMDBw4YTZs2NbZv3260aNHCeP75513r6uIxGTp0qHHHHXeUu01mZqbh6+trvPfee666n3/+2ZBkrF+/vqqGWm08HZNOnToZTz31lFvdn/70J+Pvf/+7YRjmPyaGYRiHDx82JBmrV682DKNic/78888Nq9VqpKenu9rMnTvXCA4ONnJzc6t0vJyxq8U+/vhj9ezZU7fccouaNGmi7t276+WXX3atT01NVXp6uhISElx1ISEhiouL0/r162tiyFWud+/eWr58uXbu3ClJ+u6777R27VoNGDBAUt08JqVVZP7r169XaGioevbs6WqTkJAgq9WqjRs3VvuYa0JWVpYsFotCQ0Ml1c1j4nA4dOedd+rhhx9Wp06dyqyva8fE4XDos88+U7t27ZSYmKgmTZooLi7O7dLkli1blJ+f7/a/rw4dOqh58+am/fuld+/e+vjjj3Xw4EEZhqGVK1dq586d6tevn6S6cUyysrIkSY0aNZJUsTmvX79enTt3VkREhKtNYmKi7Ha7fvzxxyodL8GuFvv11181d+5ctW3bVkuXLtVf//pX3XfffVq0aJEkKT09XZLc/sMpXi5eZzaPPfaYbrvtNnXo0EG+vr7q3r27JkyYoNtvv11S3TwmpVVk/unp6WrSpInbeh8fHzVq1KhOHKNTp07p0Ucf1bBhw1y/7VgXj8n06dPl4+Oj++67z+P6unZMDh8+rOzsbD3zzDPq37+/vvzyS91www268cYbtXr1aknOY+Ln5+f6B0ExM//98tJLL6ljx45q1qyZ/Pz81L9/f82ZM0dXXnmlJPMfE4fDoQkTJuiyyy7TxRdfLKlic05PT/f493DxuqrkU6W947w4HA717NlT//jHPyRJ3bt31/bt25WSkqIRI0bU8Ohqxrvvvqs33nhDb775pjp16qRt27ZpwoQJio6OrrPHBBWXn5+vW2+9VYZhaO7cuTU9nBqzZcsWvfDCC9q6dassFktND6dWcDgckqTBgwfrgQcekCR169ZN69atU0pKivr06VOTw6sxL730kjZs2KCPP/5YLVq00Jo1azRu3DhFR0e7nbEyq3Hjxmn79u1au3ZtTQ+lwjhjV4tFRUWpY8eObnUXXXSR6wmtyMhISSrzJE5GRoZrndk8/PDDrrN2nTt31p133qkHHnhAycnJkurmMSmtIvOPjIzU4cOH3dYXFBTojz/+MPUxKg51e/fu1bJly1xn66S6d0y+/vprHT58WM2bN5ePj498fHy0d+9ePfjgg2rZsqWkundMwsLC5OPjc9a/c/Py8pSZmenWxqx/v5w8eVKPP/64Zs6cqUGDBqlLly4aP368hg4dqueee06SuY/J+PHj9emnn2rlypVq1qyZq74ic46MjPT493DxuqpEsKvFLrvssjKPWO/cuVMtWrSQJMXGxioyMlLLly93rbfb7dq4caPi4+OrdazV5cSJE7Ja3f+ztdlsrn9t18VjUlpF5h8fH6/MzExt2bLF1WbFihVyOByKi4ur9jFXh+JQt2vXLn311Vdq3Lix2/q6dkzuvPNOff/999q2bZurREdH6+GHH9bSpUsl1b1j4ufnp0suueSMf+f26NFDvr6+bv/72rFjh/bt22fKv1/y8/OVn59/xr9zzXhMDMPQ+PHj9eGHH2rFihWKjY11W1+ROcfHx+uHH35w+8dR8T8oT//HQ1VMALXUpk2bDB8fH+N///d/jV27dhlvvPGGERQUZLz++uuuNs8884wRGhpqfPTRR8b3339vDB482IiNjTVOnjxZgyOvOiNGjDCaNm1qfPrpp0ZqaqrxwQcfGGFhYcYjjzziamP2Y3L8+HHj22+/Nb799ltDkjFz5kzj22+/dT3hWZH59+/f3+jevbuxceNGY+3atUbbtm2NYcOG1dSUztuZjkleXp5x/fXXG82aNTO2bdtmpKWluUrpp9Pq0jHx5PSnYg2j7h2TDz74wPD19TXmzZtn7Nq1y3jppZcMm81mfP31164+7rnnHqN58+bGihUrjM2bNxvx8fFGfHx8TU3pvJ3tmPTp08fo1KmTsXLlSuPXX381Xn31VSMgIMD417/+5erDbMfkr3/9qxESEmKsWrXK7e+LEydOuNqcbc4FBQXGxRdfbPTr18/Ytm2bsWTJEiM8PNyYOHFilY+fYFfLffLJJ8bFF19s+Pv7Gx06dDDmzZvntt7hcBiTJk0yIiIiDH9/f+Oaa64xduzYUUOjrXp2u924//77jebNmxsBAQFGq1atjL///e9u/wdt9mOycuVKQ1KZMmLECMMwKjb/33//3Rg2bJhRv359Izg42Bg1apRx/PjxGphN5TjTMUlNTfW4TpKxcuVKVx916Zh44inY1cVjMn/+fKNNmzZGQECA0bVrV2Px4sVufZw8edL429/+ZjRs2NAICgoybrjhBiMtLa2aZ1J5znZM0tLSjJEjRxrR0dFGQECA0b59e2PGjBmGw+Fw9WG2Y1Le3xevvvqqq01F5vzbb78ZAwYMMAIDA42wsDDjwQcfNPLz86t8/JaiSQAAAOACxz12AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AKqUYRi6++671ahRI1ksFm3btq2mh1Rr5eXlqU2bNlq3bl217/vSSy/V+++/X+37BVC5CHYAqtSSJUu0cOFCffrpp0pLS9PFF19c00OqtVJSUhQbG6vevXtr4cKFslgsZyy//fabpk6dqm7dupXp67fffvMqSD/xxBN67LHHXD/uDuDCRLADUKX27NmjqKgo9e7dW5GRkfLx8SnTJi8vrwZGVrsYhqHZs2dr9OjRkqShQ4cqLS3NVeLj4zV27Fi3upiYmErb/4ABA3T8+HF98cUXldYngOpHsANQZUaOHKl7771X+/btk8ViUcuWLSVJffv21fjx4zVhwgSFhYUpMTFRkrR9+3YNGDBA9evXV0REhO68804dPXrU1V9OTo6GDx+u+vXrKyoqSjNmzFDfvn01YcIEVxuLxaLFixe7jSM0NFQLFy50Le/fv1+33nqrQkND1ahRIw0ePFi//fab27iHDBmi5557TlFRUWrcuLHGjRun/Px8V5vc3Fw9+uijiomJkb+/v9q0aaP58+fLMAy1adNGzz33nNsYtm3bJovFot27d3s8Vlu2bNGePXs0cOBASVJgYKAiIyNdxc/PT0FBQW51Nputon8UGjlypMezfqtWrZIk2Ww2XXfddXr77bcr3CeA2odgB6DKvPDCC3rqqafUrFkzpaWl6b///a9r3aJFi+Tn56dvvvlGKSkpyszM1NVXX63u3btr8+bNWrJkiTIyMnTrrbe6tnn44Ye1evVqffTRR/ryyy+1atUqbd261asx5efnKzExUQ0aNNDXX3+tb775RvXr11f//v3dzhyuXLlSe/bs0cqVK7Vo0SItXLjQLRwOHz5cb731ll588UX9/PPP+ve//6369evLYrHorrvu0quvvuq231dffVVXXnml2rRp43FcX3/9tdq1a6cGDRp4NZ+KeuGFF9zO9t1///1q0qSJOnTo4GrTq1cvff3111WyfwDVo+w1EQCoJCEhIWrQoIFsNpsiIyPd1rVt21bPPvusa3natGnq3r27/vGPf7jqFixYoJiYGO3cuVPR0dGaP3++Xn/9dV1zzTWSnOGwWbNmXo3pnXfekcPh0CuvvCKLxSLJGbpCQ0O1atUq9evXT5LUsGFDzZ49WzabTR06dNDAgQO1fPlyjR07Vjt37tS7776rZcuWKSEhQZLUqlUr1z5GjhypyZMna9OmTerVq5fy8/P15ptvljmLV9revXsVHR3t1VyK/fDDD6pfv75bnWEYbsshISEKCQmRJH3wwQf697//ra+++srtzyU6Olr79++Xw+GQ1cq/+4ELEcEOQI3o0aOH2/J3332nlStXlgkokvM+vZMnTyovL09xcXGu+kaNGql9+/Ze7fe7777T7t27y5wZO3XqlPbs2eNa7tSpk9ulzqioKP3www+SnJdVbTab+vTp43Ef0dHRGjhwoBYsWKBevXrpk08+UW5urm655ZZyx3Xy5EkFBAR4NZdi7du318cff+xWd/DgQfXt27dM22+//VZ33nmnZs+ercsuu8xtXWBgoBwOh3JzcxUYGHhOYwFQswh2AGpEvXr13Jazs7M1aNAgTZ8+vUzbqKiocu9NO53FYilztqr0vXHZ2dnq0aOH3njjjTLbhoeHu777+vqW6bf4idGKhJ4xY8bozjvv1PPPP69XX31VQ4cOVVBQULntw8LCXMHRW35+fmUu8Xp6SCU9PV3XX3+9xowZ43pIo7Q//vhD9erVI9QBFzCCHYBa4U9/+pPef/99tWzZ0mMoad26tXx9fbVx40Y1b95cknTs2DHt3LnT7cxZeHi40tLSXMu7du3SiRMn3PbzzjvvqEmTJgoODj6nsXbu3FkOh0OrV692XYo93XXXXad69epp7ty5WrJkidasWXPGPrt37665c+fKMAzXJeLKdOrUKQ0ePFgdOnTQzJkzPbbZvn27unfvXun7BlB9uIkCQK0wbtw4/fHHHxo2bJj++9//as+ePVq6dKlGjRqlwsJC1a9fX6NHj9bDDz+sFStWaPv27Ro5cmSZe8GuvvpqzZ49W99++602b96se+65x+3s2+23366wsDANHjxYX3/9tVJTU7Vq1Srdd999OnDgQIXG2rJlS40YMUJ33XWXFi9e7Orj3XffdbWx2WwaOXKkJk6cqLZt2yo+Pv6MfV511VXKzs7Wjz/+6MVRq7j/+Z//0f79+/Xiiy/qyJEjSk9PV3p6utsDI19//bXrHkMAFyaCHYBaITo6Wt98840KCwvVr18/de7cWRMmTFBoaKgrvP3zn//UFVdcoUGDBikhIUGXX355mXv1ZsyYoZiYGF1xxRX6y1/+ooceesjtEmhQUJDWrFmj5s2b68Ybb9RFF12k0aNH69SpU16dwZs7d65uvvlm/e1vf1OHDh00duxY5eTkuLUZPXq08vLyNGrUqLP217hxY91www0eLxFXhtWrVystLU0dO3ZUVFSUqxT/ysXBgwe1bt26Co0VQO1lMU6/GQUALiB9+/ZVt27dNGvWrJoeShlff/21rrnmGu3fv18RERFnbf/999/r2muv1Z49ezw+RFKVHn30UR07dkzz5s2r1v0CqFycsQOASpabm6sDBw5o6tSpuuWWWyoU6iSpS5cumj59ulJTU6t4hGU1adJETz/9dLXvF0DlItgBQCV766231KJFC2VmZrq9q68iRo4cqc6dO1fRyMr34IMPVjiAAqi9uBQLAABgEpyxAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMIn/B4TYB/T5pxoVAAAAAElFTkSuQmCC\n", "text/plain": [ "
╭───────────────────── <class 'tidy3d.components.geometry.Box'> ─────────────────────╮\n", "│ Rectangular prism. │\n", "│ Also base class for :class:`Simulation`, :class:`Monitor`, and :class:`Source`. │\n", "│ │\n", "│ ╭────────────────────────────────────────────────────────────────────────────────╮ │\n", "│ │ Box(type='Box', center=(0.0, 0.0, 0.0), size=(2.0, 2.0, 2.0)) │ │\n", "│ ╰────────────────────────────────────────────────────────────────────────────────╯ │\n", "│ │\n", "│ bounding_box = Box(type='Box', center=(0.0, 0.0, 0.0), size=(2.0, 2.0, 2.0)) │\n", "│ bounds = ((-1.0, -1.0, -1.0), (1.0, 1.0, 1.0)) │\n", "│ center = (0.0, 0.0, 0.0) │\n", "│ geometry = Box(type='Box', center=(0.0, 0.0, 0.0), size=(2.0, 2.0, 2.0)) │\n", "│ plot_params = PlotParams( │\n", "│ alpha=1.0, │\n", "│ edgecolor=None, │\n", "│ facecolor=None, │\n", "│ fill=True, │\n", "│ hatch=None, │\n", "│ linewidth=1.0, │\n", "│ type='PlotParams' │\n", "│ ) │\n", "│ size = (2.0, 2.0, 2.0) │\n", "│ type = 'Box' │\n", "│ zero_dims = [] │\n", "╰────────────────────────────────────────────────────────────────────────────────────╯\n", "\n" ], "text/plain": [ "\u001b[34m╭─\u001b[0m\u001b[34m──────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'tidy3d.components.geometry.Box'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[36mRectangular prism.\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[36m Also base class for :class:`Simulation`, :class:`Monitor`, and :class:`Source`.\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m╭────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1;35mBox\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Box'\u001b[0m, \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m╰────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mbounding_box\u001b[0m = \u001b[1;35mBox\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Box'\u001b[0m, \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mbounds\u001b[0m = \u001b[1m(\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m-1.0\u001b[0m, \u001b[1;36m-1.0\u001b[0m, \u001b[1;36m-1.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[1m(\u001b[0m\u001b[1;36m1.0\u001b[0m, \u001b[1;36m1.0\u001b[0m, \u001b[1;36m1.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mcenter\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mgeometry\u001b[0m = \u001b[1;35mBox\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Box'\u001b[0m, \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mplot_params\u001b[0m = \u001b[1;35mPlotParams\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33malpha\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33medgecolor\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfacecolor\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfill\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mhatch\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mlinewidth\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'PlotParams'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33msize\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mtype\u001b[0m = \u001b[32m'Box'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mzero_dims\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m╰────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "None\n", "False\n", "[False False True False False]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
[16:32:42] Created task 'web_demo' with task_id 'fdve-123a11ea-7724-4a65-b1f8-d0e8ba35f5eev1'. webapi.py:139\n", "\n" ], "text/plain": [ "\u001b[2;36m[16:32:42]\u001b[0m\u001b[2;36m \u001b[0mCreated task \u001b[32m'web_demo'\u001b[0m with task_id \u001b[32m'fdve-123a11ea-7724-4a65-b1f8-d0e8ba35f5eev1'\u001b[0m. \u001b]8;id=536477;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=483097;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#139\u001b\\\u001b[2m139\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
View task using web UI at webapi.py:141\n", " 'https://tidy3d.simulation.cloud/workbench?taskId=fdve-123a11ea-7724-4a65-b1f8-d0e8ba35f5e \n", " ev1'. \n", "\n" ], "text/plain": [ "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mView task using web UI at \u001b]8;id=398067;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=629657;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#141\u001b\\\u001b[2m141\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m\u001b]8;id=531193;https://tidy3d.simulation.cloud/workbench?taskId=fdve-123a11ea-7724-4a65-b1f8-d0e8ba35f5eev1\u001b\\\u001b[32m'https://tidy3d.simulation.cloud/workbench?\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=618622;https://tidy3d.simulation.cloud/workbench?taskId=fdve-123a11ea-7724-4a65-b1f8-d0e8ba35f5eev1\u001b\\\u001b[32mtaskId\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=531193;https://tidy3d.simulation.cloud/workbench?taskId=fdve-123a11ea-7724-4a65-b1f8-d0e8ba35f5eev1\u001b\\\u001b[32m=\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=211682;https://tidy3d.simulation.cloud/workbench?taskId=fdve-123a11ea-7724-4a65-b1f8-d0e8ba35f5eev1\u001b\\\u001b[32mfdve\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=531193;https://tidy3d.simulation.cloud/workbench?taskId=fdve-123a11ea-7724-4a65-b1f8-d0e8ba35f5eev1\u001b\\\u001b[32m-123a11ea-7724-4a65-b1f8-d0e8ba35f5e\u001b[0m\u001b]8;;\u001b\\ \u001b[2m \u001b[0m\n", "\u001b[2;36m \u001b[0m\u001b]8;id=531193;https://tidy3d.simulation.cloud/workbench?taskId=fdve-123a11ea-7724-4a65-b1f8-d0e8ba35f5eev1\u001b\\\u001b[32mev1'\u001b[0m\u001b]8;;\u001b\\. \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fe6ea48b768842e795cf05e527fdd752", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n" ], "text/plain": [ "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:32:45] status = queued webapi.py:271\n", "\n" ], "text/plain": [ "\u001b[2;36m[16:32:45]\u001b[0m\u001b[2;36m \u001b[0mstatus = queued \u001b]8;id=353496;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=457003;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#271\u001b\\\u001b[2m271\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:32:47] status = preprocess webapi.py:265\n", "\n" ], "text/plain": [ "\u001b[2;36m[16:32:47]\u001b[0m\u001b[2;36m \u001b[0mstatus = preprocess \u001b]8;id=167987;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=112256;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#265\u001b\\\u001b[2m265\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:32:54] Maximum FlexCredit cost: 0.025. Use 'web.real_cost(task_id)' to get the billed FlexCredit webapi.py:288\n", " cost after a simulation run. \n", "\n" ], "text/plain": [ "\u001b[2;36m[16:32:54]\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m0.025\u001b[0m. Use \u001b[32m'web.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32mtask_id\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed FlexCredit \u001b]8;id=114350;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=488402;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#288\u001b\\\u001b[2m288\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0mcost after a simulation run. \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
starting up solver webapi.py:292\n", "\n" ], "text/plain": [ "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mstarting up solver \u001b]8;id=599605;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=606075;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#292\u001b\\\u001b[2m292\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
running solver webapi.py:302\n", "\n" ], "text/plain": [ "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mrunning solver \u001b]8;id=118900;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=298783;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#302\u001b\\\u001b[2m302\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "208bcb40b9904ba79fb1b66d5338ceb4", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n" ], "text/plain": [ "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:33:00] status = postprocess webapi.py:333\n", "\n" ], "text/plain": [ "\u001b[2;36m[16:33:00]\u001b[0m\u001b[2;36m \u001b[0mstatus = postprocess \u001b]8;id=312255;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=483477;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#333\u001b\\\u001b[2m333\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:33:05] status = success webapi.py:340\n", "\n" ], "text/plain": [ "\u001b[2;36m[16:33:05]\u001b[0m\u001b[2;36m \u001b[0mstatus = success \u001b]8;id=98111;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=402128;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#340\u001b\\\u001b[2m340\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e6769dccd91a4fe9b2ba341a0b61a5f4", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n" ], "text/plain": [ "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:33:07] loading SimulationData from data/data.hdf5 webapi.py:512\n", "\n" ], "text/plain": [ "\u001b[2;36m[16:33:07]\u001b[0m\u001b[2;36m \u001b[0mloading SimulationData from data/data.hdf5 \u001b]8;id=393074;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=459402;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#512\u001b\\\u001b[2m512\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:33:07] WARNING: Simulation final field decay value of 0.00486 is greater than the simulation shutoff log.py:50\n", " threshold of 1e-05. Consider simulation again with large run_time duration for more accurate \n", " results. \n", "\n" ], "text/plain": [ "\u001b[2;36m[16:33:07]\u001b[0m\u001b[2;36m \u001b[0mWARNING: Simulation final field decay value of \u001b[1;36m0.00486\u001b[0m is greater than the simulation shutoff \u001b]8;id=789153;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/log.py\u001b\\\u001b[2mlog.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=545889;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/log.py#50\u001b\\\u001b[2m50\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0mthreshold of \u001b[1;36m1e-05\u001b[0m. Consider simulation again with large run_time duration for more accurate \u001b[2m \u001b[0m\n", "\u001b[2;36m \u001b[0mresults. \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sim_data = web.run(sim, task_name=\"web_demo\", path=\"data/data.hdf5\", verbose=True)\n" ] }, { "cell_type": "markdown", "id": "1d57c398-4e72-43e7-840b-0fa72e286be4", "metadata": {}, "source": [ "> Note: the warning here tells us that we should probably increase the `run_time` of our `Simulation` to ensure the fields properly decay. Since this notebook is just a demonstration and we don't care about the results, we can ignore it in this case." ] }, { "cell_type": "markdown", "id": "fc5071ee", "metadata": {}, "source": [ "### Containers and Batching\n", "\n", "The convenience containers [Job](../_autosummary/tidy3d.web.container.Job.html) and [Batch](../_autosummary/tidy3d.web.container.Batch.html) allow one to manage single and multiple tasks in a more \"object oriented\" fashion.\n", "\n", "They follow the same basic API as the `web.` functions, except [Batch](../_autosummary/tidy3d.web.container.Batch.html) objects accept a dictionary of simulations and return generators that can be iterated through to give [SimulationData](../_autosummary/tidy3d.SimulationData.html) for each task, rather than returning it one by one. This cuts down on memory for several large jobs. \n", "\n", "While we won't cover all of the details here, for more information, see the [tutorial on the Web API](../notebooks/WebAPI.html) or look at the examples in the other notebooks.\n", "\n", "Finally, we provide [web.run_async](../_autosummary/tidy3d.web.run_async.html), which is like `web.run()` but runs a dictionary of simulations asynchronously, and is more convenient than `Batch` in some cases." ] }, { "cell_type": "markdown", "id": "b6045533", "metadata": {}, "source": [ "## Output Data\n", "\n", "Here we will discuss working with output data from a simulation.\n", "\n", "Topics covered will include:\n", "\n", "- [SimulationData](../_autosummary/tidy3d.SimulationData.html) objects.\n", "\n", "- Obtaining information about a completed FDTD simulation.\n", "\n", "- Selecting data by monitor or field value.\n", "\n", "- Post-processing and visualizing data.\n", "\n", "### Simulation Data\n", "\n", "As mentioned, tidy3d data for a single task is stored in a [SimulationData](../_autosummary/tidy3d.SimulationData.html) object.\n", "\n", "In addition to storing the data for each of the individual monitors in the simulation, it has its own useful functionality." ] }, { "cell_type": "code", "execution_count": 23, "id": "b4632332", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Simulation domain Nx, Ny, Nz: [20, 44, 20]\n", "Applied symmetries: (0, 0, 0)\n", "Number of computational grid points: 1.8400e+04.\n", "Using subpixel averaging: True\n", "Number of time steps: 2.6240e+03\n", "Automatic shutoff factor: 1.00e-05\n", "Time step (s): 3.8131e-16\n", "\n", "\n", "Compute source modes time (s): 0.0248\n", "Compute monitor modes time (s): 0.0029\n", "Rest of setup time (s): 3.6294\n", "\n", "Running solver for 2624 time steps...\n", "- Time step 104 / time 3.97e-14s ( 4 % done), field decay: 1.00e+00\n", "- Time step 209 / time 7.97e-14s ( 8 % done), field decay: 1.00e+00\n", "- Time step 314 / time 1.20e-13s ( 12 % done), field decay: 5.47e-01\n", "- Time step 419 / time 1.60e-13s ( 16 % done), field decay: 4.20e-01\n", "- Time step 524 / time 2.00e-13s ( 20 % done), field decay: 3.28e-01\n", "- Time step 629 / time 2.40e-13s ( 24 % done), field decay: 1.27e-01\n", "- Time step 734 / time 2.80e-13s ( 28 % done), field decay: 1.24e-02\n", "- Time step 839 / time 3.20e-13s ( 32 % done), field decay: 4.07e-02\n", "- Time step 944 / time 3.60e-13s ( 36 % done), field decay: 1.23e-01\n", "- Time step 1049 / time 4.00e-13s ( 40 % done), field decay: 1.46e-01\n", "- Time step 1154 / time 4.40e-13s ( 44 % done), field decay: 1.00e-01\n", "- Time step 1259 / time 4.80e-13s ( 48 % done), field decay: 3.70e-02\n", "- Time step 1364 / time 5.20e-13s ( 52 % done), field decay: 6.51e-03\n", "- Time step 1469 / time 5.60e-13s ( 56 % done), field decay: 2.47e-02\n", "- Time step 1574 / time 6.00e-13s ( 60 % done), field decay: 5.65e-02\n", "- Time step 1679 / time 6.40e-13s ( 64 % done), field decay: 6.46e-02\n", "- Time step 1784 / time 6.80e-13s ( 68 % done), field decay: 4.11e-02\n", "- Time step 1889 / time 7.20e-13s ( 72 % done), field decay: 1.43e-02\n", "- Time step 1994 / time 7.60e-13s ( 76 % done), field decay: 3.80e-03\n", "- Time step 2099 / time 8.00e-13s ( 80 % done), field decay: 1.31e-02\n", "- Time step 2204 / time 8.40e-13s ( 84 % done), field decay: 2.64e-02\n", "- Time step 2309 / time 8.80e-13s ( 88 % done), field decay: 2.97e-02\n", "- Time step 2414 / time 9.20e-13s ( 92 % done), field decay: 1.90e-02\n", "- Time step 2519 / time 9.61e-13s ( 96 % done), field decay: 5.62e-03\n", "- Time step 2623 / time 1.00e-12s (100 % done), field decay: 4.86e-03\n", "\n", "Solver time (s): 0.3511\n", "Data write time (s): 0.0011\n", "\n" ] }, { "data": { "text/html": [ "
╭─────────────────────────────── <class 'tidy3d.components.simulation.Simulation'> ───────────────────────────────╮\n", "│ Contains all information about Tidy3d simulation. │\n", "│ │\n", "│ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │\n", "│ │ Simulation( │ │\n", "│ │ │ type='Simulation', │ │\n", "│ │ │ center=(0.0, 0.0, 0.0), │ │\n", "│ │ │ size=(4.0, 4.0, 4.0), │ │\n", "│ │ │ run_time=1e-12, │ │\n", "│ │ │ medium=Medium(name=None, frequency_range=None, type='Medium', permittivity=1.0, conductivity=0.0), │ │\n", "│ │ │ symmetry=(0, 0, 0), │ │\n", "│ │ │ structures=( │ │\n", "│ │ │ │ Structure( │ │\n", "│ │ │ │ │ geometry=Box(type='Box', center=(0.0, 0.0, 0.0), size=(1.0, 1.0, 1.0)), │ │\n", "│ │ │ │ │ name=None, │ │\n", "│ │ │ │ │ type='Structure', │ │\n", "│ │ │ │ │ medium=Medium( │ │\n", "│ │ │ │ │ │ name=None, │ │\n", "│ │ │ │ │ │ frequency_range=None, │ │\n", "│ │ │ │ │ │ type='Medium', │ │\n", "│ │ │ │ │ │ permittivity=2.0, │ │\n", "│ │ │ │ │ │ conductivity=0.0 │ │\n", "│ │ │ │ │ ) │ │\n", "│ │ │ │ ), │ │\n", "│ │ │ ), │ │\n", "│ │ │ sources=( │ │\n", "│ │ │ │ UniformCurrentSource( │ │\n", "│ │ │ │ │ type='UniformCurrentSource', │ │\n", "│ │ │ │ │ center=(0.0, 0.0, 0.0), │ │\n", "│ │ │ │ │ size=(0.0, 0.0, 0.0), │ │\n", "│ │ │ │ │ source_time=GaussianPulse( │ │\n", "│ │ │ │ │ │ amplitude=1.0, │ │\n", "│ │ │ │ │ │ phase=0.0, │ │\n", "│ │ │ │ │ │ type='GaussianPulse', │ │\n", "│ │ │ │ │ │ freq0=150000000000000.0, │ │\n", "│ │ │ │ │ │ fwidth=10000000000000.0, │ │\n", "│ │ │ │ │ │ offset=5.0 │ │\n", "│ │ │ │ │ ), │ │\n", "│ │ │ │ │ name=None, │ │\n", "│ │ │ │ │ polarization='Ez' │ │\n", "│ │ │ │ ), │ │\n", "│ │ │ ), │ │\n", "│ │ │ boundary_spec=BoundarySpec( │ │\n", "│ │ │ │ x=Boundary( │ │\n", "│ │ │ │ │ plus=Periodic(name=None, type='Periodic'), │ │\n", "│ │ │ │ │ minus=Periodic(name=None, type='Periodic'), │ │\n", "│ │ │ │ │ type='Boundary' │ │\n", "│ │ │ │ ), │ │\n", "│ │ │ │ y=Boundary( │ │\n", "│ │ │ │ │ plus=PML( │ │\n", "│ │ │ │ │ │ name=None, │ │\n", "│ │ │ │ │ │ type='PML', │ │\n", "│ │ │ │ │ │ num_layers=12, │ │\n", "│ │ │ │ │ │ parameters=PMLParams( │ │\n", "│ │ │ │ │ │ │ sigma_order=3, │ │\n", "│ │ │ │ │ │ │ sigma_min=0.0, │ │\n", "│ │ │ │ │ │ │ sigma_max=1.5, │ │\n", "│ │ │ │ │ │ │ type='PMLParams', │ │\n", "│ │ │ │ │ │ │ kappa_order=3, │ │\n", "│ │ │ │ │ │ │ kappa_min=1.0, │ │\n", "│ │ │ │ │ │ │ kappa_max=3.0, │ │\n", "│ │ │ │ │ │ │ alpha_order=1, │ │\n", "│ │ │ │ │ │ │ alpha_min=0.0, │ │\n", "│ │ │ │ │ │ │ alpha_max=0.0 │ │\n", "│ │ │ │ │ │ ) │ │\n", "│ │ │ │ │ ), │ │\n", "│ │ │ │ │ minus=PML( │ │\n", "│ │ │ │ │ │ name=None, │ │\n", "│ │ │ │ │ │ type='PML', │ │\n", "│ │ │ │ │ │ num_layers=12, │ │\n", "│ │ │ │ │ │ parameters=PMLParams( │ │\n", "│ │ │ │ │ │ │ sigma_order=3, │ │\n", "│ │ │ │ │ │ │ sigma_min=0.0, │ │\n", "│ │ │ │ │ │ │ sigma_max=1.5, │ │\n", "│ │ │ │ │ │ │ type='PMLParams', │ │\n", "│ │ │ │ │ │ │ kappa_order=3, │ │\n", "│ │ │ │ │ │ │ kappa_min=1.0, │ │\n", "│ │ │ │ │ │ │ kappa_max=3.0, │ │\n", "│ │ │ │ │ │ │ alpha_order=1, │ │\n", "│ │ │ │ │ │ │ alpha_min=0.0, │ │\n", "│ │ │ │ │ │ │ alpha_max=0.0 │ │\n", "│ │ │ │ │ │ ) │ │\n", "│ │ │ │ │ ), │ │\n", "│ │ │ │ │ type='Boundary' │ │\n", "│ │ │ │ ), │ │\n", "│ │ │ │ z=Boundary( │ │\n", "│ │ │ │ │ plus=Periodic(name=None, type='Periodic'), │ │\n", "│ │ │ │ │ minus=Periodic(name=None, type='Periodic'), │ │\n", "│ │ │ │ │ type='Boundary' │ │\n", "│ │ │ │ ), │ │\n", "│ │ │ │ type='BoundarySpec' │ │\n", "│ │ │ ), │ │\n", "│ │ │ monitors=( │ │\n", "│ │ │ │ FieldMonitor( │ │\n", "│ │ │ │ │ type='FieldMonitor', │ │\n", "│ │ │ │ │ center=(1.0, 0.0, 0.0), │ │\n", "│ │ │ │ │ size=(inf, inf, 0.0), │ │\n", "│ │ │ │ │ name='fields_at_150THz', │ │\n", "│ │ │ │ │ freqs=(150000000000000.0,), │ │\n", "│ │ │ │ │ apodization=ApodizationSpec(start=None, end=None, width=None, type='ApodizationSpec'), │ │\n", "│ │ │ │ │ fields=('Ex', 'Ey', 'Hz'), │ │\n", "│ │ │ │ │ interval_space=(1, 1, 1), │ │\n", "│ │ │ │ │ colocate=False │ │\n", "│ │ │ │ ), │ │\n", "│ │ │ │ FluxTimeMonitor( │ │\n", "│ │ │ │ │ type='FluxTimeMonitor', │ │\n", "│ │ │ │ │ center=(1.0, 0.0, 0.0), │ │\n", "│ │ │ │ │ size=(inf, inf, 0.0), │ │\n", "│ │ │ │ │ name='flux_over_time', │ │\n", "│ │ │ │ │ start=1e-13, │ │\n", "│ │ │ │ │ stop=3e-13, │ │\n", "│ │ │ │ │ interval=5, │ │\n", "│ │ │ │ │ normal_dir='+', │ │\n", "│ │ │ │ │ exclude_surfaces=None │ │\n", "│ │ │ │ ) │ │\n", "│ │ │ ), │ │\n", "│ │ │ grid_spec=GridSpec( │ │\n", "│ │ │ │ grid_x=UniformGrid(type='UniformGrid', dl=0.2), │ │\n", "│ │ │ │ grid_y=UniformGrid(type='UniformGrid', dl=0.2), │ │\n", "│ │ │ │ grid_z=UniformGrid(type='UniformGrid', dl=0.2), │ │\n", "│ │ │ │ wavelength=None, │ │\n", "│ │ │ │ override_structures=(), │ │\n", "│ │ │ │ type='GridSpec' │ │\n", "│ │ │ ), │ │\n", "│ │ │ shutoff=1e-05, │ │\n", "│ │ │ subpixel=True, │ │\n", "│ │ │ normalize_index=0, │ │\n", "│ │ │ courant=0.99, │ │\n", "│ │ │ version='2.1.0' │ │\n", "│ │ ) │ │\n", "│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │\n", "│ │\n", "│ background_structure = Structure( │\n", "│ geometry=Box(type='Box', center=(0.0, 0.0, 0.0), size=(inf, inf, inf)), │\n", "│ name=None, │\n", "│ type='Structure', │\n", "│ medium=Medium( │\n", "│ name=None, │\n", "│ frequency_range=None, │\n", "│ type='Medium', │\n", "│ permittivity=1.0, │\n", "│ conductivity=0.0 │\n", "│ ) │\n", "│ ) │\n", "│ boundary_spec = BoundarySpec( │\n", "│ x=Boundary( │\n", "│ plus=Periodic(name=None, type='Periodic'), │\n", "│ minus=Periodic(name=None, type='Periodic'), │\n", "│ type='Boundary' │\n", "│ ), │\n", "│ y=Boundary( │\n", "│ plus=PML( │\n", "│ name=None, │\n", "│ type='PML', │\n", "│ num_layers=12, │\n", "│ parameters=PMLParams( │\n", "│ sigma_order=3, │\n", "│ sigma_min=0.0, │\n", "│ sigma_max=1.5, │\n", "│ type='PMLParams', │\n", "│ kappa_order=3, │\n", "│ kappa_min=1.0, │\n", "│ kappa_max=3.0, │\n", "│ alpha_order=1, │\n", "│ alpha_min=0.0, │\n", "│ alpha_max=0.0 │\n", "│ ) │\n", "│ ), │\n", "│ minus=PML( │\n", "│ name=None, │\n", "│ type='PML', │\n", "│ num_layers=12, │\n", "│ parameters=PMLParams( │\n", "│ sigma_order=3, │\n", "│ sigma_min=0.0, │\n", "│ sigma_max=1.5, │\n", "│ type='PMLParams', │\n", "│ kappa_order=3, │\n", "│ kappa_min=1.0, │\n", "│ kappa_max=3.0, │\n", "│ alpha_order=1, │\n", "│ alpha_min=0.0, │\n", "│ alpha_max=0.0 │\n", "│ ) │\n", "│ ), │\n", "│ type='Boundary' │\n", "│ ), │\n", "│ z=Boundary( │\n", "│ plus=Periodic(name=None, type='Periodic'), │\n", "│ minus=Periodic(name=None, type='Periodic'), │\n", "│ type='Boundary' │\n", "│ ), │\n", "│ type='BoundarySpec' │\n", "│ ) │\n", "│ bounding_box = Box(type='Box', center=(0.0, 0.0, 0.0), size=(4.0, 4.0, 4.0)) │\n", "│ bounds = ((-2.0, -2.0, -2.0), (2.0, 2.0, 2.0)) │\n", "│ bounds_pml = ((-2.0, -4.3999999999999995, -2.0), (2.0, 4.399999999999997, 2.0)) │\n", "│ center = (0.0, 0.0, 0.0) │\n", "│ complex_fields = False │\n", "│ courant = 0.99 │\n", "│ custom_datasets = [] │\n", "│ dt = 3.813149739062003e-16 │\n", "│ frequency_range = (110000000000000.0, 190000000000000.0) │\n", "│ geometry = Box(type='Box', center=(0.0, 0.0, 0.0), size=(4.0, 4.0, 4.0)) │\n", "│ grid = Grid( │\n", "│ boundaries=Coords( │\n", "│ x=array([-2. , -1.8, -1.6, -1.4, -1.2, -1. , -0.8, -0.6, -0.4, -0.2, 0. , │\n", "│ 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. ]), │\n", "│ y=array([-4.4, -4.2, -4. , -3.8, -3.6, -3.4, -3.2, -3. , -2.8, -2.6, -2.4, │\n", "│ -2.2, -2. , -1.8, -1.6, -1.4, -1.2, -1. , -0.8, -0.6, -0.4, -0.2, │\n", "│ 0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. , │\n", "│ 2.2, 2.4, 2.6, 2.8, 3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2, │\n", "│ 4.4]), │\n", "│ z=array([-2. , -1.8, -1.6, -1.4, -1.2, -1. , -0.8, -0.6, -0.4, -0.2, 0. , │\n", "│ 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. ]), │\n", "│ type='Coords' │\n", "│ ), │\n", "│ type='Grid' │\n", "│ ) │\n", "│ grid_spec = GridSpec( │\n", "│ grid_x=UniformGrid(type='UniformGrid', dl=0.2), │\n", "│ grid_y=UniformGrid(type='UniformGrid', dl=0.2), │\n", "│ grid_z=UniformGrid(type='UniformGrid', dl=0.2), │\n", "│ wavelength=None, │\n", "│ override_structures=(), │\n", "│ type='GridSpec' │\n", "│ ) │\n", "│ medium = Medium( │\n", "│ name=None, │\n", "│ frequency_range=None, │\n", "│ type='Medium', │\n", "│ permittivity=1.0, │\n", "│ conductivity=0.0 │\n", "│ ) │\n", "│ medium_map = { │\n", "│ Medium(name=None, frequency_range=None, type='Medium', permittivity=1.0, │\n", "│ conductivity=0.0): 0, │\n", "│ Medium(name=None, frequency_range=None, type='Medium', permittivity=2.0, │\n", "│ conductivity=0.0): 1 │\n", "│ } │\n", "│ mediums = [ │\n", "│ Medium( │\n", "│ name=None, │\n", "│ frequency_range=None, │\n", "│ type='Medium', │\n", "│ permittivity=1.0, │\n", "│ conductivity=0.0 │\n", "│ ), │\n", "│ Medium( │\n", "│ name=None, │\n", "│ frequency_range=None, │\n", "│ type='Medium', │\n", "│ permittivity=2.0, │\n", "│ conductivity=0.0 │\n", "│ ) │\n", "│ ] │\n", "│ monitors = ( │\n", "│ FieldMonitor( │\n", "│ type='FieldMonitor', │\n", "│ center=(1.0, 0.0, 0.0), │\n", "│ size=(inf, inf, 0.0), │\n", "│ name='fields_at_150THz', │\n", "│ freqs=(150000000000000.0,), │\n", "│ apodization=ApodizationSpec( │\n", "│ start=None, │\n", "│ end=None, │\n", "│ width=None, │\n", "│ type='ApodizationSpec' │\n", "│ ), │\n", "│ fields=('Ex', 'Ey', 'Hz'), │\n", "│ interval_space=(1, 1, 1), │\n", "│ colocate=False │\n", "│ ), │\n", "│ FluxTimeMonitor( │\n", "│ type='FluxTimeMonitor', │\n", "│ center=(1.0, 0.0, 0.0), │\n", "│ size=(inf, inf, 0.0), │\n", "│ name='flux_over_time', │\n", "│ start=1e-13, │\n", "│ stop=3e-13, │\n", "│ interval=5, │\n", "│ normal_dir='+', │\n", "│ exclude_surfaces=None │\n", "│ ) │\n", "│ ) │\n", "│ normalize_index = 0 │\n", "│ num_cells = 17600 │\n", "│ num_pml_layers = [[0, 0], [12, 12], [0, 0]] │\n", "│ num_time_steps = 2624 │\n", "│ nyquist_step = 5 │\n", "│ plot_params = PlotParams( │\n", "│ alpha=1.0, │\n", "│ edgecolor=None, │\n", "│ facecolor=None, │\n", "│ fill=True, │\n", "│ hatch=None, │\n", "│ linewidth=1.0, │\n", "│ type='PlotParams' │\n", "│ ) │\n", "│ pml_thicknesses = [(0.0, 0.0), (2.3999999999999995, 2.399999999999997), (0.0, 0.0)] │\n", "│ run_time = 1e-12 │\n", "│ shutoff = 1e-05 │\n", "│ simulation_geometry = Box( │\n", "│ type='Box', │\n", "│ center=(0.0, -1.3322676295501878e-15, 0.0), │\n", "│ size=(4.0, 8.799999999999997, 4.0) │\n", "│ ) │\n", "│ size = (4.0, 4.0, 4.0) │\n", "│ sources = ( │\n", "│ UniformCurrentSource( │\n", "│ type='UniformCurrentSource', │\n", "│ center=(0.0, 0.0, 0.0), │\n", "│ size=(0.0, 0.0, 0.0), │\n", "│ source_time=GaussianPulse( │\n", "│ amplitude=1.0, │\n", "│ phase=0.0, │\n", "│ type='GaussianPulse', │\n", "│ freq0=150000000000000.0, │\n", "│ fwidth=10000000000000.0, │\n", "│ offset=5.0 │\n", "│ ), │\n", "│ name=None, │\n", "│ polarization='Ez' │\n", "│ ), │\n", "│ ) │\n", "│ structures = ( │\n", "│ Structure( │\n", "│ geometry=Box(type='Box', center=(0.0, 0.0, 0.0), size=(1.0, 1.0, 1.0)), │\n", "│ name=None, │\n", "│ type='Structure', │\n", "│ medium=Medium( │\n", "│ name=None, │\n", "│ frequency_range=None, │\n", "│ type='Medium', │\n", "│ permittivity=2.0, │\n", "│ conductivity=0.0 │\n", "│ ) │\n", "│ ), │\n", "│ ) │\n", "│ subpixel = True │\n", "│ symmetry = (0, 0, 0) │\n", "│ tmesh = array([0.00000000e+00, 3.81314974e-16, 7.62629948e-16, ..., │\n", "│ 9.99426547e-13, 9.99807862e-13, 1.00018918e-12]) │\n", "│ type = 'Simulation' │\n", "│ version = '2.1.0' │\n", "│ volumetric_structures = ( │\n", "│ Structure( │\n", "│ geometry=Box(type='Box', center=(0.0, 0.0, 0.0), size=(1.0, 1.0, 1.0)), │\n", "│ name=None, │\n", "│ type='Structure', │\n", "│ medium=Medium( │\n", "│ name=None, │\n", "│ frequency_range=None, │\n", "│ type='Medium', │\n", "│ permittivity=2.0, │\n", "│ conductivity=0.0 │\n", "│ ) │\n", "│ ), │\n", "│ ) │\n", "│ wvl_mat_min = 1.4132352000025548 │\n", "│ zero_dims = [] │\n", "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n", "\n" ], "text/plain": [ "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────────────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'tidy3d.components.simulation.Simulation'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ──────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[36mContains all information about Tidy3d simulation.\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────╮\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1;35mSimulation\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Simulation'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m4.0\u001b[0m, \u001b[1;36m4.0\u001b[0m, \u001b[1;36m4.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mrun_time\u001b[0m=\u001b[1;36m1e\u001b[0m\u001b[1;36m-12\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mmedium\u001b[0m=\u001b[1;35mMedium\u001b[0m\u001b[1m(\u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mfrequency_range\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'Medium'\u001b[0m, \u001b[33mpermittivity\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[33mconductivity\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33msymmetry\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mstructures\u001b[0m=\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[1;35mStructure\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mgeometry\u001b[0m=\u001b[1;35mBox\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Box'\u001b[0m, \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m1.0\u001b[0m, \u001b[1;36m1.0\u001b[0m, \u001b[1;36m1.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Structure'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mmedium\u001b[0m=\u001b[1;35mMedium\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mfrequency_range\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Medium'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mpermittivity\u001b[0m=\u001b[1;36m2\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mconductivity\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33msources\u001b[0m=\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[1;35mUniformCurrentSource\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'UniformCurrentSource'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33msource_time\u001b[0m=\u001b[1;35mGaussianPulse\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mamplitude\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mphase\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'GaussianPulse'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mfreq0\u001b[0m=\u001b[1;36m150000000000000\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mfwidth\u001b[0m=\u001b[1;36m10000000000000\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33moffset\u001b[0m=\u001b[1;36m5\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mpolarization\u001b[0m=\u001b[32m'Ez'\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mboundary_spec\u001b[0m=\u001b[1;35mBoundarySpec\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mx\u001b[0m=\u001b[1;35mBoundary\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mplus\u001b[0m=\u001b[1;35mPeriodic\u001b[0m\u001b[1m(\u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'Periodic'\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mminus\u001b[0m=\u001b[1;35mPeriodic\u001b[0m\u001b[1m(\u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'Periodic'\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Boundary'\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33my\u001b[0m=\u001b[1;35mBoundary\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mplus\u001b[0m=\u001b[1;35mPML\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'PML'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mnum_layers\u001b[0m=\u001b[1;36m12\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mparameters\u001b[0m=\u001b[1;35mPMLParams\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33msigma_order\u001b[0m=\u001b[1;36m3\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33msigma_min\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33msigma_max\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.5\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'PMLParams'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mkappa_order\u001b[0m=\u001b[1;36m3\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mkappa_min\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mkappa_max\u001b[0m=\u001b[1;36m3\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33malpha_order\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33malpha_min\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33malpha_max\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mminus\u001b[0m=\u001b[1;35mPML\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'PML'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mnum_layers\u001b[0m=\u001b[1;36m12\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mparameters\u001b[0m=\u001b[1;35mPMLParams\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33msigma_order\u001b[0m=\u001b[1;36m3\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33msigma_min\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33msigma_max\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.5\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'PMLParams'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mkappa_order\u001b[0m=\u001b[1;36m3\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mkappa_min\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mkappa_max\u001b[0m=\u001b[1;36m3\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33malpha_order\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33malpha_min\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33malpha_max\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Boundary'\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mz\u001b[0m=\u001b[1;35mBoundary\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mplus\u001b[0m=\u001b[1;35mPeriodic\u001b[0m\u001b[1m(\u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'Periodic'\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mminus\u001b[0m=\u001b[1;35mPeriodic\u001b[0m\u001b[1m(\u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'Periodic'\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Boundary'\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'BoundarySpec'\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mmonitors\u001b[0m=\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[1;35mFieldMonitor\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'FieldMonitor'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m1.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33msize\u001b[0m=\u001b[1m(\u001b[0minf, inf, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mname\u001b[0m=\u001b[32m'fields_at_150THz'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mfreqs\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m150000000000000.0\u001b[0m,\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mapodization\u001b[0m=\u001b[1;35mApodizationSpec\u001b[0m\u001b[1m(\u001b[0m\u001b[33mstart\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mend\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mwidth\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'ApodizationSpec'\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mfields\u001b[0m=\u001b[1m(\u001b[0m\u001b[32m'Ex'\u001b[0m, \u001b[32m'Ey'\u001b[0m, \u001b[32m'Hz'\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33minterval_space\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m, \u001b[1;36m1\u001b[0m, \u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mcolocate\u001b[0m=\u001b[3;91mFalse\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[1;35mFluxTimeMonitor\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'FluxTimeMonitor'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m1.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33msize\u001b[0m=\u001b[1m(\u001b[0minf, inf, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mname\u001b[0m=\u001b[32m'flux_over_time'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mstart\u001b[0m=\u001b[1;36m1e\u001b[0m\u001b[1;36m-13\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mstop\u001b[0m=\u001b[1;36m3e\u001b[0m\u001b[1;36m-13\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33minterval\u001b[0m=\u001b[1;36m5\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mnormal_dir\u001b[0m=\u001b[32m'+'\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ │ \u001b[0m\u001b[33mexclude_surfaces\u001b[0m=\u001b[3;35mNone\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mgrid_spec\u001b[0m=\u001b[1;35mGridSpec\u001b[0m\u001b[1m(\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mgrid_x\u001b[0m=\u001b[1;35mUniformGrid\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'UniformGrid'\u001b[0m, \u001b[33mdl\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.2\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mgrid_y\u001b[0m=\u001b[1;35mUniformGrid\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'UniformGrid'\u001b[0m, \u001b[33mdl\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.2\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mgrid_z\u001b[0m=\u001b[1;35mUniformGrid\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'UniformGrid'\u001b[0m, \u001b[33mdl\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.2\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mwavelength\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33moverride_structures\u001b[0m=\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'GridSpec'\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mshutoff\u001b[0m=\u001b[1;36m1e\u001b[0m\u001b[1;36m-05\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33msubpixel\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mnormalize_index\u001b[0m=\u001b[1;36m0\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mcourant\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.99\u001b[0m, \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[2;32m│ \u001b[0m\u001b[33mversion\u001b[0m=\u001b[32m'2.1.0'\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m│\u001b[0m \u001b[1m)\u001b[0m \u001b[32m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[32m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mbackground_structure\u001b[0m = \u001b[1;35mStructure\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mgeometry\u001b[0m=\u001b[1;35mBox\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Box'\u001b[0m, \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0minf, inf, inf\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Structure'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mmedium\u001b[0m=\u001b[1;35mMedium\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfrequency_range\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Medium'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mpermittivity\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mconductivity\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mboundary_spec\u001b[0m = \u001b[1;35mBoundarySpec\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mx\u001b[0m=\u001b[1;35mBoundary\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mplus\u001b[0m=\u001b[1;35mPeriodic\u001b[0m\u001b[1m(\u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'Periodic'\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mminus\u001b[0m=\u001b[1;35mPeriodic\u001b[0m\u001b[1m(\u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'Periodic'\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Boundary'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33my\u001b[0m=\u001b[1;35mBoundary\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mplus\u001b[0m=\u001b[1;35mPML\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'PML'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mnum_layers\u001b[0m=\u001b[1;36m12\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mparameters\u001b[0m=\u001b[1;35mPMLParams\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33msigma_order\u001b[0m=\u001b[1;36m3\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33msigma_min\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33msigma_max\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.5\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'PMLParams'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mkappa_order\u001b[0m=\u001b[1;36m3\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mkappa_min\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mkappa_max\u001b[0m=\u001b[1;36m3\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33malpha_order\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33malpha_min\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33malpha_max\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mminus\u001b[0m=\u001b[1;35mPML\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'PML'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mnum_layers\u001b[0m=\u001b[1;36m12\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mparameters\u001b[0m=\u001b[1;35mPMLParams\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33msigma_order\u001b[0m=\u001b[1;36m3\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33msigma_min\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33msigma_max\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.5\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'PMLParams'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mkappa_order\u001b[0m=\u001b[1;36m3\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mkappa_min\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mkappa_max\u001b[0m=\u001b[1;36m3\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33malpha_order\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33malpha_min\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33malpha_max\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Boundary'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mz\u001b[0m=\u001b[1;35mBoundary\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mplus\u001b[0m=\u001b[1;35mPeriodic\u001b[0m\u001b[1m(\u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'Periodic'\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mminus\u001b[0m=\u001b[1;35mPeriodic\u001b[0m\u001b[1m(\u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'Periodic'\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Boundary'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'BoundarySpec'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mbounding_box\u001b[0m = \u001b[1;35mBox\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Box'\u001b[0m, \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m4.0\u001b[0m, \u001b[1;36m4.0\u001b[0m, \u001b[1;36m4.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mbounds\u001b[0m = \u001b[1m(\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m-2.0\u001b[0m, \u001b[1;36m-2.0\u001b[0m, \u001b[1;36m-2.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[1m(\u001b[0m\u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m, \u001b[1;36m2.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mbounds_pml\u001b[0m = \u001b[1m(\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m-2.0\u001b[0m, \u001b[1;36m-4.3999999999999995\u001b[0m, \u001b[1;36m-2.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[1m(\u001b[0m\u001b[1;36m2.0\u001b[0m, \u001b[1;36m4.399999999999997\u001b[0m, \u001b[1;36m2.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mcenter\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mcomplex_fields\u001b[0m = \u001b[3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mcourant\u001b[0m = \u001b[1;36m0.99\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mcustom_datasets\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mdt\u001b[0m = \u001b[1;36m3.813149739062003e-16\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mfrequency_range\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m110000000000000.0\u001b[0m, \u001b[1;36m190000000000000.0\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mgeometry\u001b[0m = \u001b[1;35mBox\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Box'\u001b[0m, \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m4.0\u001b[0m, \u001b[1;36m4.0\u001b[0m, \u001b[1;36m4.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mgrid\u001b[0m = \u001b[1;35mGrid\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mboundaries\u001b[0m=\u001b[1;35mCoords\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mx\u001b[0m=\u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m-2\u001b[0m. , \u001b[1;36m-1.8\u001b[0m, \u001b[1;36m-1.6\u001b[0m, \u001b[1;36m-1.4\u001b[0m, \u001b[1;36m-1.2\u001b[0m, \u001b[1;36m-1\u001b[0m. , \u001b[1;36m-0.8\u001b[0m, \u001b[1;36m-0.6\u001b[0m, \u001b[1;36m-0.4\u001b[0m, \u001b[1;36m-0.2\u001b[0m, \u001b[1;36m0\u001b[0m. , \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;36m0.2\u001b[0m, \u001b[1;36m0.4\u001b[0m, \u001b[1;36m0.6\u001b[0m, \u001b[1;36m0.8\u001b[0m, \u001b[1;36m1\u001b[0m. , \u001b[1;36m1.2\u001b[0m, \u001b[1;36m1.4\u001b[0m, \u001b[1;36m1.6\u001b[0m, \u001b[1;36m1.8\u001b[0m, \u001b[1;36m2\u001b[0m. \u001b[1m]\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33my\u001b[0m=\u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m-4.4\u001b[0m, \u001b[1;36m-4.2\u001b[0m, \u001b[1;36m-4\u001b[0m. , \u001b[1;36m-3.8\u001b[0m, \u001b[1;36m-3.6\u001b[0m, \u001b[1;36m-3.4\u001b[0m, \u001b[1;36m-3.2\u001b[0m, \u001b[1;36m-3\u001b[0m. , \u001b[1;36m-2.8\u001b[0m, \u001b[1;36m-2.6\u001b[0m, \u001b[1;36m-2.4\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;36m-2.2\u001b[0m, \u001b[1;36m-2\u001b[0m. , \u001b[1;36m-1.8\u001b[0m, \u001b[1;36m-1.6\u001b[0m, \u001b[1;36m-1.4\u001b[0m, \u001b[1;36m-1.2\u001b[0m, \u001b[1;36m-1\u001b[0m. , \u001b[1;36m-0.8\u001b[0m, \u001b[1;36m-0.6\u001b[0m, \u001b[1;36m-0.4\u001b[0m, \u001b[1;36m-0.2\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;36m0\u001b[0m. , \u001b[1;36m0.2\u001b[0m, \u001b[1;36m0.4\u001b[0m, \u001b[1;36m0.6\u001b[0m, \u001b[1;36m0.8\u001b[0m, \u001b[1;36m1\u001b[0m. , \u001b[1;36m1.2\u001b[0m, \u001b[1;36m1.4\u001b[0m, \u001b[1;36m1.6\u001b[0m, \u001b[1;36m1.8\u001b[0m, \u001b[1;36m2\u001b[0m. , \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;36m2.2\u001b[0m, \u001b[1;36m2.4\u001b[0m, \u001b[1;36m2.6\u001b[0m, \u001b[1;36m2.8\u001b[0m, \u001b[1;36m3\u001b[0m. , \u001b[1;36m3.2\u001b[0m, \u001b[1;36m3.4\u001b[0m, \u001b[1;36m3.6\u001b[0m, \u001b[1;36m3.8\u001b[0m, \u001b[1;36m4\u001b[0m. , \u001b[1;36m4.2\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;36m4.4\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mz\u001b[0m=\u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m-2\u001b[0m. , \u001b[1;36m-1.8\u001b[0m, \u001b[1;36m-1.6\u001b[0m, \u001b[1;36m-1.4\u001b[0m, \u001b[1;36m-1.2\u001b[0m, \u001b[1;36m-1\u001b[0m. , \u001b[1;36m-0.8\u001b[0m, \u001b[1;36m-0.6\u001b[0m, \u001b[1;36m-0.4\u001b[0m, \u001b[1;36m-0.2\u001b[0m, \u001b[1;36m0\u001b[0m. , \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;36m0.2\u001b[0m, \u001b[1;36m0.4\u001b[0m, \u001b[1;36m0.6\u001b[0m, \u001b[1;36m0.8\u001b[0m, \u001b[1;36m1\u001b[0m. , \u001b[1;36m1.2\u001b[0m, \u001b[1;36m1.4\u001b[0m, \u001b[1;36m1.6\u001b[0m, \u001b[1;36m1.8\u001b[0m, \u001b[1;36m2\u001b[0m. \u001b[1m]\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Coords'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Grid'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mgrid_spec\u001b[0m = \u001b[1;35mGridSpec\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mgrid_x\u001b[0m=\u001b[1;35mUniformGrid\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'UniformGrid'\u001b[0m, \u001b[33mdl\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.2\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mgrid_y\u001b[0m=\u001b[1;35mUniformGrid\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'UniformGrid'\u001b[0m, \u001b[33mdl\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.2\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mgrid_z\u001b[0m=\u001b[1;35mUniformGrid\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'UniformGrid'\u001b[0m, \u001b[33mdl\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.2\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mwavelength\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33moverride_structures\u001b[0m=\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'GridSpec'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mmedium\u001b[0m = \u001b[1;35mMedium\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfrequency_range\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Medium'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mpermittivity\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mconductivity\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mmedium_map\u001b[0m = \u001b[1m{\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;35mMedium\u001b[0m\u001b[1m(\u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mfrequency_range\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'Medium'\u001b[0m, \u001b[33mpermittivity\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mconductivity\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\u001b[1m)\u001b[0m: \u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;35mMedium\u001b[0m\u001b[1m(\u001b[0m\u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mfrequency_range\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'Medium'\u001b[0m, \u001b[33mpermittivity\u001b[0m=\u001b[1;36m2\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mconductivity\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\u001b[1m)\u001b[0m: \u001b[1;36m1\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m}\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mmediums\u001b[0m = \u001b[1m[\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;35mMedium\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfrequency_range\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Medium'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mpermittivity\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mconductivity\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;35mMedium\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfrequency_range\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Medium'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mpermittivity\u001b[0m=\u001b[1;36m2\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mconductivity\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mmonitors\u001b[0m = \u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;35mFieldMonitor\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'FieldMonitor'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m1.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0minf, inf, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[32m'fields_at_150THz'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfreqs\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m150000000000000.0\u001b[0m,\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mapodization\u001b[0m=\u001b[1;35mApodizationSpec\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mstart\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mend\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mwidth\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'ApodizationSpec'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfields\u001b[0m=\u001b[1m(\u001b[0m\u001b[32m'Ex'\u001b[0m, \u001b[32m'Ey'\u001b[0m, \u001b[32m'Hz'\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33minterval_space\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m, \u001b[1;36m1\u001b[0m, \u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mcolocate\u001b[0m=\u001b[3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;35mFluxTimeMonitor\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'FluxTimeMonitor'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m1.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0minf, inf, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[32m'flux_over_time'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mstart\u001b[0m=\u001b[1;36m1e\u001b[0m\u001b[1;36m-13\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mstop\u001b[0m=\u001b[1;36m3e\u001b[0m\u001b[1;36m-13\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33minterval\u001b[0m=\u001b[1;36m5\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mnormal_dir\u001b[0m=\u001b[32m'+'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mexclude_surfaces\u001b[0m=\u001b[3;35mNone\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mnormalize_index\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mnum_cells\u001b[0m = \u001b[1;36m17600\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mnum_pml_layers\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m, \u001b[1m[\u001b[0m\u001b[1;36m12\u001b[0m, \u001b[1;36m12\u001b[0m\u001b[1m]\u001b[0m, \u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mnum_time_steps\u001b[0m = \u001b[1;36m2624\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mnyquist_step\u001b[0m = \u001b[1;36m5\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mplot_params\u001b[0m = \u001b[1;35mPlotParams\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33malpha\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33medgecolor\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfacecolor\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfill\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mhatch\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mlinewidth\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'PlotParams'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mpml_thicknesses\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[1m(\u001b[0m\u001b[1;36m2.3999999999999995\u001b[0m, \u001b[1;36m2.399999999999997\u001b[0m\u001b[1m)\u001b[0m, \u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mrun_time\u001b[0m = \u001b[1;36m1e-12\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mshutoff\u001b[0m = \u001b[1;36m1e-05\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33msimulation_geometry\u001b[0m = \u001b[1;35mBox\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Box'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m-1.3322676295501878e-15\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m4.0\u001b[0m, \u001b[1;36m8.799999999999997\u001b[0m, \u001b[1;36m4.0\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33msize\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m4.0\u001b[0m, \u001b[1;36m4.0\u001b[0m, \u001b[1;36m4.0\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33msources\u001b[0m = \u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;35mUniformCurrentSource\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'UniformCurrentSource'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33msource_time\u001b[0m=\u001b[1;35mGaussianPulse\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mamplitude\u001b[0m=\u001b[1;36m1\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mphase\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'GaussianPulse'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfreq0\u001b[0m=\u001b[1;36m150000000000000\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfwidth\u001b[0m=\u001b[1;36m10000000000000\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33moffset\u001b[0m=\u001b[1;36m5\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mpolarization\u001b[0m=\u001b[32m'Ez'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mstructures\u001b[0m = \u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;35mStructure\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mgeometry\u001b[0m=\u001b[1;35mBox\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Box'\u001b[0m, \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m1.0\u001b[0m, \u001b[1;36m1.0\u001b[0m, \u001b[1;36m1.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Structure'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mmedium\u001b[0m=\u001b[1;35mMedium\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfrequency_range\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Medium'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mpermittivity\u001b[0m=\u001b[1;36m2\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mconductivity\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33msubpixel\u001b[0m = \u001b[3;92mTrue\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33msymmetry\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mtmesh\u001b[0m = \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m0.00000000e+00\u001b[0m, \u001b[1;36m3.81314974e-16\u001b[0m, \u001b[1;36m7.62629948e-16\u001b[0m, \u001b[33m...\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;36m9.99426547e-13\u001b[0m, \u001b[1;36m9.99807862e-13\u001b[0m, \u001b[1;36m1.00018918e-12\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mtype\u001b[0m = \u001b[32m'Simulation'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mversion\u001b[0m = \u001b[32m'2.1.0'\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mvolumetric_structures\u001b[0m = \u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;35mStructure\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mgeometry\u001b[0m=\u001b[1;35mBox\u001b[0m\u001b[1m(\u001b[0m\u001b[33mtype\u001b[0m=\u001b[32m'Box'\u001b[0m, \u001b[33mcenter\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m, \u001b[1;36m0.0\u001b[0m\u001b[1m)\u001b[0m, \u001b[33msize\u001b[0m=\u001b[1m(\u001b[0m\u001b[1;36m1.0\u001b[0m, \u001b[1;36m1.0\u001b[0m, \u001b[1;36m1.0\u001b[0m\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Structure'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mmedium\u001b[0m=\u001b[1;35mMedium\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mname\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mfrequency_range\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'Medium'\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mpermittivity\u001b[0m=\u001b[1;36m2\u001b[0m\u001b[1;36m.0\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[33mconductivity\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mwvl_mat_min\u001b[0m = \u001b[1;36m1.4132352000025548\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;33mzero_dims\u001b[0m = \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# print the log, which is stored as an attribute rather than as its own file\n", "print(sim_data.log)\n", "\n", "# get a copy of the original Simulation, so it also doesn't need to be stored separately\n", "sim_data.simulation.help()\n" ] }, { "cell_type": "markdown", "id": "f33815ce", "metadata": {}, "source": [ "### Monitor Data\n", "\n", "Data for each monitor is stored as its corresponding [td.MonitorData](../_autosummary/tidy3d.components.data.MonitorData.html) instance.\n", "\n", "The monitor data can be found using the `monitor.name` by indexing into the [SimulationData](../_autosummary/tidy3d.SimulationData.html) using square brackets.\n", "\n", "The data are stored as [xarray](http://xarray.pydata.org/en/stable/) objects, which means they work similarly to numpy arrays but provide many additional useful features. For more details refer to the [tutorial on data visualization](../notebooks/VizData.html)." ] }, { "cell_type": "code", "execution_count": 24, "id": "5a1d45b1", "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
↓ monitor_data.hdf5 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.0% • 55.6/55.6 kB • ? • 0:00:00\n\n", "text/plain": "\u001b[1;32m↓\u001b[0m \u001b[1;34mmonitor_data.hdf5\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m55.6/55.6 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n" }, "metadata": {}, "output_type": "display_data" } ] } }, "6d5d9bbe386e4f3ba3aad71d93130847": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "807a5c332b5245598bb8bc7969547503": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_6d5d9bbe386e4f3ba3aad71d93130847", "msg_id": "", "outputs": [ { "data": { "text/html": "
↑ simulation.json ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.0% • 2.4/2.4 kB • ? • 0:00:00\n\n", "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34msimulation.json\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m2.4/2.4 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n" }, "metadata": {}, "output_type": "display_data" } ] } }, "92b71f39dfc7411d8dcf7fda3cd467ab": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d472de6b951849fb890ff1cd03463482": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_92b71f39dfc7411d8dcf7fda3cd467ab", "msg_id": "", "outputs": [ { "data": { "text/html": "
🚶 Starting 'web_demo'...\n\n", "text/plain": "\u001b[32m🚶 \u001b[0m \u001b[1;32mStarting 'web_demo'...\u001b[0m\n" }, "metadata": {}, "output_type": "display_data" } ] } }, "dbe741250c2e40038844cd174cc153fa": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e3a5e8d2810d4936922deffeb185d594": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_dbe741250c2e40038844cd174cc153fa", "msg_id": "", "outputs": [ { "data": { "text/html": "
🚶 Finishing 'web_demo'...\n\n", "text/plain": "\u001b[32m🚶 \u001b[0m \u001b[1;32mFinishing 'web_demo'...\u001b[0m\n" }, "metadata": {}, "output_type": "display_data" } ] } }, "f000da915d7a4968b2b2170017c18f61": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_0fca99a712184587a35c3557fff0eb28", "msg_id": "", "outputs": [ { "data": { "text/html": "
% done (field decay = 0.00e+00) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00\n\n", "text/plain": "% done (field decay = 0.00e+00) \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n" }, "metadata": {}, "output_type": "display_data" } ] } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }