Skip to main content

TorchRDIT

PyPI - Version PyPI - Python Version PyPI - License CI

TorchRDIT is an advanced software package designed for the inverse design of meta-optics devices, utilizing an eigendecomposition-free implementation of Rigorous Diffraction Interface Theory (R-DIT). It provides a GPU-accelerated and fully differentiable framework powered by PyTorch, enabling the efficient optimization of photonic structures.

This framework achieves up to 16.2× speedup compared to traditional inverse design methods based on Rigorous Coupled-Wave Analysis (RCWA). By integrating differentiable R-DIT with topology optimization techniques and neural networks (e.g., SIREN), TorchRDIT facilitates the design of complex meta-optics devices, including:

  • Parameter-constrained and free-form meta-atoms.
  • Reconfigurable photonic structures using optical phase-change materials.
  • High-performance meta-lenses and beam deflectors.

With its focus on computational efficiency and flexibility, TorchRDIT lays the foundation for next-generation metasurface design workflows, offering capabilities for the creation of intricate and multifunctional photonic devices.

TorchRDIT is used for the papers:


Features

The EM algorithms used in this package are Rigorous Diffraction Interface Theory (R-DIT) and Rigorous Coupled Wave Analysis (RCWA) . The solver is developed on an automatic differentiable framework (PyTorch) and is fully differentiable for more advanced applications.

Key Capabilities

  • Eigendecomposition-free R-DIT: Up to 16.2× speedup over traditional RCWA
  • Full differentiability: Seamless integration with gradient-based optimization
  • GPU acceleration: CUDA and MPS backend support
  • GDS Export/Import: Industry-standard format for fabrication workflows
    • Export photonic masks to GDS format
    • Import masks from GDS vertex data
    • Support for complex geometries with holes
    • Batch processing for multiple designs
  • Material handling: Dispersive materials with automatic fitting
  • Flexible geometry: Arbitrary unit cells and lattice systems

Fast Fourier Factorization

TorchRDIT’s FFF implementation follows the tangent-field techniques popularized by fmmax and S4, but is written entirely in PyTorch (torchrdit/src/torchrdit/vector.py). When is_use_FFF=True, the solver automatically instantiates the tangent generator, yet you can also invoke it explicitly via compute_tangent_field:

from torchrdit.vector import compute_tangent_field

tx, ty = compute_tangent_field(
    mask.float(),
    XO=solver.XO,
    YO=solver.YO,
    lattice_t1=solver.lattice_t1,
    lattice_t2=solver.lattice_t2,
    harmonics=tuple(int(k) for k in solver.harmonics),
    scheme="POL",  # POL, NORMAL, JONES, or JONES_DIRECT
)

Choose between the four built-in schemes—POL, NORMAL, JONES, JONES_DIRECT—to match the field representation expected by your Fourier factorization workflow while keeping gradients intact.

For background on the algorithmic formulation see:

  • M. F. Schubert and A. M. Hammond, "Fourier modal method for inverse design of metasurface-enhanced micro-LEDs," Opt. Express 31, 42945 (2023).
  • V. Liu and S. Fan, "S4 : A free electromagnetic solver for layered periodic structures," Computer Physics Communications 183, 2233–2244 (2012).

Installation

You can install the package directly from PyPI:

pip install torchrdit

Dependencies

  • torch>=2.5.1
  • numpy>=2.2.0
  • scipy>=1.15.3
  • scikit-image>=0.25.2
  • matplotlib>=3.10.3
  • tqdm>=4.67.1
  • pyyaml>=6.0.2
  • ruff>=0.12.2
  • gdstk>=0.9.60

Note: The gdstk library may require additional system dependencies:

  • zlib - compression library
  • qhull - computational geometry library

These are typically available through your system's package manager (e.g., apt-get install libz-dev libqhull-dev on Ubuntu).


Usage

TorchRDIT includes several example files to demonstrate its capabilities:

R-DIT Algorithm Examples

  • example_gmrf_rdit.py: GMRF with hexagonal unit cells using R-DIT algorithm

