<< Back to main page


masque is a Python module for designing lithography masks.

The general idea is to implement something resembling the GDSII file-format, but with some vectorized element types (eg. circles, not just polygons), better support for E-beam doses, and the ability to output to multiple formats (eg. GDSII, SVG, equipment-specific ASCII formats).

Source repository.


gridlock is a Python module for drawing on non-uniform 3D coupled grids.

Gridlock is used primarily for 'painting' shapes in 3D on multiple grids which represent the same spatial region, but are offset from each other. It does straightforward natural <-> grid unit conversion and can handle non-uniform rectangular grids (the entire grid is defined by the coordinates of the boundary points along each axis).

Source repository.


opencl_fdtd is a python package for running 3D time-domain electromagnetic simulations on parallel compute hardware (mainly GPUs).

It can run an L3 photonic crystal cavity ringdown simulation (1550 nm source, 40nm discretization, 8000 time steps) in about 5 minutes on my laptop (Nvidia 940M gpu), and runs about 5x faster on my desktop (Nvidia GTX 580).

It's built to make it easy to insert your own update steps and sources, and to give you access to the fields during each iteration.

Source repository.


opencl_fdfd is a python package for running 3D frequency-domain electromagnetic simulations on parallel compute hardware (mainly GPUs).

It's written to maximize code readability without making significant performance concessions; see Jesse Lu's CUDA-based maxwell-solver for a performance-oriented multi-GPU approach.

This package only provides the gpu-based implementation of the preconditioned FDFD operator and a conjugate-gradient solver. It is intended to be used together with the fdfd_tools package, as well as the other packages (e.g. gridlock, masque) on this page, but should be flexible enough to accept input from any other source.

Source repository.


float_raster is a Python module for accurately drawing polygons onto non-uniform rectangular grids.

Float_raster calculates pixel values with float64 precision and is capable of drawing on grids with variable pixel dimensions (so long as the pixel dimensions are uniquely determined by the pixel boundaries along each edge of the grid).

Source repository.


mem_edit is a python module for reading and editing memory in the address space of a running process. It works on Windows and Linux.

Source repository and PyPi page.


Matlab MatrixMarket reader/writer, intended as a drop-in replacement for the NIST Matrix Market functions with the same names.
These implementations fix some bugs, slightly clean up the code, and greatly improve performance when writing large sparse matrices to disk.

Source repository.

<< Back to main page