===========================================================
                                      .___ __  __   
          _________________  __ __  __| _/|__|/  |_ 
         / ___\_` __ \__  \ |  |  \/ __ | | \\_  __\
        / /_/  >  | \// __ \|  |  / /_/ | |  ||  |  
        \___  /|__|  (____  /____/\____ | |__||__|  
       /_____/            \/           \/           
              grep rough audit - static analysis tool
                  v2.8 written by @Wireghoul
=================================[justanotherhacker.com]===
meep-mpi-default-1.12.0/configure.ac-282-else
meep-mpi-default-1.12.0/configure.ac:283:  GUILE_LIBS=`$GUILE_CONFIG link`
meep-mpi-default-1.12.0/configure.ac:284:  GUILE_CPPFLAGS=`$GUILE_CONFIG compile`
meep-mpi-default-1.12.0/configure.ac-285-  CPPFLAGS="$CPPFLAGS $GUILE_CPPFLAGS"
##############################################
meep-mpi-default-1.12.0/configure.ac-533-      AC_MSG_CHECKING([for Python include directory])
meep-mpi-default-1.12.0/configure.ac:534:      pinc=`echo "import distutils.sysconfig; print (distutils.sysconfig.get_python_inc())" | $PYTHON - 2>/dev/null`
meep-mpi-default-1.12.0/configure.ac-535-      AC_MSG_RESULT([${pinc:-unknown}])
##############################################
meep-mpi-default-1.12.0/configure.ac-543-        AC_MSG_CHECKING([for Numpy include directory])
meep-mpi-default-1.12.0/configure.ac:544:        pinc=`echo "import numpy; print (numpy.get_include())" | $PYTHON - 2>/dev/null`
meep-mpi-default-1.12.0/configure.ac-545-        AC_MSG_RESULT([${pinc:-unknown}])
##############################################
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md-19-
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md:20:Most of the software below, including Meep, installs under `/usr/local` by default. That is, libraries go in `/usr/local/lib`, programs in `/usr/local/bin`, etc. If you don't have `root` privileges on your machine, you may need to install somewhere else, e.g. under `$HOME/install` (the `install/` subdirectory of your home directory). Most of the programs below use a GNU-style `configure` script, which means that all you would do to install there would be:
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md-21-
##############################################
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md-25-
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md:26:when configuring the program. The directories `$HOME/install/lib` etc. are created automatically as needed.
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md-27-
##############################################
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md-29-
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md:30:There are two further complications. First, if you install dependencies in a non-standard location like `$HOME/install/lib`, you will need to tell the compilers where to find the libraries and header files that you installed. You do this by passing two variables to `./configure`:
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md-31-
##############################################
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md-48-
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md:49:There are several ways to do this.  Suppose that you installed libraries into the directory `$HOME/install/lib`.   The most robust option is probably to include this path in the linker flags:
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md-50-
##############################################
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md-56-
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md:57:On many systems, you can also specify directories to the runtime linker via the `LD_LIBRARY_PATH` environment variable. In particular, by `export LD_LIBRARY_PATH="$HOME/install/lib:$LD_LIBRARY_PATH"`; you can add this to your `.profile` file (depending on your shell) to make it run every time you run your shell. On MacOS, a security feature called [System Integrity Protection](https://en.wikipedia.org/wiki/System_Integrity_Protection) causes the value of `LD_LIBRARY_PATH` to be ignored, so using environment variables won't work there.
meep-mpi-default-1.12.0/doc/docs/Build_From_Source.md-58-
##############################################
meep-mpi-default-1.12.0/doc/docs/Exploiting_Symmetry.md-45-
meep-mpi-default-1.12.0/doc/docs/Exploiting_Symmetry.md:46:In a cylindrical simulation, fields can be written in the form of a function of ($r$,$z$) multiplied by a function $\exp(im\phi)$ for the $\phi$ dependence, where $m$ is a user-specified parameter (related to the angular momentum of the field). If the cell includes the $r$=0 origin, then $m$ must be an integer to be single-valued at the origin. Otherwise, $m$ can be arbitrary (this is useful e.g. for bend simulations).
meep-mpi-default-1.12.0/doc/docs/Exploiting_Symmetry.md-47-
##############################################
meep-mpi-default-1.12.0/doc/docs/FAQ.md-483-
meep-mpi-default-1.12.0/doc/docs/FAQ.md:484:To model e.g., fiber waveguides with 2d claddings, diffractive binary gratings with arbitrary incident planewaves in 3d, etc. in Cartesian coordinates, you would create a 2d cell in the $xy$ plane and specify a `k_point` with *non-zero* component in $z$. The resulting 3d simulation involves all electromagnetic fields (rather than a 2d simulation which involves a subset of the fields determined by the polarization of the current source). Performance can be improved by specifying `special_kz=True` in the `Simulation` constructor; this results in a 2d simulation with real rather than complex fields (as long as the $x$ and $y$ components of `k_point` are zero).
meep-mpi-default-1.12.0/doc/docs/FAQ.md-485-
##############################################
meep-mpi-default-1.12.0/doc/docs/Guile_and_Scheme_Information.md-83-
meep-mpi-default-1.12.0/doc/docs/Guile_and_Scheme_Information.md:84:``for x in `seq a dx b`; do meep x=$x myfile.ctl; done``
##############################################
meep-mpi-default-1.12.0/doc/docs/Introduction.md-51-
meep-mpi-default-1.12.0/doc/docs/Introduction.md:52:For example, suppose we are describing some photonic structure at [infrared](https://en.wikipedia.org/wiki/Infrared) frequencies, where it is convenient to specify distances in [microns](https://en.wikipedia.org/wiki/Micrometre). Thus, we let $a$ = 1 μm. Then, if we want to specify a source corresponding to λ = 1.55 μm, we specify the frequency *f* as 1/1.55 = 0.6452. If we want to run our simulation for 100 periods, we then run it for 155 time units (= 100/*f*). At a grid resolution ($Δx$) of 10 pixels/μm and [Courant factor](https://en.wikipedia.org/wiki/Courant%E2%80%93Friedrichs%E2%80%93Lewy_condition) ($S$) of 0.5, one timestep is 0.05 time units or 166.67 μs ($cΔ t = SΔ x$).
meep-mpi-default-1.12.0/doc/docs/Introduction.md-53-
##############################################
meep-mpi-default-1.12.0/doc/docs/Introduction.md-62-
meep-mpi-default-1.12.0/doc/docs/Introduction.md:63:With ordinary [periodic boundaries](FAQ.md#how-does-k_point-define-the-phase-relation-between-adjacent-unit-cells) in a cell of size $L$, the field components satisfy $f(x+L) = f(x)$. **Bloch periodicity** is a generalization where $f(x+L) = e^{ik_x L} f(x)$ for some *Bloch wavevector* $\mathbf{k}$. This can be used to solve for the modes of waveguides, gratings, and so on, much like in [MPB](https://mpb.readthedocs.io). See Chapter 3 of [Photonic Crystals: Molding the Flow of Light (second edition)](http://ab-initio.mit.edu/book).
meep-mpi-default-1.12.0/doc/docs/Introduction.md-64-
##############################################
meep-mpi-default-1.12.0/doc/docs/Materials.md-33-
meep-mpi-default-1.12.0/doc/docs/Materials.md:34:where σ$_D$ is the electric conductivity, ω$_n$ and γ$_n$ are user-specified constants. Actually, the numbers that one specifies are f$_n$ = ω$_n$/2π and γ$_n$/2π. The  σ$_n(\mathbf{x})$ is a user-specified function of position giving the strength of the *n*-th resonance. The σ parameters can be anisotropic (real-symmetric) tensors, while the frequency-independent term ε$_\infty$ can be an arbitrary real-symmetric tensor as well. This corresponds to evolving **P** via the equations:
meep-mpi-default-1.12.0/doc/docs/Materials.md-35-
##############################################
meep-mpi-default-1.12.0/doc/docs/Materials.md-59-
meep-mpi-default-1.12.0/doc/docs/Materials.md:60:where λ is the vacuum wavelength, each term containing two coefficients (B<sub>n</sub> and C<sub>n</sub>) can be directly transferred to a Lorentzian polarization field using a simple substitution of variables: ω<sub>n</sub>=1/$\sqrt{C_n}$, γ<sub>n</sub>=0, and σ<sub>n</sub>=B<sub>n</sub>. Several examples of importing Sellmeier coefficients from published fitting data including [germanium](https://github.com/NanoComp/meep/blob/master/python/materials.py#L870-L886) (Ge) and [gallium nitride](https://github.com/NanoComp/meep/blob/master/python/materials.py#L1148-L1173) (GaN) are provided in the [Materials Library](#materials-library).
meep-mpi-default-1.12.0/doc/docs/Materials.md-61-
##############################################
meep-mpi-default-1.12.0/doc/docs/Materials.md-96-
meep-mpi-default-1.12.0/doc/docs/Materials.md:97:**Note**: the "conductivity" in Meep is slightly different from the conductivity you might find in a textbook, because for computational convenience it appears as $\sigma_D \mathbf{D}$ in our Maxwell equations rather than the more-conventional $\sigma \mathbf{E}$; this just means that our definition is different from the usual electric conductivity by a factor of ε. Also, just as Meep uses the dimensionless relative permittivity for ε, it uses nondimensionalized units of 1/*a* (where *a* is your unit of distance) for the conductivities $\sigma_{D,B}$. If you have the electric conductivity $\sigma$ in SI units and want to convert to $\sigma_D$ in Meep units, you can simply use the formula: $\sigma_D = (a/c) \sigma / \varepsilon_r \varepsilon_0$ where *a* is your unit of distance in meters, *c* is the vacuum speed of light in m/s, $\varepsilon_0$ is the SI vacuum permittivity, and $\varepsilon_r$ is the real relative permittivity.
meep-mpi-default-1.12.0/doc/docs/Materials.md-98-
##############################################
meep-mpi-default-1.12.0/doc/docs/Materials.md-133-
meep-mpi-default-1.12.0/doc/docs/Materials.md:134:where $\Delta N(\mathbf{x},t) = N_{\textrm{upper}} - N_{\textrm{lower}}$ is the inversion of the two atomic energy levels which comprise the $n$th lasing transition, $\omega_n$ is the central frequency of the atomic transition, $\Gamma_n$ is the full width half-maximum of the width of the transition, and $\boldsymbol{\sigma}_n$ is the strength and orientation of the $n$th transition which couples the electric field and the atomic medium. Note that this polarization equation is only modeling the nonlinear, saturable portion of the polarization. The atomic level population densities, $N_i(\mathbf{x},t)$, each satisfy a rate equation of the form:
meep-mpi-default-1.12.0/doc/docs/Materials.md-135-
##############################################
meep-mpi-default-1.12.0/doc/docs/Mode_Decomposition.md-66-
meep-mpi-default-1.12.0/doc/docs/Mode_Decomposition.md:67:+ `parity` is the parity of the mode to calculate, assuming the structure has $z$ and/or $y$ mirror symmetry in the source region. If the structure has both $y$ and $z$ mirror symmetry, you can combine more than one of these, e.g. `ODD_Z+EVEN_Y`. This is especially useful in 2d simulations to restrict yourself to a desired polarization
meep-mpi-default-1.12.0/doc/docs/Mode_Decomposition.md-68-
##############################################
meep-mpi-default-1.12.0/doc/docs/Mode_Decomposition.md-72-
meep-mpi-default-1.12.0/doc/docs/Mode_Decomposition.md:73:+ `coeffs` is a user-allocated array of type `std::complex<double>` (shortened hereafter to `cdouble`) of length `2*num_freqs*num_bands` where `num_freqs` is the number of frequencies stored in the `flux` object (equivalent to `flux->Nfreq`) and `num_bands` is the length of the `bands` input array. The expansion coefficients for the mode with frequency `nf` and band index `nb`  are stored sequentially as α$^+$, α$^-$ starting at slot `2*nb*num_freqs+nf` of this array
meep-mpi-default-1.12.0/doc/docs/Mode_Decomposition.md-74-
##############################################
meep-mpi-default-1.12.0/doc/docs/Mode_Decomposition.md-86-
meep-mpi-default-1.12.0/doc/docs/Mode_Decomposition.md:87:+ `kdom_list` is a user allocated array of `meep::vec` objects of length (`num_bands` * `num_freqs`). If non-null, this array is filled in with the wavevectors of the dominant planewave in the Fourier series expansion for each band from 1 to (`num_bands` * `num_freqs`). `kdom_list[nb*num_freqs + nf]` is the dominant planewave of the mode with frequency `nf` and band index `nb`. (Defaults to `NULL`.)  This is especially useful for interpreting the modes computed in a uniform medium, because those modes are exactly planewaves proportional to $exp(2\pi i \mathrm{kdom}\cdot \vec{x})$ where `kdom` is the wavevector.
meep-mpi-default-1.12.0/doc/docs/Mode_Decomposition.md-88-
##############################################
meep-mpi-default-1.12.0/doc/docs/Mode_Decomposition.md-203-
meep-mpi-default-1.12.0/doc/docs/Mode_Decomposition.md:204:where $S$ is any surface transverse to the direction of propagation and $\hat{\mathbf{n}}$ is the unit normal vector to $S$ (i.e. $\hat{\mathbf{z}}$ in the case considered above). The normalization constant $C_{m}$ is a matter of convention, but in MPB it is taken to be the group velocity of the mode, $v_m$, times the area $A_S$ of the cross-sectional surface $S$: $$C_m = v_m A_S$$.
meep-mpi-default-1.12.0/doc/docs/Mode_Decomposition.md-205-
##############################################
meep-mpi-default-1.12.0/doc/docs/Perfectly_Matched_Layer.md-27-
meep-mpi-default-1.12.0/doc/docs/Perfectly_Matched_Layer.md:28:For sources extending into the PML, such as planewaves which must span the entire width of the cell with Bloch-periodic boundary conditions (see e.g. [Tutorials/Basics/Mie Scattering of a Lossless Dielectric Sphere](Python_Tutorials/Basics.md#mie-scattering-of-a-lossless-dielectric-sphere)), the `is_integrated` parameter of the `Source` object must be set to `True` in order to generate planar wavefronts. This is demonstrated in the following example for an $E_z$-polarized planewave propagating in the $x$ direction in a 2d cell surrounded by PML. A side-by-side comparison of the $E_z$ field profile indicates that the wavefronts are not planar for `is_integrated=False` (the default).
meep-mpi-default-1.12.0/doc/docs/Perfectly_Matched_Layer.md-29-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Basics.md-51-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Basics.md:52:The waveguide is specified by a `Block` (parallelepiped) of size $\infty \times 1 \times \infty$, with $ε=12$, centered at (0,0) which is the center of the cell. By default, any place where there are no objects there is air ($ε=1$), although this can be changed by setting the `default_material` variable. The resulting structure is shown below.
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Basics.md-53-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Basics.md-63-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Basics.md:64:We gave the source a frequency of 0.15, and specified a [`ContinuousSource`](../Python_User_Interface.md#continuoussource) which is just a fixed-frequency sinusoid $\exp(-i \omega t)$ that by default is turned on at $t=0$. Recall that, in [Meep units](../Introduction.md#units-in-meep), frequency is specified in units of 2πc, which is equivalent to the inverse of the vacuum wavelength. Thus, 0.15 corresponds to a vacuum wavelength of about 1/0.15=6.67 μm, or a wavelength of about 2 μm in the ε=12 material &mdash; thus, our waveguide is half a wavelength wide, which should hopefully make it single mode. In fact, the cutoff for single-mode behavior in this waveguide is analytically solvable, and corresponds to a frequency of 1/2√11 or roughly 0.15076. Note also that to specify a J<sub>z</sub>, we specify a component `Ez` (e.g., if we wanted a magnetic current, we would specify `Hx`, `Hy`, or `Hz`). The current is located at (-7,0), which is 1 μm to the right of the left edge of the cell &mdash; we always want to leave a little space between sources and the cell boundaries, to keep the boundary conditions from interfering with them.
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Basics.md-65-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Basics.md-806-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Basics.md:807:The signal processing is performed by the `Harminv` routine, which takes four arguments: the field component E<sub>z</sub> and position ($r$+0.1,0) to analyze, and a frequency range given by a center frequency and bandwidth (same as the source pulse). Note that we wrap `Harminv` in `after_sources(...)`, since we only want to analyze the frequencies in the source-free system (the presence of a source will distort the analysis). At the end of the run, `Harminv` prints a series of lines (beginning with `harminv0:`) listing the frequencies it found:
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Basics.md-808-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Eigenmode_Source.md-164-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Eigenmode_Source.md:165:Note that this example involves a `ContinuousSource` for the time profile. For a pulsed source, the oblique planewave is incident at a given angle for only a *single* frequency component of the source. This is a fundamental feature of FDTD simulations and not of Meep per se. Thus, to simulate an incident planewave at multiple angles for a given frequency ω, you will need to do separate simulations involving different values of $\vec{k}$ (`k_point`) since each set of ($\vec{k}$,ω) specifying the Bloch-periodic boundaries and the frequency of the source will produce a different angle of the planewave. For more details, refer to Section 4.5 ("Efficient Frequency-Angle Coverage") in [Chapter 4](https://arxiv.org/abs/1301.5366) ("Electromagnetic Wave Source Conditions") of [Advances in FDTD Computational Electrodynamics: Photonics and Nanotechnology](https://www.amazon.com/Advances-FDTD-Computational-Electrodynamics-Nanotechnology/dp/1608071707).
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Eigenmode_Source.md-166-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/GDSII_Import.md-152-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/GDSII_Import.md:153:For a given waveguide separation distance (`d`), the simulation computes the transmittance of Ports 2, 3, and 4. The transmittance is the square of the [S-parameter](https://en.wikipedia.org/wiki/Scattering_parameters) which is equivalent to the [mode coefficient](Mode_Decomposition.md). There is an additional mode monitor at Port 1 to compute the input power from the adjacent eigenmode source; this is used for normalization when computing the transmittance. The eight layers of the GDSII file are each converted to a `Simulation` object: the upper and lower branches of the coupler are defined as a collection of [`Prism`](../Python_User_Interface.md#prism)s, the rectilinear regions of the source and flux monitor as a [`Volume`](../Python_User_Interface.md#volume) and [`FluxRegion`](../Python_User_Interface.md#fluxregion). The size of the cell in the $y$ direction is dependent on `d`. The default dimensionality is 2d. An optional input parameter (`three_d`) converts the geometry to 3d by extruding the coupler geometry in the *z* direction and adding an oxide layer beneath similar to a [silicon on insulator](https://en.wikipedia.org/wiki/Silicon_on_insulator) (SOI) substrate. A schematic of the coupler design in 3d generated using MayaVi is shown below.
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/GDSII_Import.md-154-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Local_Density_of_States.md-14-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Local_Density_of_States.md:15:where $Q^{(n)}=\omega^{(n)}/2\gamma^{(n)}$ is the dimensionless [quality factor](https://en.wikipedia.org/wiki/Q_factor) and $V^{(n)}$ is the modal volume. This represents another way to compute the LDOS. In this tutorial, we will verify this expression by comparing it to the earlier one.
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Local_Density_of_States.md-16-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Local_Density_of_States.md-18-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Local_Density_of_States.md:19:We will validate both this prediction and the LDOS calculations above by computing the LDOS at the center of the cavity, the point of peak $|\vec{E}|$, in two ways. First, we compute the LDOS directly from the power radiated by a dipole, Fourier-transforming the result of a pulse using the `dft_ldos` command. Second, we compute the cavity mode and its lifetime $Q$ using `Harminv` and then compute the LDOS by the Purcell formula shown above. The latter technique is much more efficient for high Q (small $w$), since one must run the simulation for a very long time to directly accumulate the Fourier transform of a slowly-decaying mode. The two calculations, we will demonstrate, agree to within discretization error, verifying the LDOS analysis above, and $Q/V$ is asymptotically linear on a semilog scale versus $1/w$ as predicted.
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Local_Density_of_States.md-20-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Material_Dispersion.md-161-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Material_Dispersion.md:162:The `run_k_points` function returns a *list of lists* of frequencies &mdash; one list of complex frequencies for each *k* point &mdash; which we store in the `all_freqs` variable. Finally, we want to loop over this list and print out the corresponding ε via the ratio (ck/ω)$^2$ as described above. To do this, we will use Python's `zip` function which combines multiple lists into one:
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Material_Dispersion.md-163-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Mode_Decomposition.md-249-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Mode_Decomposition.md:250:Note the use of the keyword parameter argument `eig_parity=mp.ODD_Z+mp.EVEN_Y` in the call to `get_eigenmode_coefficients`. This is important for specifying **non-degenerate** modes in MPB since the `k_point` is (0,0,0). `ODD_Z` is for modes with $E_z$ polarization. `EVEN_Y` is necessary since each diffraction order which is based on a given k<sub>x</sub> consists of *two* modes: one going in the +y direction and the other in the -y direction. `EVEN_Y` forces MPB to compute only the +k<sub>y</sub> + -k<sub>y</sub> (cosine) mode. As a result, the total transmittance must be halved in this case to obtain the transmittance for the individual +k<sub>y</sub> or -k<sub>y</sub> mode. For `ODD_Y`, MPB will compute the +k<sub>y</sub> - -k<sub>y</sub> (sine) mode but this will have zero power because the source is even. If the $y$ parity is left out, MPB will return a random superposition of the cosine and sine modes. Alternatively, in this example an input planewave with H<sub>z</sub> instead of $E_z$ polarization can be used which requires `eig_parity=mp.EVEN_Z+mp.ODD_Y` as well as an odd mirror symmetry plane in *y*. Finally, note the use of `add_flux` instead of `add_mode_monitor` when using symmetries.
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Mode_Decomposition.md-251-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Near_to_Far_Field_Spectra.md-92-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Near_to_Far_Field_Spectra.md:93:For the second of two cases, we use the `get_farfield` routine to compute the far fields by looping over a set of 100 equally-spaced points along the circumference of a circle with radius of 1 mm. The six far field components ($E_x$, $E_y$, $E_z$, $H_x$, $H_y$, $H_z$) are stored as separate arrays of complex numbers. From the far fields at each point $\mathbf{r}$, we compute the outgoing or radial flux: $\sqrt{P_x^2+P_y^2}$, where $P_x$ and $P_y$ are the components of the Poynting vector $\mathbf{P}(\mathbf{r})=(P_x,P_y,P_z)=\mathrm{Re}\, \mathbf{E}(\mathbf{r})^*\times\mathbf{H}(\mathbf{r})$. Note that $P_z$ is always 0 since this is a 2d simulation. The total flux is computed and the three flux values are displayed.
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Near_to_Far_Field_Spectra.md-94-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Optical_Forces.md-117-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Optical_Forces.md:118:There are two important items to note in `parallel_waveguide`: (1) a single flux surface is used to compute the Poynting flux in $z$ which spans an area slightly larger than both waveguides rather than two separate flux surfaces (one for each waveguide). This is because in the limit of small separation, two flux surfaces overlap whereas the total power through a single flux surface need, by symmetry, only be halved in order to determine the value for just one of the two waveguides. (2) Instead of defining a closed, four-sided "box" surrounding the waveguides, the MST is computed along just two $y$-oriented lines (to obtain the force in the $x$ direction) with different `weight` values to correctly sum the total force. By symmetry, the force in the $y$ direction is zero and need not be computed. Choosing a suitable runtime requires some care. A large runtime is necessary to obtain the steady-state response but this will also lead to large values for the discrete Fourier-transformed fields used to compute both the flux and the MST. Large floating-point numbers may contain [roundoff errors](https://en.wikipedia.org/wiki/Round-off_error).
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Optical_Forces.md-119-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-88-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md:89:The source will now be the usual Gaussian pulse centered at `fcen`, located at one edge of the cell just outside the PML, at `x = - 0.5 * sx + dpml`. Ideally, we would excite exactly the fundamental mode of the waveguide, but it is good enough to just excite it with a line source. Moreover, since we are interested in the $P$ polarization (electric field in the plane), we will excite it with a $J_y$ current source (transverse to the propagation direction), which is specified as `Ey`:
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-90-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-277-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md:278:The results, shown above, are exactly what we expected: at first, an exponential increase of $Q$ with `N`, and then a saturation at $Q_r \approx 8750$. However, when we look at the Harminv output for larger `N`, something strange happens &mdash; it starts to find *more modes*! For example, at `N=16`, the output is:
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-279-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-306-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md:307:Let us briefly review the problem. In a periodic system of this sort, the eigen-solutions can be expressed in the form of *Bloch modes*: a periodic *Bloch envelope* multiplied by a planewave $\exp[i(\mathbf{k}\cdot\mathbf{x}-ω t)]$, where **k** is the *Bloch wavevector*. We wish to find the *bands* $ω(\mathbf{k})$. In this case, there is only *one* direction of periodicity, so we only have one wavevector component $k_x$. Moreover, the solutions are periodic functions of this wavevector: for a unit-period structure, $k_x$ and $k_x+2\pi$ are redundant. Also, $k_x$ and $-k_x$ are redundant by time-reversal symmetry, so we only need to look for solutions in the *irreducible Brillouin zone* from $k_x=0$ to $k_x=\pi$.
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-308-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-374-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md:375:Here, we have used Meep's built-in `interpolate` function to interpolate a set of 19 $\mathbf{k}$ points between $\mathbf{k} = 0$ and $\mathbf{k} = 0.5 \cdot 2π \hat{\mathbf{x}}$, to cover the irreducible Brillouin zone. This function automatically runs Harminv, using the frequency range and location taken from the Gaussian source in the `sources` list. It also calls `output_epsilon`. The output is not only the usual `harminv:` lines, but it also outputs a series of lines like:
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-376-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md-38-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md:39:The key thing is to set the `dimensions` parameter to `CYLINDRICAL`. This means that all vectors will represent ($r$,φ,$z$) coordinates instead of ($x$,$y$,$z$). The computational cell in the $r$ direction is of size `sr = r + w + pad + dpml`, and runs from `0` to `sr` (by default) rather than from `-sr/2` to `sr/2` as it would for any other dimension. Note that our $z$ size is 0 because it is in 2d. The φ size is also 0, corresponding to the continuous rotational symmetry. A finite φ size might correspond to discrete rotational symmetry, but this is not currently supported.
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md-40-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md-86-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md:87:At the very end, we'll also output one period of the fields to make movies, etcetera. A single field output would be a 1d dataset along the $r$ direction, so to make things more interesting we'll use `to_appended` to append these datasets to a single HDF5 file to get an $r \times t$ 2d dataset. We'll also use `in_volume` to specify a larger output volume than just the computational cell: in particular, we'll output from `-sr` to `sr` in the $r$ direction, where Meep will automatically infer the $-r$ field values from the reflection symmetry.
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md-88-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md-133-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md:134:The problem is twofold. First, there is some signal-processing error in determining $Q$ in the 2d case, as indicated by the "error" column of the `harminv` output which is only 4e-7 for the 2d simulation vs. 6e-11 for the cylindrical case. We can bring this error down by running with a narrower bandwidth source, which excites just one mode and gives a cleaner signal, or by analyzing over a longer time than 200. Doing the former, we find that the 2d value of $Q$ at a resolution of 20 should really be $Q$=343. Second, [PML](../Perfectly_Matched_Layer.md) absorbing layers are really designed to absorb planewaves incident on flat interfaces, but here we have a *cylindrical* PML layer. Because of this, there are larger numerical reflections from the PML in the cylindrical simulation, which we can rectify by pushing the PML out to a larger radius (i.e. using a larger value of `pad`) and/or increasing the PML thickness (increasing `dpml`) so that it turns on more adiabatically. In the cylindrical simulation for `resolution = 20`, if we increase to `dpml = 16`, we get $Q$=343, which is in much better agreement with the 2d calculation and if we increase to `dpml = 32` we get the same $Q$=343, so it seems to be converged.
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md-135-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Third_Harmonic_Generation.md-6-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Third_Harmonic_Generation.md:7:Since this is a 1d calculation, we could implement it via a 2d cell of `Vector3(S,0,0)`, specifying periodic boundary conditions in the $y$ direction. However, this is slightly inefficient since the $y$ periodic boundaries are implemented internally via extra "ghost pixels" in the $y$ direction. Instead, Meep has special support for 1d simulations in the $z$ direction. To use this, we must explicitly set `dimensions` to `1`, and in that case we can *only* use $E_x$ (and $D_x$) and $H_y$ field components. This involves no loss of generality because of the symmetry of the problem.
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Third_Harmonic_Generation.md-8-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Third_Harmonic_Generation.md-98-
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Third_Harmonic_Generation.md:99:We could print these with more `display_fluxes` lines, but it is nice to print these on a single line along with χ$^{(3)}$ and the amplitude, so that we can eventually put them all into one table in our plotting program. To do this, we'll use the lower-level function `get_fluxes(trans1)`, which returns a list of the flux values, and take the first element of the list since there is only one:
meep-mpi-default-1.12.0/doc/docs/Python_Tutorials/Third_Harmonic_Generation.md-100-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-97-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:98:Explicitly specifies the dimensionality of the simulation, if the value is less than 3. If the value is 3 (the default), then the dimensions are automatically reduced to 2 if possible when `cell_size` in the $z$ direction is `0`. If `dimensions` is the special value of `CYLINDRICAL`, then cylindrical coordinates are used and the $x$ and $z$ dimensions are interpreted as $r$ and $z$, respectively. If `dimensions` is 1, then the cell must be along the $z$ direction and only $E_x$ and $H_y$ field components are permitted. If `dimensions` is 2, then the cell must be in the $xy$ plane.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-99-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-101-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:102:For `CYLINDRICAL` simulations, specifies that the angular $\phi$ dependence of the fields is of the form $e^{im\phi}$ (default is `m=0`). If the simulation cell includes the origin $r=0$, then `m` must be an integer.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-103-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-105-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:106:For `CYLINDRICAL` simulations with |*m*| &gt; 1, compute more accurate fields near the origin $r=0$ at the expense of requiring a smaller Courant factor. Empirically, when this option is set to `True`, a Courant factor of roughly $\min[0.5, 1 / (|m| + 0.5)]$ or smaller seems to be needed. Default is `False`, in which case the $D_r$, $D_z$, and $B_r$ fields within |*m*| pixels of the origin are forced to zero, which usually ensures stability with the default Courant factor of 0.5, at the expense of slowing convergence of the fields near $r=0$.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-107-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-113-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:114:If `False` (the default), then the boundaries are perfect metallic (zero electric field). If a `Vector3`, then the boundaries are Bloch-periodic: the fields at one side are $\exp(i\mathbf{k}\cdot\mathbf{R})$ times the fields at the other side, separated by the lattice vector $\mathbf{R}$. A non-zero `Vector3` will produce complex fields. The `k_point` vector is specified in Cartesian coordinates in units of 2π/distance. Note: this is *different* from [MPB](https://mpb.readthedocs.io), equivalent to taking MPB's `k_points` through its function `reciprocal->cartesian`.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-115-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-117-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:118:A 2d cell (i.e., `dimensions=2`) combined with a `k_point` that has a *non-zero* component in $z$ would normally result in a 3d simulation with complex fields. However, by default (`kz_2d="complex"`), Meep will use a 2d computational cell in which $k_z$ is incorporated as an additional term in Maxwell's equations, which still results in complex fields but greatly improved performance.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-119-Setting `kz_2d="3d"` will instead use a 3d cell that is one pixel thick (with Bloch-periodic boundary conditions), which is considerably more expensive. The third possibility, `kz_2d="real/imag"`, saves an additional factor of two by storing some field components as purely real and some as purely imaginary in a "real" field, but this option requires some care to use and will be explained elsewhere in the future.
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-333-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:334:The scale factor σ. You can also specify an anisotropic σ tensor by using the property `sigma_diag` which takes three numbers or a `Vector3` to give the σ$_n$ tensor diagonal, and `sigma_offdiag` which specifies the offdiagonal elements (defaults to 0). That is, `sigma_diag=mp.Vector3(a, b, c)` and `sigma_offdiag=mp.Vector3(u, v, w)` corresponds to a σ tensor
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-335-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-736-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:737:Specify the direction of the boundaries to put the PML layers next to. e.g. if `X`, then specifies PML on the $\pm x$ boundaries (depending on the value of `side`, below). Default is the special value `ALL`, which puts PML layers on the boundaries in all directions.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-738-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-740-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:741:Specify which side, `Low` or `High` of the boundary or boundaries to put PML on. e.g. if side is `Low` and direction is `X`, then a PML layer is added to the $-x$ boundary. Default is the special value `ALL`, which puts PML layers on both sides.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-742-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-748-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:749:By default, Meep turns on the PML conductivity quadratically within the PML layer &mdash; one doesn't want to turn it on suddenly, because that exacerbates reflections due to the discretization. More generally, with `pml_profile` one can specify an arbitrary PML "profile" function $f(u)$ that determines the shape of the PML absorption profile up to an overall constant factor. *u* goes from 0 to 1 at the start and end of the PML, and the default is $f(u) = u^2$. In some cases where a very thick PML is required, such as in a periodic medium (where there is technically no such thing as a true PML, only a pseudo-PML), it can be advantageous to turn on the PML absorption more smoothly. See [Optics Express, Vol. 16, pp. 11376-92, 2008](http://www.opticsinfobase.org/abstract.cfm?URI=oe-16-15-11376). For example, one can use a cubic profile $f(u) = u^3$ by specifying `pml_profile=lambda u: u*u*u`.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-750-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-764-
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:765:The `Source` class is used to specify the current sources via the `Simulation.sources` attribute. Note that all sources in Meep are separable in time and space, i.e. of the form $\mathbf{J}(\mathbf{x},t) = \mathbf{A}(\mathbf{x}) \cdot f(t)$ for some functions $\mathbf{A}$ and $f$. Non-separable sources can be simulated, however, by modifying the sources after each time step. When real fields are being used (which is the default in many cases; see `Simulation.force_complex_fields`), only the real part of the current source is used.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-766-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-806-
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:807:This is a subclass of `Source` and has **all of the properties** of `Source` above. However, you normally do not specify a `component`. Instead of `component`, the current source components and amplitude profile are computed by calling MPB to compute the modes, $\mathbf{u}_{n,\mathbf{k}}(\mathbf{r}) e^{i \mathbf{k} \cdot \mathbf{r}}$, of the dielectric profile in the region given by the `size` and `center` of the source, with the modes computed as if the *source region were repeated periodically in all directions*. If an `amplitude` and/or `amp_func` are supplied, they are *multiplied* by this current profile. The desired eigenmode and other features are specified by the following properties:
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-808-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-814-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:815:By default (if `eig_match_freq` is `True`), Meep tries to find a mode with the same frequency ω<sub>*n*</sub>(**k**) as the `src` property (above), by scanning **k** vectors in the given `direction` using MPB's `find_k` functionality. Alternatively, if `eig_kpoint` is supplied, it is used as an initial guess for **k**. By default, `direction` is the direction normal to the source region, assuming `size` is $d$–1 dimensional in a $d$-dimensional simulation (e.g. a plane in 3d). If `direction` is set to `mp.NO_DIRECTION`, then `eig_kpoint` is not only the initial guess and the search direction of the **k** vectors, but is also taken to be the direction of the waveguide, allowing you to [launch modes in oblique ridge waveguides](Python_Tutorials/Eigenmode_Source.md#index-guided-modes-in-a-ridge-waveguide) (not perpendicular to the source plane).  If `eig_match_freq` is `False`, then the specific **k** vector of the desired mode is specified with  `eig_kpoint` (in Meep units of 2π/(unit length)). By default, the **k** components in the plane of the source region are zero.  However, if the source region spans the *entire* cell in some directions, and the cell has Bloch-periodic boundary conditions via the `k_point` parameter, then the mode's **k** components in those directions will match `k_point` so that the mode satisfies the Meep boundary conditions, regardless of `eig_kpoint`. Note that once **k** is either found by MPB, or specified by `eig_kpoint`, the field profile used to create the current sources corresponds to the [Bloch mode](https://en.wikipedia.org/wiki/Bloch_wave), $\mathbf{u}_{n,\mathbf{k}}(\mathbf{r})$, multiplied by the appropriate exponential factor, $e^{i \mathbf{k} \cdot \mathbf{r}}$.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-816-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-818-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:819:The parity (= polarization in 2d) of the mode to calculate, assuming the structure has $z$ and/or $y$ mirror symmetry *in the source region*, with respect to the `center` of the source region.  (In particular, it does not matter if your simulation as a whole has that symmetry, only the cross section where you are introducing the source.) If the structure has both $y$ and $z$ mirror symmetry, you can combine more than one of these, e.g. `EVEN_Z + ODD_Y`. Default is `NO_PARITY`, in which case MPB computes all of the bands which will still be even or odd if the structure has mirror symmetry, of course. This is especially useful in 2d simulations to restrict yourself to a desired polarization.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-820-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-900-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:901:How many `width`s the current decays for before it is cut off and set to zero &mdash; this applies for both turn-on and turn-off of the pulse. Default is 5.0. A larger value of `cutoff` will reduce the amount of high-frequency components that are introduced by the start/stop of the source, but will of course lead to longer simulation times. The peak of the Gaussian is reached at the time $t_0$=`start_time + cutoff*width`.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-902-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-915-$$
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:916:where $G(t)$ is the current (not the dipole moment). In this formula, $\Delta f$ is the `fwidth` of the source, $\omega_0$ is $2\pi$ times its `frequency,` and $t_0$ is the peak time discussed above. Note that this does not include any `amplitude` or `amp_func` factor that you specified for the source.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-917-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1060-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:1061:Given a `direction` constant, and a `mp.Volume`, returns the flux (the integral of $\Re [\mathbf{E}^* \times \mathbf{H}]$) in that volume. Most commonly, you specify a volume that is a plane or a line, and a direction perpendicular to it, e.g. `flux_in_box(d=mp.X,mp.Volume(center=mp.Vector3(0,0,0),size=mp.Vector3(0,1,1)))`. If the `center` and `size` arguments are provided instead of `box`, Meep will construct the appropriate volume for you.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1062-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1064-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:1065:Given a `mp.Volume`, returns the integral of the electric-field energy $\mathbf{E}^* \cdot \mathbf{D}/2$ in the given volume. If the volume has zero size along a dimension, a lower-dimensional integral is used. If the `center` and `size` arguments are provided instead of `box`, Meep will construct the appropriate volume for you.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1066-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1068-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:1069:Given a `mp.Volume`, returns the integral of the magnetic-field energy $\mathbf{H}^* \cdot \mathbf{B}/2$ in the given volume. If the volume has zero size along a dimension, a lower-dimensional integral is used. If the `center` and `size` arguments are provided instead of `box`, Meep will construct the appropriate volume for you.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1070-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1072-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:1073:Given a `mp.Volume`, returns the integral of the electric- and magnetic-field energy $\mathbf{E}^* \cdot \mathbf{D}/2 + \mathbf{H}^* \cdot \mathbf{B}/2$ in the given volume. If the volume has zero size along a dimension, a lower-dimensional integral is used. If the `center` and `size` arguments are provided instead of `box`, Meep will construct the appropriate volume for you.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1074-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1221-
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:1222:The flux object should be created using `add_mode_monitor`.  (You could also use `add_flux`, but with `add_flux` you need to be more careful about symmetries that bisect the flux plane: the `add_flux` object should only be used with `get_eigenmode_coefficients` for modes of the same symmetry, e.g. constrained via `eig_parity`.  On the other hand, the performance of `add_flux` planes benefits more from symmetry.) `eig_vol` is the volume passed to [MPB](https://mpb.readthedocs.io) for the eigenmode calculation (based on interpolating the discretized materials from the Yee grid); in most cases this will simply be the volume over which the frequency-domain fields are tabulated, which is the default (i.e. `flux.where`). `eig_parity` should be one of [`mp.NO_PARITY` (default), `mp.EVEN_Z`, `mp.ODD_Z`, `mp.EVEN_Y`, `mp.ODD_Y`]. It is the parity (= polarization in 2d) of the mode to calculate, assuming the structure has $z$ and/or $y$ mirror symmetry *in the source region*, just as for `EigenmodeSource` above. If the structure has both $y$ and $z$ mirror symmetry, you can combine more than one of these, e.g. `EVEN_Z+ODD_Y`. Default is `NO_PARITY`, in which case MPB computes all of the bands which will still be even or odd if the structure has mirror symmetry, of course. This is especially useful in 2d simulations to restrict yourself to a desired polarization. `eig_resolution` is the spatial resolution to use in MPB for the eigenmode calculations. This defaults to the same resolution as Meep, but you can use a higher resolution in which case the structure is linearly interpolated from the Meep pixels. `eig_tolerance` is the tolerance to use in the MPB eigensolver. MPB terminates when the eigenvalues stop changing to less than this fractional tolerance. Defaults to `1e-12`.  (Note that this is the tolerance for the frequency eigenvalue ω; the tolerance for the mode profile is effectively the square root of this.) For examples, see [Tutorial/Mode Decomposition](Python_Tutorials/Mode_Decomposition.md).
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1223-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1324-
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:1325:Most commonly, you will want to **normalize** the force spectrum in some way, just as for flux spectra. Most simply, you could divide two different force spectra to compute the ratio of forces on two objects. Often, you will divide a force spectrum by a flux spectrum, to divide the force $F$ by the incident power $P$ on an object, in order to compute the useful dimensionless ratio $Fc$/$P$ where $c=1$ in Meep units. For example, it is a simple exercise to show that the force $F$ on a perfectly reflecting mirror with normal-incident power $P$ satisfies $Fc$/$P=2$, and for a perfectly absorbing (black) surface $Fc$/$P=1$.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1326-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1464-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:1465:Given an HDF5 file name `fname` (does *not* include the `.h5` suffix), a `Volume` given by `where` (may be 0d, 1d, 2d, or 3d), and a `resolution` (in grid points / distance unit), outputs the far fields in `where` (which may lie *outside* the cell) in a grid with the given resolution (which may differ from the FDTD grid resolution) to the HDF5 file as a set of twelve array datasets `ex.r`, `ex.i`, ..., `hz.r`, `hz.i`, giving the real and imaginary parts of the Fourier-transformed $E$ and $H$ fields on this grid. Each dataset is an nx&#215;ny&#215;nz&#215;nfreq 4d array of space&#215;frequency although dimensions that =1 are omitted. The volume can optionally be specified via `center` and `size`.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1466-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1760-meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:1761:Given a list of `Vector3`, `k_points` of *k* vectors, runs a simulation for each *k* point (i.e. specifying Bloch-periodic boundary conditions) and extracts the eigen-frequencies, and returns a list of the complex frequencies. In particular, you should have specified one or more Gaussian sources. It will run the simulation until the sources are turned off plus an additional $t$ time units. It will run [Harminv](#harminv) at the same point/component as the first Gaussian source and look for modes in the union of the frequency ranges for all sources. Returns a list of lists of frequencies (one list of frequencies for each *k*). Also prints out a comma-delimited list of frequencies, prefixed by `freqs:`, and their imaginary parts, prefixed by `freqs-im:`. See [Tutorial/Resonant Modes and Transmission in a Waveguide Cavity](Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md).
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1762-
##############################################
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1817-
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md:1818:It is often useful to use the h5topng `-C` or `-A` options to overlay the dielectric function when outputting fields. To do this, you need to know the name of the dielectric-function `.h5` file which must have been previously output by `output_epsilon`. To make this easier, a built-in shell variable `$EPS` is provided which refers to the last-output dielectric-function `.h5` file. So, for example `output_png(mp.Ez,"-C $EPS")` will output the $E_z$ field and overlay the dielectric contours.
meep-mpi-default-1.12.0/doc/docs/Python_User_Interface.md-1819-
##############################################
meep-mpi-default-1.12.0/doc/docs/Replacements.vim-22-:%s/\\)/$/g
meep-mpi-default-1.12.0/doc/docs/Replacements.vim:23::%s/^`\(.*\)`$/```\r\1\r```\r/g
meep-mpi-default-1.12.0/doc/docs/Replacements.vim-24-:%s/```\n\n```\n//g
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Basics.md-72-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Basics.md:73:We gave the source a frequency of 0.15, and specified a `continuous-src` which is just a fixed-frequency sinusoid $\exp(-i \omega t)$ that by default is turned on at $t$=0. Recall that, in [Meep units](../Introduction.md#units-in-meep), frequency is specified in units of 2πc, which is equivalent to the inverse of the vacuum wavelength. Thus, 0.15 corresponds to a vacuum wavelength of about 1/0.15=6.67 μm, or a wavelength of about 2 μm in the ε=12 material &mdash; thus, our waveguide is half a wavelength wide, which should hopefully make it single mode. In fact, the cutoff for single-mode behavior in this waveguide is analytically solvable, and corresponds to a frequency of 1/2√11 or roughly 0.15076. Note also that to specify a J<sub>z</sub>, we specify a component $Ez$ (e.g. if we wanted a magnetic current, we would specify `Hx`, `Hy`, or `Hz`). The current is located at (-7,0), which is 1 μm to the right of the left edge of the cell &mdash; we always want to leave a little space between sources and the cell boundaries, to keep the boundary conditions from interfering with them.
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Basics.md-74-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Basics.md-170-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Basics.md:171:That is, the file contains a single dataset `ez` that is a 160$\times$160$\times$333 array, where the last dimension is time. This is rather a large file, 66MB; later, we'll see ways to reduce this size if we only want images. We have a number of choices of how to output the fields. To output a single time slice, we can use the same `h5topng` command as before, but with an additional `-t` option to specify the time index: e.g. `h5topng -t 332` will output the last time slice, similar to before. Instead, let's create an animation of the fields as a function of time. First, we have to create images for *all* of the time slices:
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Basics.md-172-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Basics.md-602-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Basics.md:603:The signal processing is performed by the `harminv` function, which takes four arguments: the field component E<sub>z</sub> and position ($r$+0.1,0) to analyze, and a frequency range given by a center frequency and bandwidth (same as the source pulse). Note that we wrap `harminv` in `(after-sources ...)`, since we only want to analyze the frequencies in the source-free system (the presence of a source will distort the analysis). At the end of the run, `harminv` prints a series of lines (beginning with `harminv0:`, to make it easy to `grep` for) listing the frequencies it found:
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Basics.md-604-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Casimir_Forces.md-143-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Casimir_Forces.md:144:where $c_n = 1$ if $n=0$ and $c_n=2$ otherwise, $L$ is the side length (if each side has a different length, then the functions $f_n(x)$ will differ for each side). An illustration of these functions for the system under consideration, compared to point sources, is shown below:
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Casimir_Forces.md-145-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Casimir_Forces.md-446-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Casimir_Forces.md:447:This new function $g(t)$ is computed in the function `make-casimir-g-kz`; use this value of $g(t)$ in `casimir-force-contrib`:
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Casimir_Forces.md-448-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Casimir_Forces.md-479-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Casimir_Forces.md:480:In cylindrical coordinates, all source surfaces and objects have size `no-size` in the $phi$-direction. Also, the source index passed to `casimir-force-contrib` is given by:
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Casimir_Forces.md-481-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Casimir_Forces.md-516-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Casimir_Forces.md:517:The arguments are similar to `casimir-force-contrib`, except that now we pass in the Bloch vector (which will be set inside of the function), and instead of a side index we simply pass in $S$, which is only one side of the source surface. As the program cannot detect the orientation of the surface if there is only one side, we have to explicitly multiply by the normal vector (given by `curr-side`). Otherwise, the computation proceeds as in the above cases, with the integration over $k_x$ and $k_y$ done outside of the program.
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Casimir_Forces.md-518-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Eigenmode_Source.md-146-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Eigenmode_Source.md:147:Note that this example involves a `continuous-source` for the time profile. For a pulsed source, the oblique planewave is incident at a given angle for only a *single* frequency component of the source. This is a fundamental feature of FDTD simulations and not of Meep per se. Thus, to simulate an incident planewave at multiple angles for a given frequency ω, you will need to do separate simulations involving different values of $\vec{k}$ (`k-point`) since each set of ($\vec{k}$,ω) specifying the Bloch-periodic boundaries and the frequency of the source will produce a different angle of the planewave. For more details, refer to Section 4.5 ("Efficient Frequency-Angle Coverage") in [Chapter 4](https://arxiv.org/abs/1301.5366) ("Electromagnetic Wave Source Conditions") of [Advances in FDTD Computational Electrodynamics: Photonics and Nanotechnology](https://www.amazon.com/Advances-FDTD-Computational-Electrodynamics-Nanotechnology/dp/1608071707).
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Eigenmode_Source.md-148-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Local_Density_of_States.md-14-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Local_Density_of_States.md:15:where $Q^{(n)}=\omega^{(n)}/2\gamma^{(n)}$ is the dimensionless [quality factor](https://en.wikipedia.org/wiki/Q_factor) and $V^{(n)}$ is the modal volume. This represents another way to compute the LDOS. In this tutorial, we will verify this expression by comparing it to the earlier one.
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Local_Density_of_States.md-16-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Local_Density_of_States.md-18-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Local_Density_of_States.md:19:We will validate both this prediction and the LDOS calculations above by computing the LDOS at the center of the cavity, the point of peak $|\vec{E}|$, in two ways. First, we compute the LDOS directly from the power radiated by a dipole, Fourier-transforming the result of a pulse using the `dft-ldos` command. Second, we compute the cavity mode and its lifetime $Q$ using `harminv` and then compute the LDOS by the Purcell formula shown above. The latter technique is much more efficient for high Q (small $w$), since one must run the simulation for a very long time to directly accumulate the Fourier transform of a slowly-decaying mode. The two calculations, we will demonstrate, agree to within discretization error, verifying the LDOS analysis above, and $Q/V$ is asymptotically linear on a semilog scale versus $1/w$ as predicted.
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Local_Density_of_States.md-20-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Material_Dispersion.md-150-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Material_Dispersion.md:151:The `run-k-points` function returns a *list of lists* of frequencies &mdash; one list of complex frequencies for each *k* point &mdash; which we store in the `all-freqs` variable. Finally, we want to loop over this list and print out the corresponding ε via the ratio (ck/ω)$^2$ as described above. To do this, we will use the Scheme `map` function, which applies a given function to every element of a list (or lists), and since we have a list of lists we'll actually nest two `map` functions:
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Material_Dispersion.md-152-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Mode_Decomposition.md-262-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Mode_Decomposition.md:263:Note the use of the keyword parameter argument `#eig-parity (+ ODD-Z EVEN-Y)` in the call to `get-eigenmode-coefficients`. This is important for specifying **non-degenerate** modes in MPB since the `k-point` is (0,0,0). `ODD-Z` is for modes with $E_z$ polarization. `EVEN-Y` is necessary since each diffraction order which is based on a given k<sub>x</sub> consists of *two* modes: one going in the +y direction and the other in the -y direction. `EVEN-Y` forces MPB to compute only the +k<sub>y</sub> + -k<sub>y</sub> (cosine) mode. As a result, the total transmittance must be halved in this case to obtain the transmittance for the individual +k<sub>y</sub> or -k<sub>y</sub> mode. For `ODD-Y`, MPB will compute the +k<sub>y</sub> - -k<sub>y</sub> (sine) mode but this will have zero power because the source is even. If the $y$ parity is left out, MPB will return a random superposition of the cosine and sine modes. Alternatively, in this example an input planewave with H<sub>z</sub> instead of $E_z$ polarization can be used which requires `#eig_parity (+ EVEN-Z ODD-Y)` as well as an odd mirror symmetry plane in *y*. Finally, note the use of `add-flux` instead of `add-mode-monitor` when using symmetries.
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Mode_Decomposition.md-264-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Near_to_Far_Field_Spectra.md-107-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Near_to_Far_Field_Spectra.md:108:From the far fields at each point $\mathbf{r}$, we compute using Matlab/Octave the outgoing or radial flux: $\sqrt{P_x^2+P_y^2}$, where P$_x$ and P$_y$ are the components of the Poynting vector $\mathbf{P}(\mathbf{r})=(P_x,P_y,P_z)=\mathrm{Re}\, \mathbf{E}(\mathbf{r})^*\times\mathbf{H}(\mathbf{r})$. Note that $P_z$ is always 0 since this is a 2d simulation. The total flux is then computed and displayed:
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Near_to_Far_Field_Spectra.md-109-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-83-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md:84:The source will now be the usual Gaussian pulse centered at `fcen`, located at one edge of the cell just outside the PML, at `x = -0.5*sx + dpml`. Ideally, we would excite exactly the fundamental mode of the waveguide, but it is good enough to just excite it with a line source. Moreover, since we are interested in the $P$ polarization (electric field in the plane), we will excite it with a $J_y$ current source (transverse to the propagation direction), which is specified as `Ey`:
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-85-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-260-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md:261:The results, shown above, are exactly what we expected: at first, an exponential increase of $Q$ with `N`, and then a saturation at $Q_r \approx 8750$. However, when we look at the Harminv output for larger `N`, something strange happens &mdash; it starts to find *more modes*! For example, at `N=16`, the output is:
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-262-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-289-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md:290:Let us briefly review the problem. In a periodic system of this sort, the eigen-solutions can be expressed in the form of *Bloch modes*: a periodic *Bloch envelope* multiplied by a planewave $\exp[i(\mathbf{k}\cdot\mathbf{x}-ω t)]$, where **k** is the *Bloch wavevector*. We wish to find the *bands* $ω(\mathbf{k})$. In this case, there is only *one* direction of periodicity, so we only have one wavevector component $k_x$. Moreover, the solutions are periodic functions of this wavevector: for a unit-period structure, $k_x$ and $k_x+2\pi$ are redundant. Also, $k_x$ and $-k_x$ are redundant by time-reversal symmetry, so we only need to look for solutions in the *irreducible Brillouin zone* from $k_x=0$ to $k_x=\pi$.
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-291-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-350-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md:351:Here, we have used [libctl](https://libctl.readthedocs.io)'s built-in `interpolate` function to interpolate a set of 19 $\mathbf{k}$ points between $\mathbf{k} = 0$ and $\mathbf{k} = 0.5 \cdot 2π \hat{\mathbf{x}}$, to cover the irreducible Brillouin zone. `run-k-points` automatically runs `harminv`, using the frequency range and location taken from the Gaussian source in the `sources` list. It also calls `output-epsilon`. The output is not only the usual `harminv:` lines, but it also outputs a series of lines like:
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity.md-352-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md-29-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md:30:The key thing is to set the `dimensions` parameter to `CYLINDRICAL`. This means that all vectors will represent ($r$,φ,$z$) coordinates instead of ($x$,$y$,$z$). The computational cell in the $r$ direction is of size `sr = r + w + pad + dpml`, and runs from `0` to `sr` (by default) rather than from `-sr/2` to `sr/2` as it would for any other dimension. Note that our $z$ size is `no-size` because it is in 2d. The φ size is also `no-size`, corresponding to the continuous rotational symmetry. A finite φ size might correspond to discrete rotational symmetry, but this is not currently supported.
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md-31-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md-69-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md:70:At the very end, we'll also output one period of the fields to make movies, etcetera. A single field output would be a 1d dataset along the $r$ direction, so to make things more interesting we'll use `to-appended` to append these datasets to a single HDF5 file to get an $r \times t$ 2d dataset. We'll also use `in-volume` to specify a larger output volume than just the computational cell: in particular, we'll output from `-sr` to `sr` in the $r$ direction, where Meep will automatically infer the $-r$ field values from the reflection symmetry.
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md-71-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md-105-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md:106:The problem is twofold. First, there is some signal-processing error in determining $Q$ in the 2d case, as indicated by the "error" column of the `harminv` output which is only 4e-7 for the 2d simulation vs. 6e-11 for the cylindrical case. We can bring this error down by running with a narrower bandwidth source, which excites just one mode and gives a cleaner signal, or by analyzing over a longer time than 200. Doing the former, we find that the 2d value of $Q$ at a resolution of 20 should really be $Q$=343. Second, [PML](../Perfectly_Matched_Layer.md) absorbing layers are really designed to absorb planewaves incident on flat interfaces, but here we have a *cylindrical* PML layer. Because of this, there are larger numerical reflections from the PML in the cylindrical simulation, which we can rectify by pushing the PML out to a larger radius (i.e. using a larger value of `pad`) and/or increasing the PML thickness (increasing `dpml`) so that it turns on more adiabatically. In the cylindrical simulation for `resolution=20`, if we increase to `dpml=16`, we get $Q$=343, which is in much better agreement with the 2d calculation and if we increase to `dpml=32` we get the same $Q$=343, so it seems to be converged.
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Ring_Resonator_in_Cylindrical_Coordinates.md-107-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Third_Harmonic_Generation.md-6-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Third_Harmonic_Generation.md:7:Since this is a 1d calculation, we could implement it via a 2d cell of `(size S no-size no-size)`, specifying periodic boundary conditions in the $y$ direction. However, this is slightly inefficient since the $y$ periodic boundaries are implemented internally via extra "ghost pixels" in the $y$ direction. Instead, Meep has special support for 1d simulations in the $z$ direction. To use this, we must explicitly set `dimensions` to `1`, and in that case we can *only* use $E_x$ (and $D_x$) and $H_y$ field components. This involves no loss of generality because of the symmetry of the problem.
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Third_Harmonic_Generation.md-8-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Third_Harmonic_Generation.md-85-
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Third_Harmonic_Generation.md:86:We could print these with more `display-fluxes` lines, but it is nice to print these on a single line along with χ$^{(3)}$ and the amplitude, so that we can eventually put them all into one table in our plotting program. To do this, we'll use the lower-level function `(get-fluxes trans1)`, which returns a list of the flux values, and take the first element of the list since there is only one:
meep-mpi-default-1.12.0/doc/docs/Scheme_Tutorials/Third_Harmonic_Generation.md-87-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-49-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:50:Explicitly specifies the dimensionality of the simulation, if the value is less than 3. If the value is 3 (the default), then the dimensions are automatically reduced to 2 if possible when `geometry-lattice` size in the $z$ direction is `no-size`. If `dimensions` is the special value of `CYLINDRICAL`, then cylindrical coordinates are used and the $x$ and $z$ dimensions are interpreted as $r$ and $z$, respectively. If `dimensions` is 1, then the cell must be along the $z$ direction and only $E_x$ and $H_y$ field components are permitted. If `dimensions` is 2, then the cell must be in the $xy$ plane.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-51-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-53-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:54:For `CYLINDRICAL` simulations, specifies that the angular $\phi$ dependence of the fields is of the form $e^{im\phi}$ (default is `m=0`). If the simulation cell includes the origin $r=0$, then `m` must be an integer.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-55-
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-56-**`accurate-fields-near-cylorigin?` [`boolean`]**
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:57:—For `CYLINDRICAL` simulations with |*m*| &gt; 1, compute more accurate fields near the origin $r=0$ at the expense of requiring a smaller Courant factor. Empirically, when this option is set to `true`, a Courant factor of roughly $\min[0.5, 1 / (|m| + 0.5)]$ or smaller seems to be needed. Default is `false`, in which case the $D_r$, $D_z$, and $B_r$ fields within |*m*| pixels of the origin are forced to zero, which usually ensures stability with the default Courant factor of 0.5, at the expense of slowing convergence of the fields near $r=0$.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-58-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-64-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:65:If `false` (the default), then the boundaries are perfect metallic (zero electric field). If a `vector3`, then the boundaries are Bloch-periodic: the fields at one side are $\exp(i\mathbf{k}\cdot\mathbf{R})$ times the fields at the other side, separated by the lattice vector $\mathbf{R}$. A non-zero `vector3` will produce complex fields. The `k-point` vector is specified in Cartesian coordinates in units of 2π/distance. Note: this is *different* from [MPB](https://mpb.readthedocs.io), equivalent to taking MPB's `k-points` through its function `reciprocal->cartesian`.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-66-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-68-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:69:By default, a 2d cell (i.e., `dimensions` is `2`) combined with a `k-point` that has a *non-zero* component in $z$ results in a 3d simulation with complex fields. However, by setting `special-kz?` to `true`, Meep will use a 2d cell and real fields (if the $x$ and $y$ components of `k-point` are zero) which improves performance.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-70-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-271-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:272:The scale factor σ. You can also specify an anisotropic σ tensor by using the property `sigma-diag` which takes three numbers or a `vector3` to give the σ$_n$ tensor diagonal, and `sigma-offdiag` which specifies the offdiagonal elements (defaults to 0). That is, `(sigma-diag a b c)` and `(sigma-offdiag u v w)` corresponds to a σ tensor
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-273-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-591-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:592:Specify the direction of the boundaries to put the PML layers next to. e.g. if `X`, then specifies PML on the $\pm x$ boundaries (depending on the value of `side`, below). Default is the special value `ALL`, which puts PML layers on the boundaries in all directions.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-593-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-595-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:596:Specify which side, `Low` or `High` of the boundary or boundaries to put PML on. e.g. if side is `Low` and direction is `X`, then a PML layer is added to the $-x$ boundary. Default is the special value `ALL`, which puts PML layers on both sides.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-597-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-607-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:608:By default, Meep turns on the PML conductivity quadratically within the PML layer &mdash; one doesn't want to turn it on suddenly, because that exacerbates reflections due to the discretization. More generally, with `pml-profile` one can specify an arbitrary PML "profile" function $f(u)$ that determines the shape of the PML absorption profile up to an overall constant factor. *u* goes from 0 to 1 at the start and end of the PML, and the default is $f(u) = u^2$. In some cases where a very thick PML is required, such as in a periodic medium (where there is technically no such thing as a true PML, only a pseudo-PML), it can be advantageous to turn on the PML absorption more smoothly. See [Optics Express, Vol. 16, pp. 11376-92, 2008](http://www.opticsinfobase.org/abstract.cfm?URI=oe-16-15-11376). For example, one can use a cubic profile $f(u) = u^3$ by specifying `(pml-profile (lambda (u) (* u u u)))`.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-609-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-623-
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:624:The `source` class is used to specify the current sources via the `sources` input variable. Note that all sources in Meep are separable in time and space, i.e. of the form $\mathbf{J}(\mathbf{x},t) = \mathbf{A}(\mathbf{x}) \cdot f(t)$ for some functions $\mathbf{A}$ and $f$. Non-separable sources can be simulated, however, by modifying the sources after each time step. When real fields are being used (which is the default in many cases; see the `force-complex-fields?` input variable), only the real part of the current source is used.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-625-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-659-
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:660:This is a subclass of `source` and has **all of the properties** of `source` above. However, you normally do not specify a `component`. Instead of `component`, the current source components and amplitude profile are computed by calling MPB to compute the modes, $\mathbf{u}_{n,\mathbf{k}}(\mathbf{r}) e^{i \mathbf{k} \cdot \mathbf{r}}$, of the dielectric profile in the region given by the `size` and `center` of the source, with the modes computed as if the *source region were repeated periodically in all directions*. If an `amplitude` and/or `amp-func` are supplied, they are *multiplied* by this current profile. The desired eigenmode and other features are specified by the following properties:
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-661-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-667-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:668:By default (if `eig-match-freq?` is `true`), Meep tries to find a mode with the same frequency ω<sub>*n*</sub>(**k**) as the `src` property (above), by scanning **k** vectors in the given `direction` using MPB's `find-k` functionality. Alternatively, if `eig-kpoint` is supplied, it is used as an initial guess for **k**. By default, `direction` is the direction normal to the source region, assuming `size` is $d$–1 dimensional in a $d$-dimensional simulation (e.g. a plane in 3d). If `direction` is set to `NO-DIRECTION`, then `eig_kpoint` is not only the initial guess and the search direction of the **k** vectors, but is also taken to be the direction of the waveguide, allowing you to [launch modes in oblique ridge waveguides](Scheme_Tutorials/Eigenmode_Source.md#index-guided-modes-in-a-ridge-waveguide) (not perpendicular to the source plane). If `eig-match-freq?` is `false`, then the specific **k** vector of the desired mode is specified with `eig-kpoint` (in Meep units of 2π/(unit length)). By default, the **k** components in the plane of the source region are zero.  However, if the source region spans the *entire* cell in some directions, and the cell has Bloch-periodic boundary conditions via the `k-point` parameter, then the mode's **k** components in those directions will match `k-point` so that the mode satisfies the Meep boundary conditions, regardless of `eig-kpoint`. Note that once **k** is either found by MPB, or specified by `eig-kpoint`, the field profile used to create the current sources corresponds to the [Bloch mode](https://en.wikipedia.org/wiki/Bloch_wave), $\mathbf{u}_{n,\mathbf{k}}(\mathbf{r})$, multiplied by the appropriate exponential factor, $e^{i \mathbf{k} \cdot \mathbf{r}}$.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-669-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-671-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:672:The parity (= polarization in 2d) of the mode to calculate, assuming the structure has $z$ and/or $y$ mirror symmetry *in the source region*, with respect to the `center` of the source region.  (In particular, it does not matter if your simulation as a whole has that symmetry, only the cross section where you are introducing the source.) If the structure has both $y$ and $z$ mirror symmetry, you can combine more than one of these, e.g. `EVEN-Z + ODD-Y`. Default is `NO-PARITY`, in which case MPB computes all of the bands which will still be even or odd if the structure has mirror symmetry, of course. This is especially useful in 2d simulations to restrict yourself to a desired polarization.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-673-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-735-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:736:How many `width`s the current decays for before it is cut off and set to zero &mdash; this applies for both turn-on and turn-off of the pulse. Default is 5.0. A larger value of `cutoff` will reduce the amount of high-frequency components that are introduced by the start/stop of the source, but will of course lead to longer simulation times. The peak of the Gaussian is reached at the time $t_0$=`start-time + cutoff*width`.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-737-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-864-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:865:Given a `direction` constant, and a `meep::volume*`, returns the flux (the integral of $\Re [\mathbf{E}^* \times \mathbf{H}]$) in that volume. Most commonly, you specify a volume that is a plane or a line, and a direction perpendicular to it, e.g. `(flux-in-box `X (volume (center 0) (size 0 1 1)))`.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-866-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-1001-```
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:1002:The flux object must be created using `add-mode-monitor`.  (You could also use `add-flux`, but with `add_flux` you need to be more careful about symmetries that bisect the flux plane: the `add-flux` object should only be used with `get-eigenmode-coefficients` for modes of the same symmetry, e.g. constrained via `eig_parity`.  On the other hand, the performance of `add-flux` planes benefits more from symmetry.) `eig-vol` is the volume passed to [MPB](https://mpb.readthedocs.io) for the eigenmode calculation (based on interpolating the discretized materials from the Yee grid); in most cases this will simply be the volume over which the frequency-domain fields are tabulated, which is the default (i.e. `(meep-dft-flux-where-get flux)`). `eig-parity` should be one of [`NO-PARITY` (default), `EVEN-Z`, `ODD-Z`, `EVEN-Y`, `ODD-Y`]. It is the parity (= polarization in 2d) of the mode to calculate, assuming the structure has $z$ and/or $y$ mirror symmetry *in the source region*, just as for `eigenmode-source` above. If the structure has both $y$ and $z$ mirror symmetry, you can combine more than one of these, e.g. `(+ EVEN-Z ODD-Y)`. Default is `NO-PARITY`, in which case MPB computes all of the bands which will still be even or odd if the structure has mirror symmetry, of course. This is especially useful in 2d simulations to restrict yourself to a desired polarization. `eig-resolution` is the spatial resolution to use in MPB for the eigenmode calculations. This defaults to the same resolution as Meep, but you can use a higher resolution in which case the structure is linearly interpolated from the Meep pixels. `eig-tolerance` is the tolerance to use in the MPB eigensolver. MPB terminates when the eigenvalues stop changing to less than this fractional tolerance. Defaults to `1e-12`.  (Note that this is the tolerance for the frequency eigenvalue ω; the tolerance for the mode profile is effectively the square root of this.)
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-1003-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-1089-
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:1090:Most commonly, you will want to **normalize** the force spectrum in some way, just as for flux spectra. Most simply, you could divide two different force spectra to compute the ratio of forces on two objects. Often, you will divide a force spectrum by a flux spectrum, to divide the force $F$ by the incident power $P$ on an object, in order to compute the useful dimensionless ratio $Fc$/$P$ where $c=1$ in Meep units. For example, it is a simple exercise to show that the force $F$ on a perfectly reflecting mirror with normal-incident power $P$ satisfies $Fc$/$P=2$, and for a perfectly absorbing (black) surface $Fc$/$P=1$.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-1091-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-1364-
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:1365:It is often useful to use the `h5topng` `-C` or `-A` options to overlay the dielectric function when outputting fields. To do this, you need to know the name of the dielectric-function `.h5` file which must have been previously output by `output-epsilon`. To make this easier, a built-in shell variable `$EPS` is provided which refers to the last-output dielectric-function `.h5` file. So, for example `(output-png Ez "-C $EPS")` will output the $E_z$ field and overlay the dielectric contours.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-1366-
##############################################
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-1388-meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md:1389:Returns a step function that collects data from the field component `c` (e.g. $E_x$, etc.) at the given point `pt` (a `vector3`). Then, at the end of the run, it uses Harminv to look for modes in the given frequency range (center `fcen` and width `df`), printing the results to standard output (prefixed by `harminv:`) as comma-delimited text, and also storing them to the variable `harminv-results`. The optional argument `maxbands` is the maximum number of modes to search for. Defaults to 100.
meep-mpi-default-1.12.0/doc/docs/Scheme_User_Interface.md-1390-
##############################################
meep-mpi-default-1.12.0/doc/docs/Subpixel_Smoothing.md-25-
meep-mpi-default-1.12.0/doc/docs/Subpixel_Smoothing.md:26:where $\textbf{P}$ is the projection matrix $P_{ij}=n_{i}n_{j}$ onto the normal $\vec{n}$. The $\langle\cdots\rangle$ denotes an average over the voxel $sΔx\times sΔy\times sΔz$ surrounding the grid point in question where $s$ is a smoothing diameter in grid units equal to 1/`resolution`. If the initial materials are anisotropic (via `epsilon_diag` and `epsilon_offdiag`), a more complicated formula is used. They key point is that, even if the structure consists entirely of isotropic materials, the discretized structure will use anisotropic materials. For interface pixels, Meep computes the effective permittivity tensor automatically at the start of the simulation prior to time stepping via analytic expressions for the filling fraction and local normal vector. For details involving derivation of the effective permittivity tensor and its implementation in Meep/FDTD, see [Optics Letters, Vol. 36, pp. 2972-4, 2006](https://www.osapublishing.org/ol/abstract.cfm?uri=ol-31-20-2972) and [Optics Letters, Vol. 35, pp. 2778-80, 2009](https://www.osapublishing.org/abstract.cfm?uri=ol-34-18-2778).
meep-mpi-default-1.12.0/doc/docs/Subpixel_Smoothing.md-27-
##############################################
meep-mpi-default-1.12.0/doc/docs/Units_and_Nonlinearity.md-23-
meep-mpi-default-1.12.0/doc/docs/Units_and_Nonlinearity.md:24:where $n_0$ is the linear refractive index $n_0=\sqrt{\varepsilon}$. See, for example, Section 4.1 of [Nonlinear Optics (third edition)](https://www.amazon.com/Nonlinear-Optics-Third-Robert-Boyd/dp/0123694701) by R. W. Boyd.
meep-mpi-default-1.12.0/doc/docs/Units_and_Nonlinearity.md-25-
##############################################
meep-mpi-default-1.12.0/m4/ax_compiler_vendor.m4-20-  for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do 
meep-mpi-default-1.12.0/m4/ax_compiler_vendor.m4:21:    vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
meep-mpi-default-1.12.0/m4/ax_compiler_vendor.m4-22-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
##############################################
meep-mpi-default-1.12.0/m4/ax_compiler_vendor.m4-25-#endif
meep-mpi-default-1.12.0/m4/ax_compiler_vendor.m4:26:])], [ax_cv_]_AC_LANG_ABBREV[_compiler_vendor=`echo $ventest | cut -d: -f1`; break])
meep-mpi-default-1.12.0/m4/ax_compiler_vendor.m4-27-  done
##############################################
meep-mpi-default-1.12.0/m4/ax_gcc_archflag.m4-114-     AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/])
meep-mpi-default-1.12.0/m4/ax_gcc_archflag.m4:115:     cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null`
meep-mpi-default-1.12.0/m4/ax_gcc_archflag.m4:116:     cputype=`echo "$cputype" | tr -d ' -' |tr $as_cr_LETTERS $as_cr_letters`
meep-mpi-default-1.12.0/m4/ax_gcc_archflag.m4-117-     case $cputype in
##############################################
meep-mpi-default-1.12.0/m4/ax_gcc_archflag.m4-138-     cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null`
meep-mpi-default-1.12.0/m4/ax_gcc_archflag.m4:139:     cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'`
meep-mpi-default-1.12.0/m4/ax_gcc_archflag.m4-140-     case $cputype in
##############################################
meep-mpi-default-1.12.0/m4/pkg.m4-27-            AC_MSG_CHECKING($1_CFLAGS)
meep-mpi-default-1.12.0/m4/pkg.m4:28:            $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
meep-mpi-default-1.12.0/m4/pkg.m4-29-            AC_MSG_RESULT($$1_CFLAGS)
##############################################
meep-mpi-default-1.12.0/m4/pkg.m4-31-            AC_MSG_CHECKING($1_LIBS)
meep-mpi-default-1.12.0/m4/pkg.m4:32:            $1_LIBS=`$PKG_CONFIG --libs "$2"`
meep-mpi-default-1.12.0/m4/pkg.m4-33-            AC_MSG_RESULT($$1_LIBS)
##############################################
meep-mpi-default-1.12.0/m4/pkg.m4-38-            ## do set a variable so people can do so.
meep-mpi-default-1.12.0/m4/pkg.m4:39:            $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
meep-mpi-default-1.12.0/m4/pkg.m4-40-            ifelse([$4], ,echo $$1_PKG_ERRORS,)
##############################################
meep-mpi-default-1.12.0/python/examples/antenna-radiation.ipynb-201-   "source": [
meep-mpi-default-1.12.0/python/examples/antenna-radiation.ipynb:202:    "For the second of two cases, we use the `get_farfield` routine to compute the far fields by looping over a set of 100 equally-spaced points along the circumference of a circle with radius of 1 mm. The six far field components ($E_x$, $E_y$, $E_z$, $H_x$, $H_y$, $H_z$) are stored as separate arrays of complex numbers. From the far fields at each point $r$, we compute the outgoing or radial flux: $P^2_x+P^2_y$, where $P_x$ and $P_y$ are the components of the Poynting vector $P(r)=(P_x,P_y,P_z)=\\Re(E(r) \\times H(r))$. Note that $P_z$ is always 0 since this is a 2d simulation. The total flux is computed and the three flux values are displayed."
meep-mpi-default-1.12.0/python/examples/antenna-radiation.ipynb-203-   ]
##############################################
meep-mpi-default-1.12.0/python/examples/binary_grating.ipynb-294-   "source": [
meep-mpi-default-1.12.0/python/examples/binary_grating.ipynb:295:    "Note the use of the keyword parameter argument `eig_parity=mp.ODD_Z+mp.EVEN_Y` in the call to `get_eigenmode_coefficients`. This is important for specifying **non-degenerate** modes in MPB since the `k_point` is (0,0,0). `ODD_Z` is for modes with E<sub>z</sub> polarization. `EVEN_Y` is necessary since each diffraction order which is based on a given k<sub>x</sub> consists of *two* modes: one going in the +y direction and the other in the -y direction. `EVEN_Y` forces MPB to compute only the +k<sub>y</sub> + -k<sub>y</sub> (cosine) mode. As a result, the total transmittance must be halved in this case to obtain the transmittance for the individual +k<sub>y</sub> or -k<sub>y</sub> mode. For `ODD_Y`, MPB will compute the +k<sub>y</sub> - -k<sub>y</sub> (sine) mode but this will have zero power because the source is even. If the $y$ parity is left out, MPB will return a random superposition of the cosine and sine modes. Alternatively, in this example an input planewave with H<sub>z</sub> instead of E<sub>z</sub> polarization can be used which requires `eig_parity=mp.EVEN_Z+mp.ODD_Y` as well as an odd mirror symmetry plane in *y*. Finally, note the use of `add_flux` instead of `add_mode_monitor` when using symmetries.\n",
meep-mpi-default-1.12.0/python/examples/binary_grating.ipynb-296-    "\n",
##############################################
meep-mpi-default-1.12.0/python/examples/binary_grating.ipynb-343-    "\n",
meep-mpi-default-1.12.0/python/examples/binary_grating.ipynb:344:    "The diffraction orders/modes are a finite set of propagating planewaves. The wavevector $k_x$ of these modes can be computed analytically: for a frequency of $ω$ (in $c$=1 units), these propagating modes are the **real** solutions of sqrt(ω²n²-($k_y$+2π$m$/$Λ$)²) where $m$ is the diffraction order (an integer), $Λ$ is the periodicity of the grating, and $n$ is the refractive index of the propagating medium. In this example, $n$=1, $k_y$=0, and $Λ$=10 μm. Thus, at a wavelength of 0.5 μm there are a total of 20 diffraction orders of which we only computed the first 10. The wavevector $k_x$ is used to compute the angle of the diffraction order as cos<sup>-1</sup>($k_x$/($ωn$)). Evanescent modes, those with an imaginary k<sub>x</sub>, exist for |$m$|>20 but these modes carry no power. Note that currently Meep does not compute the number of propagating modes for you. If the mode number passed to `get_eigenmode_coefficients` is larger than the number of propagating modes at a given frequency/wavelength, MPB's Newton solver will fail to converge and will return zero for the mode\\ coefficient. It is therefore a good idea to know beforehand the number of propagating modes.\n",
meep-mpi-default-1.12.0/python/examples/binary_grating.ipynb-345-    "\n",
##############################################
meep-mpi-default-1.12.0/python/examples/coupler.ipynb-1010-   "source": [
meep-mpi-default-1.12.0/python/examples/coupler.ipynb:1011:    "For a given waveguide separation distance (`d`), the simulation computes the transmittance of Ports 2, 3, and 4. The transmittance is the square of the [S-parameter](https://en.wikipedia.org/wiki/Scattering_parameters) which is equivalent to the [mode coefficient](https://meep.readthedocs.io/en/latest/Mode_Decomposition). There is an additional mode monitor at Port 1 to compute the input power from the adjacent eigenmode source; this is used for normalization when computing the transmittance. The eight layers of the GDSII file are each converted to a `Simulation` object: the upper and lower branches of the coupler are defined as a collection of [`Prism`](https://meep.readthedocs.io/en/latest/Python_User_Interface/#prism)s, the rectilinear regions of the source and flux monitor as a [`Volume`](https://meep.readthedocs.io/en/latest/Python_User_Interface/#volume) and [`FluxRegion`](https://meep.readthedocs.io/en/latest/Python_User_Interface/#fluxregion). The size of the cell in the $y$ direction is dependent on `d`. The default dimensionality is 2d. An optional input parameter (`three_d`) converts the geometry to 3d by extruding the coupler geometry in the *z* direction and adding an oxide layer beneath similar to a [silicon on insulator](https://en.wikipedia.org/wiki/Silicon_on_insulator) (SOI) substrate. A schematic of the coupler design in 3d generated using MayaVi is shown below.\n",
meep-mpi-default-1.12.0/python/examples/coupler.ipynb-1012-    "\n",
##############################################
meep-mpi-default-1.12.0/python/examples/holey-wvg-bands.ipynb-10-    "\n",
meep-mpi-default-1.12.0/python/examples/holey-wvg-bands.ipynb:11:    "Let us briefly review the problem. In a periodic system of this sort, the eigen-solutions can be expressed in the form of Bloch modes: a periodic Bloch envelope multiplied by a planewave $exp[i(k⋅x−\\omega t)]$, where $k$ is the Bloch wavevector. We wish to find the bands $\\omega(k)$. In this case, there is only one direction of periodicity, so we only have one wavevector component $k_x$. Moreover, the solutions are periodic functions of this wavevector: for a unit-period structure, $k_x$ and $k_x+2\\pi$ are redundant. Also, $k_x$ and $−k_x$ are redundant by time-reversal symmetry, so we only need to look for solutions in the irreducible Brillouin zone from $k_x=0$ to $k_x=\\pi$.\n",
meep-mpi-default-1.12.0/python/examples/holey-wvg-bands.ipynb-12-    "\n",
##############################################
meep-mpi-default-1.12.0/python/examples/metal-cavity-ldos.ipynb-18-    "\n",
meep-mpi-default-1.12.0/python/examples/metal-cavity-ldos.ipynb:19:    "where $Q^{(n)}=\\omega^{(n)}/2\\gamma^{(n)}$ is the dimensionless [quality factor](https://en.wikipedia.org/wiki/Q_factor) and $V^{(n)}$ is the modal volume. This represents another way to compute the LDOS. In this tutorial, we will verify this expression by comparing it to the earlier one.\n",
meep-mpi-default-1.12.0/python/examples/metal-cavity-ldos.ipynb-20-    "\n",
##############################################
meep-mpi-default-1.12.0/python/examples/metal-cavity-ldos.ipynb-22-    "\n",
meep-mpi-default-1.12.0/python/examples/metal-cavity-ldos.ipynb:23:    "We will validate both this prediction and the LDOS calculations above by computing the LDOS at the center of the cavity, the point of peak $|\\vec{E}|$, in two ways. First, we compute the LDOS directly from the power radiated by a dipole, Fourier-transforming the result of a pulse using the `dft_ldos` command. Second, we compute the cavity mode and its lifetime $Q$ using `Harminv` and then compute the LDOS by the Purcell formula shown above. The latter technique is much more efficient for high Q (small $w$), since one must run the simulation for a very long time to directly accumulate the Fourier transform of a slowly-decaying mode. The two calculations, we will demonstrate, agree to within discretization error, verifying the LDOS analysis above, and $Q/V$ is asymptotically linear on a semilog scale versus $1/w$ as predicted."
meep-mpi-default-1.12.0/python/examples/metal-cavity-ldos.ipynb-24-   ]
##############################################
meep-mpi-default-1.12.0/python/examples/oblique-planewave.ipynb-229-   "source": [
meep-mpi-default-1.12.0/python/examples/oblique-planewave.ipynb:230:    "Note that this example involves a `ContinuousSource` for the time profile. For a pulsed source, the oblique planewave is incident at a given angle for only a *single* frequency component of the source. This is a fundamental feature of FDTD simulations and not of Meep per se. Thus, to simulate an incident planewave at multiple angles for a given frequency ω, you will need to do separate simulations involving different values of $\\vec{k}$ (`k_point`) since each set of ($\\vec{k}$,ω) specifying the Bloch-periodic boundaries and the frequency of the source will produce a different angle of the planewave. For more details, refer to Section 4.5 (\"Efficient Frequency-Angle Coverage\") in [Chapter 4](https://arxiv.org/abs/1301.5366) (\"Electromagnetic Wave Source Conditions\") of [Advances in FDTD Computational Electrodynamics: Photonics and Nanotechnology](https://www.amazon.com/Advances-FDTD-Computational-Electrodynamics-Nanotechnology/dp/1608071707)."
meep-mpi-default-1.12.0/python/examples/oblique-planewave.ipynb-231-   ]
##############################################
meep-mpi-default-1.12.0/python/examples/parallel-wvgs-force.ipynb-127-   "source": [
meep-mpi-default-1.12.0/python/examples/parallel-wvgs-force.ipynb:128:    "There are two important items to note in `parallel_waveguide`: (1) a single flux surface is used to compute the Poynting flux in $z$ which spans an area slightly larger than both waveguides rather than two separate flux surfaces (one for each waveguide). This is because in the limit of small separation, two flux surfaces overlap whereas the total power through a single flux surface need, by symmetry, only be halved in order to determine the value for just one of the two waveguides. (2) Instead of defining a closed, four-sided \"box\" surrounding the waveguides, the MST is computed along just two $y$-oriented lines (to obtain the force in the $x$ direction) with different `weight` values to correctly sum the total force. By symmetry, the force in the $y$ direction is zero and need not be computed. Choosing a suitable runtime requires some care. A large runtime is necessary to obtain the steady-state response but this will also lead to large values for the discrete Fourier-transformed fields used to compute both the flux and the MST. Large floating-point numbers may contain [roundoff errors](https://en.wikipedia.org/wiki/Round-off_error).\n",
meep-mpi-default-1.12.0/python/examples/parallel-wvgs-force.ipynb-129-    "\n",
##############################################
meep-mpi-default-1.12.0/python/examples/ring.ipynb-67-   "source": [
meep-mpi-default-1.12.0/python/examples/ring.ipynb:68:    "Later objects in the `geometry` object take precedence over or rather lie \"on top of\" earlier objects, so the second `air` ($\\epsilon$=1) cylinder cuts a circular hole out of the larger cylinder, leaving a ring of width `w`.\n",
meep-mpi-default-1.12.0/python/examples/ring.ipynb-69-    "\n",