Table of Contents
Fetching ...

QC Lab: A Python Package for Quantum-Classical Dynamics

Alex Krotz, Ethan Byrd, Ken Miyazaki, Roel Tempelaar

TL;DR

The paper addresses the need for unified software to study quantum-classical dynamics in excited-state processes. It introduces QC Lab, a modular Python framework that decouples algorithms (Tasks/Recipes) from models (Ingredients) to enable cross-compatibility and reuse. Key contributions include a canonical Model definition via three Hamiltonians $H_Q$, $H_C$, and $H_{QC}$, a Simulation object and Dynamics Driver, and support for real-to-reciprocal space representations, vectorized trajectory processing, and multiple parallel drivers. The first stable release QC Lab 1.0 underscores a practical platform that can interoperate with existing QC tools and accelerate development of QC dynamics.

Abstract

QC Lab is an open-source Python package for QC dynamics simulations aimed to promote the development of QC algorithms, and their application to a wide variety of relevant model problems. It follows a modular design that facilitates cross-compatibility between algorithms and models. By decomposing algorithms and models into a series of tasks and ingredients that can be substituted and reused, it minimizes development efforts and code redundancy. In this Paper, we introduce the first stable release of QC Lab, and describe its design philosophy.

QC Lab: A Python Package for Quantum-Classical Dynamics

TL;DR

The paper addresses the need for unified software to study quantum-classical dynamics in excited-state processes. It introduces QC Lab, a modular Python framework that decouples algorithms (Tasks/Recipes) from models (Ingredients) to enable cross-compatibility and reuse. Key contributions include a canonical Model definition via three Hamiltonians , , and , a Simulation object and Dynamics Driver, and support for real-to-reciprocal space representations, vectorized trajectory processing, and multiple parallel drivers. The first stable release QC Lab 1.0 underscores a practical platform that can interoperate with existing QC tools and accelerate development of QC dynamics.

Abstract

QC Lab is an open-source Python package for QC dynamics simulations aimed to promote the development of QC algorithms, and their application to a wide variety of relevant model problems. It follows a modular design that facilitates cross-compatibility between algorithms and models. By decomposing algorithms and models into a series of tasks and ingredients that can be substituted and reused, it minimizes development efforts and code redundancy. In this Paper, we introduce the first stable release of QC Lab, and describe its design philosophy.
Paper Structure (15 sections, 4 figures)

This paper contains 15 sections, 4 figures.

Figures (4)

  • Figure 1: Example Python script for running an FSSH simulation of the spin--boson model using QC Lab. After importing the necessary modules, a Simulation object is created and equipped with the requisite Model and Algorithm objects and an initial quantum state. The reorganization energy is then changed from its default value before submitting the prepared Simulation object to the Dynamics Driver.
  • Figure 2: Schematic of the overall organization of QC Lab. Shapes depict objects or functions, and arrows indicate how such entities serve as input for other entities.
  • Figure 3: Example of a generic Task for calculating classical forces. Tasks follow a strict format for input and output arguments, but use of keyword arguments allows their action to be applied more generically. This example also shows the ability of Tasks to use Ingredients for optimized calculation of properties (in this case the gradient), which overrules default functionality.
  • Figure 4: Modification of the simulation from Fig. \ref{['fig:Spin-Boson']} such that momenta are reversed upon frustrated hops in the FSSH algorithm. After the simulation from Fig. \ref{['fig:Spin-Boson']} is completed, running this code will adopt all Algorithm and Model settings from that simulation, while adding the Task "reverse_momenta" to "update_recipe" will invoke the momentum reversions. The latter is achieved by taking the complex conjugate of the complex classical coordinates, referred to as "z". We note that this procedure is only meaningful when the imaginary parts of these coordinates represents physical momenta, such as in a physical basis used for the spin--boson model. For a basis-independent procedure, a more involved approach is necessary.