Lightwave Explorer
Easily simulate nonlinear optics
Nick Karpowicz ✓ Verified
io.github.NickKarpowicz.LightwaveExplorerLightwave explorer is an open source nonlinear optics simulator, intended to be fast, visual, and flexible for students and researchers to play with ultrashort laser pulses and nonlinear optics without having to buy a laser first. Supports both CUDA and CPU calculations. Its purpose and goals are:
- Easily-extensible database of materials
- Multiple physical models, including the unidirectional nonlinear wave equation and finite-difference time-domain approaches.
- Efficient code so that complicated systems can be simulated in 3D: Real laser pulses can be messy, and if they weren't so before a nonlinear crystal, there's a good chance they are after. Multidimensional simulations open up the weird world of spatiotemporal couplings. You have options for very fast simulations when there's a symmetry to use (e.g. cylindrical), alongside fully 3D propagation
- A graphical interface that lets you see what you're doing
- A flexible sequence mode to string together elements: not just nonlinear crystals, also spherical or parabolic mirrors, apertures, filters, free space propagation and more
- Fitting/optimization routines
- A Python module for easy postprocessing
Screenshots
Observed history
| App | Change | Version | When ↓ |
|---|
No observed changes yet.
The initial import establishes a baseline. Future version changes will appear here.
Browse the app catalogue →Upstream releases
Release notes supplied by the developer. These dates are not Flathub package publication times.
2026.16 Feb 2026
New Features:
- Support for complex input beams, on either a Hermite-Gauss or Laguerre-Gauss basis with frequency-dependent beamwaist, rotation, 3D offset and angle.
- offsetAperture sequence function for including a non-centered iris.
Bug Fixes:
- Will load the last crystal in the database even if there isn't a newline at the end.
- Circular polarization settings are explained in the tooltip, and values of outside of -1..1 are no longer passed to the simulation with odd results
- 2026.1.2 update: fix x-angle in beam specification
- 2026.1.3: further fixes for beam view glitches for long renders
- 2026.1.4: fix addPulse sequence function
2025.628 Aug 2025
Bug fix release:
- Fix a bug where setting a non-colinear angle would cause pulse injection to fail in FDTD simulations
- Fix a bug where a failed load of a custom FDTD grid wouldn't cause the simulation to throw an exception
2025.525 Jun 2025
Bug fix release, plus some extra crystals:
- Fixes bug where files could not be overwritten after loading
- Fixes behavior of default values within for-loop sequences
- Add Lorentzian model of GaSe, Gaussian model of YAG
2025.47 Jun 2025
Bug fix release:
- Corrects the carrier-envelope phase unit on the GUI
- Fixes batch size of 1 refusing to run
- Fixes a crash when rendering large 2D beam views
- Fixes a crash in FDTD mode for large grids and short time lengths
- Fixes GUI lock-up when rendering large beam views

