Skip to content

(3,1)-MCDE documentation for Python

I wrote a Python program that performs the MCDE calculation for up to three-particle interactions. The code begins with Hartree–Fock orbitals generated by a quantum chemistry package such as PySCF for example. From this starting point, it can compute photoelectron spectra. These graphics show when light of a certain energy gets absorbed by an e.g. molecule. Because of the energy conservation, the energy gets used in the molecule to excite an electron so much that it can leave the molecule althogether. The absorbed energy leaves a big peak in the spectrum. When an electron leaves the molecule, the other electrons feel its absence, even to the extent that some might gain some energy, and be in an excited state. These small peaks are called satellites, and come after, so higher in energy than, the big peak.

It is also possible to add an electron to a molecule. The energies above zero on the energy scale reflect this process, whereas the ones below zero are the electron removal processes. My program captures all of these processes, which can include up to a addition/removal of an electron, and excitation of two other. It yields all the peaks, and treats them all with the same accuracy, and computational cost, unlike the typical implementations of DFT and GW, which usually only focus on the big peaks close to the zero energy.

To carry out this work, I used several scientific and programming tools, including

- Python (SciPy, NumPy, PySCF...)
- Wolfram Mathematica (a high-level analytical computation all-purpose software similar to Matlab)
- FORTRAN
- high-performance computing systems on Linux

The mathematics involved draws on

- Linear Algebra (exact diagonalization, matrix multiplication methods such as Lanczos algorithm)
- Functional Analysis (Green's functions)
- Numerical methods