PulseSuite¶
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.
Features¶
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
Installation¶
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 .
Development¶
just # run tests + lint + format check
just test # run test suite (just test -k coulomb to filter)
just --list # see all available commands
Package Structure¶
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
Requirements¶
Python ≥3.10
NumPy ≥1.26.4
SciPy ≥1.15.2
Matplotlib ≥3.10.0
pyFFTW ≥0.15.0 (recommended for performance)
Numba ≥0.61.2 (optional, for JIT acceleration)
Numba-CUDA==0.23.0 (optional, for CUDA acceleration)
Running a Simulation¶
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.sbetestprop
Output is written to fields/ and dataQW/.
For detailed examples and tutorials, see the Examples Gallery in the documentation.
Contributing¶
We welcome contributions! Please see the Contributing guide for guidelines.
Fork the repository
Create a feature branch
Add tests for new functionality
Ensure all tests pass:
pytest tests/ -vSubmit a pull request
Citation¶
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 Citing PulseSuite for more details.
License¶
This project is licensed under the MIT License - see LICENSE for details.
Links¶
Acknowledgments¶
This codebase inherits from the Fortran simulation tools developed by Jeremy R. Gulley and collaborators at Furman University.