DOI: 10.5281/zenodo.7773989
title: Supplementary Material to research paper "Spectroscopy of hot-electron pair emission from a driven quantum dot"

description: This publication contains the supplementary material to the research paper "Spectroscopy of hot-electron pair emission from a driven quantum dot" by Schulenborg et al. . arXiv 2303.15436 <strong>1. This supplementary material includes:</strong> - C++/CUDA code used to generate the data presented in the research paper. See instructions below.<br> - Raw data and videos of the time-dependent potential V(x,t) and particle distribution |Phi|^2 for the 4 different parameter sets covered in Fig. 2 of the research paper. <br> <strong>2. Instructions for two-particle simulation code:</strong> The algorithm is described in appendix A of the main paper. The code is written in CUDA 11 and C++17 with OpenMP. It strictly relies on some features of C++17, among "if constexpr" and the filesystem API, and on OpenMP shared-memory parallelization on the CPU, so version 17 of C++ is needed. Refer to OpenMP and Nvidia CUDA documentation for how to set up the required environment. To compile and run, you can use the bash script "RunWave2P.sh". The script takes a number specifying the number of CPU threads as a single parameter. At the top of the script, two variables are defined: NVCC and CUDAINC. NVCC sets where the CUDA compiler is located on your machine, and CUDAINC defines the location of the CUDA header files relatively to the execution path. PLEASE ADJUST TO YOUR OWN MACHINE! Furthermore, the compiler instructions define gcc/g++ as a fall-back compiler for the CPU host code, so if you want to use the script, you need to have gcc/g++ installed or adjust the instruction to your preference. The code is distributed into a main file Wave2P.cu that executes the steps of this algorithm on a high level, a file Wave2PCUDA.h which implements all the necessary CUDA logic, and a class Wave2PSolver which interfaces between the main host code and the CUDA device code. The header file Wave2PConfig.h is used to set all simulation parameters, and Wave2PConstants.h translates all these parameters into compile-time constant expressions (with some sanity checking). These constants are used both in host (CPU) and device (GPU) code. Everything is defined in the namespace "Wave2p" (so no global namespace pollution). <br> <strong>3. Instructions for master equation solver</strong> The master equation is described in the research paper, including appendix C. The code generates the emission times and energies as sketched in Fig. 3(c), as well as ramp speed dependencies as in Fig. 4, 5, 6. It is written in C++17 using the header-only linear algebra library Eigen ( https://eigen.tuxfamily.org/index.php?title=Main_Page ) and OpenMP <em>(<strong>NOTE: The current code is based on a more general master equation solver. We plan to update this with a simpler and faster code based on appendix C of the paper. This code will no longer rely on Eigen.)</strong></em>. It strictly relies on some features of C++17, among "if constexpr" and the filesystem API, so version 17 is required. Refer to the documentation of Eigen and OpenMP for how to set up the required environment. The code comes with its own bash script (for a Linux environment, you can use WSL on Windows) that one can use to compile and run, namely RunSweepOffset.sh. This script takes a number specifying the number of CPU threads as a single parameter. The script assumes gcc/g++ to be installed. The main file SweepOffset.cpp implements all the logic to repeatedly solve the master equation for different offset potentials. It relies on a header defGeneratos.h which implements the time-dependent evolution kernel for the master equation. The header drivingPropertiesSweepOffset.h defines the system parameters for the simulation.