FDTDX: Electromagnetic Simulations in JAX

February 13, 2026 ยท View on GitHub

logo

Documentation arXiv arXiv codecov PyPI version Continuous integration status

FDTDX: Electromagnetic Simulations in JAX

FDTDX is an efficient open-source Python package for the simulation and design of three-dimensional photonic nanostructures using the Finite-Difference Time-Domain (FDTD) method. Built on JAX, it provides native GPU support and automatic differentiation capabilities, making it ideal for large-scale design tasks.

Key Features

The key features differentiating FDTDX from other simulation software packages like Meep (which is also great!) are the following:

  • High Performance: GPU-accelerated FDTD simulations with multi-GPU scaling capabilities
  • Memory Efficient: Leverages time-reversibility in Maxwell's equations for efficient gradient computation
  • Automatic Differentiation: Built-in gradient-based optimization for complex 3D structures
  • User-Friendly API: Intuitive positioning and sizing of objects in absolute or relative coordinates
  • Large-Scale Design: Capable of handling simulations with billions of grid cells
  • Open Source: Freely available for research, development and commercial use.

Documentation

Visit our documentation for:

  • Detailed API reference
  • Tutorial guides
  • Best practices

Also check out our whitepaper for some examples and a comparison to other popular FDTD-frameworks.

Installation

Install FDTDX using pip:

pip install fdtdx  # Basic CPU-Installation
pip install fdtdx[cuda12]  # GPU-Acceleration (Highly Recommended!)
pip install fdtdx[rocm]   # AMD-GPU (only python<=3.12)

For development installation, see the contributing guidelines!

Multi-GPU

# The following lines often lead to better memory usage in JAX
# when using multiple GPU.
export XLA_PYTHON_CLIENT_ALLOCATOR="platform"
export XLA_PYTHON_CLIENT_PREALLOCATE="false"
export NCCL_LL128_BUFFSIZE="-2"
export NCCL_LL_BUFFSIZE="-2"
export NCCL_PROTO="SIMPLE,LL,LL128"

Citation

If you find this repository helpful for you work, please consider citing:

@article{Mahlau2026,
  doi = {10.21105/joss.08912},
  url = {https://doi.org/10.21105/joss.08912},
  year = {2026},
  publisher = {The Open Journal},
  volume = {11},
  number = {117},
  pages = {8912},
  author = {Mahlau, Yannik and Schubert, Frederik and Berg, Lukas and Rosenhahn, Bodo},
  title = {FDTDX: High-Performance Open-Source FDTD Simulation with Automatic Differentiation},
  journal = {Journal of Open Source Software}
}

Acknowedgement

This project was developed at the Institute of Information Processing at Leibniz University Hannover, Germany and sponsored by the cluster of excellence PhoenixD (Photonics, Optics, Engineering, Innovation across Disciplines).