PulseSuite is a high-performance computational physics toolkit for simulating ultrafast laser-matter interactions in semiconductor quantum structures. It implements the Semiconductor Bloch Equations (SBEs) coupled with Pseudo-Spectral Time Domain (PSTD) electromagnetic field propagation methods to model quantum wire and quantum well systems under intense optical excitation.
This codebase is a Python port of production Fortran simulation tools using NumPy, accelerated FFTs (pyFFTW), Numba JIT and CUDA compilation.
- Quantum Well/Wire Optics: Bloch Equations, Field transformations, polarization calculations, density matrix evolution
- Many-Body Physics: Coulomb interactions with screening, phonon scattering, carrier dynamics
- Electromagnetic Field Propagation: Pseudo-Spectral Time Domain (PSTD)
- High Performance: JIT compilation, CUDA, Vectorization, Parallelization
PulseSuite uses uv for dependency management and just as a command runner.
# Clone the repository
git clone https://github.com/rahulranjansah/pulsesuite.git
cd pulsesuite
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Sync all dependencies (core + test + doc) in one step
uv sync --all-extras
# Or install with pip (still works)
pip install -e .If you have an NVIDIA GPU, install the GPU extra to enable CUDA acceleration.
This installs cupy-cuda12x (GPU array ops) and numba-cuda (Numba @cuda.jit
kernels). No separate CUDA toolkit download needed — only an NVIDIA driver
(version 450+). The code automatically detects GPU availability and falls back
to CPU if CUDA is not present.
With uv (recommended):
uv pip install -e ".[gpu]"With pip:
pip install -e ".[gpu]"Manual install (if you only want the packages directly):
pip install cupy-cuda12x numba-cudajust # run tests + lint + format check
just test # run test suite (just test -k coulomb to filter)
just --list # see all available commands📖 Full documentation is available at: pulsesuite.readthedocs.io
The documentation includes:
- Theory and Background: Physical models and equations
- Examples Gallery: Interactive tutorials with executable code
- API Reference: Complete function and class documentation
- Integration Guides: How to use PulseSuite with other tools
pulsesuite/
├── core/ # Core utilities (FFT, constants, integrators)
├── PSTD3D/ # Quantum wire/well physics modules
│ ├── coulomb.py # Coulomb interactions
│ ├── dcfield.py # DC field transport
│ ├── emission.py # Spontaneous emission
│ ├── phonons.py # Phonon scattering
│ ├── qwoptics.py # Quantum well optics
│ └── SBEs.py # Semiconductor Bloch Equations
└── libpulsesuite/ # Low-level utilities and integrators
- Python ≥3.10
- NumPy ≥1.26.4
- SciPy ≥1.15.2
- Matplotlib ≥3.10.0
- pyFFTW ≥0.15.0
- Numba ≥0.61.2
- CuPy-CUDA12x ≥13.5.0 (optional, GPU array ops — install via
pip install -e ".[gpu]") - numba-cuda ≥0.6.0 (optional, Numba CUDA kernels — included in
[gpu]extra)
The SBE test propagation script drives a full quantum wire simulation:
# Requires params/qw.params and params/mb.params in the working directory
uv run python -m pulsesuite.PSTD3D.sbetestpropOutput is written to fields/ and dataQW/.
For detailed examples and tutorials, see the Examples Gallery in the documentation.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Ensure all tests pass:
pytest tests/ -v - Submit a pull request
If you use PulseSuite in your research, please cite:
@software{pulsesuite2025,
title = {PulseSuite: Simulation suite for ultrafast laser-matter interactions},
author = {Sah, Rahul R., Emily S. Hatten, and Gulley, Jeremy R.},
year = {2025},
url = {https://github.com/rahulranjansah/pulsesuite}
}See CITATION.md for more details.
See AUTHORS.md for the complete list of contributors.
This project is licensed under the MIT License - see LICENSE file for details.
This codebase inherits from the Fortran simulation tools developed by Jeremy R. Gulley and collaborators at Furman University.