Skip to content

rahulranjansah/pulsesuite

PulseSuite logo

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 .

GPU Acceleration (optional)

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-cuda

Development

just              # run tests + lint + format check
just test         # run test suite (just test -k coulomb to filter)
just --list       # see all available commands

Documentation

📖 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

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
  • 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)

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 CONTRIBUTING.md 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 CITATION.md for more details.

Authors

See AUTHORS.md for the complete list of contributors.

License

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

Links

Acknowledgments

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

About

Pulsuite for Laser-Matter Interaction

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages