Skip to main content

Fourier modal method with Jax

Project description

FMMAX: Fourier Modal Method with Jax

Continuous integration PyPI version

FMMAX is a an implementation of the Fourier modal method (FMM) in JAX.

The FMM -- also known as rigorous coupled wave analysis (RCWA) -- is a semianalytical method that solves Maxwell's equations in periodic stratified media, where in-plane directions are treated with a truncated Fourier basis and the normal direction is handled by a scattering matrix approach [1999 Whittaker, 2012 Liu, 2020 Jin]. This allows certain classes of structures to be modeled with relatively low computational cost.

Our use of JAX enables GPU acceleration and automatic differentiation of FMM simulations. Besides these features, FMMAX is differentiated from other codes by its support for Brillouin zone integration, advanced vector FMM formulations which improve convergence, and anisotropic and magnetic materials.

Brillouin zone integration

Brillouin zone integration [2022 Lopez-Fraguas] allows modeling of localized sources in periodic structures. Check out the crystal example to see how we model a Gaussian beam incident upon a photonic crystal slab, or an isolated dipole embedded within the slab. The Gaussian beam fields are shown below.

Gaussian beam incident on photonic crystal

Vector FMM formulations

Vector FMM formulations introduce local coordinate systems at each point in the unit cell, which are normal and tangent to all interfaces. This allows normal and tangent field components to be treated differently and improves convergence. FMMAX implements several vector formulations of the FMM, with automatic vector field generation based on functional minimization similar to [2012 Liu]. We implement the Pol, Normal, and Jones methods of that reference, and introduce a new Jones direct method which we have found to have superior convergence. These are supported also with anisotropic and magnetic materials. The vector_fields example computes vector fields by these methods for an example structure.

Comparison of automatically-generated vector fields

Anisotropic, magnetic materials

Our support of anisotropic, magnetic materials allows modeling of uniaxial perfectly matched layers. This is demonstrated in the metal_dipole example, which simulates in vaccuum located above a metal substrate. The resulting electric fields are whown below.

Dipole suspended above metal substrate with PML

FMM Conventions

  • The speed of light, vacuum permittivity, and vacuum permeability are all 1.
  • Fields evolve in time as $\exp(-i \omega t)$.
  • If $\mathbf{u}$ and $\mathbf{v}$ are the primitive lattice vectors, the unit cell is defined by the parallelogram with vertices at $\mathbf{0}$, $\mathbf{u}$, $\mathbf{u} + \mathbf{v}$, and $\mathbf{v}$.
  • For quantities defined on a grid (such as the permittivity distribution of a patterned layer) the value at grid index (0, 0) corresponds to the value at physical location $\mathbf{0}$.
  • The scattering matrix block $\mathbf{S}_{11}$ relates incident and transmitted forward-going fields, and other blocks have corresponding definitions. This differs from the convention e.g. in photonic integrated circuits.

Batching

Batched calculations are supported, and should be used where possible to avoid looping. The batch axes are the leading axes, except for the wave amplitudes and electromagnetic fields, where a trailing batch axis is assumed. This allows e.g. computing the transmission through a structure for multiple polarizations via a matrix-matrix operation (transmitted_amplitudes = S11 @ incident_amplitudes), rather than a batched matrix-vector operation.

Installation

FMMAX can be installed via pip:

pip install fmmax

For developers requiring a local installation, you will need to first clone this repository and then perform a local install from within the root directory using:

pip install -e ".[dev]"

The [dev] modifier specifies optional dependencies for developers which are listed in pyproject.toml.

Note: for this to work, it may be necessary to first update your pip installation using e.g. python3 -m pip install --upgrade pip.

Citing FMMAX

If you use FMMAX, please consider citing our paper,

@misc{schubert2023fourier,
      title={Fourier modal method for inverse design of metasurface-enhanced micro-LEDs}, 
      author={Martin F. Schubert and Alec M. Hammond},
      year={2023},
      eprint={2308.08573},
      archivePrefix={arXiv},
      primaryClass={physics.comp-ph}
}

License

FMMAX is licensed under the MIT license.

References

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fmmax-0.10.1.tar.gz (50.3 kB view details)

Uploaded Source

Built Distribution

fmmax-0.10.1-py3-none-any.whl (53.6 kB view details)

Uploaded Python 3

File details

Details for the file fmmax-0.10.1.tar.gz.

File metadata

  • Download URL: fmmax-0.10.1.tar.gz
  • Upload date:
  • Size: 50.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for fmmax-0.10.1.tar.gz
Algorithm Hash digest
SHA256 aede05e2969c15e0fdda6bcf5477a922deb36b10929d6933c10b4bc428d077a8
MD5 347f60ae03f37790921cdd4f8d94c603
BLAKE2b-256 be1c1398039f1995fb335a941c2a99d1615257e8f6835d27758189bf8cfffe91

See more details on using hashes here.

File details

Details for the file fmmax-0.10.1-py3-none-any.whl.

File metadata

  • Download URL: fmmax-0.10.1-py3-none-any.whl
  • Upload date:
  • Size: 53.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for fmmax-0.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c1bf33c7f6c318d5f6b0c8a98df66419cbb05c0e9cbafbae0298a5dd36f9ea9b
MD5 1641fef081d3c424fe9cf21206faaa43
BLAKE2b-256 75e0ecc113419bee9d9ee433f8fb1e23289384b96b785dff5b4e52a3f50237b7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page