Dispersive Materials Examples

  • example_gmrf_dispersive.py: GMRF with dispersive materials and permittivity fitting

Design Optimization Examples

  • example_gmrf_variable_optimize.py: Demonstration of parameter optimization using automatic differentiation

GDS Export/Import Examples

  • example_gds_export.py: Comprehensive GDS functionality demonstration

Quick GDS Example

from torchrdit.shapes import ShapeGenerator
from torchrdit.gds import mask_to_gds, gds_to_mask

# Create shape and export to GDS
shape_gen = ShapeGenerator(X, Y, grids)
mask = shape_gen.generate_circle_mask(center=(0, 0), radius=0.5)
mask_to_gds(mask, shape_gen.get_layout(), "DEVICE", "output.gds")

# Import from GDS
reconstructed = gds_to_mask("output.json", shape_gen)

For more detailed documentation, please visit our Wiki.



Citation

The package contains the work from multiple publicatinos. Please consider to cithe the following paper for the R-DIT solver:

Yi Huang, Ziwei Zhu, Yunxi Dong, Hong Tang, Bowen Zheng, Viktor A. Podolskiy, and Hualiang Zhang, "Eigendecomposition-free inverse design of meta-optics devices," Opt. Express 32, 13986-13997 (2024)
@article{Huang:24,
author = {Yi Huang and Ziwei Zhu and Yunxi Dong and Hong Tang and Bowen Zheng and Viktor A. Podolskiy and Hualiang Zhang},
journal = {Opt. Express},
keywords = {Diffraction theory; Finite-difference time-domain method; Inverse design; Machine learning; Neural networks; Refractive index},
number = {8},
pages = {13986--13997},
publisher = {Optica Publishing Group},
title = {Eigendecomposition-free inverse design of meta-optics devices},
volume = {32},
month = {Apr},
year = {2024},
url = {https://opg.optica.org/oe/abstract.cfm?URI=oe-32-8-13986},
doi = {10.1364/OE.514347},
abstract = {The inverse design of meta-optics has received much attention in recent years. In this paper, we propose a GPU-friendly inverse design framework based on improved eigendecomposition-free rigorous diffraction interface theory, which offers up to 16.2\&\#x2009;\&\#x00D7; speedup over the traditional inverse design based on rigorous coupled-wave analysis. We further improve the framework\&\#x2019;s flexibility by introducing a hybrid parameterization combining neural-implicit and traditional shape optimization. We demonstrate the effectiveness of our framework through intricate tasks, including the inverse design of reconfigurable free-form meta-atoms.},
}

License

This project is licensed under the GPL-3.0 License. See the LICENSE file for details.


Feedback and Support

If you have any questions, issues, or suggestions, please open an issue or email us at yi_huang at student dot uml dot edu.

Metadata

Release files for torchrdit 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for torchrdit 0.2.0
File Size Uploaded
torchrdit-0.2.0.tar.gz 3.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for torchrdit 0.2.0
File Interpreter ABI Platform
torchrdit-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.4 MB

Release files / torchrdit-0.2.0.tar.gz

Download URL torchrdit-0.2.0.tar.gz
Size 3.2 MB
Tags Source
SHA-256 checksum
How to use checksums
f04ad2d91006a0713dfc2a004110319e5fc7a5317457de84c71ae2b91f69efb0
BLAKE2b-256 checksum
How to use checksums
7c0706d74c115d66027982f7805db69b5a0cab6d5a35667c000151c47d2114b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.

Transparency log

Release files / torchrdit-0.2.0-py3-none-any.whl

Download URL torchrdit-0.2.0-py3-none-any.whl
Size 173.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3d8220f3b1edf3117e4851828c463ada7fef3d27731d418dcff2771d866c6cc5
BLAKE2b-256 checksum
How to use checksums
7b53cccf6cb37b0977ff565ba13ec1d571245f837234dd06d841377203b39921
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.30

2 release files

0.1.29

2 release files

0.1.28

2 release files

0.1.27

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.22

2 release files

0.1.21

2 release files

0.1.20

2 release files

0.1.18

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page