PulseSuite logo

PulseSuite

Documentation License Python

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.

  1. Fork the repository

  2. Create a feature branch

  3. Add tests for new functionality

  4. Ensure all tests pass: pytest tests/ -v

  5. Submit 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.

Authors

See Contributors for the complete list of contributors.

License

This project is licensed under the MIT License - see LICENSE for details.

Acknowledgments

This codebase inherits from the Fortran simulation tools developed by Jeremy R. Gulley and collaborators at Furman University.