Package for volumetirc inverse photonic design and optimization
Project description
vipdopt: Volumetric Inverse Photonic Design Optimizer
- GitHub: https://github.com/Faraon-Lab/vidpopt
- PyPi: https://pypi.org/project/vipdopt/
- Documentation: https://vidpopt.readthedocs.io/en/latest/
Vipdopt is a package for streamlining the inverse deisgn of nanophotonic devices. This package largely serves as a Python-based wrapper for Lumerical. Vipdopt also provides an interactable GUI for creating optimizations and monitoring their progress.
This code performs an inverse-design optimization based on the adjoint optimization technique ^2 that designs a freeform multilayer optical Bayer filter and focusing lens as described in ^1. The Bayer filter is multiwavelength and focuses and sorts different spectral bands into different prescribed locations on the focal plane. Otherwise known as a color router, this code is set by default to create a 10-layer filter for the visible spectral range, with lateral and vertical dimensions of 2.04 microns. Different options are available in the config to, for example, enable polarization sorting or adjust the spectral bands as necessary.
Tutorials, Examples, and Documentation
See the documentation
Requirements
- Python 3.10
- Ansys Lumerical FDTD 2021 edition or later
- An installation of MPI, for running simulations in parallel
- Qt6
If creating a conda environment, there is not official PySide6 package yet. After activating your environment, you will need to install PySide6 with pip.
Usage (Command Line)
To run an optimization, Vipdopt requires a project_directory containing two files:
- A configuration file containing optimization parameters
- A
sim.jsonfile containing the base simulation file to run with Lumerical
More details regarding configuration files are located here.
To run an optimization from a pre-existing project directory, run:
python vipdopt optimize path/to/project/directory
To see more options, run
python vipdopt --help
Outputs
All created files and logs are packaged and output to the selected project folde by default. The internal folder structure is as follows:
data: Data generated in the optimizationopt_info: captures pertinent information about each iteration and epoch of the optimization. Save data is also collected here for the event that an optimization needs to be restarted.
.tmp: Lumerical.fspsimulation files and log files that are used to calculate the adjoint and forward E-fields for calculation of the optimization gradient.
The folder opt_info collects information about optical figures of merit, the latest 3-D permittivity values of the designed device, the adjoint gradient, and contains auto-generated plots of the evolution of these values throughout the optimization.
(Please note that values such as transmission are not normalized rigorously for these auto-generated plots, as the inclusion of the proper monitors in Lumerical for rigor would slow down each optimization iteration greatly.)
A log file is also created in the main project folder, named with the specified name using the --log option (defaults to dev.log).
GUI
The GUI can be started by running
python vipdopt gui
This will launch a dashboard that can monitor the progress of a optimization.
From the dashboard you can also open a dialog for editing [^3] the optimization parameters
[^3]: Editing and saving an optimization though the GUI is not yet fully supported. However you can still use this window to view the various parameters.
While starting and stopping the optimization through the GUI is not completely supported yet, there are some experimental features pertaining to those functions.
Clicking the "Start Optimization" button will create a slurm script that can be submitted to run the optimization. To alter the output file format, edit vipdopt/submit.sh. The parameters of running the job are included in this file according to the SLURM Documentation. More information can be found there.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vipdopt-2.0.2.tar.gz.
File metadata
- Download URL: vipdopt-2.0.2.tar.gz
- Upload date:
- Size: 45.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37cde1b01232adf9c9c84eabfc40e3fa8c218fd143330ccd1a4b3374ecdbfde7
|
|
| MD5 |
cfe7e45bce79866e379e9968343ce686
|
|
| BLAKE2b-256 |
695bb7a6740c8cc0f5daf4ca73f111aa0ab955af5dee22689337ac43eed04875
|
File details
Details for the file vipdopt-2.0.2-py3-none-any.whl.
File metadata
- Download URL: vipdopt-2.0.2-py3-none-any.whl
- Upload date:
- Size: 32.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d76a79283410064234563c78dfc5bafeaa3446fc02a9f6a6e2ac1708d454e96
|
|
| MD5 |
5780b5de8206325158e9e946ed1cb299
|
|
| BLAKE2b-256 |
c03a88a2f94ce956d2068b474a239bbde33065b3c431f69b582dcafb2d35f548
|