{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Transmittance Spectra for Planewave at Normal Incidence of a Binary Grating" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mode-decomposition feature can also be applied to planewaves in homogeneous media with scalar permittivity/permeability (i.e., no anisotropy). This will be demonstrated in this example to compute the diffraction spectrum of a binary phase [grating](https://en.wikipedia.org/wiki/Diffraction_grating). To compute the diffraction spectrum for a finite-length structure, see [Tutorials/Near to Far Field Spectra/Diffraction Spectrum of a Finite Binary Grating](https://meep.readthedocs.io/en/latest/Python_Tutorials/Near_to_Far_Field_Spectra/#diffraction-spectrum-of-a-finite-binary-grating). \n", "\n", "In this example, we'll define a grating that is periodic in the $y$ direction with periodicity gp and has a rectangular profile of height gh and duty cycle gdc. The grating parameters are gh=0.5 μm, gdc=0.5, and gp=10 μm. There is a semi-infinite substrate of thickness dsub adjacent to the grating. The substrate and grating are glass with a refractive index of 1.5. The surrounding is air/vacuum. Perfectly matched layers (PML) of thickness dpml are used in the $\\pm x$ boundaries.\n", "\n", "We'll do our analysis first using an ideal quartz that ignores the dispersion of the material. Then we'll include the dispersion to detect any differences.\n", "\n", "A pulsed planewave with $E_z$ polarization spanning wavelengths of 0.4 to 0.6 μm is normally incident on the grating from the glass substrate. The eigenmode monitor is placed in the air region. We will use mode decomposition to compute the transmittance — the ratio of the power in the $+x$ direction of the diffracted mode relative to that of the incident planewave — for the first ten diffraction orders. \n", "\n", "Two simulations are required: (1) an empty cell of homogeneous glass to obtain the incident power of the source, and (2) the grating structure to obtain the diffraction orders. At the end of the simulation, the wavelength, angle, and transmittance for each diffraction order are computed.\n", "\n", "Initially, we'll import our standard libraries:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using MPI version 3.1, 1 processes\n" ] } ], "source": [ "import meep as mp\n", "import math\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We first need to simulate the empty, homogenous glass (fuzed quartz) with a constant refractive index." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-----------\n", "Initializing structure...\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "