ADDITION AND REMOVAL ENERGIES VIA THE IN-MEDIUM SIMILARITY RENORMALIZATION GROUP METHOD By Fei Yuan A DISSERTATION Submitted to Michigan State University in partial fulfillment of the requirements for the degree of Physics—Doctor of Philosophy 2018 ABSTRACT ADDITION AND REMOVAL ENERGIES VIA THE IN-MEDIUM SIMILARITY RENORMALIZATION GROUP METHOD By Fei Yuan The in-medium similarity renormalization group (IM-SRG) is an ab initio many-body method suitable for systems with moderate numbers of particles due to its polynomial scaling in computational cost. The formalism is highly flexible and admits a variety of modifications that extend its utility beyond the original goal of computing ground state energies of closed-shell systems. In this work, we present an extension of IM-SRG through quasidegenerate perturbation theory (QDPT) to compute addition and removal energies (single particle energies) near the Fermi level at low computational cost. This expands the range of systems that can be studied from closed-shell ones to nearby systems that differ by one particle. The method is applied to circular quantum dot systems and nuclei, and compared against other methods including equations-of-motion (EOM) IM-SRG and EOM coupled-cluster (CC) theory. The results are in good agreement for most cases. As part of this work, we present an open-source implementation of our flexible and easy-to-use J-scheme framework as well as the HF, IM-SRG, and QDPT codes built upon this framework. We include an overview of the overall structure, the implementation details, and strategies for maintaining high code quality and efficiency. Lastly, we also present a graphical application for manipulation of angular momentum coupling coefficients through a diagrammatic notation for angular momenta (Jucys diagrams). The tool enables rapid derivations of equations involving angular momentum coupling – such as in J-scheme – and significantly reduces the risk of human errors. In memory of Shichao Yuan (1964-2016) and Erik “Kexie” Gustafsson (1992-2017) iii ACKNOWLEDGMENTS I am forever indebted to my parents, who have made this journey at all possible. My interest in software was strongly inspired by my father’s projects, whereas my foundations in mathematics would not have been as solid without the tutoring from my mother. Throughout my studies, they have gone above and beyond to support my education, in spite of the limited resources our family had. I also extend my thanks to my grandparents who cared for me during my youngest years. On the academic side, I would like to thank my thesis advisor Morten Hjorth-Jensen for his knowledge, wisdom, and, most importantly, support. He had helped reignite my interest in physics by offering a pathway from experimental to computational physics. He encouraged me to research in areas that are most relevant to my interests, allowing me to learn and explore far more than I would have otherwise. I also wish to thank my co-advisor Scott Bogner, who has been very patient and offered valuable assistance and technical discussions. I thank the rest of my committee – Alexandra Gade, Carlo Piermarrochi, and Scott Pratt – for their helpful inputs, as well as my former advisor Chong-Yu Ruan who guided me during both undergraduate research and my first two years of graduate research. I thank my colleagues for our productive discussions, including Heiko Hergert, Titus Morris, Justin Lietz, as well as Nathan Parzuchowski and Sam Novario, who have contributed substantially to the results of this work. On a personal level, I wish to thank Nathan, my hard-working officemate who is well-versed in the intricacies of IM-SRG and Fortran and has a great sense of humor, Titus, whose mastery in many-body theory, quantum chemistry, and social situations is unmatched, Vinzent Steinberg, with whom many fun discussions and debates in programming have been made, and Tzong-Ru Terry Han, who has been very kind and supportive during my years in the laboratory. I would also like to thank Debbie Barratt and Kim Crosslan for their support iv throughout my long stay at Michigan State University. Lastly, I wish to thank all the friends I have made along the way for their support and encouragement, including my feline companion TipToe who has always had to put up with my chaotic schedule. v TABLE OF CONTENTS LIST OF TABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x LIST OF FIGURES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi KEY TO SYMBOLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv Chapter 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 4 5 Chapter 2 Many-body formalism . . . . . . . . . . . . . . . 2.1 Many-particle states . . . . . . . . . . . . . . . . . . . . . 2.1.1 Product states . . . . . . . . . . . . . . . . . . . . 2.1.2 Symmetrization and antisymmetrization . . . . . 2.2 Second quantization . . . . . . . . . . . . . . . . . . . . . 2.3 Many-body operators . . . . . . . . . . . . . . . . . . . . 2.3.1 Zero-body operators . . . . . . . . . . . . . . . . 2.3.2 One-body operators . . . . . . . . . . . . . . . . . 2.3.3 Two-body operators . . . . . . . . . . . . . . . . 2.3.4 Three-body operators and beyond . . . . . . . . . 2.4 Particle-hole formalism . . . . . . . . . . . . . . . . . . . 2.5 Normal ordering . . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Matrix elements relative to the Fermi vacuum . . 2.5.2 Ambiguity of normal ordering on non-monomials 2.6 Wick’s theorem . . . . . . . . . . . . . . . . . . . . . . . 2.6.1 Adjacent Wick contractions . . . . . . . . . . . . 2.6.2 Normal-ordered Wick contractions . . . . . . . . 2.6.3 Multiple Wick contractions . . . . . . . . . . . . 2.6.4 Statement of Wick’s theorem . . . . . . . . . . . 2.6.5 Proof of Wick’s theorem . . . . . . . . . . . . . . 2.7 Many-body diagrams . . . . . . . . . . . . . . . . . . . . 2.7.1 Perturbative diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 3 Angular momentum coupling . 3.1 Angular momentum and isospin . . . . 3.2 Clebsch–Gordan coefficients . . . . . . 3.3 Wigner 3-jm symbol . . . . . . . . . . . 3.4 Angular momentum diagrams . . . . . 3.4.1 Nodes . . . . . . . . . . . . . . 3.4.2 Lines . . . . . . . . . . . . . . . 3.4.3 Herring–Wigner 1-jm symbol . 3.4.4 Terminals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 . 44 . 50 . 55 . 59 . 59 . 60 . 61 . 62 vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 11 15 17 17 18 19 21 22 24 27 29 30 30 32 33 34 35 38 42 3.4.5 Closed diagrams . . . . . . . . . . . . . . 3.4.6 Summed lines . . . . . . . . . . . . . . . 3.5 Phase rules . . . . . . . . . . . . . . . . . . . . . 3.6 Wigner–Eckart theorem . . . . . . . . . . . . . . 3.7 Separation rules . . . . . . . . . . . . . . . . . . 3.8 Recoupling coefficients and 3n-j symbols . . . . 3.8.1 Triangular delta . . . . . . . . . . . . . . 3.8.2 6-j symbol . . . . . . . . . . . . . . . . . 3.8.3 9-j symbol . . . . . . . . . . . . . . . . . 3.9 Calculation of angular momentum coefficients . 3.10 Graphical tool for angular momentum diagrams 3.11 Fermionic states in J-scheme . . . . . . . . . . . 3.11.1 Two-particle states . . . . . . . . . . . . 3.11.2 Three-particle states . . . . . . . . . . . 3.12 Matrix elements in J-scheme . . . . . . . . . . . 3.12.1 Standard-coupled matrix elements . . . . 3.12.2 Pandya-coupled matrix elements . . . . 3.12.3 Implicit-J convention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 65 65 69 71 73 73 75 78 79 80 82 83 85 86 87 88 90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 95 95 98 98 99 101 101 103 106 108 111 113 118 Chapter 5 Application to quantum systems . . . . . . . . 5.1 Quantum dots . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Quantum dot Hamiltonian . . . . . . . . . . . . 5.1.2 Fock–Darwin basis . . . . . . . . . . . . . . . . 5.1.3 Coulomb interaction in the Fock–Darwin basis 5.2 Nuclei . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 The nuclear Hamiltonian . . . . . . . . . . . . . 5.2.2 The nuclear interaction . . . . . . . . . . . . . . 5.2.3 Spherical harmonic oscillator basis . . . . . . . 5.2.4 Matrix elements of kinetic energy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 122 122 124 127 129 129 130 132 135 Chapter 4 Many-body methods . . . . . . . . 4.1 Hartree-Fock method . . . . . . . . . . . . 4.1.1 Hartree–Fock equations . . . . . . 4.1.2 HF equations in J-scheme . . . . . 4.1.3 Solving HF equations . . . . . . . . 4.1.4 Post-HF methods . . . . . . . . . . 4.2 Similarity renormalization group methods 4.2.1 Free space SRG . . . . . . . . . . . 4.2.2 In-medium SRG . . . . . . . . . . . 4.2.3 IM-SRG generators . . . . . . . . . 4.2.4 IM-SRG(2) equations . . . . . . . . 4.2.5 IM-SRG(2) equations in J-scheme . 4.3 Quasidegenerate perturbation theory . . . 4.3.1 QDPT equations . . . . . . . . . . . vii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 6 Implementation . . . . . . . . . . . . . . . . . . . 6.1 Programming language . . . . . . . . . . . . . . . . . . . 6.1.1 Undefined behavior . . . . . . . . . . . . . . . . . 6.1.2 Uniqueness and borrowing . . . . . . . . . . . . . 6.2 Structure of the program . . . . . . . . . . . . . . . . . . 6.3 External libraries . . . . . . . . . . . . . . . . . . . . . . . 6.4 Basis and data layout . . . . . . . . . . . . . . . . . . . . 6.4.1 Matrix types . . . . . . . . . . . . . . . . . . . . . 6.4.2 Basis charts . . . . . . . . . . . . . . . . . . . . . 6.4.3 Access of matrix elements . . . . . . . . . . . . . 6.4.4 Initialization of the basis . . . . . . . . . . . . . . 6.5 Input matrix elements . . . . . . . . . . . . . . . . . . . . 6.5.1 Inputs for quantum dots . . . . . . . . . . . . . . 6.5.2 Inputs for nuclei . . . . . . . . . . . . . . . . . . . 6.6 Implementation of HF . . . . . . . . . . . . . . . . . . . . 6.6.1 Calculation of the Fock matrix . . . . . . . . . . . 6.6.2 Ad hoc linear mixing . . . . . . . . . . . . . . . . 6.6.3 HF transformation of the Hamiltonian . . . . . . 6.7 Implementation of normal ordering . . . . . . . . . . . . 6.8 IM-SRG(2) implementation . . . . . . . . . . . . . . . . . 6.8.1 Calculation of the IM-SRG(2) commutator . . . . 6.9 QDPT3 implementation . . . . . . . . . . . . . . . . . . . 6.10 Testing and benchmarking . . . . . . . . . . . . . . . . . 6.10.1 Randomized testing of numerical code . . . . . . 6.10.2 Linting, static analysis, and dynamic sanitization 6.10.3 Benchmarks and profiling . . . . . . . . . . . . . 6.11 Version control and reproducibility . . . . . . . . . . . . 6.12 Documentation . . . . . . . . . . . . . . . . . . . . . . . . 6.13 Coding style . . . . . . . . . . . . . . . . . . . . . . . . . 6.13.1 Formatting of code . . . . . . . . . . . . . . . . . 6.13.2 Coupling and complexity . . . . . . . . . . . . . . 6.13.3 Trade-offs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 137 140 142 143 144 144 146 150 154 157 162 162 164 166 167 170 171 172 173 174 177 181 184 186 187 189 191 193 193 193 196 Chapter 7 Results and analysis . . . . . . . 7.1 Methodology . . . . . . . . . . . . . . . 7.2 Results for quantum dots . . . . . . . . 7.2.1 Ground state energy . . . . . . 7.2.2 Addition and removal energies 7.2.3 Rate of convergence . . . . . . 7.2.4 Extrapolation . . . . . . . . . . 7.3 Results for nuclei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 197 199 200 202 204 206 212 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 8 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 8.1 Future perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 viii REFERENCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 ix LIST OF TABLES Table 7.1: Ground state energy of quantum dots with 𝑁 particles and an oscillator frequency of 𝜔. For every row, the calculations are performed in a harmonic oscillator basis with 𝐾 shells. The abbreviation *n.c.* stands for *no convergence*: these are cases where IM-SRG(2) or CCSD either diverged or converged extremely slowly. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Table 7.2: Similar to Table 7.1, this table compares the ground state energies of quantum dots calculated using IM-SRG(2), CCSD, and FCI [Ols13]. . . . . . . . . . . . . 201 Table 7.3: Addition energy of quantum dot systems. See Table 7.1 for details. . . . . . . 202 Table 7.4: Removal energy of quantum dot systems. See Table 7.3 for details. . . . . . . . 203 Table 7.5: Extrapolated ground state energies for quantum dots with fit uncertainties, computed from the approximate Hessian in the Levenberg–Marquardt fitting algorithm. These uncertainties also determine the number of significant figures presented. Extrapolations are done using 5-point fits where the number of shells 𝐾 ranges between 𝐾stop − 4 and 𝐾stop (inclusive). The abbreviation *n.c.* stands for *no convergence*: these are extrapolations where, out of the 5 points, at least one of them was unavailable because IM-SRG(2) or CCSD either diverged or converged extremely slowly. . . . . . . . . . . . . . . . . . 208 Table 7.6: Extrapolated addition energies for quantum dots with fit uncertainties. The abbreviation *n.c.* has the same meaning as in Table 7.5. The abbreviation *n.f.* stands for *no fit*: this particular extrapolation resulted in unphysical parameters (𝛽 ≤ 0). See Table 7.5 for other details. . . . . . . . . . . . . . . . . 209 Table 7.7: Extrapolated removal energies for quantum dots with fit uncertainties. See Table 7.6 for details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 x LIST OF FIGURES Nuclear chart showing the current progress of ab initio nuclear structure. Image courtesy of Heiko Hergert [Her+16]. . . . . . . . . . . . . . . . . . . . 3 An example of a Brandow diagram representing to Eq. 2.9. We have intentionally labeled many parts of this diagram to provide a clear correspondence to the algebraic expression. To emphasize the distinction between internal and external lines, we have drawn the arrows of external lines with a different shape than those of internal lines. . . . . . . . . . . . . . . . . . . . . . . . . 41 A Hugenholtz diagram representing to Eq. 2.9. This diagram is useful for determining the weight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Figure 2.3: Interpretation of a perturbative Goldstone diagram . . . . . . . . . . . . . . . 43 Figure 3.1: Diagram of the 3-jm symbol (123) in Eq. 3.12 . . . . . . . . . . . . . . . . . . 59 Figure 3.2: Degenerate line diagrams: upper diagram: (0′ 0′′ ) in Eq. 3.14; middle diagram: ̌ ′ ) in Eq. 3.15 . . . . . . . . . . . . . . . . (11′ ) in Eq. 3.13; lower diagram: (22 61 Figure 3.3: ̌ 3-jm symbol when an argument is zero: (102) = (12)/𝚥̆1 in Eq. 3.11 . . . . . . . 62 Figure 3.4: Second orthogonality relation for 3-jm symbols: (123)(234) = (14)(1′ 23)(1′ 23) in Eq. 3.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Figure 3.5: Triangular delta: {123} = (123)(123) in Eq. 3.17 . . . . . . . . . . . . . . . . . 64 Figure 3.6: First orthogonality relation for 3-jm symbols: ∑𝑗 𝚥̆32 (123)(1′ 2′ 3) = (11′ )(22′ ) 3 in Eq. 3.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Upper diagram: arrow cancellation: (1̌ 1̌ ′ ) = (11′ ) in Eq. 3.18; lower diagram: ̌ ′ ) = (−)2𝑗1 (11) ̌ in Eq. 3.19 . . . . . . . . . . . . . . . . . . . arrow reversal: (11 67 Figure 3.8: ̌ in Eq. 3.20 . . . . . . . . . . . . . . . . . . . . Triple arrow rule: (123) = (1̌ 2̌ 3) 68 Figure 3.9: Node reversal rule: (123) = (−)𝑗1 +𝑗2 +𝑗3 (321) in Eq. 3.21 . . . . . . . . . . . . . 69 Figure 3.10: Separation rules: (a) single-line separation rule: 𝑓 (𝑗1 , 𝑚1 ) = 𝛿𝑗 0 𝛿𝑚 0 𝑓 (0, 0) in 1 1 Eq. 3.22; (b) double-line separation rule; (c) triple-line separation rule. . . . . 71 Figure 3.11: A schematic derivation of the separation rule for five lines. The topologies of the diagrams are shown but most details (such as phases or other factors) have been omitted. Double lines indicate summed lines as before (Sec. 3.4.6). The meaning of the yellow rectangles is the same as in Fig. 3.10. . . . . . . . 72 Figure 1.1: Figure 2.1: Figure 2.2: Figure 3.7: xi ̌ ̌ ̌ in Eq. 3.24 . . . . . . . . . . . . . Figure 3.12: 6-j symbol: {123456} = (123)(156)(2 64)(3 45) 77 Figure 3.13: 9-j symbol: {123456789} = (123)(456)(789)(147)(258)(369) in Eq. 3.25 . . . . . 78 Figure 4.1: ̂ ∙) in the IM-SRG Hugenholtz diagrams representing the linked product 𝐶(◦, flow equation, with open circles representing 𝐴̂ and filled circles representing ̂ We omit diagrams that are related by permutations among the external 𝐵. bra lines or among the external ket lines. . . . . . . . . . . . . . . . . . . . . 111 Figure 4.2: Perturbative Hugenholtz diagrams (Sec. 2.7.1) of the second- and third-order QDPT corrections. Denominator lines have been elided. When QDPT is performed on IM-SRG-evolved Hamiltonians, many of the diagrams vanish. The remaining nonvanishing diagrams for addition energy are highlighted in blue and for removal energy are highlighted in red. . . . . . . . . . . . . . . . 120 Figure 5.1: The 42 lowest single-particle states (the first 5 shells) in the 2D harmonic oscillator basis. Each box represents a single-particle state arranged by 𝑚𝓁 , 𝑚𝑠 , and energy, and the up/down arrows indicate the spin of the states. Within each column, the principal quantum number 𝑛 increases as one traverses upward. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Figure 5.2: Shell structure of the spherical harmonic oscillator . . . . . . . . . . . . . . . 132 Figure 7.1: A schematic view of the various ways in which many-body methods in this work could be combined to calculate ground state, addition, and removal energies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Figure 7.2: Plots of ground state energy of quantum dots with 𝑁 particles and an oscillatory frequency of 𝜔 against the number of shells 𝐾 . Since DMC does not utilize a finite basis, the horizontal axis is irrelevant and DMC results are plotted as horizontal lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Figure 7.3: Addition energies for a selection of quantum dot parameters. See Fig. 7.2 for details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Figure 7.4: Removal energies for a selection of quantum dot parameters. See Fig. 7.3 for details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Figure 7.5: The behavior of ground state, addition, and removal energies as a function of the oscillator frequency 𝜔, with 𝐾 = 10 shells in the basis. The energy is normalized with respect to the HF values to magnify the differences. Lower frequency leads to stronger correlations and thereby a more difficult problem. 206 xii Figure 7.6: The impact of the interaction on convergence of addition and removal energies using IM-SRG(2) + QDPT3. For clarity, the plot does not distinguish between addition and removal energies. The horizontal axis shows the system parameters, where 𝑁 is the number of particles and 𝜔 is the oscillator frequency. The vertical axis shows |𝜌15 | (relative slope), which estimates the rate of convergence at 15 total shells. The lower the value of |𝜌15 |, the faster the convergence. The data points are categorized by the interactions. The trends suggest that the singular short-range part of the interaction has a much stronger impact on the convergence than the long-range tail. . . . . . . . . . 207 Figure 7.7: A five-point fit of the addition energies of the (𝑁 , 𝜔) = (6, 1.0) system with 𝐾stop = 15. The grey shaded region contains the masked data points, which are ignored by the fitting procedure. The left figure plots the central difference of the addition energies 𝜀 (+) with respect to the number of shells 𝐾 . On such a plot, the power law model should appear as a straight line. The fits are optimized using the procedure described in Sec. 7.2.4. Note that the lines do not evenly pass through the points in the left plot as the fitting weights are tuned for the energy on a linear scale, not the energy differences on a logarithmic scale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Figure 7.8: Ground state of 16 O, computed using IM-SRG(2) and CCSD with the N3 LO(𝛬 = 500 MeV, 𝜆SRG = 2 fm−1 ) interaction . . . . . . . . . . . . . . . . . . . . . . . 213 Figure 7.9: Addition energy from 16 O to 17 O, computed using IM-SRG(2) + QDPT3 and CCSD + EOM2 with the N3 LO(𝛬 = 500 MeV, 𝜆SRG = 2 fm−1 ) interaction . . . 214 Figure 7.10: Removal energy from 16 O to 15 N, computed using IM-SRG(2) + QDPT3 and CCSD + EOM2 with the N3 LO(𝛬 = 500 MeV, 𝜆SRG = 2 fm−1 ) interaction . . . 215 − Figure 7.11: Removal energy from 16 O to 15 N in the excited 𝐽 𝜋 = 23 state, computed using IM-SRG(2) + QDPT3 and CCSD + EOM2 with the N3 LO(𝛬 = 500 MeV, 𝜆SRG = 2 fm−1 ) interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Figure 7.12: Addition energy from 22 O to 23 O, computed using IM-SRG(2) + QDPT3 and CCSD + EOM2 with the N3 LO(𝛬 = 500 MeV, 𝜆SRG = 2 fm−1 ) interaction . . . 217 Figure 7.13: Removal energy from 22 O to 21 O, computed using IM-SRG(2) + QDPT3 and CCSD + EOM2 with the N3 LO(𝛬 = 500 MeV, 𝜆SRG = 2 fm−1 ) interaction . . . 217 xiii KEY TO SYMBOLS • 𝒙 (bold) — matrix or vector • 𝑥̂ (hat) — quantum operator • 𝑥 ∗ (superscript asterisk) — complex conjugation • 𝑥 † (superscript dagger) — Hermitian adjoint • 𝟏 — identity matrix • 1̂ — identity operator • ℕ — nonnegative integers • ℤ — integers • ℍ — Hilbert space of a quantum system • 𝔽± — ±-symmetric Fock space (Sec. 2.2) • 𝛿𝑝𝑞 — Kronecker delta • 𝜖𝑖𝑗𝑘 — Levi–Civita symbol • 𝛤 (𝑥) — gamma function • 𝐿𝛼𝑛 (𝑥) — associated Laguerre polynomial (Eq. 5.3) • 𝐿̄𝛼𝑛 (𝑥) – normalized associated Laguerre polynomial (Eq. 5.3) • 𝑌𝓁 𝑚 (𝜃, 𝜑) — spherical harmonic with Condon–Shortley phase [DLMF] • (−)𝑖 — shorthand for (−1)𝑖 • (−)𝜎 — sign of a permutation 𝜎 • ⌊𝑥⌋ — floor of 𝑥 ̂ 𝑦] ̂ − = [𝑥, ̂ 𝑦] ̂ — commutator • [𝑥, ̂ 𝑦] ̂ + = {𝑥, ̂ 𝑦} ̂ — anticommutator • [𝑥, • ∶𝑥∶ — normal ordering relative to Fermi vaccuum (Sec. 2.5) xiv • ⋮ 𝑥 ⋮ — normal ordering relative to physical vacuum (Sec. 2.5) • 𝕍 ⊗ 𝕎 — tensor product of vector spaces • |𝑎⟩ ⊗ |𝑏⟩ — tensor product constructor of kets • |𝑝 ⊗ 𝑞⟩ — tensor product state (Sec. 2.1.1) • |𝑝𝑞⟩+ — symmetrized state (Sec. 2.1.2) • |𝑝𝑞⟩− = |𝑝𝑞⟩ — antisymmetrized state (Sec. 2.1.2) • |∅⟩ — physical vacuum state (Sec. 2.1.1) • |𝛷⟩ — reference state (Sec. 2.4) • 𝑎̂𝑝 — physical annihilation operator (Sec. 2.2) • 𝑏̂𝑝 — quasiparticle annihilation operator (Sec. 2.4) •  ± ,  (𝑖) , ,  — symmetrization/antisymmetrization symbols (Sec. 2.1.2) • ∑𝑖𝑗⧵𝑎𝑏 — summation over holes and particles (Eq. 2.3) • ∏→𝑛 𝑘=𝑚 — ordered product from left (𝑘 = 𝑚) to right (𝑘 = 𝑛) • 𝑀𝑗 = {−𝑗, −𝑗 + 1, … , 𝑗 − 1, 𝑗} — projection quantum numbers of a multiplet (Eq. 3.4) √ • 𝚥̆𝑎 = 2𝑗𝑎 + 1 — (Eq. 3.8) • 𝑎̌ — time-reversed angular momentum (Eq. 3.15) • 𝑗 (𝑚 𝑚′ ) — Herring–Wigner 1-jm symbol (Eq. 3.16) ̂ • ⟨𝑎‖𝑄‖𝑏⟩ — reduced matrix element (Sec. 3.6) • ⟨𝑎, 𝑏|𝑎𝑏⟩ = ⟨𝑗𝑎 𝑚𝑎 𝑗𝑏 𝑚𝑏 |𝑗𝑎𝑏 𝑚𝑎𝑏 ⟩ — Clebsch–Gordan coefficient (Sec. 3.2) 𝑗𝑎 𝑗𝑏 𝑗𝑐 — Wigner 3-jm symbol (Sec. 3.3) (𝑚𝑎 𝑚𝑏 𝑚𝑐 ) { } • 𝑗𝑎 𝑗𝑏 𝑗𝑐 — triangular delta (Sec. 3.8.1) { } 𝑗𝑎 𝑗𝑏 𝑗𝑐 • — Wigner 6-j symbol (Sec. 3.8.2) 𝑗𝑑 𝑗𝑒 𝑗𝑓 • (𝑎𝑏𝑐) = xv ⎧ 𝑗 𝑗 𝑗 ⎫ ⎪ ⎪ 𝑎 𝑏 𝑐⎪ ⎪ • ⎨𝑗𝑑 𝑗𝑒 𝑗𝑓 ⎬ — Wigner 9-j symbol (Sec. 3.8.3) ⎪ ⎪ ⎪ ⎩𝑗𝑔 𝑗ℎ 𝑗𝑖 ⎪ ⎭ xvi Chapter 1 Introduction Quantum many-body theory is a broad discipline concerned with the behavior of quantum particles in large numbers. It is of critical relevance in many fields ranging from nuclear physics, through quantum chemistry, to condensed matter theory. The fundamental challenge of quantum many-body theory lies in the difficulty of obtaining accurate results for fermionic systems in an efficient manner, owing to the combinatoric growth of the many-body Hilbert space as the number of particles increases. Certain methods such as full configuration interaction (FCI) theory [SB09] can achieve arbitrarily accurate results, but their cost scales factorially with respect to the basis size and the number of particles, rendering them infeasible for all but the smallest systems. In contrast, methods that scale polynomially must necessarily make certain approximations. This has led to a menagerie of many-body methods that trade varying amounts of accuracy for computational efficiency. Nuclear science is an area where many-body theory has made substantial breakthroughs over the recent decades. For a long time, theories for nuclear physics have been largely limited to phenomenological methods such as density-functional theories and the nuclear shell model [BW88], which often have limited predictive power beyond the domain in which the parameters were fit. With advances in experimental technology such as the Facility for Rare Isotope Beams (FRIB) [Tho10], there is a growing demand for more accurate nuclear calculations and wider coverage of the nuclear chart, both of closed-shell and open-shell nuclei, and of stable and exotic ones. 1 The needs of nuclear astrophysics should also not be understated: accurate models of nuclear systems are critical to the understanding of dense stars and supernovae. Many-body theory is also needed to calculate the rates of processes such as the neutrinoless double-beta decay, which has fundamental relevance in particle physics: whether neutrinos are Majorana fermions or not. Hence, the development of many-body theory is an essential step toward these many goals. The recent introduction of chiral effective-field theory (EFT) [ME11] and methods based on renormalization group (RG) theory [Wil83; Wei79; Lep05] have dramatically changed the landscape of nuclear theory. Although the derivation of nuclear interactions from quantum chromodynamics (QCD) has not yet been achieved, there has been great progress through lattice QCD approaches [Hoe14; Uka15; IAH07; Ish+12; Iri+16]. At the moment, chiral EFT offers an intermediate, practical solution in which the symmetries of QCD are used to construct an ansatz of the nuclear interaction in a highly systematic way [EHM09]. The development of RG theory and methods have allowed the creation of soft interactions that are unitarily equivalent to the original [BFP07]. Such interactions converge much more rapidly with respect to basis size, thereby reducing the cost of computations. The increasing availability of computing power has also played a role in amplifying the progress of nuclear many-body theory. The fruits of this progress can be seen in Fig. 1.1. Just a decade ago, only a handful of nuclei near or below oxygen-16 could be computed by ab initio methods, as shown by the blue squares in the upper chart. The idea of calculating a nucleus as heavy as tin-100 through an ab initio method would have been considered absurd. One particular many-body theory, the so-called in-medium similarity renormalization group method (IM-SRG) [Her+16], has gained significant attention in nuclear theory of late. IM-SRG fuses the flow equation approach of similarity renormalization group (SRG) with the particle-hole operator formalism to reduce computational cost, providing a novel ab initio approach for solving 2 54 50 2005 Z = 50 46 42 Z = 40 atomic number 38 34 30 N = 82 Z = 28 26 22 Z = 20 18 N = 40 14 N = 50 10 N = 28 6 N = 20 neutron dripline 2 54 50 2017 Z = 50 46 42 Z = 40 atomic number 38 34 30 N = 82 Z = 28 26 22 Z = 20 18 N = 40 14 N = 50 ab initio calculation with up to 3-nucleon interactions 10 N = 28 6 N = 20 neutron dripline 2 2 6 10 14 18 22 26 30 34 38 42 46 50 54 58 number of neutrons 62 66 70 74 78 82 86 90 94 Figure 1.1: Nuclear chart showing the current progress of ab initio nuclear structure. Image courtesy of Heiko Hergert [Her+16]. the many-body problem. Over the years, IM-SRG has proven to be a highly flexible and adaptable method. It offers efficient evaluation of observables beyond energy [MPB15; Mor16], the ability to tackle excited states [PMB17; Par17], as well as extensions to open-shell nuclei [Her17]. Unlike coupled-cluster (CC) theory, IM-SRG theory is naturally Hermitian, making it straightforward to utilize its matrix elements as an effective operator for other methods such as the nuclear shell model [Bog+14; Str+16; Str+17]. The renormalizing nature of IM-SRG eliminates many of the couplings between components of the many-body operator, simplifying post-IM-SRG calculations. 3 In our work, we take advantage of the softening property of IM-SRG to compute single-particle energies (addition and removal energies) via quasidegenerate perturbation theory (QDPT) to third order, also known as open-shell perturbation theory. Our expectation is that the use of IM-SRG ought to improve the overall quality and convergence of the perturbative results. Compared to more sophisticated approaches such as the equations-of-motions method (EOM), QDPT at third order (QDPT3) is remarkably inexpensive. The ability to cheaply solve systems that are one particle away from a closed shell system can be remarkably useful in practice. Not only does it expand the scope of applicability of closed-shell IM-SRG, it can even permit access to excited states under certain circumstances. 1.1 Contributions Our main contributions in this work are: • We have created a graphical tool for performing equality-preserving transformations of angular momentum diagrams [Jucys]. The diagrammatic formalism we use extends the work of [YLV62]. • We have developed an open-source J-scheme codebase with an easy-to-use, flexible, and extensible framework for many-body calculations [Lutario]. With this framework, we have implemented the Hartree–Fock (HF) method, Møller–Plesset perturbation theory at second order (MP2), IM-SRG method with two-body operators (IM-SRG(2)), and QDPT3. Our program supports several quantum systems, including circular quantum dots, homogeneous electron gas, infinite matter, and nuclei. • We have performed calculations of the quantum dot ground state and single-particle energies using HF, IM-SRG(2), and QDPT3 [Yua+17], benchmarked against similar calculations using EOM and CCSD. The results have been analyzed and extrapolated to the infinite basis limit. 4 • We have performed calculations of nuclear ground state and single-particle energies using HF, IM-SRG(2), and QDPT3, benchmarked against similar calculations using EOM and CCSD. We discuss the results and some preliminary analysis in this work. 1.2 Outline The remainder of this thesis is structured as follows: • We begin with a review of the many-body formalism in chapter 2. The primary purpose of this section is to establish the background theory, terminology, and notational conventions used in this work, as the field of many-body theory tends to be plagued by differences in nomenclature and notation. • In chapter 3, we discuss the details of angular momentum coupling. This forms a critical part of our J-scheme machinery, needed for efficient nuclear calculations. We also discuss angular momentum diagrams, which are an effective tool for manipulation of angular momentum expressions, as well as the jucys software that we have developed to aid simplification of such diagrams. • In chapter 4, we discuss each of the three major many-body methods that we use in our thesis: Hartree–Fock, IM-SRG, and QDPT. We explain and show all the critical equations that are needed to implement them. • In chapter 5, we discuss the theoretical background for the main quantum systems that we have chosen to study and analyze: circular quantum dots and nuclei. • In chapter 6, we provide an overview of our concrete implementation of many-body methods and the quantum systems. We offer explanations, rationale, and discussion of various choices that we have made throughout the evolution of the project. • In the penultimate chapter 7, we discuss the numerical results obtained from our codes, and 5 compare them with results of collaborators. We perform analysis and also extrapolation of our results. • Finally, we conclude in chapter 8 with a review of our main results and perspectives for the future. An online version of this thesis is available1 along with any fixes to errors discovered after publication. Issues may be reported through the website. The version of this document is r44-g58051a3. 1 URL: https://github.com/xrf/thesis 6 Chapter 2 Many-body formalism In this section we review the fundamentals of many-body theory. While we have aimed to make the presentation fairly pedagogical, the primary goal of this chapter is to define the concepts, terminology, notation, and conventions used throughout this work. 2.1 Many-particle states In single-particle time-independent quantum mechanics, the Schrödinger equation takes the following form in Dirac notation, ̂ ⟩ = 𝜀|𝜓 ⟩ ℎ|𝜓 where • ℎ̂ is the single-particle Hamiltonian operator, • |𝜓 ⟩ is a state vector, and • 𝜀 is the energy of the state. The state |𝜓 ⟩ is an abstract ket vector that lives in the Hilbert space ℍ of the single-particle system. More concretely, we can also represent the state vector by a wave function 𝜓 |𝜓 ⟩ ↔ 𝜓 (𝑥) 7 where 𝑥 stands for all degrees of freedom of the particle. For example, an electron with spin in three-dimensional space would have 𝑥 = (𝑟1 , 𝑟2 , 𝑟3 , 𝑚s ), where (𝑟1 , 𝑟2 , 𝑟3 ) are the three spatial coordinates and 𝑚s is the spin projection quantum number. To treat systems of multiple particles, one may add additional variables to the wave function to represent the degrees of freedom of the additional particles, that is, |𝛹 ⟩ ↔ 𝛹 (𝑥1 , … , 𝑥𝑁 ) where • |𝛹 ⟩ is an 𝑁 -particle state, • 𝛹 is its corresponding wave function, • 𝑁 is the number of particles, and • 𝑥𝛼 represents the degrees of freedom of the 𝛼-th particle. With more than one particle, the Schrödinger equation remains conceptually the same, 𝐻̂ |𝛹 ⟩ = 𝐸|𝛹 ⟩ but there are many more degrees of freedom and thus more variables. Here, 𝐻̂ is the 𝑁 -particle Hamiltonian operator and 𝐸 is the energy of the 𝑁 -particle state. 2.1.1 Product states The simplest multi-particle system that can be solved is that of a non-interacting Hamiltonian of 𝑁 homogeneous particles, 𝑁 ̂ 𝑥̂𝛼 , 𝑘̂𝛼 ) 𝐻̂ 𝑁◦ = ∑ ℎ( 𝛼=1 8 ̂ 𝑥̂𝛼 , 𝑘̂𝛼 ) is some single-particle Hamiltonian with position 𝑥̂𝛼 and momentum1 𝑘̂𝛼 = −i∇̂ 𝛼 where ℎ( of the 𝛼-th particle. We assume its single-particle Schrödinger equation has a known set of solutions, ̂ 𝑥, ̂ ̂ 𝑘)|𝑝⟩ ℎ( = 𝜀𝑝 |𝑝⟩ These solutions form a set of single-particle basis states for the single-particle Hilbert space ℍ, |𝑝⟩ ↔ 𝜑𝑝 (𝑥) each with energy 𝜀𝑝 and labeled by the quantum numbers 𝑝. For example, if ℎ̂ is a single-electron atomic system, then we can choose 𝑝 = (𝑛, 𝑙, 𝑚𝓁 , 𝑚s ), which are the four conventional quantum numbers for atomic orbitals. The single-particle basis states |𝑝⟩ would simply be the standard atomic orbital states. From the single-particle basis, we can define a set of 𝑁 -particle wave functions |𝑝1 ⊗ ⋯ ⊗ 𝑝𝑁 ⟩ ↔ 𝛷𝑝 ⊗⋯⊗𝑝 (𝑥1 , … , 𝑥𝑁 ) 1 𝑁 We use 𝑘̂ for momentum to avoid confusion with 𝑝, which will be used to denote the quantum numbers of the single-particle basis later on. 1 9 via the tensor product construction2 |𝑝1 ⊗ 𝑝2 ⟩ = |𝑝1 ⟩ ⊗ |𝑝2 ⟩ |𝑝1 ⊗ 𝑝2 ⊗ 𝑝3 ⟩ = |𝑝1 ⟩ ⊗ |𝑝2 ⟩ ⊗ |𝑝3 ⟩ 𝑁 |𝑝1 ⊗ ⋯ ⊗ 𝑝𝑁 ⟩ = ⨂ |𝑝𝛼 ⟩ 𝛼=1 In terms of wave functions, this is equivalent to the definition 𝛷𝑝 ⊗𝑝 (𝑥1 , 𝑥2 ) = 𝜑𝑝 (𝑥1 )𝜑𝑝 (𝑥2 ) 1 2 1 2 𝛷𝑝 ⊗𝑝 ⊗𝑝 (𝑥1 , 𝑥2 , 𝑥3 ) = 𝜑𝑝 (𝑥1 )𝜑𝑝 (𝑥2 )𝜑𝑝 (𝑥3 ) 1 2 3 1 2 3 𝑁 𝛷𝑝 ⊗⋯⊗𝑝 (𝑥1 , … , 𝑥𝑁 ) = ∏ 𝜑𝑝 (𝑥𝛼 ) 1 𝑁 𝛼=1 𝛼 These product states (also known as Hartree products) are eigenstates of the many-body Schrödinger equation and form an orthonormal basis for the 𝑁 -particle Hilbert space ℍ𝑁 of the non-interacting 𝑁 -particle Hamiltonian 𝐻̂ 𝑁◦ . Formally, ℍ𝑁 is defined as the 𝑁 -th tensor power of the single-particle vector spaces3 𝑁 ℍ𝑁 = ⨂ ℍ 𝛼=1 Each product state is labeled by the tuple (𝑝1 , … , 𝑝𝑁 ) and has the following energy in this noninteracting system: 𝑁 𝐸𝑝◦ ⊗…⊗𝑝 = ∑ 𝜀𝑝 1 𝑁 𝛼=1 𝛼 2 A ket with ⊗ inside denotes a product state. Outside kets, ⊗ denotes the tensor product constructor, a multilinear operation that constructs maps multiple vectors to a vector in their tensor product space. 3 To further add to the confusion, this ⊗ symbol denotes the tensor product of vector spaces. 10 If we consider the special case 𝑁 = 0, a system with no particles, we find that the tensor product Hilbert space ℍ0 has precisely one basis state,4 which we call the (physical) vacuum state |∅⟩. Although the product states form a basis, they span both states in which particles are distinguishable as well as states in which particles are not distinguishable. Thus, unconstrained use of product states would violate the key principle of quantum mechanics that particles are indistinguishable. Mathematically, indistinguishability means that, under particle exchange, the wave function may only differ by a phase factor 𝑠. Consider, say, the exchange of a two-particle wave function 𝛹 , 𝛹 (𝑥2 , 𝑥1 ) = ±𝛹 (𝑥1 , 𝑥2 ) • For bosons, the phase factor 𝑠 = +1. This means the state is symmetric under particle exchange. • For fermions, the phase factor 𝑠 = −1. This means the state is antisymmetric under exchange. To extract the relevant states, we need to either symmetrize or antisymmetrize the product states. 2.1.2 Symmetrization and antisymmetrization A mathematical object 𝑋𝑎𝑏 is said to be ±-symmetric in the variables 𝑎 and 𝑏 if 𝑋𝑎𝑏 = ±𝑋𝑏𝑎 Note that: • +-symmetric is more commonly known as symmetric (without any qualification). 4 Mathematically, the space ℍ0 is isomorphic to complex numbers. 11 • −-symmetric is more commonly known as antisymmetric or skew-symmetric. Objects with more than two variables may be ±-symmetric in many combinations of variables. In particular, if it is ±-symmetric for every pair of variables in 𝑎1 … 𝑎𝑛 , then it is said to be fully ±-symmetric in 𝑎1 … 𝑎𝑛 . If an object is not fully ±-symmetric, we can make it so using the ±-symmetrization symbol  ± , defined as ∅± 𝑋 = 𝑋 𝑎± 𝑋𝑎 = 𝑋𝑎 1 ± 𝑎𝑏 𝑋𝑎𝑏 = (𝑋𝑎𝑏 ± 𝑋𝑏𝑎 ) 2 1 ± 𝑎𝑏𝑐 𝑋𝑎𝑏𝑐 = (𝑋𝑎𝑏𝑐 ± 𝑋𝑏𝑎𝑐 + 𝑋𝑏𝑐𝑎 ± 𝑋𝑐𝑏𝑎 + 𝑋𝑐𝑎𝑏 ± 𝑋𝑎𝑐𝑏 ) 6 1 𝑎± …𝑎 𝑋𝑎 …𝑎 = ∑ (±)𝜎 𝑋𝜎 (𝑎 …𝑎 ) 1 𝑛 1 𝑛 1 𝑛 𝑁 ! 𝜎 ∈𝑆 𝑛 where • 𝑋𝑎 …𝑎 is an arbitrary formula with free variables 𝑎1 , … , 𝑎𝑛 , 1 𝑛 • 𝑆𝑛 is the symmetric group, which contains all possible permutations of 𝑛 objects, • (−)𝜎 = sgn(𝜎), i.e. the sign of the permutation 𝜎, • (+)𝜎 = 1, and • 𝜎(𝑎1 … 𝑎𝑛 ) applies the permutation 𝜎 to the sequence of indices 𝑎1 … 𝑎𝑛 . We will often use the abbreviations  =  + and  =  − . We will also sometimes use the shorthand ⎧ ⎪ ⎪ + ⎪ 𝑖 ⎪ (𝑖) (−)  = =⎨ ⎪ ⎪ ⎪ − ⎪ ⎩ if 𝑖 is even if 𝑖 is odd 12 Note that the ±-symmetrization symbol  ± is merely a notational shorthand, much like the summation symbol ∑. It is not a quantum operator, but we can use it to define one. Let us introduce the 𝑁 -particle ±-symmetrizer 𝑆̂𝑁± , an operator defined as5 𝑆̂0± |∅⟩ = |∅⟩ 𝑆̂1± |𝑝⟩ = |𝑝⟩ |𝑝 ⊗ 𝑝2 ⟩ ± |𝑝2 ⊗ 𝑝1 ⟩ 𝑆̂2± |𝑝1 ⊗ 𝑝2 ⟩ = 1 2 |𝑝 ⊗ 𝑝2 ⊗ 𝑝3 ⟩ ± |𝑝2 ⊗ 𝑝1 ⊗ 𝑝3 ⟩ + |𝑝2 ⊗ 𝑝3 ⊗ 𝑝1 ⟩ ± ⋯ 𝑆̂3± |𝑝1 ⊗ 𝑝2 ⊗ 𝑝3 ⟩ = 1 6 𝑆̂𝑁± |𝑝1 ⊗ ⋯ ⊗ 𝑝𝑁 ⟩ = 𝑝± …𝑝 |𝑝1 ⊗ ⋯ ⊗ 𝑝𝑁 ⟩ 1 𝑁 Despite the involvement of a specific single-particle basis |𝑝⟩ in the definition of 𝑆̂𝑁± , one can show that the operator is actually independent of the basis choice. The 𝑆̂𝑁± operator is idempotent and therefore a projection operator. It projects the 𝑁 -particle Hilbert space ℍ𝑁 to the ±-symmetric subspace of ℍ𝑁 . By abuse of notation, we will denote this subspace 𝑆̂𝑁± (ℍ𝑁 ). We can now define 𝑁 -particle ±-symmetrized states in terms of product states, √ |𝑝 ⊗ 𝑝 ⟩ ± |𝑝2 ⊗ 𝑝1 ⟩ 𝑆̂2± |𝑝1 ⊗ 𝑝2 ⟩ = 1 √ 2 𝐶𝑝 𝑝 2(1 + 𝛿𝑝 𝑝 ) 1 2 1 2 √ 6 |𝑝1 𝑝2 𝑝3 ⟩± = 𝑆̂3± |𝑝1 ⊗ 𝑝2 ⊗ 𝑝3 ⟩ 𝐶𝑝 𝑝 𝑝 1 2 3 √ 𝑁 ! ̂± |𝑝1 … 𝑝𝑁 ⟩± = 𝑆 |𝑝 ⊗ ⋯ ⊗ 𝑝𝑁 ⟩ 𝐶𝑝 …𝑝 𝑁 1 |𝑝1 𝑝2 ⟩± = 2 1 5 𝑁 The ±-symmetrizer 𝑆̂± should not be confused with the spin operator 𝑆̂ introduced in later sections. 13 where 𝛿𝑎𝑏 denotes the Kronecker delta, and 𝐶𝑝 …𝑝 = ∏ 𝑛𝑝 ! 1 𝑁 𝑝 (2.1) is a factor that compensates for overcounting due to multiple particles occupying the same state. Here, 𝑛𝑝 is the occupation number of the single-particle state |𝑝⟩, which counts the number of times that 𝑝 appears in the list 𝑝1 … 𝑝𝑁 . In the case of fermions, 𝑛𝑝 can never be more than one due to the Pauli exclusion principle, and so 𝐶𝑝 …𝑝 is always one. 1 𝑁 Given a ±-symmetric state |𝑝1 … 𝑝𝑁 ⟩± , the particles are said to occupy the single-particle states |𝑝1 ⟩, … , |𝑝𝑁 ⟩. Any remaining unused single-particle states are said to be unoccupied. These states are solutions of the non-interacting Hamiltonian 𝐻̂ ◦ and they form an orthonormal basis for the 𝑁 -particle ±-symmetric Hilbert space 𝑆̂𝑁± (ℍ𝑁 ). Symmetric states are associated with bosons, and antisymmetric states are associated with fermions. Notationally, we distinguish ±-symmetrized states from product states by the absence of the ⊗ symbol in the ket. In the case of fermions, antisymmetrized states are also known as Slater determinants, because their wave functions |𝑝1 … 𝑝𝑁 ⟩− ↔ 𝛷𝑝− …𝑝 (𝑥1 , … , 𝑥𝑁 ) 1 𝑁 can be written as a matrix determinant | | | 𝜑 (𝑥 ) ⋯ 𝜑 (𝑥 ) | | 𝑝1 1 𝑝𝑁 1 | | | | 1 || − | 𝛷𝑝 …𝑝 (𝑥1 , … , 𝑥𝑁 ) = √ | ⋮ ⋱ ⋮ | 1 𝑁 𝑁 !| | | | | | |𝜑𝑝1 (𝑥𝑁 ) ⋯ 𝜑𝑝𝑁 (𝑥𝑁 )| | | Slater determinants are guaranteed to satisfy the Pauli exclusion principle. One cannot construct a 14 state in which two particles share the same single-particle state as such states are always projected to zero by the antisymmetrizer. 2.2 Second quantization In everything we have discussed so far, the number of particles 𝑁 always appears as an explicit parameter. We will now shift toward the second quantization formalism, which avoids explicit mention of 𝑁 by treating all values of 𝑁 simultaneously. This offers significant simplifications to the mathematics at the cost of adding a new layer of abstraction. The prior formalism will henceforth be known as first quantization. The first step is to direct sum all of the 𝑁 -particle ±-symmetric Hilbert spaces 𝑆̂𝑁± (ℍ𝑁 ) into a unified space, through the so-called Fock space construction, ∞ 𝔽± = ⨁ 𝑆̂𝑁± (ℍ𝑁 ) = ℍ0 ⊕ ℍ ⊕ 𝑆̂2± (ℍ ⊗ ℍ) ⊕ 𝑆̂3± (ℍ ⊗ ℍ ⊗ ℍ) ⊕ ⋯ 𝑁 =0 Here, 𝔽± is the ±-symmetric Fock space. Next, we introduce a set of creation and annihilation operators, collectively known as the (physical) field operators, which serve to connect each 𝑁 -particle Hilbert space to an adjacent 𝑁 ± 1-particle Hilbert space. The field operators are dependent on the choice of ±-symmetry but we opt to suppress this detail for clarity. The annihilation operator for the single-particle state |𝑝⟩ is denoted 𝑎̂𝑝 and has the effect of removing one of the particles that occupy the |𝑝⟩ state, 𝑎̂𝑝 |𝑝𝑝1 … 𝑝𝑁 ⟩± = √ 𝑛𝑝 |𝑝1 … 𝑝𝑁 ⟩± 15 where 𝑛𝑝 denotes the occupation number of |𝑝⟩ in |𝑝𝑝1 … 𝑝𝑁 ⟩± , i.e. the number of occurrences of 𝑝 in 𝑝𝑝1 … 𝑝𝑁 . In particular, if |𝑝⟩ is not occupied in a state |𝛷⟩± , then the operator collapses it to zero, 𝑎̂𝑝 |𝛷⟩± = 0 † The creation operator for the single-particle state |𝑝⟩ is denoted 𝑎̂𝑝 and is the Hermitian adjoint of 𝑎̂𝑝 . It has the effect of adding a new particle that occupies the |𝑝⟩ state, † 𝑎̂𝑝 |𝑝1 … 𝑝𝑁 ⟩± = √ 1 ± 𝑛𝑝 |𝑝𝑝1 … 𝑝𝑁 ⟩± where 𝑛𝑝 denotes the occupation number of |𝑝⟩ in |𝑝1 … 𝑝𝑁 ⟩± . For fermions, if |𝑝⟩ is already occupied, then the operator collapses it to zero, † 𝑎̂𝑝 |𝑝𝑝1 … 𝑝𝑁 ⟩− = 0 A ±-symmetric state can be constructed by a chain of creation operators applied to the vacuum state |∅⟩, † † 𝑎̂𝑝1 … 𝑎̂𝑝𝑁 |∅⟩ |𝑝1 … 𝑝𝑁 ⟩ = √ 𝐶𝑝 …𝑝 1 𝑁 where 𝐶𝑝 …𝑝 is the compensating factor defined in Eq. 2.1. From the ±-symmetry of the the 1 𝑁 state, we obtain the commutation relations that define the essential behavior of field operators: † [𝑎̂𝑝 , 𝑎̂𝑝2 ]∓ = 𝛿𝑝 𝑝 1 1 2 † † [𝑎̂𝑝 , 𝑎̂𝑝 ]∓ = [𝑎̂𝑝1 , 𝑎̂𝑝2 ]∓ = 0 1 2 16 where • [𝑋̂ , 𝑌̂ ]− = [𝑋̂ , 𝑌̂ ] denotes the commutator, chosen for symmetric states, and • [𝑋̂ , 𝑌̂ ]+ = {𝑋̂ , 𝑌̂ } denotes the anticommutator, chosen for antisymmetric states. 2.3 Many-body operators From this section onward, we will focus mainly on fermions, so all field operators will be anticommuting. Given a set of 𝑁 -particle operators 𝑄̂ 𝑁 acting on the 𝑁 -particle Hilbert space, we can direct sum all of them to form a particle-number-agnostic operator 𝑄̂ that acts on the entire Fock space, ∞ 𝑄̂ = ⨁ 𝑄̂ 𝑁 𝑁 =0 This can be applied to any operator from first quantization, including the ±-symmetrizer 𝑆̂𝑁± ↦ 𝑆̂± and the Hamiltonian 𝐻̂ 𝑁 ↦ 𝐻̂ . Many-body operators are classified by rank, which determines the maximum number of particles that the operator can couple at any given instant. A rank-𝑘 operator is more conventionally known as a 𝑘-body operator. 2.3.1 Zero-body operators The most trivial kind of operator are zero-body operators, which multiplies a state by a number. Formally, we can write a zero-body operator 𝑍̂ in the form 𝑍̂ = 𝑍 1̂ 17 where 𝑍 a complex number and 1̂ is the identity operator, but for simplicity, it suffices to call 𝑍 itself the “operator” as the distinction between 𝑍̂ and 𝑍 is largely irrelevant. The value of 𝑍 can be inferred from its expectation value in the vacuum state, 𝑍 = ⟨∅|𝑍 |∅⟩ although its expectation value in any state will still yield the same result. They do not contribute anything if the bra and ket states differ. 2.3.2 One-body operators The next simplest kind of operator are one-body operators, which are of the form † 𝑇̂ = ∑ 𝑇𝑝𝑞 𝑎̂𝑝 𝑎̂𝑞 𝑝𝑞 where 𝑇𝑝𝑞 defines a matrix of complex numbers indexed by 𝑝 and 𝑞, known as the matrix elements of 𝑇̂ . In first quantization, one-body operators are of the form, 𝑁 ̂ 𝑥̂𝛼 , 𝑘̂𝛼 ) 𝑇̂𝑁 = ∑ 𝑡( 𝛼=1 Kinetic energy and external potentials are examples of such operators. The matrix elements of such operators may be obtained via the integral, ̂ 𝑞 (𝑥) d𝑥 𝑇𝑝𝑞 = ⟨𝑝|𝑇̂ |𝑞⟩ = ∫ 𝜑𝑝∗ (𝑥)𝑡𝜑 One-body operators have two notable properties: 18 • Their expectation value in the vacuum state is zero: ⟨∅|𝑇̂ |∅⟩ = 0 • They do not contribute if the bra and ket states differ in more than one single-particle state. That is, unless the set intersection {𝑝1 , … , 𝑝𝑁 } ∩ {𝑞1 , … , 𝑞𝑁 } has at least 𝑁 − 1 elements, then ⟨𝑝1 ⋯ 𝑝𝑁 |𝑇̂ |𝑞1 ⋯ 𝑞𝑁 ⟩ = 0 2.3.3 Two-body operators Two-body operators take the form6 1 1 † † † † 𝑉̂ = ∑ 𝑉𝑝𝑞𝑟𝑠 𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑠 𝑎̂𝑟 = ∑ 𝑉𝑝𝑞𝑟𝑠 𝑎̂𝑝 𝑎̂𝑟 𝑎̂𝑞 𝑎̂𝑠 4 𝑝𝑞𝑟𝑠 4 𝑝𝑞𝑟𝑠 (2.2) where 𝑉𝑝𝑞𝑟𝑠 denotes an antisymmetrized matrix element of 𝑉̂ . Such matrix elements have the following symmetry properties, 𝑉𝑝𝑞𝑟𝑠 = 𝑝𝑞 𝑟𝑠 𝑉𝑝𝑞𝑟𝑠 ↔ 𝑉𝑝𝑞𝑟𝑠 = −𝑉𝑞𝑝𝑟𝑠 = 𝑉𝑞𝑝𝑠𝑟 = −𝑉𝑝𝑞𝑠𝑟 In first quantization, two-body operators are of the form, 1 𝑁 𝑁 ̂ 𝑥̂𝛼 , 𝑥̂𝛽 , 𝑘̂𝛼 , 𝑘̂𝛽 ) 𝑉̂𝑁 = ∑ ∑ 𝑣( 2 𝛼=1 𝛽=1 6 Note the reversal of 𝑎̂𝑟 and 𝑎̂𝑠 . 19 Interactions, such as the Coulomb interactions, are two-body (or higher) operators. The matrix elements of such operators may be obtained via ⊗ 𝑉𝑝𝑞𝑟𝑠 = ⟨𝑝𝑞|𝑉̂ |𝑟𝑠⟩ = 2𝑟𝑠 𝑉𝑝𝑞𝑟𝑠 where ⊗ ̂ 𝑟 (𝑥1 )𝜑𝑠 (𝑥2 ) d𝑥1 d𝑥2 𝑉𝑝𝑞𝑟𝑠 = ⟨𝑝 ⊗ 𝑞|𝑉̂ |𝑟 ⊗ 𝑠⟩ = ∬ 𝜑𝑝∗ (𝑥1 )𝜑𝑞∗ (𝑥2 )𝑣𝜑 are the non-antisymmetrized matrix elements of 𝑉̂ , which may considered matrix elements in the product state basis. These matrix elements have a weaker symmetry, ⊗ ⊗ 𝑉𝑝𝑞𝑟𝑠 = (𝑝,𝑟)(𝑞,𝑠) 𝑉𝑝𝑞𝑟𝑠 ⊗ ⊗ In other words, 𝑉𝑝𝑞𝑟𝑠 = 𝑉𝑞𝑝𝑠𝑟 . This arises from the indistinguishability of particles. Two-body operators have two notable properties: • Matrix elements of states with one or fewer particles vanish: ⟨∅|𝑉̂ |∅⟩ = 0 ⟨𝑝|𝑉̂ |𝑞⟩ = 0 • They do not contribute if the bra and ket states differ in more than two single-particle states. That is, unless the set intersection {𝑝1 , … , 𝑝𝑁 } ∩ {𝑞1 , … , 𝑞𝑁 } has at least 𝑁 − 2 elements, then ⟨𝑝1 ⋯ 𝑝𝑁 |𝑉̂ |𝑞1 ⋯ 𝑞𝑁 ⟩ = 0 20 2.3.4 Three-body operators and beyond Three-body and, more generally, 𝑘-body operators take the form7 1 1 † † † † † † 𝑊̂ = ∑ 𝑊𝑝𝑞𝑟𝑠𝑡𝑢 𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑟 𝑎̂𝑢 𝑎̂𝑡 𝑎̂𝑠 = ∑ 𝑊𝑝𝑞𝑟𝑠𝑡𝑢 𝑎̂𝑝 𝑎̂𝑠 𝑎̂𝑞 𝑎̂𝑡 𝑎̂𝑟 𝑎̂𝑢 36 𝑝𝑞𝑟𝑠𝑡𝑢 36 𝑝𝑞𝑟𝑠𝑡𝑢 1 † † 𝑋̂ = 2 𝑋𝑝 …𝑝 𝑞 …𝑞 𝑎̂𝑝1 … 𝑎̂𝑝 𝑎̂𝑞 … 𝑎̂𝑞 ∑ 1 1 1 𝑘 𝑘 𝑘 𝑘 𝑘! 𝑝1 …𝑝𝑘 𝑞1 …𝑞𝑘 1 † † 𝑋𝑝 …𝑝 𝑞 …𝑞 (𝑎̂𝑝1 𝑎̂𝑞 ) … (𝑎̂𝑝 𝑎̂𝑞 ) = 2 ∑ 1 1 1 𝑘 𝑘 𝑘 𝑘 𝑘! 𝑝1 …𝑝𝑘 𝑞1 …𝑞𝑘 with non-antisymmetrized matrix elements ⊗ 𝑊𝑝𝑞𝑟𝑠𝑡𝑢 = ⟨𝑝 ⊗ 𝑞 ⊗ 𝑟|𝑊̂ |𝑠 ⊗ 𝑡 ⊗ 𝑢⟩ 𝑋𝑝⊗ …𝑝 𝑞 …𝑞 = ⟨𝑝1 ⊗ ⋯ ⊗ 𝑝𝑘 |𝑋̂ |𝑞1 ⊗ ⋯ ⊗ 𝑞𝑘 ⟩ 1 𝑘 1 𝑘 and antisymmetrized matrix elements ⊗ 𝑊𝑝𝑞𝑟𝑠𝑡𝑢 = ⟨𝑝𝑞𝑟|𝑊̂ |𝑠𝑡𝑢⟩ = 6𝑠𝑡𝑢 𝑊𝑝𝑞𝑟𝑠𝑡𝑢 𝑋𝑝 …𝑝 𝑞 …𝑞 = ⟨𝑝1 … 𝑝𝑘 |𝑋̂ |𝑞1 … 𝑞𝑘 ⟩ = 𝑘!𝑞 …𝑞 𝑋𝑝⊗ …𝑝 𝑞 …𝑞 1 𝑘 1 𝑘 1 𝑘 1 𝑘 1 𝑘 and symmetries ⊗ ⊗ 𝑊𝑝𝑞𝑟𝑠𝑡𝑢 = (𝑝,𝑠)(𝑞,𝑡)(𝑟,𝑢) 𝑊𝑝𝑞𝑟𝑠𝑡𝑢 𝑋𝑝⊗ …𝑝 𝑞 …𝑞 = (𝑝 ,𝑞 )…(𝑝 ,𝑞 ) 𝑋𝑝⊗ …𝑝 𝑞 …𝑞 1 𝑘 1 𝑘 1 𝑘 1 𝑘 1 1 𝑘 𝑘 𝑊𝑝𝑞𝑟𝑠𝑡𝑢 = 𝑝𝑞𝑟 𝑠𝑡𝑢 𝑊𝑝𝑞𝑟𝑠𝑡𝑢 𝑋𝑝 …𝑝 𝑞 …𝑞 = 𝑝 …𝑝 𝑞 …𝑞 𝑋𝑝 …𝑝 𝑞 …𝑞 1 𝑘 1 𝑘 1 𝑘 1 𝑘 1 𝑘 1 𝑘 7 Note the reversal of annihilation operators again. 21 𝑘-body operators have two notable properties: • Matrix elements of states with one or fewer particles vanish. That is, if 𝑚 < 𝑘, then ⟨𝑝1 … 𝑝𝑚 |𝑋̂ |𝑞1 … 𝑞𝑚 ⟩ = 0 • They do not contribute if the bra and ket states differ in more than 𝑘 single-particle states. That is, unless the set intersection {𝑝1 , … , 𝑝𝑁 } ∩ {𝑞1 , … , 𝑞𝑁 } has at least 𝑁 − 𝑘 elements, then ⟨𝑝1 ⋯ 𝑝𝑁 |𝑋̂ |𝑞1 ⋯ 𝑞𝑁 ⟩ = 0 2.4 Particle-hole formalism Any state in Fock space can be described by a chain of creation operators applied to the vacuum state. In many-body systems, the number of particles can be quite large, leading to long chains of creation operators. Instead of starting from scratch (i.e. vacuum state), it can be more convenient to start from a pre-existing 𝑁 -particle Slater determinant |𝛷⟩, called the reference state, † † |𝛷⟩ = 𝑎̂𝑝1 ⋯ 𝑎̂𝑝𝑁 |∅⟩ Then, to access other states we would create and/or annihilate particles relative to the reference state. For example, † † † † 𝑎̂𝑝 𝑎̂𝑝 |𝛷⟩ = 𝑎̂𝑝 𝑎̂𝑝2 ⋯ 𝑎̂𝑝𝑁 |∅⟩ 1 22 In addition to simplifying the algebra, this also provides a coarse measure of “distance” from the reference state, quantified by the number of field operators applied to the reference state that is needed. † Formally, we can construct a set of quasiparticle (particle-hole) field operators 𝑏̂𝑝 and 𝑏̂𝑝 , ⎧ ⎪ ⎪ ⎪ ⎪𝑎̂𝑝 𝑏̂𝑝 = ⎨ ⎪ ⎪ † ⎪ 𝑎̂ ⎪ ⎩ 𝑝 if 𝑝 is unoccupied in the reference state if 𝑝 is occupied in the reference state † † In this context, 𝑏̂𝑝 applied to an occupied state 𝑝 is said to create a hole state, whereas 𝑏̂𝑝 applied to an unoccupied state 𝑝 is said to create a particle state. These operators define the so-called particle-hole formalism. † The quasiparticle operators have an algebra analogous to the original field operators 𝑎̂𝑝 and 𝑎̂𝑝 : { † 𝑏̂𝑝 , 𝑏̂𝑞 } = 𝛿𝑝𝑞 { } { } † † 𝑏̂𝑝 , 𝑏̂𝑞 = 𝑏̂𝑝 , 𝑏̂𝑞 = 0 𝑏̂𝑝 |𝛷⟩ = 0 The quasiparticle field operators treat |𝛷⟩ as their “vacuum” state, similar to how original field operators treat |∅⟩ as their vacuum state. For this reason, the reference state |𝛷⟩ is also known as a Fermi vacuum. So far, we have used the letters 𝑝, 𝑞, 𝑟, . . . to label single-particle states, which contain both hole and particle states relative to the Fermi vacuum. We will continue to use this convention. It is often convenient to sum over only hole states, or only particle states. To this end, we introduce a convention where 𝑖, 𝑗, 𝑘, . . . are used to label hole states and 𝑎, 𝑏, 𝑐, . . . label particle states. We 23 also introduce a special notation for summation over holes and particles: ∑ ⋯ (2.3) 𝑖𝑗𝑘…⧵𝑎𝑏𝑐… The backslash serves as an additional reminder that 𝑖, 𝑗, 𝑘, . . . should be summed over hole states only, and 𝑎, 𝑏, 𝑐, . . . should be summed over particle states only. In this formalism, we use the following concise notation to denote states near the reference state, † † † † † † |𝛷𝑎 …𝑎 𝑖 …𝑖 ⟩ = 𝑏̂𝑎1 … 𝑏̂𝑎𝑘 𝑏̂𝑖 … 𝑏̂𝑖 |𝛷⟩ = 𝑎̂𝑎1 … 𝑎̂𝑎𝑘 𝑎̂𝑖 … 𝑎̂𝑖 |𝛷⟩ 1 𝑘1 𝑘 1 𝑘 1 𝑘 Note that although this state has 2𝑘 quasi-particles, it still has exactly 𝑁 physical particles, because the particles and holes cancel out exactly. We also introduce a shorthand for its energy, 𝐸𝛷 2.5 𝑎1 …𝑎𝑘 𝑖1 …𝑖𝑘 = ⟨𝛷𝑎 …𝑎 𝑖 …𝑖 |𝐻̂ |𝛷𝑎 …𝑎 𝑖 …𝑖 ⟩ 1 𝑘1 𝑘 1 𝑘1 𝑘 Normal ordering We say a product of field operators is in normal order if all creation operators appear before all annihilation operators. More generally, we may define normal ordering to be an arbitrarily chosen total order subject ̂ ∓ = 0. But we will not need ̂ 𝛽] to the constraint that if both 𝛼̂ 𝛽̂ and 𝛽̂𝛼̂ are normal ordered then [𝛼, this general definition here. Wick’s theorem (introduced later) does hold in this general setting, though. 24 Given a monomial 𝑐 𝛱̂ , where 𝑐 is a numeric coefficient and 𝛱̂ is a product of field operators,8 we define its normal ordering as ∶𝑐 𝛱̂ ∶ = (±)𝜎 𝑐 𝜎(𝛱̂ ) where 𝜎 is a permutation that rearranges the field operators in 𝛱̂ such that 𝜎 (𝛱 ) is in normal order, and • for bosons, (+)𝜎 = +; • for fermions, (−)𝜎 is the sign of the permutation 𝜎. Although the definition leaves the permutation underdetermined, the definition of normal order ensures that normal ordering will yield the same result no matter which permutation is chosen. The operation is dependent on the choice of field operators. In this text, we have two choices: † • When normal ordering relative to the physical vacuum, the physical field operators 𝑎̂𝑝 and 𝑎̂𝑝 are used. † • When normal ordering relative to the Fermi vacuum, the quasiparticle field operators 𝑏̂𝑝 and 𝑏̂𝑝 are used. We will typically work with normal ordering relative to the Fermi vacuum. For normal ordering relative to the physical vacuum, we use three dots instead of a colon: ⋮ 𝑐 𝛱̂ ⋮ 8 A product of field operators is sometimes referred to as an operator string. 25 Several notations exist for this operation: ∶𝑐 𝛱̂ ∶ { } 𝑐 𝛱̂ N[𝑐 𝛱̂ ] The colon notation is common in nuclear physics, [PMB17] whereas delimiters prefixed with the letter “N” [SB09] or curly braces [Rei13] are common in quantum chemistry. † As an example, consider the fermionic monomial −2𝑏̂𝑝 𝑏̂𝑞 with coefficient 𝑐 = −2 and operators † 𝛱̂ = 𝑏̂𝑝 𝑏̂𝑞 . We can normal order it relative to the Fermi vacuum: † † ∶−2𝑏̂𝑝 𝑏̂𝑞 ∶ = 2𝑏̂𝑞 𝑏̂𝑝 Since this permutation has odd parity, the sign is flipped. † † As another example, consider the fermionic monomial 𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑟 𝑎̂𝑠 𝑎̂𝑡 . It has several normal- ordered forms: † † † † † † † † ⋮ 𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑟 𝑎̂𝑠 𝑎̂𝑡 ⋮ = 𝑎̂𝑞 𝑎̂𝑟 𝑎̂𝑝 𝑎̂𝑠 𝑎̂𝑡 = −𝑎̂𝑞 𝑎̂𝑟 𝑎̂𝑝 𝑎̂𝑡 𝑎̂𝑠 = 𝑎̂𝑟 𝑎̂𝑞 𝑎̂𝑝 𝑎̂𝑡 𝑎̂𝑠 = ⋯ They are all equally valid. Normal ordering is idempotent, and moreover supersedes existing normal orderings: ̂ = ∶𝛱̂ 𝛤̂ 𝛬∶ ̂ ∶(𝛱̂ ∶𝛤̂ ∶ 𝛬)∶ Bosonic/fermionic normal-ordered products are symmetric/antisymmetric under operator exchange, i.e. for any permutation 𝜎, ∶𝛱̂ ∶ = (±)𝜎 ∶𝜎(𝛱̂ )∶ 26 2.5.1 Matrix elements relative to the Fermi vacuum The primary application of normal ordering is in the redistribution of matrix elements between different ranks of operators, as the rank of an operator is dependent on the vacuum used. Usually, many-body operators are given relative to the physical vacuum. For example, a (0, 1, 2, 3)-body operator 𝐻̂ has the standard form 𝐻̂ = 𝐸∅ + 𝐻̂ 1∅ + 𝐻̂ 2∅ + 𝐻̂ 3∅ where 𝐸∅ is the physical vacuum energy (0-body component) and 𝐻̂ 𝑘∅ denotes its 𝑘-body component relative to the physical vacuum. In other words, the monomials of each component are already in normal order relative to the physical vacuum, † ∅ 𝐻̂ 1∅ = ∑ 𝐻𝑝𝑞 ⋮ 𝑎̂𝑝 𝑎̂𝑞 ⋮ 𝑝𝑞 1 † † ∅ ⋮ 𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑠 𝑎̂𝑟 ⋮ 𝐻̂ 2∅ = ∑ 𝐻𝑝𝑞𝑟𝑠 4 𝑝𝑞𝑟𝑠 1 † † † ∅ 𝐻̂ 3∅ = ⋮ 𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑟 𝑎̂𝑢 𝑎̂𝑡 𝑎̂𝑠 ⋮ ∑ 𝐻𝑝𝑞𝑟𝑠𝑡𝑢 36 𝑝𝑞𝑟𝑠𝑡𝑢 These definitions are identical to those in Sec. 2.3. The normal ordering notation is present only for emphasis. If we rearrange their monomials so that they are in normal order relative to the Fermi vacuum, portions of higher-rank operators would migrate to lower-rank operators. Take, for example, the two-body component: † † † † † ⋮ 𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑠 𝑎̂𝑟 ⋮ = ∶𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑠 𝑎̂𝑟 ∶ +4𝑝𝑞 𝑟𝑠 𝑛𝑞 𝛿𝑞𝑠 ∶𝑎̂𝑝 𝑎̂𝑟 ∶ +2𝑟𝑠 𝑛𝑝 𝑛𝑞 𝛿𝑝𝑟 𝛿𝑞𝑠 27 This leads to a different decomposition of the operators into particle-hole components, 𝐻̂ = 𝐸𝛷 + 𝐻̂ 1𝛷 + 𝐻̂ 2𝛷 + 𝐻̂ 3𝛷 where 𝐸𝛷 is the Fermi vacuum energy and 𝐻̂ 𝑘𝛷 denotes9 its 𝑘-body component relative to the Fermi vacuum |𝛷⟩, † 𝛷 𝐻̂ 1𝛷 = ∑ 𝐻𝑝𝑞 ∶𝑎̂𝑝 𝑎̂𝑞 ∶ 𝑝𝑞 1 † † 𝛷 ∶𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑠 𝑎̂𝑟 ∶ 𝐻̂ 2𝛷 = ∑ 𝐻𝑝𝑞𝑟𝑠 4 𝑝𝑞𝑟𝑠 1 † † † 𝐻̂ 3𝛷 = ∶𝑎̂ 𝑎̂ 𝑎̂ 𝑎̂ 𝑎̂ 𝑎̂ ∶ ∑ 𝐻𝛷 36 𝑝𝑞𝑟𝑠𝑡𝑢 𝑝𝑞𝑟𝑠𝑡𝑢 𝑝 𝑞 𝑟 𝑢 𝑡 𝑠 and with matrix elements given by 1 1 ∅ ∅ + ∑ 𝐻𝑖𝑗𝑘𝑖𝑗𝑘 ∑ 𝐻𝑖𝑗𝑖𝑗 2 𝑖𝑗⧵ 6 𝑖𝑗𝑘⧵ 𝑖⧵ 1 𝛷 ∅ ∅ ∅ 𝐻𝑝𝑞 = 𝐻𝑝𝑞 + ∑ 𝐻𝑝𝑖𝑞𝑖 + ∑ 𝐻𝑝𝑖𝑗𝑞𝑖𝑗 2 𝑖⧵ 𝑖𝑗⧵ 𝐸𝛷 = 𝐸∅ + ∑ 𝐻𝑖𝑖∅ + (2.4) 𝛷 ∅ ∅ 𝐻𝑝𝑞𝑟𝑠 = 𝐻𝑝𝑞𝑟𝑠 + ∑ 𝐻𝑝𝑞𝑖𝑟𝑠𝑖 𝑖⧵ 𝛷 ∅ 𝐻𝑝𝑞𝑟𝑠𝑡𝑢 = 𝐻𝑝𝑞𝑟𝑠𝑡𝑢 Note that these particle-hole components 𝐻̂ 𝑘𝛷 do not conserve the number of quasiparticles, so their algebraic properties are not entirely analogous to the physical components 𝐻̂ 𝑘∅ . Properly rewriting the operators in terms of quasiparticle field operators would lead to tedious results such 9 In other literature, it is common to use the symbols 𝐹̂ = 𝐻̂ 1𝛷 , 𝛤̂ = 𝐻̂ 2𝛷 , and 𝑊̂ = 𝐻̂ 3𝛷 . 28 as: † 𝛷 ̂ ̂ 𝛷 ̂† ̂ 𝛷 ̂† ̂† ∶𝑏𝑖 𝑏𝑎 ∶ ∶𝑏𝑎 𝑏𝑏 ∶ − ∑ 𝐻𝑖𝑗𝛷 ∶𝑏̂𝑗 𝑏̂𝑖 ∶ + ∑ 𝐻𝑖𝑎 𝐻̂ 1𝛷 = ∑ 𝐻𝑎𝑖 ∶𝑏𝑎 𝑏𝑖 ∶ + ∑ 𝐻𝑎𝑏 𝑖⧵𝑎 𝑖𝑗⧵ ⧵𝑎𝑏 𝑖⧵𝑎 Fortunately, we do not need to do this. The matrix elements in Eq. 2.4 can be derived using the definition of normal ordering and the usual commutation relations, more efficiently, using Wick’s theorem or many-body diagrams. 2.5.2 Ambiguity of normal ordering on non-monomials The following expressions are not monomials: † 1 + 𝑎̂𝑝 𝑎̂𝑞 † 𝑎̂ 𝑎̂ e 𝑝 𝑞 𝐻̂ Normal ordering is ill-defined (ambiguous) on such non-monomial operators. The following † paradox illustrates the problem: consider the fermionic product 𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑟 , † † 𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑟 = ⋮ 𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑟 ⋮ ? † = ⋮ 𝛿𝑝𝑞 𝑎̂𝑟 − 𝑎̂𝑞 𝑎̂𝑝 𝑎̂𝑟 ⋮ ? † = ⋮ 𝛿𝑝𝑞 𝑎̂𝑟 ⋮ − ⋮ 𝑎̂𝑞 𝑎̂𝑝 𝑎̂𝑟 ⋮ † = 𝛿𝑝𝑞 𝑎̂𝑟 + 𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑟 To eliminate ambiguity one must expand the expression in a very specific way, causing normal ordering of non-monomial expressions to be sensitive to how it is written (its syntactic form). It is possible for two non-monomial expressions that are semantically equal to have semantically unequal normal-ordered results, leading to the paradox above. This paradox does not occur if we 29 focus solely on monomial operators. When normal ordering is applied non-monomial expressions, it is conventional to choose the most “direct” expansion without any usage of the ±-commutation relations. For example, † ∶1 + 𝑏̂𝑝 𝑏̂𝑞 ∶ → † 𝑏̂ 𝑏̂ ∶e 𝑝 𝑞 ∶ ∶𝐻̂ ∶ 2.6 † 1+ ∶𝑏̂𝑝 𝑏̂𝑞 ∶ † † † → 1+ ∶𝑏̂𝑝 𝑏̂𝑞 ∶ + ∶ 12 𝑏̂𝑝 𝑏̂𝑞 𝑏̂𝑝 𝑏̂𝑞 ∶ + ⋯ → 𝐸+ ∶𝐻̂ 1 ∶ + ∶𝐻̂ 2 ∶ + ⋯ Wick’s theorem Wick’s theorem [Wic50] is an algebraic theorem for simplifying products of bosonic (commuting) or fermionic (anticommuting) field operators into sums of normal-ordered products. Many of the equations in the previous sections can be derived much more quickly and systematically using this theorem. To describe the theorem, it is necessary to introduce the concept of Wick contractions. 2.6.1 Adjacent Wick contractions In the simplest case, a Wick contraction between two adjacent field operators 𝛼̂ and 𝛽,̂ denoted by a connecting line, is defined as, ̂ ∶𝛼̂ 𝛽∶ ̂ 𝛼̂ 𝛽̂ = 𝛼̂ 𝛽− (2.5) For Wick’s theorem to apply, we require the result of a contraction to be a number, not an operator.10 Intuitively, contractions are the “remainder” of normal ordering. We can elaborate the definition 10 That is, the result lie in the center of the algebra, commuting with all other elements. 30 to ⎧ ⎪ ⎪ ⎪ ⎪0 ̂ 𝛼̂ 𝛽 = ⎨ ⎪ ⎪ ⎪ ̂ 𝛽̂]∓ 𝛼, ⎪ ⎩[ if 𝛼̂ 𝛽̂ is in normal order (2.6) if 𝛼̂ 𝛽̂ is not in normal order where commutator [, ]− = [, ] is chosen for bosons and anticommutator [, ]+ = {, } is chosen for fermions. Observe that contractions have no effect if a product is already normal ordered. For fermionic physical operators 𝑎̂𝑝 , we obtain these cases for contractions relative to the physical vacuum: † 𝑎̂ 𝑝 𝑎̂ 𝑞 = 𝛿𝑝𝑞 † † † 𝑎̂ 𝑝 𝑎̂ 𝑞 = 𝑎̂ 𝑝 𝑎̂ 𝑞 = 𝑎̂ 𝑝 𝑎̂ 𝑞 = 0 Here, connecting lines are drawn at the bottom of the symbols to indicate that these are contractions relative to the physical vacuum. That is, ̂ ⋮ 𝛼̂ 𝛽̂ ⋮ 𝛼̂ 𝛽̂ = 𝛼̂ 𝛽− We obtain analogous relations for contractions of fermionic quasiparticle operators 𝑏̂𝑝 relative to the Fermi vacuum: † 𝑏̂ 𝑝 𝑏̂ 𝑞 = 𝛿𝑝𝑞 † † † 𝑏̂ 𝑝 𝑏̂ 𝑞 = 𝑏̂ 𝑝 𝑏̂ 𝑞 = 𝑏̂ 𝑝 𝑏̂ 𝑞 = 0 However, contraction of physical operators 𝑎̂𝑝 relative to the Fermi vacuum are different: † 𝑎̂ 𝑝 𝑎̂ 𝑞 = (1 − 𝑛𝑝 )𝛿𝑝𝑞 † 𝑎̂ 𝑝 𝑎̂ 𝑞 = 𝑛𝑝 𝛿𝑝𝑞 31 † † 𝑎̂ 𝑝 𝑎̂ 𝑞 = 𝑎̂ 𝑝 𝑎̂ 𝑞 = 0 where 𝑛𝑝 is equal to 1 if 𝑝 is occupied in the reference state, 0 otherwise. 2.6.2 Normal-ordered Wick contractions Next, we consider non-adjacent Wick contractions, which is only defined within a normal-ordered product. Note that the contraction operation takes place prior to the normal ordering operation, otherwise the operation would be useless (it would always vanish according to Eq. 2.6). Let 𝛱̂ be a product of 𝑚 field operators. We define the Wick contraction of 𝛼̂ and 𝛽̂ within a ̂ as normal ordered product ∶𝛼̂ 𝛱̂ 𝛽∶ ̂ = (±)𝑚 𝛼̂ 𝛽̂ ∶𝛱̂ ∶ ∶𝛼̂ 𝛱̂ 𝛽∶ where the sign is (+) for bosonic operators and (−) for fermionic operators. In effect, we unite the two contracted operators using the ±-symmetries of the normal-ordered product before attempting to evaluate the contraction. Consider this example with fermionic operators, ̂ = − ∶𝛽̂𝛼̂ 𝛾̂ 𝛿∶ ̂ = −𝛼̂ 𝛾̂ ∶𝛽̂𝛿∶ ̂ ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ is zero, because inside a normal-ordered product all ̂ 𝛽} Note that it does not matter whether {𝛼, operators behave as though their ±-commutators are zero. 32 2.6.3 Multiple Wick contractions Given a normal-ordered product of 𝑛 field operators, there can be multiple ways to contract its contents. Consider the case 𝑛 = 4, ̂ ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ The first row contains all normal-ordered products with zero contractions. This is the trivial case. The second row contains all normal-ordered products with exactly one contraction. We shall denote the sum of all entries in the second row by ̂ = ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ + ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ + ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ + ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ + ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ + ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ ∶ 1 (𝛼̂ 𝛽̂𝛾̂ 𝛿)∶ The third row contains all normal-ordered products with exactly two contractions. Analogous to the second row, we shall denote the sum of all entries in the third row by ̂ = ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ + ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ + ∶𝛼̂ 𝛽̂𝛾̂ 𝛿∶ ̂ ∶ 2 (𝛼̂ 𝛽̂𝛾̂ 𝛿)∶ We can generalize this notation. If we have a product 𝛱̂ of 𝑛 field operators, the notation ∶ 𝑘 (𝛱̂ )∶ denotes the sum of all normal-ordered products with exactly 𝑘 contractions. In particular: 33 • If 𝑘 = 0, then there are no contractions. Therefore, ∶ 0 (𝛱̂ )∶ = ∶𝛱̂ ∶ • It is impossible to have more than ⌊𝑛/2⌋ contractions. Therefore, 2𝑘 > 𝑛 2.6.4 ∶ 𝑘 (𝛱̂ )∶ = 0 ⟹ Statement of Wick’s theorem We are now ready to state Wick’s theorem: A product of 𝑛 field operators 𝛱̂ may be expanded as ∞ ⌊𝑛/2⌋ 𝑘=0 𝑘=1 𝛱̂ = ∑ ∶ 𝑘 (𝛱̂ )∶ = ∶𝛱̂ ∶ + ∑ ∶ 𝑘 (𝛱̂ )∶ That is, any product of field operators may be expanded as a sum of every possible combination of contractions within its normal-ordered product. The definition of contractions in Eq. 2.5 yields a special case of Wick’s theorem for exactly two field operators, ̂ +𝛼̂ 𝛽̂ 𝛼̂ 𝛽̂ = ∶𝛼̂ 𝛽∶ There is also a generalized Wick’s theorem: A product of two normal-ordered products ∶𝛱̂ ∶ and ∶𝛤̂ ∶ may be expanded as ∞ ∶𝛱̂ ∶ × ∶𝛤̂ ∶ = ∑ ∶ 𝑘 ( ∶𝛱̂ ∶ × ∶𝛤̂ ∶ )∶ 𝑘=0 34 where ∶ 𝑘 ( ∶𝛱̂ ∶ × ∶𝛤̂ ∶ )∶ is a sum of every possible combination of 𝑘 contractions between elements of ∶𝛱̂ ∶ and elements of ∶𝛤̂ ∶ within the normal-ordered product ∶( ∶𝛱̂ ∶ × ∶𝛤̂ ∶ )∶. Contractions among elements of ∶𝛱̂ ∶ are excluded (and likewise for ∶𝛤̂ ∶) because contraction between elements that are already in normal order is zero (Eq. 2.6). Despite its name, the generalized Wick’s theorem is not actually a generalization but a special case of Wick’s theorem when the product is already partly in normal order. 2.6.5 Proof of Wick’s theorem To prove Wick’s theorem, we need the following lemma: 𝑗 ̂ 𝛾̂𝑖 ]∓ 𝛾̂𝑖+1 … 𝛾̂𝑗 𝛼̂ 𝛾̂1 … 𝛾̂𝑗 = (±)𝑗 𝛾̂1 … 𝛾̂𝑗 𝛼̂ + ∑ (±)𝑖−1 𝛾̂1 … 𝛾̂𝑖−1 [𝛼, 𝑖=1 which describes the process of moving 𝛼̂ from the left of a product 𝛾̂1 … 𝛾̂𝑗 to the right. In doing ̂ so, it accumulates a series of ±-commutators involving 𝛼. To prove the lemma by induction, we start with the obvious base case for 𝑗 = 0, 𝛼̂ = (±)0 𝛼̂ + 0 For the induction step, assume the lemma holds for 𝑗. Then, we can prove it holds for 𝑗 + 1 as well, 𝛼̂ 𝛾̂1 … 𝛾̂𝑗+1 𝑗 ̂ 𝛾̂𝑖 ]∓ 𝛾̂𝑖+1 … 𝛾̂𝑗+1 = (±)𝑗 𝛾̂1 … 𝛾̂𝑗 𝛼̂ 𝛾̂𝑗+1 + ∑ (±)𝑖−1 𝛾̂1 … 𝛾̂𝑖−1 [𝛼, 𝑖=1 𝑗 ̂ 𝛾̂𝑗+1 ]∓ ) + ∑ (±)𝑖−1 𝛾̂1 … 𝛾̂𝑖−1 [𝛼, ̂ 𝛾̂𝑖 ]∓ 𝛾̂𝑖+1 … 𝛾̂𝑗+1 = (±)𝑗 𝛾̂1 … 𝛾̂𝑗 (±𝛾̂𝑗+1 𝛼̂ + [𝛼, 𝑖=1 𝑗+1 ̂ 𝛾̂𝑖 ]∓ 𝛾̂𝑖+1 … 𝛾̂𝑗+1 = (±)𝑗+1 𝛾̂1 … 𝛾̂𝑗+1 𝛼̂ + ∑ (±)𝑖−1 𝛾̂1 … 𝛾̂𝑖−1 [𝛼, 𝑖=1 35 thus we have proven the case for 𝑗 + 1. ■ The lemma is very general but also verbose. If we assume the ±-commutators are all numbers, then there is another way to state the lemma using Wick contractions and normal ordering. Suppose we have a product 𝛾̂1 … 𝛾̂𝑗 𝛼̂ 𝛾̂𝑗+1 … 𝛾̂𝑚 that is in normal order. Observe that: ̂ 𝛾̂𝑖 ]∓ because either (a) 𝛼̂ 𝛾̂𝑖 is not in normal order, or (b) both 𝛼̂ 𝛾̂𝑖 and • If 𝑖 ≤ 𝑗, then 𝛼̂ 𝛾̂ 𝑖 = [𝛼, 𝛾̂𝑖 𝛼̂ are in normal order, in which case both the ±-commutator and contraction are zero. • If 𝑖 > 𝑗, then 𝛼̂ 𝛾̂ 𝑖 = 0 because 𝛼̂ 𝛾̂𝑖 is in normal order. Therefore, we can replace the ±-commutators with Wick contractions and artifically raise the upper limit of the summation from 𝑗 to 𝑚 because all those extra ±-commutators are zero, leading to 𝑚 𝛼̂ 𝛾̂1 … 𝛾̂𝑚 = (±)𝑗 𝛾̂1 … 𝛾̂𝑗 𝛼̂ 𝛾̂𝑗+1 … 𝛾̂𝑚 + ∑ (±)𝑖−1 𝛼̂ 𝛾̂ 𝑖 𝛾̂1 … 𝛾̂𝑖−1 𝛾̂𝑖+1 … 𝛾̂𝑚 𝑖=1 We can rewrite this using our definition of normal ordering and Wick contraction within normalordered products, 𝑚 𝛼̂ ∶𝛾̂1 … 𝛾̂𝑚 ∶ = ∶𝛼̂ 𝛾̂1 … 𝛾̂𝑚 ∶ + ∑ ∶𝛼̂ 𝛾̂1 … 𝛾̂ 𝑖 … 𝛾̂𝑚 ∶ 𝑖=1 If we define ∶𝛤̂ ∶ = 𝑠 ∶𝛾̂1 … 𝛾̂𝑚 ∶ with some sign 𝑠, we may rewrite the previous equation as: 1 1 1 𝛼̂ ∶𝛤̂ ∶ = ∶𝛼̂ 𝛤̂ ∶ + ∶𝛼̂ 𝛤̂ ∶ 𝑠 𝑠 𝑠 (2.7) where ∶𝛼̂ 𝛤̂ ∶ is a shorthand for 𝑚 ∶𝛼̂ 𝛤̂ ∶ = ∑ 𝑠 ∶𝛼̂ 𝛾̂1 … 𝛾̂ 𝑖 … 𝛾̂𝑚 ∶ 𝑖=1 36 Then, Eq. 2.7 simplifies to: 𝛼̂ ∶𝛤̂ ∶ = ∶𝛼̂ 𝛤̂ ∶ + ∶𝛼̂ 𝛤̂ ∶ (2.8) Now we may prove Wick’s theorem using induction. The base case is obvious, 1 = ∶1∶ For the inductive step, we start by assuming that Wick’s theorem holds for the product 𝛱̂ and wish to prove that it holds for 𝛼̂ 𝛱̂ . From the assumption, we write ∞ 𝛼̂ 𝛱̂ = ∑ 𝛼̂ ∶ 𝑘 (𝛱̂ )∶ 𝑘=0 Now we may use the lemma in Eq. 2.8 with 𝛤̂ =  𝑘 (𝛱̂ ), ∞ ∞ 𝑘=0 𝑘=0 ∞ ̂ 𝑘 (𝛱̂ )∶ ̂ 𝑘 (𝛱̂ )∶ + ∑ ∶𝛼 ∑ 𝛼̂ ∶ 𝑘 (𝛱̂ )∶ = ∑ ∶𝛼 𝑘=0 ∞ ̂ 0 (𝛱̂ )∶ + ∑ ( ∶𝛼 ̂ 𝑘 (𝛱̂ )∶ + ∶𝛼 ̂ 𝑘−1 (𝛱̂ )∶ ) = ∶𝛼 𝑘=1 Observe that ∶ 0 (𝛱̂ )∶ = ∶𝛱̂ ∶ and ̂ 𝑘−1 (𝛱̂ )∶ ̂ 𝑘 (𝛱̂ )∶ + ∶𝛼 ∶ 𝑘 (𝛼̂ 𝛱̂ )∶ = ∶𝛼 In other words, 𝑘 contractions in 𝛼̂ 𝛱̂ can be either • 𝑘 contractions only within 𝛱̂ , or • one contraction between 𝛼̂ and 𝛱̂ and 𝑘 − 1 contractions within 𝛱̂ . 37 Hence, ∞ 𝛼̂ 𝛱̂ = ∶𝛼̂ 𝛱̂ ∶ + ∑ ∶ 𝑘 (𝛼̂ 𝛱̂ )∶ 𝑘=1 ■ 2.7 Many-body diagrams Many-body diagrams [Gol57; Hug57] provide a graphical way to apply Wick’s theorem in the Fermi vacuum and express summations of matrix elements. They are analogous to Feymann diagrams [Fey49] but with single-particle states in lieu of fundamental particles. We will provide an overview of many-body diagrams, but as it is a fairly substantial topic, we refer interested readers to [SB09] for a more in-depth explanation. A diagram is composed of a set of nodes (vertices) and a set of possibly directed lines (edges), arranged in a layout similar to graphs. However, diagrams do have a few differences that distinguish them from graphs in the conventional sense: • Nodes may not be point-like entities. They may be drawn in various shapes, and the particular arrangement of lines around a given node can be semantically meaningful. • The ends of a line do not have to be attached to any node. Such lines, where at least one of the ends is dangling, are called external lines, whereas lines that are attached to nodes on both ends are called internal lines. • In Feynmann-like diagrams, including many-body diagrams, one of the axes is defined to be the so-called time axis and thus the orientation of the diagram can be semantically meaningful. Either the vertical (upward) or horizontal (leftward) axis may be chosen as the time axis depending on convention. We will use the vertical axis as the time axis. Particles 38 that are created later in time will appear higher in the diagram. In many-body diagrams, nodes represent operators. Specifically, a node representing a 𝑘-body operator has 𝑘 outgoing (creation) lines and 𝑘 incoming (annihilation) lines, corresponding to a normal-ordered operator of the form 1 † † 𝑋𝑝 …𝑝 𝑞 …𝑞 ∶(𝑎̂𝑝1 𝑎̂𝑞 ) … (𝑎̂𝑝 𝑎̂𝑞 )∶ 1 𝑘 𝑘 𝑘! 𝑝1 …𝑝𝑘 𝑞1 …𝑞𝑘 1 𝑘 1 𝑘 2 ∑ There are two varieties of many-body diagrams, which render operators differently: • In the Brandow diagrams (or antisymmetrized Goldstone diagrams) [Bra67], nodes are represented by 𝑘 dots connected by dashed lines. Each dot has exactly one outgoing † and one incoming line, thus a dot corresponds to a single creation-annihilation pair 𝑎̂𝑝 𝑎̂𝑞 . The ordering of the dots among themselves is insignificant as creation-annihilation pairs commute with each other within a normal-ordered product. • In the Hugenholtz diagrams [Hug57], nodes are collapsed to a single dot with 𝑘 outgoing and 𝑘 incoming lines. Since it is no longer feasible to track the pairing between the outgoing and incoming lines, the sign of Hugenholtz diagrams is ambiguous. To transcribe Hugenholtz diagrams into equations with a definite sign, it is necessary to expand Hugenholtz diagrams to Brandow diagrams by pairing up the creation and annihilation operators in an arbitrary manner. Lines represent variables that label single-particle states. The direction of a line tells us which end has the creation operator (tail) and which end has the annihilation operator (head). There are three kinds of lines: • Internal lines (neither end is dangling): these represent Wick contractions and are always directed (have arrows). The orientation of their arrows with respect to the time axis is 39 significant: – If the direction of the arrow goes along the time axis (in our convention, if the arrow points up), then it represents a particle state 𝑎, 𝑏, 𝑐, . . . since its creation occurs before its annihilation. – If the direction of the arrow goes against the time axis (in our convention, if the arrow points down), then it represents a hole state 𝑖, 𝑗, 𝑘, . . . since its creation occurs after its annihilation. • External lines where one of the ends is dangling: these represent the variables 𝑝, 𝑞, 𝑟, . . . of uncontracted field operators and their orientation with respect to the time axis is irrelevant. Outgoing lines (lines that leave the node) represent creation operators, and ingoing lines (lines that enter the node) represent annihilation operators. If all operators conserve particle number, then one can often elide the directions of external lines and have them inferred from context. • External lines where both ends are dangling: this is a degenerate case. Such a line represents a Kronecker delta 𝛿𝑝𝑞 , where 𝑝 and 𝑞 are the variables on each end of the line. The presence or absence of an arrow is irrelevant. To illustrate the various parts of a diagram, consider this normal-ordered, partially contracted ̂ product 𝑅, 1 † † † † † † 𝑅̂ = 𝐹 𝛤 ∶(𝑎̂ 𝑖 𝑎̂ 𝑎 𝑎̂𝑝 𝑎̂ 𝑏 𝑎̂𝑞 𝑎̂ 𝑐 )(𝑎̂ 𝑎 𝑎̂ 𝑖 )(𝑎̂ 𝑏 𝑎̂𝑟 𝑎̂ 𝑐 𝑎̂𝑠 )∶ ∑ 𝑊 8 𝑝𝑞𝑟𝑠 𝑖𝑝𝑞𝑎𝑏𝑐 𝑎𝑖 𝑏𝑐𝑟𝑠 (2.9) 𝑖⧵𝑎𝑏𝑐 where 𝑊̂ is a three-body operator, 𝐹̂ is a one-body operator, and 𝛤̂ is a two-body operator, all defined relative to the Fermi vacuum. The diagrammatic representation of this expression is shown in Fig. 2.1. 40 q p time axis external line 3-body node internal line i a c b 2-body node 1-body node r s Figure 2.1: An example of a Brandow diagram representing to Eq. 2.9. We have intentionally labeled many parts of this diagram to provide a clear correspondence to the algebraic expression. To emphasize the distinction between internal and external lines, we have drawn the arrows of external lines with a different shape than those of internal lines. The factor of 1/8 is the weight of the diagram. To obtain this number, we examine the symmetries in the Hugenholtz diagram, shown in Fig. 2.2. Observe that {𝑝, 𝑞} are topologically equivalent, and so are {𝑏, 𝑐} and {𝑟, 𝑠}. Thus, the factor should be 1/(2! × 2! × 2!) = 1/8. The Brandow diagram makes it simple to compute the resultant sign (phase) of the expression in Eq. 2.9: 1. Pair up each outgoing external line with each incoming external line and connect them with a dotted line. The assignment is arbitrary, but once the choice is made, it fixes the ordering of the operators of the resultant expression. For example, if we pick (𝑝, 𝑟) and (𝑞, 𝑠) in Fig. 2.1, then the resultant expression will have † † the ordering ∶𝑎̂𝑝 𝑎̂𝑟 𝑎̂𝑞 𝑎̂𝑠 ∶. 2. Count (a) number of dotted lines 𝑑, (b) the number of internal hole lines ℎ, and (c) the number of loops 𝓁 , including those that are completed by dotted lines. The sign is equal to (−)𝑑+ℎ+𝓁 In the previous example, we have introduced two dotted lines connecting 𝑝 to 𝑟 and 𝑞 to 𝑠. 41 There is one hole line, and a total three loops (two of which contain dotted lines). The sign is therefore positive. This leads to the final result: 1 † † 𝑅̂ = + ∑ 𝑊𝑖𝑝𝑞𝑎𝑏𝑐 𝐹𝑎𝑖 𝛤𝑏𝑐𝑟𝑠 ∶𝑎̂𝑝 𝑎̂𝑟 𝑎̂𝑞 𝑎̂𝑠 ∶ 8 𝑝𝑞𝑟𝑠 𝑖⧵𝑎𝑏𝑐 q p i c a b r s Figure 2.2: A Hugenholtz diagram representing to Eq. 2.9. This diagram is useful for determining the weight. 2.7.1 Perturbative diagrams A variant of many-body diagrams is used in perturbation theory, which introduces an unusual kind of node called resolvents or energy denominators, drawn as a horizontal line that cuts across the diagram. An example of such a diagram is shown on the right-hand side of Fig. 2.3. Note that to interpret such a diagram correctly, all incoming external lines must be folded upward, as shown on the right-hand side. For every denominator line, one divides the summation by the following Møller–Plesset denominator (see also Eq. 4.9): 𝑘 𝛥𝑞 …𝑞 𝑝 …𝑝 = ∑ (𝜀𝑞 − 𝜀𝑝 ) 1 𝑘 1 𝑘 𝑖=1 𝑖 𝑖 42 p p q b a b a j i i c j c q folded with denominator lines unfolded Figure 2.3: Interpretation of a perturbative Goldstone diagram where 𝑞1 … 𝑞𝑘 are all downward lines that cut across the denominator line (including ingoing external lines), 𝑝1 … 𝑝𝑘 are all upward lines that cut across the denominator line (including outgoing external lines), and 𝜀𝑝 denotes the energy of the single-particle state 𝑝. In the example, the upper denominator is given by 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 = 𝜀𝑖 + 𝜀𝑗 + 𝜀𝑞 − 𝜀𝑎 − 𝜀𝑏 − 𝜀𝑝 whereas the lower denominator is given by 𝛥𝑖𝑗𝑐𝑝 = 𝜀𝑖 + 𝜀𝑗 − 𝜀𝑐 − 𝜀𝑝 For presentation purposes, it is common to omit the denominator lines and to unfold a diagram back into the usual non-perturbative layout, as shown on the left-hand side of Fig. 2.3. To interpret this diagram perturbatively, simply refold the diagram and reinsert denominators between every pair of the 𝑉̂ interaction nodes. 43 Chapter 3 Angular momentum coupling We shall first discuss the details of angular momentum coupling in general, and then more specifically in the context of many-body theory. The objective of this chapter is to lay out the formalism (J-scheme, Sec. 3.11) that one needs to derive the angular-momentum-coupled equations in many-body theory, which are essential for efficient computations in spherically symmetric systems such as nuclei. We also include a brief discussion of our graphical angular momentum software (Sec. 3.10) used for derivations of angular momentum quantities. 3.1 Angular momentum and isospin In classical physics, orbital angular momentum 𝑳 is defined as 𝑳 = 𝒓 × 𝒑, where 𝒓 is position and 𝒑 is linear momentum. This definition carries over to quantum mechanics with the appropriate replacement of each quantity by their corresponding operator: 𝑳̂ = 𝒓̂ × 𝒑̂ = −iℏ𝒓̂ × 𝛁̂ In three-dimensional space, the standard eigenstates of orbital angular momentum are the spherical harmonics |𝓁 𝑚𝓁 ⟩ ↔ 𝑌𝓁 𝑚 (𝜃, 𝜑) 𝓁 44 which are labeled by the orbital angular momentum magnitude 𝓁 and orbital angular momentum projection 𝑚𝓁 (also known as magnetic quantum number in chemistry), satisfying 𝓁 ∈ℕ 𝑚 𝓁 ∈ 𝑀𝓁 where ℕ = {0, 1, 2, …} is the set of nonnegative integers and 𝑀𝓁 denotes the set {−𝓁 , −𝓁 + 1, −𝓁 + 2, … , +𝓁 − 2, +𝓁 − 1, +𝓁 } (3.1) ̂ The quantum numbers are related to eigenvalues of 𝑳̂ 2 and 𝐿̂ 3 (𝑧-component of 𝑳): 𝑳̂ 2 |𝓁 𝑚𝓁 ⟩ = ℏ𝓁 (𝓁 + 1)|𝓁 𝑚𝓁 ⟩ 𝐿̂ 3 |𝓁 𝑚𝓁 ⟩ = ℏ𝑚𝓁 |𝓁 𝑚𝓁 ⟩ Notice that these are not eigenstates of 𝐿̂ 1 or 𝐿̂ 2 . It is impossible to find eigenstates of all three components, because 𝐿̂ 1 , 𝐿̂ 2 , and 𝐿̂ 3 do not commute with each other, as evidenced by the noncommuting nature of rotations in three-dimensional space. Instead, they satisfy the commutation relations, 3 [𝐿̂ 𝑖 , 𝐿̂ 𝑗 ] = iℏ ∑ 𝜖𝑖𝑗𝑘 𝐿̂ 𝑘 𝑘=1 where 𝜖𝑖𝑗𝑘 is the Levi–Civita symbol. In quantum mechanics, there is the addition of spin 𝑺,̂ a kind of angular momentum intrinsic to each particle. There is an analogous set of standard eigenstates |𝑠𝑚𝑠 ⟩ labeled by spin magnitude 45 𝑠 and spin projection 𝑚𝑠 , 𝑺̂2 |𝑠𝑚𝑠 ⟩ = ℏ𝑠(𝑠 + 1)|𝑠𝑚𝑠 ⟩ 𝑆̂3 |𝑠𝑚𝑠 ⟩ = ℏ𝑚𝑠 |𝑠𝑚𝑠 ⟩ Again, note that these are not eigenstates of 𝑆̂1 nor 𝑆̂2 . Unlike orbital angular momentum, the quantum numbers of spin are not confined to integers, but could be half-integers 12 ℤ, given by { } 3 1 1 1 3 ℤ = … , − , −1, − , 0, + , +2, , … 2 2 2 2 2 (3.2) They are subject to the following conditions: 1 𝑠∈ ℕ 2 𝑚𝑠 ∈ 𝑀𝑠 where 12 ℕ denotes the set of nonnegative half-integers: { } 1 1 3 ℕ = 0, , 1, , … 2 2 2 (3.3) and 𝑀𝑠 follows the same definition as Eq. 3.1, but with the argument 𝑠 extended to support nonnegative integers, 𝑀𝑠 = {−𝑠, −𝑠 + 1, −𝑠 + 2, … , +𝑠 − 2, +𝑠 − 1, +𝑠} (3.4) Note that if 𝑠 is a half-odd integer – a half-integer that is not also an integer – then 𝑀𝑠 does not contain 0. 46 Spin states are not wave functions of position – they live within their own abstract Hilbert subspace. Most fermions studied in many-body theory, such as electrons or nucleons, are spin- 12 particles, which means 𝑠 is always 12 and the dimension of this subspace is two. Conventionally, ̂ the spin operator for a spin- 12 particle may be represented by a vector of Pauli matrices 𝝈: ⎡ ⎤ ⎢𝜎̂ 1 ⎥ ℏ ℏ⎢ ⎥ 𝑺̂ = 𝝈̂ = ⎢𝜎̂ 2 ⎥ 2 2⎢ ⎥ ⎢ ⎥ ⎢𝜎̂ 3 ⎥ ⎣ ⎦ Each Pauli matrix 𝜎𝑖 acts on the two-dimensional Hilbert subspace of spin. The spin operator satisfies commutation relations similar to the orbital angular momentum operator, 3 [𝑆̂𝑖 , 𝑆̂𝑗 ] = iℏ ∑ 𝜖𝑖𝑗𝑘 𝑆̂𝑘 𝑘=1 Spin can be combined with orbital angular momentum to form the total angular momentum of a particle, 𝑱̂ = 𝑳̂ + 𝑺̂ Likewise, there is a standard set of total angular momentum eigenstates |𝑗𝑚𝑗 ⟩, labeled by total angular momentum magnitude 𝑗 and total angular momentum projection 𝑚𝑗 , with completely 47 analogous relations, 𝑱̂ 2 |𝑗𝑚𝑗 ⟩ = ℏ𝑗(𝑗 + 1)|𝑗𝑚𝑗 ⟩ 𝐽̂3 |𝑗𝑚𝑗 ⟩ = ℏ𝑚𝑗 |𝑗𝑚𝑗 ⟩ 3 [𝐽̂𝑖 , 𝐽̂𝑗 ] = iℏ ∑ 𝜖𝑖𝑗𝑘 𝐽̂𝑘 𝑘=1 The quantum numbers are subject to the same constraints as for spin, 1 𝑗∈ ℕ 2 𝑚 𝑗 ∈ 𝑀𝑗 Lastly, there is a mathematically similar quantity known as isospin 𝑰̂ , which arises in the physics of nucleons. However, unlike spin, it is not physically considered as an angular momentum despite the confusing name. The isospin eigenstates may be denoted |𝑡𝑚𝑡 ⟩, labeled by isospin magnitude 𝑡 and isospin projection 𝑚𝑡 , with relations just like angular momentum, 𝑰̂ 2 |𝑡𝑚𝑡 ⟩ = 𝑡(𝑡 + 1)|𝑡𝑚𝑡 ⟩ 𝐼̂3 |𝑡𝑚𝑡 ⟩ = 𝑚𝑡 |𝑡𝑚𝑡 ⟩ 3 [𝐼̂𝑖 , 𝐼̂𝑗 ] = i ∑ 𝜖𝑖𝑗𝑘 𝐼̂𝑘 𝑘=1 and analogous constraints on the quantum numbers as for spin or total angular momentum. Because isospin is not a kind of angular momentum, the three components of isospin are abstract and have no physical relation to the 𝑥-, 𝑦-, 𝑧-axes of space. They do not transform under spatial rotations. For neutrons and protons, isospin is mathematically isomorphic to the spin of spin- 12 particles, so 𝑰̂ too can be defined in terms of Pauli matrices. However, these isospin Pauli matrices act on 48 a different subspace from the spin Pauli matrices, so they are conventionally denoted using 𝝉̂ ̂ instead of 𝝈: ⎡ ⎤ ⎢𝜏̂1 ⎥ ⎢ ⎥ ̂𝑰 = 1 𝝉̂ = 1 ⎢𝜏̂ ⎥ 2 2 ⎢ 2⎥ ⎢ ⎥ ⎢𝜏̂3 ⎥ ⎣ ⎦ Each Pauli matrix 𝜏̂𝑖 acts on the two-dimensional Hilbert subspace of isospin. The two eigenstates of isospin |𝑡 = 12 , 𝑚𝑡 = ± 21 ⟩ correspond to neutrons and protons, with two possible conventions: • 𝑚𝑡 = − 12 corresponds to neutrons and 𝑚𝑡 = + 12 corresponds to protons (sometimes referred to as the particle physics convention) • 𝑚𝑡 = + 12 corresponds to neutrons and 𝑚𝑡 = − 12 corresponds to protons (sometimes referred to as the nuclear physics convention) ̂ 𝑺,̂ 𝑱̂ , and 𝑰̂ are all very similar. Specifically, these operators Mathematically, the quantities 𝑳, are representations of the su(2) Lie algebra, which are generators of the special unitary group of two-dimensional matrices, SU(2). Elements of the Lie algebra are characterized by commutation relations of the form 3 [𝐽̂𝑖 , 𝐽̂𝑗 ] ∝ ∑ 𝜖𝑖𝑗𝑘 𝐽̂𝑘 𝑘=1 from which many of the familiar properties follow, including the structure of eigenstates and eigenvalues. The operator 𝐽̂2 is known as the Casimir element in this context, and commutes with each component 𝐽̂𝑖 . Incidentally, the SU(2) group is locally similar to the special orthogonal group of 3-dimensional rotations, which means the corresponding so(3) Lie algebra is completely isomorphic to su(2). 49 This explains algebraic similarity between 𝑳̂ and 𝑺̂ despite 𝑳̂ being generators of three-dimensional rotations. 3.2 Clebsch–Gordan coefficients There are many situations in which angular momentum is added. The total angular momentum 𝑱̂ = 𝑳̂ + 𝑺̂ is one example. Another situation occurs in many-body systems, where the composite angular momentum of two (or more) particles is of interest, 𝑱̂ (1,2) = 𝑱̂ (1) + 𝑱̂ (2) where 𝑱̂ (1) denotes the total angular momentum of particle 1, 𝑱̂ (2) denotes the total angular momentum of particle 2, 𝑱̂ (1,2) denotes the total angular momentum of both particles together. Let us consider a general angular momentum-like quantity defined as 𝑱̂ = 𝑳̂ + 𝑺̂ with 𝑳̂ and 𝑺̂ being angular momentum-like quantities as well. The discussion in this section is abstract: we do not assign physical interpretations to these quantities. They simply need to be representations of the su(2) Lie algebra satisfying the usual commutation relations. (In particular, 𝑳̂ need not be restricted to orbital angular momentum.) Observe that 𝑱̂ 2 commutes with 𝑳̂ 2 and 𝑺̂2 , but does not commute with 𝐿̂ 3 nor 𝑆̂3 , because 𝑱̂ 2 = 𝑳̂ 2 + 2𝑳̂ ⋅ 𝑺̂ + 𝑺̂2 The term 2𝑳̂ ⋅ 𝑺̂ does not commute with 𝐿̂ 3 nor 𝑆̂3 . This means we can choose the eigenstates of 50 (𝑱̂ 2 , 𝐽̂3 ) to be eigenstates of 𝑳̂ 2 and 𝑺̂2 as well, but they cannot not in general be eigenstates of 𝐽̂3 nor 𝑆̂3 . We may label such a state as |𝑗𝑚𝑗 𝓁 𝑠⟩ This is known in general as a coupled state, and if 𝑳̂ is orbital angular momentum and 𝑺̂ is spin, then this particular example would be referred to as LS coupling. Such states have the following eigenvalues, 𝑱̂ 2 |𝑗𝑚𝑗 𝓁 𝑠⟩ = ℏ𝑗(𝑗 + 1)|𝑗𝑚𝑗 𝓁 𝑠⟩ 𝐽̂3 |𝑗𝑚𝑗 𝓁 𝑠⟩ = ℏ𝑚𝑗 |𝑗𝑚𝑗 𝓁 𝑠⟩ 𝑳̂ 2 |𝑗𝑚𝑗 𝓁 𝑠⟩ = ℏ𝓁 (𝓁 + 1)|𝑗𝑚𝑗 𝓁 𝑠⟩ 𝑺̂2 |𝑗𝑚𝑗 𝓁 𝑠⟩ = ℏ𝑠(𝑠 + 1)|𝑗𝑚𝑗 𝓁 𝑠⟩ In contrast, if we want an eigenstate of (𝐽̂3 , 𝑳̂ 2 , 𝐿̂ 3 , 𝑺̂2 , 𝑆̂3 ), then we can simply construct it as a tensor product of the standard eigenstates of (𝑳̂ 2 , 𝐿̂ 3 ) and (𝑺̂2 , 𝑆̂3 ), denoted |𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩ = |𝓁 𝑚𝓁 ⟩ ⊗ |𝑠𝑚𝑠 ⟩ 51 with eigenvalues 𝐽̂3 |𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩ = ℏ(𝑚𝓁 + 𝑚𝑠 )|𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩ 𝑳̂ 2 |𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩ = ℏ𝓁 (𝓁 + 1)|𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩ 𝐿̂ 3 |𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩ = ℏ𝑚𝓁 |𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩ 𝑺̂2 |𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩ = ℏ𝑠(𝑠 + 1)|𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩ 𝑆̂3 |𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩ = ℏ𝑚𝑠 |𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩ These are known as uncoupled states. The two sets of eigenstates are related by a linear transformation, |𝑗𝑚𝑗 𝓁 𝑠⟩ = ∑ 𝑚𝓁 ∈𝑀𝓁 ,𝑚𝑠 ∈𝑀𝑠 |𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩⟨𝓁 𝑚𝓁 𝑠𝑚𝑠 |𝑗𝑚𝑗 ⟩ (3.5) where ⟨𝓁 𝑚𝓁 𝑠𝑚𝑠 |𝑗𝑚𝑗 ⟩ denotes a set of coefficients known as the Clebsch–Gordan (CG) coefficients. The CG coefficients are subject to a set of constraints – selection rules – that we divide into two categories. First, there are the local selection rules: 1 𝓁 , 𝑠, 𝑗 ∈ ℕ 2 𝑚 𝓁 ∈ 𝑀𝓁 𝑚𝑠 ∈ 𝑀𝑠 𝑚 𝑗 ∈ 𝑀𝑗 These kinds of constraints are intrinsic to each (𝑗, 𝑚)-pair and are omnipresent in angular momentum algebra. Thus, to avoid having to repeat ourselves, we will implicitly assume they are satisfied in all equations. The pairing between the magnitude (𝑗-like) and projection (𝑚-like) variables is established by a notational convention: the subscript on the 𝑚-like variable is used to to link to the 𝑗-like variable. 52 For example, 𝑚𝑗 pairs with 𝑗, and 𝑚𝓁 pairs with 𝓁 . If the 𝑗 variable itself also has a subscript, then we will typically use the subscript of 𝑗 directly as a subscript of 𝑚, e.g. 𝑚1 pairs with 𝑗1 , 𝑚𝑝 pairs with 𝑗𝑝 , etc. The second category are the nonlocal selection rules, consisting of 𝑚𝑗 = 𝑚𝓁 + 𝑚𝑠 which simply states the additive nature of projections, and |𝓁 − 𝑠| ≤ 𝑗 ≤ 𝓁 + 𝑠 This latter constraint is called the triangle condition and is equivalent to the geometrical constraint that 𝓁 , 𝑠, and 𝑗 are lengths of a triangle. It can alternatively be restated as the symmetric combination of constraints, 𝑗 ≤𝓁 +𝑠 𝓁 ≤𝑠+𝑗 𝑠 ≤𝑗+𝓁 It is convenient to define the CG coefficients such that if any of the selection rules are violated, then the CG coefficient is zero. This allows us to omit the constraints on the summation of 𝑚𝓁 and 𝑚𝑠 in Eq. 3.5 and simply let the selection rule pick the terms that contribute. In principle, there can be several conventions for CG coefficients. The obvious choice is to limit ourselves to only real coefficients, but there remains an arbitrary choice in sign, which is then fixed by the Condon–Shortley phase convention. In this choice, the linear transformation of CG coefficients is completely symmetric, so we can 53 use the same coefficients to undo the coupling: |𝓁 𝑚𝓁 𝑠𝑚𝑠 ⟩ = ∑ |𝑗𝑚𝑗 𝓁 𝑠⟩⟨𝓁 𝑚𝓁 𝑠𝑚𝑠 |𝑗𝑚𝑗 ⟩ 𝑗𝑚𝑗 where summation over 𝑗 and 𝑚𝑗 is constrained by the selection rules of CG. Hence, the CG coefficients satisfy the orthogonality relations, ∑ ⟨𝓁 𝑚𝓁 𝑠𝑚𝑠 |𝑗𝑚𝑗 ⟩⟨𝓁 𝑚𝓁′ 𝑠𝑚𝑠′ |𝑗𝑚𝑗 ⟩ = 𝛿𝑚𝓁 𝑚𝓁 𝛿𝑚 𝑚′ 𝑠 𝑠 𝑗𝑚𝑗 } { ′ ′ ∑ ⟨𝓁 𝑚𝓁 𝑠𝑚𝑠 |𝑗𝑚𝑗 ⟩⟨𝓁 𝑚𝓁 𝑠𝑚𝑠 |𝑗 𝑚𝑗 ⟩ = 𝛿𝑗𝑗 ′ 𝛿𝑚 𝑚′ 𝓁 𝑠 𝑗 𝑗 𝑗 𝑚𝓁 𝑚𝑠 { } is the triangular delta, defined as where 𝓁 𝑠 𝑗 { 𝑎 𝑏 𝑐 } ⎧ ⎪ ⎪ ⎪ ⎪1 =⎨ ⎪ ⎪ ⎪ 0 ⎪ ⎩ if |𝑎 − 𝑏| ≤ 𝑐 ≤ 𝑎 + 𝑏 (3.6) otherwise In other words, the triangular delta is the analog of Kronecker delta for the triangle condition. There are additional symmetry properties of CG coefficients, but it is more convenient to state them indirectly through a similar quantity known as the Wigner 3-jm symbol. 54 3.3 Wigner 3-jm symbol The Wigner 3-jm symbol is a function of six arguments used for coupling angular momenta with a high degree of symmetry, denoted1 ⎛ ⎞ ⎜ 𝑗1 𝑗2 𝑗3 ⎟ ⎜ ⎟ ⎜ 𝑚1 𝑚2 𝑚3 ⎟ ⎝ ⎠ The 𝑗𝑖 arguments could be any nonnegative half-integer 12 ℕ (Eq. 3.3), including both integers and half-odd integers. The 𝑚𝑖 arguments are constrained to the 𝑀𝑗 set as defined in Eq. 3.4. These 𝑖 form the local selection rules. The nonlocal selection rules are given by |𝑗1 − 𝑗2 | ≤ 𝑗3 ≤ 𝑗1 + 𝑗2 𝑚1 + 𝑚2 + 𝑚3 = 0 The 3-jm symbol is related to the Clebsch–Gordan coefficient by the formula, ⎞ 𝑗2 ⎟ ⎟ ⎜𝑚1 −𝑚12 𝑚2 ⎟ ⎠ ⎝ ⎛ ⟨𝑗1 𝑚1 𝑗2 𝑚2 |𝑗12 𝑚12 ⟩ = ⎜ 𝑗1 (−)2𝑗2 +𝑗12 −𝑚12 𝚥̆12 ⎜ 𝑗12 (3.7) where we introduce the shorthand 𝚥̆ = √ 2𝑗 + 1 (3.8) as the factor appears frequently in angular momentum algebra. 1 Unfortunately this shares the same notation as 2 × 3 matrices. 55 When three angular momentum states are coupled using the 3-jm symbol, ⎛ ⎞ ⎜ 𝑗1 𝑗2 𝑗3 ⎟ ∑ ⎜ ⎟|𝑗1 𝑚1 ⟩ ⊗ |𝑗2 𝑚2 ⟩ ⊗ |𝑗3 𝑚3 ⟩ 𝑚1 𝑚2 𝑚3 ⎜ 𝑚1 𝑚2 𝑚3 ⎟ ⎝ ⎠ the result is invariant (a spherical scalar) under SU(2) transformations. The 3-jm symbol is given by the following symmetric formula [Wig93] ⎛ ⎞ √ 3 (−)𝑗1 /2+𝑘𝑖 (𝑗 − 𝑚 )!(𝑗 + 𝑚 )! ⎜ 𝑗1 𝑗2 𝑗3 ⎟ √ 𝑖 𝑖 𝑖 𝑖 ⎜ ⎟ = 𝛥(𝑗1 𝑗2 𝑗3 ) ∑ ∏ (𝐽 /2 − 𝑗 − 𝑘 )!(𝐽 /2 − 𝑗 + 𝑘 )! 𝑖 𝑖 𝑖 𝑖 𝑘1 𝑘2 𝑘3 𝑖=1 ⎜𝑚1 𝑚2 𝑚3 ⎟ ⎝ ⎠ where: • 𝐽 = 𝑗1 + 𝑗2 + 𝑗3 • The summation is performed over all half-integers 𝑘𝑖 subject to the following constraints: 1. 𝑚1 + 𝑘2 − 𝑘3 = 𝑚2 + 𝑘3 − 𝑘1 = 𝑚3 + 𝑘1 − 𝑘2 = 0 2. Argument of every factorial involving 𝑘𝑖 must be a nonnegative integer. • 𝛥(𝑗1 𝑗2 𝑗3 ) is the triangle coefficient: ∏3𝑖=1 (𝐽 − 2𝑗𝑖 )! 𝛥(𝑗1 𝑗2 𝑗3 ) = (𝐽 + 1)! The summation over 𝑘𝑖 has only one effective degree of freedom. If we break the symmetry by choosing 𝑘= 𝐽 − 𝑗 − 𝑘3 2 3 56 we obtain the more conventional form used by Racah [Rac42] ⎛ ⎞ ⎜ 𝑗1 𝑗2 𝑗3 ⎟ ⎜ ⎟ ⎜ 𝑚1 𝑚2 𝑚3 ⎟ ⎝ ⎠ = 𝛿𝑚 +𝑚 +𝑚 ,0 (−)𝑗1 −𝑗2 −𝑚3 1 2 3 √ 3 𝛥(𝑗1 𝑗2 𝑗3 ) ∏ (𝑗𝑖 + 𝑚𝑖 )!(𝑗𝑖 − 𝑚𝑖 )! ∑ 𝑖=1 𝑘 𝑘 (−1) 𝑘!(𝑗1 + 𝑗2 − 𝑗3 − 𝑘)!(𝑗1 − 𝑚1 − 𝑘)!(𝑗2 + 𝑚2 − 𝑘)! 1 × (𝑗3 − 𝑗2 + 𝑚1 + 𝑘)!(𝑗3 − 𝑗1 − 𝑚2 + 𝑘)! The summation is performed over all half-integers 𝑘 such that the argument of every factorial involving 𝑘 is a nonnegative integer. The 3-jm symbol is invariant under even permutations of its columns, ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎜ 𝑗1 𝑗2 𝑗3 ⎟ ⎜ 𝑗2 𝑗3 𝑗1 ⎟ ⎜ 𝑗3 𝑗1 𝑗2 ⎟ ⎜ ⎟=⎜ ⎟=⎜ ⎟ ⎜𝑚1 𝑚2 𝑚3 ⎟ ⎜𝑚2 𝑚3 𝑚1 ⎟ ⎜𝑚3 𝑚1 𝑚2 ⎟ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ Odd permutations lead to a phase factor, ⎞ ⎛ ⎛ ⎞ 𝑗 𝑗2 𝑗1 ⎟ ⎜ 𝑗1 𝑗2 𝑗3 ⎟ 𝑗1 +𝑗2 +𝑗3 ⎜ 3 ⎟ = (−) ⎜ ⎟ ⎜ ⎜ 𝑚3 𝑚2 𝑚1 ⎟ ⎜𝑚1 𝑚2 𝑚3 ⎟ ⎠ ⎝ ⎝ ⎠ The same phase factor arises from time reversal, ⎛ ⎞ ⎛ ⎞ 𝑗 𝑗2 𝑗3 ⎟ ⎜ 𝑗1 𝑗2 𝑗3 ⎟ 𝑗1 +𝑗2 +𝑗3 ⎜ 1 ⎟ ⎜ ⎜ ⎟ = (−) ⎜𝑚1 𝑚2 𝑚3 ⎟ ⎜−𝑚1 −𝑚2 −𝑚3 ⎟ ⎝ ⎠ ⎝ ⎠ The 3-jm symbol also has an additional set of symmetries called Regge symmetries [Reg58], but 57 these are seldomly used in angular momentum algebra. They are, however, useful for storage and caching of 3-jm symbols in computations [RY04]. The orthogonality relations of CG coefficients carry over to 3-jm symbols. The first orthogonality relation is given by ⎞ ⎞⎛ 𝑗3 ⎟⎜ 𝑗1 𝑗2 𝑗3 ⎟ ∑ ⎟⎜ ⎟ = 𝛿𝑚 𝑚 ′ 𝛿𝑚 𝑚 ′ 1 1 2 2 𝑗3 𝑚3 ⎜ ′ ′ ⎟ ⎜ 𝑚1 𝑚2 𝑚3 𝑚1 𝑚2 𝑚3 ⎟ ⎝ ⎠⎝ ⎠ ⎛ ⎜ 𝑗1 𝚥̆32 ⎜ 𝑗2 (3.9) while the second orthogonality relation is ⎞ ⎞⎛ ⎛ { } ⎜ 𝑗1 𝑗2 𝑗3 ⎟⎜ 𝑗2 𝑗3 𝑗4 ⎟ 𝛿𝑗1 𝑗4 𝛿𝑚1 𝑚4 ∑ ⎜ ⎟= ⎟⎜ 𝑗1 𝑗2 𝑗3 𝑚2 𝑚3 ⎜ 𝚥̆12 ⎟ ⎜ ⎟ 𝑚 𝑚2 𝑚3 𝑚2 𝑚3 𝑚4 ⎠ ⎠⎝ ⎝ 1 (3.10) In the case where one of the angular momenta is zero, the 3-jm symbol has a very simple formula: ⎛ ⎞ 𝑗2 ⎟ 𝛿𝑗 𝑗 𝛿𝑚 𝑚 12 1 2 ⎜ ⎟= 𝚥̆1 ⎜−𝑚1 0 𝑚2 ⎟ ⎝ ⎠ 𝑗 𝑗1 −𝑚1 ⎜ 1 (−) 0 (3.11) There is a special relation that converts a summation over a 3-jm symbol into Kronecker deltas, ⎛ ⎜ 𝑗2 ∑ (−)𝑗2 −𝑚2 ⎜ 𝑚2 ⎜−𝑚 ⎝ ⎞ 𝑗2 ⎟ ⎟ = 𝛿𝑗1 0 𝛿𝑚1 0 𝚥̆2 ⎟ 2 𝑚1 𝑚2 ⎠ 𝑗1 Read in reverse, this means one can also represent Kronecker deltas with zeros as a 3-jm symbol. 58 3.4 Angular momentum diagrams Angular momentum diagrams, originally introduced by Jucys (whose name is also translated as Yutsis) [YLV62], provide a graphical way to manipulate expressions of coupling coefficients of angular momentum states. Our presentation of diagrams differs from [YLV62; WP06; BL09] in the treatment of arrows.2 In other literature, arrows are used to distinguish between covariant and contravariant angular momenta. However, we treat them mechanically as 1-jm symbols (see Sec. 3.4.3). Other differences in presentation are largely superficial. For practical reasons we do not use graphics to describe 3.4.1 √ 2𝑗 + 1 factors unlike [BL09]. Nodes 3 3 1 2 2 1 Figure 3.1: Diagram of the 3-jm symbol (123) in Eq. 3.12 The main ingredient of angular momentum algebra are 3-jm symbols. Since they are functions of six variables, one might be tempted to introduce a node with six lines emanating from it. 2 Conversion from our presentation to the traditional presentation in, say, [WP06] is done by a two-step process: (1) use diagrammatic rules to ensure that every internal line has an arrow and that every arrow on external lines (if any) point away from the terminal; (2) on any remaining external lines with no arrows, draw an arrow pointing toward the terminal. Now the diagram can be interpreted in the traditional manner. To convert back, simply revert step (2): delete all arrows on external lines that point toward the terminal. 59 However, this quickly becomes unwieldy. Instead, it is better to treat each (𝑗, 𝑚)-pair as a combined entity. In Fig. 3.1, we introduce the diagram for the 3-jm symbol, ⎛ ⎞ ⎜ 𝑗1 𝑗2 𝑗3 ⎟ (123) = ⎜ ⎟ ⎜𝑚1 𝑚2 𝑚3 ⎟ ⎝ ⎠ (3.12) for which we have assigned the shorthand (123). Note that 3-jm symbols are the only kind of primitive node (vertex) that appears in angular momentum diagrams. Hence, they are the basic building block of such diagrams. Because 3-jm symbols are invariant under even permutations only, it is necessary to assign a definite ordering to the lines. This is denoted by the circular arrow within the node. In other literature, circular arrows are usually replaced by a sign: + for anticlockwise and − for clockwise. 3.4.2 Lines The lines (edges) in angular momentum diagrams serve to link the 𝑚-type arguments on both ends of the line. The domain 𝑀𝑗 over which the 𝑚 variable is valid is indicated by the label on the line.3 For example, if a line is labeled “1”, this means the 𝑚 variable must lie within the domain 𝑀𝑗 of the 𝑗1 variable. 1 As a convenience (or perhaps a source of confusion), we introduce a special exception to this interpretation when the label is “0”. In this case, we instead interpret it to indicate that the domain is 𝑀0 = {0}, i.e. 𝑚 = 𝑗 = 0. To alert the reader of this special interpretation, the line is drawn in a faded grey color. Lines can appear in isolation, as shown in Fig. 3.2. The middle diagram of Fig. 3.2 represents 3 Because of this, unlike many-body diagrams, labels on lines are not optional. 60 0 0′′ 0′ 1 1′ 1 2 2′ 2 Figure 3.2: Degenerate line diagrams: upper diagram: (0′ 0′′ ) in Eq. 3.14; middle diagram: (11′ ) in ̌ ′ ) in Eq. 3.15 Eq. 3.13; lower diagram: (22 the Kronecker delta, (11′ ) = 𝛿𝑚 𝑚′ 1 1 (3.13) The upper diagram is also a Kronecker delta, but with the extra constraint that 𝑚0′ ∈ 𝑀0 , hence (0′ 0′′ ) = 𝛿𝑚′ 𝑚′′ 𝛿𝑚′ 0 0 0 3.4.3 (3.14) 0 Herring–Wigner 1-jm symbol In the lower diagram of Fig. 3.2, we introduce the notion of an arrow on a line. Lines with arrows (directed lines) are associated with a (−)𝑗−𝑚 phase as well as a sign reversal in 𝑚, i.e. the time-reversal of angular momentum. More precisely, the diagram represents the quantity: ′ ̌ ′) = 𝛿 (22 (−)𝑗2 −𝑚2 𝑚2 ,−𝑚2′ (3.15) 61 This is sometimes referred to as a Herring–Wigner 1-jm symbol, denoted by ⎛ ⎞ ⎛ ⎞ ⎜ 𝑗 ⎟ ⎜𝑗 0 𝑗 ⎟ 𝑗−𝑚′ ⎜ ⎟ = 𝚥̆⎜ ⎟ = 𝛿𝑚,−𝑚′ (−) ⎜𝑚 𝑚 ′ ⎟ ⎜𝑚 0 𝑚 ′ ⎟ ⎝ ⎠ ⎝ ⎠ (3.16) It acts like a metric tensor for SU(2), since the quantity ⎛ ⎞ ⎜ 𝑗 ⎟ ′ ∑ ⎜ ⎟|𝑗𝑚⟩ ⊗ |𝑗𝑚 ⟩ 𝑚𝑚′ ⎜𝑚 𝑚′ ⎟ ⎝ ⎠ is invariant under SU(2) transformations. 3.4.4 Terminals The terminals of lines, highlighted by the grey circles, represent the free 𝑚 variables (i.e. those that are not summed over). We label the terminals so as to provide a correspondence to the algebraic equations. For example, in Fig. 3.1 we label the terminals “1”, “2”, and “3” to indicate their correspondence to 𝑚1 , 𝑚2 , and 𝑚3 . 2 2 2 0 1 = — ȷ˘2 1=2 1 1 1 ̌ Figure 3.3: 3-jm symbol when an argument is zero: (102) = (12)/𝚥̆1 in Eq. 3.11 There is one exceptional situation where a terminal may be absent: when the line is zero. This occurs in, for example, the simplification of a 3-jm symbol when one of the angular momenta 62 is zero in Eq. 3.11. This is depicted diagrammatically in Fig. 3.3, and shown here in shorthand notation: ̌ (102) = 3.4.5 (12) 𝚥̆1 Closed diagrams 2 1 2 3 = 1 1 4 4 1 1=4 4 3 Figure 3.4: Second orthogonality relation for 3-jm symbols: (123)(234) = (14)(1′ 23)(1′ 23) in Eq. 3.10 In lines with no terminals – the internal lines – their 𝑚 variables are always summed over. This is exemplified in Fig. 3.4, which depicts the second orthogonality relation for 3-jm symbols in Eq. 3.10 as (123)(234) = (14)(1′ 23)(1′ 23) = (14){1′ 23} On the left-hand side, the 𝑚2 and 𝑚3 lines are both internal and therefore summed over. On the right-hand side, 1 = 4 label indicates the presence of a 𝑗-relating Kronecker delta 𝛿𝑗 𝑗 in addition 14 to the usual 𝛿𝑚 𝑚 . In the upper right, there is a special subdiagram (1′ 23)(1′ 23), which is in fact 1 4 { } the triangular delta 𝑗1 𝑗2 𝑗3 as defined in Eq. 3.6. 63 1 2 3 Figure 3.5: Triangular delta: {123} = (123)(123) in Eq. 3.17 In diagrammatic notation, the triangular delta is represented by the following sum as shown in Fig. 3.5: ⎛ ⎞ { } ⎜ 𝑗1 𝑗2 𝑗3 ⎟2 {123} = (123)(123) = ∑ ⎜ ⎟ = 𝑗1 𝑗2 𝑗3 𝑚1 𝑚2 𝑚3 ⎜ 𝑚 𝑚2 𝑚3 ⎟ ⎝ 1 ⎠ (3.17) The triangular delta is the simplest irreducible closed diagram: it cannot be broken down into simpler components in a nontrivial way (irreducible), and there are no free 𝑚-type variables (closed). Specifically, we say a diagram is irreducible if it cannot be factorized into subdiagrams without either (a) introducing a summation over a new 𝑗-type variable, or (b) introducing another triangular delta. The (b) constraint comes from the fact that a triangular delta can be split (factorized) into a finite number of identical triangular deltas, which is not very interesting. The triangular delta is a rather degenerate case of an irreducible closed diagram. In Secs. 3.8.2, 3.8.3, we introduce more interesting cases: the 6-j and 9-j symbols. In graph theory, irreducible closed diagrams correspond to cubic graphs that are cyclically 4-connected, namely, 3-edgeconnected graphs in which every split by the deletion of 3 edges yields at least one disconnected vertex. The triangular delta is unusual in that it is the only non-simple graph of this family. 64 1 1′ 1 Σj ȷ̆3 3 1 1 1′ 2 2 2′ 1 = 3 2 2 2 2′ Figure 3.6: First orthogonality relation for 3-jm symbols: ∑𝑗 𝚥̆32 (123)(1′ 2′ 3) = (11′ )(22′ ) in Eq. 3.9 3 3.4.6 Summed lines There are a few occasions where the 𝑗-type variables do need to be summed over. This occurs in the first orthogonality relation in Eq. 3.9, shown diagrammatically in Fig. 3.6 as ∑ 𝚥̆32 (123)(1′ 2′ 3) = (11′ )(22′ ) 𝑗3 The doubling of the line serves as an additional reminder that 𝑗3 is being summed over. 3.5 Phase rules Let us begin by considering just one particular angular momentum pair (𝑗𝑖 , 𝑚𝑖 ) in isolation. In this case, we have the properties (−)4𝑗𝑖 = 1 (−)2(𝑗𝑖 −𝑚𝑖 ) = 1 65 We may call this the local phase rules. Given an arbitrary phase (−)𝑎𝑗𝑖 +𝑏𝑚𝑖 with 𝑎, 𝑏 ∈ ℤ, one can always use local rules to uniquely decompose the phase as (−)𝑎𝑗𝑖 +𝑏𝑚𝑖 = (−)𝑐𝑗𝑖 +𝑑(𝑗𝑖 −𝑚𝑖 ) where 𝑐 ∈ {0, 1, 2, 3} and 𝑑 ∈ {0, 1}. We will call this the locally canonical form of the phase. Hence, phases of a single angular momentum may be represented as a pair (𝑐, 𝑑) where 𝑐 uses modulo-4 arithmetic and 𝑑 uses modulo-2 arithmetic. There are only 8 unique phases: 0(𝑗 − 𝑚) 0𝑗 1𝑗 2𝑗 3𝑗 0 +𝑗 2𝑗 −𝑗 1(𝑗 − 𝑚) 𝑗 − 𝑚 +𝑚 𝑗 + 𝑚 −𝑚 The table has a toroidal topology: it wraps around both horizontally and vertically. Canonicalization provides a mechanical approach for deciding whether two phases are equivalent. Unfortunately, when non-local rules are involved, there is no longer an obvious way to canonicalize phases – the symmetries of the phases become entangled with the topology of the angular momentum diagram. Nonetheless, local canonicalization provides an easy way to eliminate one of the sources of redundancy. It is common to work with only real recoupling coefficients, thus it is unusual for (−)𝑗 or (−)3𝑗 to appear in isolation. They typically appear in groups, such as triplets (−)𝑗1 +𝑗2 +𝑗3 or quadruplets. Note that the (−)𝑗𝑖 −𝑚𝑖 phase comes from the 1-jm symbol, which are arrows in diagrammatic notation (see Eq. 3.16). The algebraic properties of the 1-jm symbol can be encoded as two arrow 66 1 1 = 1′ 1 1′ 1 1 1 2j1 = (−) 1 1′ 1 1′ Figure 3.7: Upper diagram: arrow cancellation: (1̌ 1̌ ′ ) = (11′ ) in Eq. 3.18; lower diagram: arrow ̌ ′ ) = (−)2𝑗1 (11) ̌ in Eq. 3.19 reversal: (11 rules in diagrammatic theory. The first rule is arrow cancellation: ⎛ ⎞⎛ ⎞ 𝑗 ⎜ 𝑗 ⎟⎜ ⎟ ∑⎜ ⎟⎜ ⎟ = 𝛿𝑚,𝑚′ 𝑚1′′ ⎜𝑚 𝑚′′ ⎟⎜𝑚′ 𝑚′′ ⎟ ⎝ ⎠⎝ ⎠ (3.18) which is depicted in the upper diagram of Fig. 3.7. In the lower diagram, we have the second rule of arrow reversal: ⎛ ⎞ ⎛ ⎞ 𝑗 ⎜ ⎟ ⎜ 𝑗 ⎟ 2𝑗 ⎟ ⎜ ⎟ = (−) ⎜ ⎜𝑚 𝑚 ′ ⎟ ⎜𝑚 ′ 𝑚 ⎟ ⎝ ⎠ ⎝ ⎠ (3.19) Now let us consider the nonlocal phase rules, which govern phase triplets related by 3-jm symbols. These arise from the properties of the 3-jm symbol and the selection rules. One of the nonlocal selection rules of the 3-jm symbol is 𝑚1 + 𝑚2 + 𝑚3 = 0 This implies that 𝑚1 , 𝑚2 , and 𝑚3 are either all integers or one of them is an integer and the rest are half-odd integers. The 𝑗1 , 𝑗2 , and 𝑗3 variables are constrained by this same condition as a 67 consequence. Thus we have the sweeping rule: ⎛ ⎞ ⎛ ⎞ 𝑗 𝑗2 𝑗3 ⎟ ⎜ 𝑗1 𝑗2 𝑗3 ⎟ 2𝑗1 +2𝑗2 +2𝑗3 ⎜ 1 ⎜ ⎟ = (−) ⎜ ⎟ ⎜ 𝑚1 𝑚2 𝑚3 ⎟ ⎜ 𝑚1 𝑚2 𝑚3 ⎟ ⎝ ⎠ ⎝ ⎠ This rule enables (−)2𝑗 -type phases to be introduced, eliminated, or migrated (“sweeped”) around the diagram. In contrast, (−)𝑗 -type phases by themselves are generally immobile without the aid of Kronecker deltas. 3 3 = 1 2 1 2 ̌ in Eq. 3.20 Figure 3.8: Triple arrow rule: (123) = (1̌ 2̌ 3) The analog of the sweeping rule for arrows is the triple arrow rule, which allows three similar arrows to be introduced around any 3-jm node: ⎛ ⎞ ⎛ ⎞ 𝑗 𝑗 𝑗 1 2 3 ⎜ 𝑗1 𝑗2 𝑗3 ⎟ ⎟ ⎜ 𝑗 −𝑚 +𝑗 −𝑚 +𝑗 −𝑚 ⎜ ⎟ = (−) 1 1 2 2 3 3 ⎜ ⎟ ⎜ 𝑚1 𝑚2 𝑚3 ⎟ ⎜−𝑚1 −𝑚2 −𝑚3 ⎟ ⎝ ⎠ ⎝ ⎠ (3.20) Like the sweeping rule, these can be used introduce, eliminate, or migrate arrows around the diagram. Lastly, it is often necessary to reverse the order of arguments in a 3-jm symbol. This is handled by the node reversal rule, which allows the orientation of a 3-jm symbol to be reversed at the 68 3 3 = (−) 1 j1 +j2 + j3 2 1 2 Figure 3.9: Node reversal rule: (123) = (−)𝑗1 +𝑗2 +𝑗3 (321) in Eq. 3.21 cost of three (−)𝑗 -type phases: ⎛ ⎞ ⎛ ⎞ 𝑗 𝑗 𝑗 3 2 1 ⎜ ⎟ ⎜ 𝑗1 𝑗2 𝑗3 ⎟ 𝑗 +𝑗 +𝑗 ⎟ ⎜ ⎟ = (−) 1 2 3 ⎜ ⎜𝑚3 𝑚2 𝑚1 ⎟ ⎜ 𝑚1 𝑚2 𝑚3 ⎟ ⎝ ⎠ ⎝ ⎠ 3.6 (3.21) Wigner–Eckart theorem The Wigner–Eckart theorem allows matrix elements of a spherical tensor operator to be factorized into an operator-dependent, 𝑚-independent component and an operator-independent, 𝑚-dependent factor. The latter factor is composed of a 3-jm symbol (or equivalently a CG coefficient). The theorem is highly advantageous for numerical computations as summations over 3-jm symbols can often be simplified substantially. 𝑗 The usual statement of the theorem is as follows: if 𝑇̂𝑚𝑇𝑇 is a rank-𝑗𝑇 spherical tensor operator with components labeled by 𝑚𝑇 , then its matrix elements can be factorized in the following manner 𝑗 ⟨𝑗1 𝑚1 𝛼1 |𝑇̂𝑚𝑇𝑇 |𝑗2 𝑚2 𝛼2 ⟩ ⎛ ⎞ 𝑗 𝑗 𝑗 1 𝑇 2 ⎜ ⎟ 𝑗 = (−)𝑗1 −𝑚1 ⎜ ⎟⟨𝑗1 𝛼1 ‖𝑇̂ 𝑇 ‖𝑗2 𝛼2 ⟩ ⎜−𝑚1 𝑚𝑇 𝑚2 ⎟ ⎝ ⎠ where ⟨𝑗1 𝛼1 ‖𝑇̂ 𝑗𝑇 ‖𝑗2 𝛼2 ⟩ is called the reduced matrix element under the 3-jm convention. This 69 is the same convention as the one used in [Rac42]. There are several other conventions. Some conventions differ by a factor of (−)2𝑗𝑇 : 𝑗 ⟨𝑗1 𝑚1 𝛼1 |𝑇̂𝑚𝑇𝑇 |𝑗2 𝑚2 𝛼2 ⟩ ⎛ ⎞ 𝑗 𝑗 𝑗 1 𝑇 2 ⎜ ⎟ ′ 𝑗 = (−)2𝑗𝑇 +𝑗1 −𝑚1 ⎜ ⎟⟨𝑗1 𝛼1 ‖𝑇̂ 𝑇 ‖𝑗2 𝛼2 ⟩ ⎜−𝑚1 𝑚𝑇 𝑚2 ⎟ ⎝ ⎠ 1 = ⟨𝑗2 𝑚2 𝑗𝑇 𝑚𝑇 |𝑗1 𝑚1 ⟩⟨𝑗1 𝛼1 ‖𝑇̂ 𝑗𝑇 ‖𝑗2 𝛼2 ⟩′ 𝚥̆1 This phase factor is often irrelevant as 𝑗𝑇 is commonly an integer. Another convention is to simply use the CG coefficient directly: 𝑗 ⟨𝑗1 𝑚1 𝛼1 |𝑇̂𝑚𝑇𝑇 |𝑗2 𝑚2 𝛼2 ⟩ = ⟨𝑗2 𝑚2 𝑗𝑇 𝑚𝑇 |𝑗1 𝑚1 ⟩⟨𝑗1 𝛼1 ‖𝑇̂ 𝑗𝑇 ‖𝑗2 𝛼2 ⟩′′ We call ⟨𝑗1 𝛼1 ‖𝑇̂ 𝑗𝑇 ‖𝑗2 𝛼2 ⟩′′ the reduced matrix element under the CG convention. This convention is convenient for scalar operators where it simplifies to: ⟨𝑗1 𝑚1 𝛼1 |𝑇̂00 |𝑗2 𝑚2 𝛼2 ⟩ = 𝛿𝑗 𝑗 𝛿𝑚 𝑚 ⟨𝑗1 𝛼1 ‖𝑇̂ 0 ‖𝑗2 𝛼2 ⟩′′ 12 1 2 An unusual way to state the Wigner–Eckart theorem is through the following inverse equation: ⎛ ⟨𝑗1 𝛼1 ‖𝑇̂ 𝑗𝑇 ‖𝑗2 𝛼2 ⟩ = ∑ 𝑚1′ 𝑚𝑇 𝑚2′ ⎞ 𝑗2 ⎟ 𝑗𝑇 ′ ′ ⎟⟨𝑗1 𝑚1 𝛼1 |𝑇̂𝑚𝑇 |𝑗2 𝑚2 𝛼2 ⟩ ⎜−𝑚1′ 𝑚𝑇 𝑚2′ ⎟ ⎝ ⎠ ′ ⎜ 𝑗1 (−)𝑗1 −𝑚1 ⎜ 𝑗𝑇 The advantage of this form is that it can be readily translated to diagrams. Of course, in practice 70 the summation is unnecessary as one could simply compute: 𝑗 (−)𝑗1 ⟨𝑗1 0𝛼1 |𝑇̂0𝑇 |𝑗2 0𝛼2 ⟩ 𝑗𝑇 ̂ ⟨𝑗1 𝛼1 ‖𝑇 ‖𝑗2 𝛼2 ⟩ = ⎛ ⎞ ⎜𝑗1 𝑗𝑇 𝑗2 ⎟ ⎜ ⎟ ⎜0 0 0⎟ ⎝ ⎠ 3.7 Separation rules in a yellow subdiagram, all internal lines must have arrows (a) 1 = δ j 10 0 0 2 (b) = δj2 j3 2 ˘ȷ22 2 3 4 (c) = 5 4 4 5 5 6 6 6 Figure 3.10: Separation rules: (a) single-line separation rule: 𝑓 (𝑗1 , 𝑚1 ) = 𝛿𝑗 0 𝛿𝑚 0 𝑓 (0, 0) in Eq. 3.22; 1 1 (b) double-line separation rule; (c) triple-line separation rule. There is a general diagrammatic rule that is closely related to the more specialized Wigner– Eckart theorem. Suppose we have an angular momentum diagram 𝑓 (𝑗1 , 𝑚1 ) composed of 3-jm 71 nodes with exactly one external line and every one of its internal lines has an arrow. Then, we can partition the diagram into two pieces: 𝑓 (𝑗1 , 𝑚1 ) = 𝛿𝑗 0 𝛿𝑚 0 𝑓 (0, 0) 1 1 (3.22) In other words, 𝑓 must be invariant (a spherical scalar). We call this the single-line separation rule because it allows us to cut the lone external line to separate the diagram into two disconnected pieces. This rule is shown in Fig. 3.10 (a). → → Figure 3.11: A schematic derivation of the separation rule for five lines. The topologies of the diagrams are shown but most details (such as phases or other factors) have been omitted. Double lines indicate summed lines as before (Sec. 3.4.6). The meaning of the yellow rectangles is the same as in Fig. 3.10. This seemingly simple rule can be used to separate arbitrarily complicated diagrams through a mechanical process (Fig. 3.11) in which lines are repeatedly pairwise combined using the first orthogonality relation (Fig. 3.6) until a single line remains, which can then be cut using Eq. 3.22. Separation rules for the special cases of two and three lines are shown in Fig. 3.10 (b) and (c) respectively. Both can be derived using (a) and the first orthogonality relation. Analogous separation rules for four or more lines can be derived, but they always introduce new angular momentum variables to be summed over. With six or more lines, there can be multiple nonequivalent separation rules. Separation rules are used in the derivation of recoupling coefficients. They can also be used to 72 derive the second orthogonality relation of 3-jm symbols. 3.8 3.8.1 Recoupling coefficients and 3n-j symbols Triangular delta Consider the usual CG coupling of |𝑗1 𝑚1 ⟩ and |𝑗2 𝑚2 ⟩ to form the coupled state |(12)𝑗12 𝑚12 𝑗1 𝑗2 ⟩ as in Eq. 3.5, |(12)𝑗12 𝑚12 𝑗1 𝑗2 ⟩ = ∑ |𝑗1 𝑚1 𝑗2 𝑚2 ⟩⟨1, 2|12⟩ 𝑚1 𝑚2 Here, we introduce a shorthand for Clebsch–Gordan coefficients: ⟨𝑎, 𝑏|𝑐⟩ = ⟨𝑗𝑎 𝑚𝑎 𝑗𝑏 𝑚𝑏 |𝑗𝑐 𝑚𝑐 ⟩ We call this coupling “(12)” because in the CG coefficient angular momentum 1 appears before angular momentum 2. We could have also coupled them in reverse: |(21)𝑗12 𝑚12 𝑗1 𝑗2 ⟩ = ∑ |𝑗1 𝑚1 𝑗2 𝑚2 ⟩⟨2, 1|12⟩ 𝑚1 𝑚2 This leads to a different set of coupled eigenstates, which we call (21). They are still eigenstates (12) of (𝑱̂ (12) )2 , 𝐽̂3 , 𝑱̂ (1) , and 𝑱̂ (2) , just like the (12) states. Since the two states are bases of the same Hilbert space we expect there to exist a linear transformation between the two: |(21)𝑗12 𝑚12 𝑗1 𝑗2 ⟩ = ′ ′ ′ ′ 𝑚12 𝑗1′ 𝑗2′ ⟩⟨(12)𝑗12 𝑗1 𝑗2 |(21)𝑗12 𝑗2 𝑗1 ⟩ ∑ |(12)𝑗12 ′ 𝑗′ 𝑗′ 𝑗12 12 73 ′ ′ ′ The quantity ⟨(12)𝑗12 𝑗1 𝑗2 |(21)𝑗12 𝑗2 𝑗1 ⟩ denotes the recoupling coefficient from (12)-coupling to (21)-coupling, one of the simplest recoupling coefficients. From symmetry considerations alone (see Sec. 3.7) we already deduced that the coefficient is both block diagonal in 𝑚12 and does not depend on 𝑚12 . Each recoupling coefficient has a set of selection rules that can be determined in a straightfor′ ward manner. In this case, we know that 𝑗12 = 𝑗12 , 𝑗1′ = 𝑗1 , and 𝑗2′ = 𝑗2 , because they are eigenvalues of the same operators. Thus we find that ′ ′ ′ ⟨(12)𝑗12 𝑗1 𝑗2 |(21)𝑗12 𝑗2 𝑗1 ⟩ = 𝛿𝑗 ′ 𝑗 𝛿𝑗 ′ 𝑗 𝛿𝑗 ′ 𝑗 ⟨(12)𝑗12 𝑗1 𝑗2 |(21)𝑗12 𝑗2 𝑗1 ⟩ 12 12 1 1 2 2 The remaining part of this particular recoupling coefficient has a very simple formula: 1 ⟨(12)𝑗12 𝑗1 𝑗2 |(21)𝑗12 𝑗2 𝑗1 ⟩ = 2 ∑ ⟨1, 2|12⟩⟨2, 1|12⟩ 𝚥̆12 𝑚1 𝑚2 𝑚12 { } 𝑗1 +𝑗2 −𝑗12 = (−) 𝑗1 𝑗2 𝑗3 (3.23) We thus observe that the coupling of states is not commutative, even though the addition of angular momenta operators is. { Notice that the recoupling coefficient contains a triangular delta } 𝑗1 𝑗2 𝑗3 , which was previously defined in Eq. 3.6 and shown diagrammatically in Fig. 3.5. As we have noted, the triangular delta is the simplest irreducible closed diagram. This is a general property of recoupling coefficients: every recoupling coefficient can be decomposed into a product of irreducible closed ̆ diagrams, times simple factor containing phases or 𝚥-like quantities. As we will see in the next few sections, the irreducible closed diagrams are more commonly known as 3n-j symbols, which contains both 6-j symbols and 9-j symbols. The triangular delta is part of this family too, thus it is fitting to give it the name of a 3-j symbol by analogy [WP06]. 74 However, we do not use this terminology to avoid the inevitable confusion with 3-jm symbols. 3.8.2 6-j symbol Now, consider another case where we have a sum of three angular momenta 𝑱̂ (123) = 𝑱̂ (1) + 𝑱̂ (2) + 𝑱̂ (3) (123) and we want to find a set of coupled eigenstates for (𝑱̂ (123) )2 and 𝐽̂3 . One possibility is to first (12) obtain eigenstates |𝑗12 𝑚12 𝑗1 𝑗2 ⟩ of (𝑱̂ (12) )2 and 𝐽̂3 , where 𝑱̂ (12) is defined as 𝑱̂ (12) = 𝑱̂ (1) + 𝑱̂ (2) and then couple these states with |𝑗3 𝑚3 ⟩, leading to states of the form |((12)3)𝑗123 𝑚123 𝑗12 𝑗1 𝑗2 𝑗3 ⟩ = ∑ 𝑚1 𝑚2 𝑚12 𝑚3 |𝑗1 𝑚1 𝑗2 𝑚2 𝑗3 𝑚3 ⟩⟨1, 2|12⟩⟨12, 3|123⟩ (123) which are eigenstates of (𝑱̂ (123) )2 , 𝐽̂3 , (𝑱̂ (12) )2 , (𝑱̂ (1) )2 , (𝑱̂ (2) )2 , and (𝑱̂ (3) )2 . It is clear that we have introduced a bias to the 𝑱̂ (12) here. What if instead we couple 𝑱̂ (2) to 𝑱̂ (3) , and then couple 𝑱̂ (1) to that? Then we would obtain the states |(1(23))𝑗123 𝑚123 𝑗23 𝑗1 𝑗2 𝑗3 ⟩ = ∑ 𝑚1 𝑚2 𝑚3 𝑚23 |𝑗1 𝑚1 𝑗2 𝑚2 𝑗3 𝑚3 ⟩⟨2, 3|23⟩⟨1, 23|123⟩ Or we also couple 𝑱̂ (1) to 𝑱̂ (3) , and then to 𝑱̂ (2) , leading to the states |((13)2)𝑗123 𝑚123 𝑗13 𝑗1 𝑗2 𝑗3 ⟩ = ∑ 𝑚1 𝑚3 𝑚13 𝑚2 |𝑗1 𝑚1 𝑗2 𝑚2 𝑗3 𝑚3 ⟩⟨1, 3|13⟩⟨13, 2|123⟩ 75 These choices lead to very different sets of eigenstates that are related by nontrivial coefficients. There are also several other ways to couple, such as ((21)3), (1(32)), (2(13)), etc, but they are equivalent to one of the above three up to a phase factor akin to Eq. 3.23. To convert from, say, ((12)3) to (1(23)), we would require the following 𝑚-independent recoupling coefficient: ′ ⟨((12)3)𝑗123 𝑗12 𝑗1′ 𝑗2′ 𝑗3′ |(1(23))𝑗123 𝑗23 𝑗1 𝑗2 𝑗3 ⟩ The selection rules tell us that the primed quantities have to match the unprimed quantities. So the only nontrivial elements are: ⟨((12)3)𝑗123 𝑗12 𝑗1 𝑗2 𝑗3 |(1(23))𝑗123 𝑗23 𝑗1 𝑗2 𝑗3 ⟩ 1 = 2 ⟨12, 3|123⟩⟨1, 2|12⟩⟨2, 3|23⟩⟨1, 23|123⟩ ∑ 𝚥̆123 𝑚1 𝑚2 𝑚3 𝑚12 𝑚23 𝑚123 Hence, the coupling of states is also not associative, even though the addition of angular momenta operators is. The recoupling coefficient ⟨((12)3)𝑗123 𝑗12 𝑗1 𝑗2 𝑗3 |(1(23))𝑗123 𝑗23 𝑗1 𝑗2 𝑗3 ⟩ can be expressed in terms of a quantity called the 6-j symbol, defined as ⎧ ⎫ ⎛ ⎞ ⎪ ⎪ ⎪ 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 1 2 3 ⎪ ⎜ ⎟ ⎪ 1 2 3⎪ = (−)𝑗4 −𝑚4 +𝑗5 −𝑚5 +𝑗6 −𝑚6 ⎜ ∑ ⎨ ⎬ ⎟ ⎪ ⎪ 𝑚1 𝑚2 𝑚3 𝑚4 𝑚5 𝑚6 ⎪ ⎪ ⎜ ⎟ 𝑗 𝑗 𝑗 𝑚 𝑚 𝑚 ⎪ 2 3 ⎩ 4 5 6⎪ ⎭ ⎝ 1 ⎠ ⎛ ⎞⎛ ⎞⎛ ⎞ 𝑗5 𝑗6 ⎟⎜ 𝑗2 𝑗6 𝑗4 ⎟⎜ 𝑗3 𝑗4 𝑗5 ⎟ ⎜ 𝑗1 ⎜ ⎟⎜ ⎟⎜ ⎟ ⎜𝑚1 −𝑚5 𝑚6 ⎟⎜𝑚2 −𝑚6 𝑚4 ⎟⎜𝑚3 −𝑚4 𝑚5 ⎟ ⎝ ⎠⎝ ⎠⎝ ⎠ (3.24) Fig. 3.12 shows the diagram for a 6-j symbol, which corresponds to the following diagrammatic 76 3 5 4 1 2 6 ̌ ̌ ̌ in Eq. 3.24 Figure 3.12: 6-j symbol: {123456} = (123)(156)(2 64)(3 45) shorthand: ̌ ̌ ̌ {123456} = (123)(156)(2 64)(3 45) We may now write the aforementioned recoupling coefficient as: ⎧ ⎫ ⎪ ⎪ ⎪ ⎪ 𝑗 𝑗 𝑗 2 12 ⎪ ⎪1 𝑗1 +𝑗2 +𝑗3 +𝑗123 ⟨((12)3)𝑗123 𝑗12 𝑗1 𝑗2 𝑗3 |(1(23))𝑗123 𝑗23 𝑗1 𝑗2 𝑗3 ⟩ = (−) 𝚥̆12 𝚥̆23 ⎨ ⎬ ⎪ ⎪ ⎪ 𝑗3 𝑗123 𝑗23 ⎪ ⎪ ⎪ ⎩ ⎭ The 6-j symbol has the nonlocal selection rules corresponding to those of its 3-jm nodes, which are simply the following triangle conditions: { } 𝑗1 𝑗2 𝑗3 { 𝑗1 𝑗5 𝑗6 } { 𝑗2 𝑗6 𝑗4 } { } 𝑗3 𝑗4 𝑗5 Note that Fig. 3.12 is only one out of several ways to draw a 6-j symbol. It has in fact several interesting symmetries that are not immediately obvious. For example, the columns of the 6-j 77 symbol can be permuted arbitrarily (both odd and even permutations): ⎧ ⎫ ⎫ ⎫ ⎪ ⎪ ⎧ ⎪ ⎪ ⎧ ⎪ ⎪ ⎪ ⎪𝑗1 𝑗2 𝑗3 ⎪ ⎪ ⎪ ⎪𝑗2 𝑗1 𝑗3 ⎪ ⎪ ⎪ ⎪𝑗2 𝑗3 𝑗1 ⎪ ⎪ =⎨ =⎨ =⋯ ⎨ ⎬ ⎬ ⎬ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 ⎪ ⎩ 4 5 6⎪ ⎭ ⎪ ⎩ 5 4 6⎪ ⎭ ⎪ ⎩ 5 6 4⎪ ⎭ It also has the following tetrahedral symmetries: ⎧ ⎫ ⎧ ⎫ ⎧ ⎫ ⎧ ⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪𝑗1 𝑗2 𝑗3 ⎪ ⎪𝑗4 𝑗5 𝑗3 ⎪ ⎪𝑗4 𝑗2 𝑗6 ⎪ ⎪𝑗1 𝑗5 𝑗6 ⎪ ⎪ =⎨ =⎨ =⎨ ⎨ ⎬ ⎬ ⎬ ⎬ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ 1 5 3 4 2 3 4 5 6 1 2 6 ⎩ ⎭ ⎩ ⎭ ⎩ ⎭ ⎩ ⎭ 3.8.3 9-j symbol 7 1 9 2 8 3 4 5 6 Figure 3.13: 9-j symbol: {123456789} = (123)(456)(789)(147)(258)(369) in Eq. 3.25 Certain recouplings four or more angular momenta can lead to another type of irreducible 78 diagram known as the 9-j symbol, defined as: ⎧ ⎫ ⎪ ⎪ ⎪ 𝑗1 𝑗2 𝑗3 ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ = ∑ ⎨ ⎬ 𝑗 𝑗 𝑗 4 5 6 ⎪ ⎪ 𝑚1 𝑚2 𝑚3 𝑚4 𝑚5 𝑚6 𝑚7 𝑚8 𝑚9 ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ 𝑗7 𝑗8 𝑗9 ⎪ ⎪ ⎪ ⎩ ⎭ ⎛ ⎞⎛ ⎜ 𝑗1 𝑗2 𝑗3 ⎟⎜ 𝑗4 𝑗5 ⎜ ⎟⎜ ⎜𝑚1 𝑚2 𝑚3 ⎟⎜𝑚4 𝑚5 ⎝ ⎠⎝ ⎛ ⎞⎛ ⎜ 𝑗1 𝑗4 𝑗7 ⎟⎜ 𝑗2 𝑗5 ⎜ ⎟⎜ ⎜𝑚1 𝑚4 𝑚7 ⎟⎜𝑚2 𝑚5 ⎝ ⎠⎝ ⎞⎛ ⎞ 𝑗6 ⎟⎜ 𝑗7 𝑗8 𝑗9 ⎟ ⎟⎜ ⎟ 𝑚6 ⎟ ⎜ 𝑚7 𝑚8 𝑚9 ⎟ ⎠⎝ ⎠ ⎞⎛ ⎞ 𝑗8 ⎟⎜ 𝑗3 𝑗6 𝑗9 ⎟ ⎟⎜ ⎟ ⎟ ⎜ 𝑚8 𝑚3 𝑚6 𝑚9 ⎟ ⎠⎝ ⎠ (3.25) This is shown diagrammatically in Fig. 3.13, which can be expressed as the following shorthand: {123456789} = (123)(456)(789)(147)(258)(369) The nonlocal selection rules of 9-j symbols are simply triangle conditions on all row and column triplets. They are invariant under reflections about either diagonal, and also invariant under even permutations of rows or columns. An odd permutation would introduce a phase factor 9 of (−)∑𝑖=0 𝑗𝑖 . 3.9 Calculation of angular momentum coefficients Numerical values of the coupling and recoupling coefficients (i.e. 3-jm, 6-j, and 9-j symbols) can be calculated readily using the formulas as given in this chapter. Due to the presence of large alternating sums, use of arbitrary-precision arithmetic is highly recommended to avoid catastrophic loss of precision. 79 Optimized variants of the formulas for 3-jm, 6-j, and 9-j symbols have been described in detail in [Wei99; Wei98]. These have been implemented in the wigner-symbols software packages in Rust [WSR] and Haskell [WSH], which leverage the GNU Multi Precision (GMP) Arithmetic Library [Gt16] for its highly optimized arbitrary-precision integer and rational arithmetic. Even with the fastest algorithms, it is often more performant to reuse (re)coupling coefficients that have been previously computed and cached in memory than to recompute them again. For this, the storage scheme devised in [RY04] based on Regge symmetries can help reduce the total memory usage. The storage scheme consists of two main parts: • A canonicalization scheme that uses the symmetries of the coupling coefficients to link ones that differ by a trivial phase factor. • An indexing scheme that translates canonicalized angular momenta into an array index, allowing rapid lookup of elements. In practice, we found the canonicalization scheme most useful for calculations as it provides a guaranteed 1-2 orders of magnitude reduction in memory usage. In contrast, the indexing scheme is not substantially faster than a plain hash-table lookup and comes with the disadvantage of requiring all coefficients to be precomputed up to some limit. This makes it somewhat difficult to use in practice and can result in wasted memory if the limit is overestimated. 3.10 Graphical tool for angular momentum diagrams We have developed a graphical tool [Jucys] that can be used to perform graphical manipulation of angular momentum coefficients with the diagrammatic technique explained in this chapter, with ̆ a few slight modifications. Specifically, non-diagrammatic objects such as phases, 𝚥-like factors, Kronecker deltas, or summations over 𝑗-type variables are all tracked separately in a tableau that is displayed beside the diagram. 80 The primary motivation of the tool is to eliminate human errors that commonly occur in angular momentum algebra and improve the speed of such derivations. To achieve this, the diagram offers a special reduction mode that, when activated, ensures that all of the user’s diagrammatic manipulations preserve equality. The user modifies the diagram through various gestures and clicks of the mouse cursor. The program is responsible for enforcing the diagrammatic rules, including orthogonal relations, separation rules, various phase rules, etc. The program comes with a separate input tool for writing angular momentum expressions, without which the user would have to manually draw angular momentum diagrams node by node – a tedious and error-prone process. The input tool provides fast means of describing coupling coefficients in text, reducing the room for human error. As an example, the Pandya transformation coefficient for spherical scalars is described by the following input: rel (p + q) (r + s) rec (p - s) (r - q) Here, rel equates the two angular momenta p + q and r + s. The rec equates the two 2 angular momenta p - s and r - q but also includes an extra 1/𝚥̆𝑝𝑠 factor. The plus sign in p + q denotes the usual CG coupling ⟨𝑝, 𝑞|𝑝𝑞⟩ = ⟨𝑗𝑝 𝑚𝑝 𝑗𝑞 𝑚𝑞 |𝑗𝑝𝑞 𝑚𝑝𝑞 ⟩ whereas the minus sign in p - s denotes coupling with the second angular momentum timereversed: ̌ ⟨𝑝, 𝑠|𝑝𝑠⟩ = (−)𝑗𝑠 −𝑚𝑠 ⟨𝑗𝑝 , 𝑚𝑝 , 𝑗𝑠 , −𝑚𝑠 |𝑗𝑝𝑠 , 𝑚𝑝𝑠 ⟩ 81 (3.26) After providing this input to the tool, the corresponding 6-j diagram can be rapidly derived along with the associated phases and factors. 𝑗 As another example, the Pandya transformation coefficient for a spherical tensor 𝐴̂ 𝑚𝐴𝐴 is described by wet (p + q) A (r + s) wet (p - s) A (r - q) Here, wet denotes the use of the Wigner–Eckart coupling and the central A variable is the rank 𝑗𝐴 of the spherical tensor. After providing this input, one can quickly derive the corresponding 9-j diagram with the associated phases and factors. The tool is a web application written in a combination of JavaScript, HTML, and CSS. It can therefore run in any modern Internet browser and is accessible to users on most desktop platforms. An online version is available for immediate use, but the user can also run the application on their own machine with the appropriate setup. It utilizes SVG technology to display diagrams, making it straightforward to export diagrams as vector images, suitable for use in literature as we have done in this work. We will not attempt to explain the usage of the program here, as that information will very likely become out of date as the program evolves. Interested users are advised to read the official documentation for usage information. 3.11 Fermionic states in J-scheme J-scheme is a many-body formalism that takes advantage of angular momentum conservation to reduce the dimensionality of the problem (i.e. the computational cost and size of matrices). In this 82 context, the usual formalism where we do not take advantage of angular momentum symmetries is dubbed M-scheme for contrast. We use 𝑎, 𝑏, 𝑐, … to label single-particle states in this section. We assume each state has some definite angular-momentum-like quantum numbers: magnitude 𝑗 and projection 𝑚, along with some other quantum number(s) 𝛼 that are not relevant here. 3.11.1 Two-particle states A two-particle J-coupled product state is defined as |𝛼𝑎 𝑗𝑎 ⊗ 𝛼𝑏 𝑗𝑏 ; 𝑗𝑎𝑏 𝑚𝑎𝑏 ⟩ = ∑ |𝑎 ⊗ 𝑏⟩⟨𝑎, 𝑏|𝑎𝑏⟩ 𝑚𝑎 𝑚𝑏 = ∑ |𝛼𝑎 𝑗𝑎 𝑚𝑎 ⊗ 𝛼𝑏 𝑗𝑏 𝑚𝑏 ⟩⟨𝑗𝑎 𝑚𝑎 𝑗𝑏 𝑚𝑏 |𝑗𝑎𝑏 𝑚𝑎𝑏 ⟩ 𝑚𝑎 𝑚𝑏 where ⟨𝑎, 𝑏|𝑎𝑏⟩ = ⟨𝑗𝑎 𝑚𝑎 𝑗𝑏 𝑚𝑏 |𝑗𝑎𝑏 𝑚𝑎𝑏 ⟩ is the Clebsch–Gordan coefficient (Sec. 3.2) and |𝑎 ⊗ 𝑏⟩ = |𝛼𝑎 𝑗𝑎 𝑚𝑎 ⊗𝛼𝑏 𝑗𝑏 𝑚𝑏 ⟩ denotes the (non-antisymmetrized) tensor product state (Sec. 2.1.1) in M-scheme. To keep things concise, we will use the following shorthand for coupled product states: |(12)𝑎 ⊗ 𝑏⟩ = |𝛼𝑎 𝑗𝑎 ⊗ 𝛼𝑏 𝑗𝑏 ; 𝑗𝑎𝑏 𝑚𝑎𝑏 ⟩ Keep in mind that unlike M-scheme, the states in J-scheme do not depend on the individual projections 𝑚𝑎 and 𝑚𝑏 , only total 𝑚𝑎𝑏 . The coupled product states are eigenstates of the total 𝐽̂2 of all particles, 𝐽̂2 |(12)𝑎 ⊗ 𝑏⟩ = 𝑗𝑎𝑏 (𝑗𝑎𝑏 + 1)|(12)𝑎 ⊗ 𝑏⟩ In contrast, uncoupled states are not eigenstates of 𝐽̂2 . 83 For fermionic problems, we can form an antisymmetrized state for J-scheme. The most straightforward way to do this is by coupling the antisymmetrized state, |𝛼𝑎 𝑗𝑎 𝛼𝑏 𝑗𝑏 ; 𝑗𝑎𝑏 𝑚𝑎𝑏 ⟩ = √ 1 ∑ |𝑎𝑏⟩⟨𝑗𝑎 𝑚𝑎 𝑗𝑏 𝑚𝑏 |𝑗𝑎𝑏 𝑚𝑎𝑏 ⟩ 𝑁𝑎𝑏 𝑚𝑎 𝑚𝑏 where the normalization factor is given by 𝑁𝑎𝑏 = 1 − (−)2𝑗𝑎 +𝑗𝑎𝑏 𝛿𝛼 𝛼 𝛿𝑗 𝑗 𝑎 𝑏 𝑎𝑏 (3.27) If the normalization factor is zero, then the antisymmetrized state does not exist. Note that 𝑁𝑎𝑏 depends on only the non-𝑚 parts of 𝑎 and 𝑏. If 𝑗𝑎 and 𝑗𝑏 are always half-odd, then the normalization factor can be further simplified to 𝑁𝑎𝑏 = 1 + (−)𝑗𝑎𝑏 𝛿𝛼 𝛼 𝛿𝑗 𝑗 , which means 𝑎 𝑏 𝑎𝑏 if 𝛼𝑎 = 𝛼𝑏 and 𝑗𝑎 = 𝑗𝑏 , then states with odd 𝑗𝑎𝑏 do not exist. As before, we will also introduce a shorthand for the antisymmetrized states, |(12)𝑎𝑏⟩ = |𝛼𝑎 𝑗𝑎 𝛼𝑏 𝑗𝑏 ; 𝑗𝑎𝑏 𝑚𝑎𝑏 ⟩ which depends on neither 𝑚𝑎 nor 𝑚𝑏 . Alternatively, one can also obtain the same state from a J-coupled product state: √ |(12)𝑎𝑏⟩ = 2 (1+𝑗 +𝑗 −𝑗 )  𝑎 𝑏 𝑎𝑏 |(12)𝑎 ⊗ 𝑏⟩ 𝑁𝑎𝑏 1 𝑗 +𝑗 −𝑗 =√ (|(12)𝑎 ⊗ 𝑏⟩ − (−) 𝑎 𝑏 𝑎𝑏 |(12)𝑏 ⊗ 𝑎⟩) 2𝑁𝑎𝑏 84 where  (1+𝑗𝑎 +𝑗𝑏 −𝑗𝑎𝑏 ) is the ±-symmetrization symbol introduced in Sec. 2.1.2, 1  (1+𝑗𝑎 +𝑗𝑏 −𝑗𝑎𝑏 ) 𝑋𝑎𝑏 = (𝑋𝑎𝑏 + (−)1+𝑗𝑎 +𝑗𝑏 −𝑗𝑎𝑏 𝑋𝑏𝑎 ) 2 Note that the antisymmetrizer 𝑆̂− (Sec. 2.1.2) operates differently in J-scheme compared to in M-scheme: matrix elements of the antisymmetrizer 𝑆̂− are not always antisymmetric with respect to (𝑗, 𝛼) in J-scheme; instead they depend on the parity of 𝑗𝑎 + 𝑗𝑏 − 𝑗𝑎𝑏 . This becomes even more complex for 3 or more particles as the matrix elements of the antisymmetrizer may contain 6-j or higher symbols. Under particle exchange, the J-scheme antisymmetrized state has the following property: |(12)𝑎𝑏⟩ = −(−)𝑗𝑎 +𝑗𝑏 −𝑗𝑎𝑏 |(12)𝑏𝑎⟩ In J-scheme, the two-body antisymmetrized matrix elements are related to the product matrix elements by ⟨(12)𝑎𝑏|𝑉̂ |(12)𝑐𝑑⟩ √ 2 = ⟨(12)𝑎 ⊗ 𝑏|𝑉̂ |(12)𝑐𝑑⟩ 𝑁𝑎𝑏 =√ 3.11.2 1 ⟨(12)𝑎 ⊗ 𝑏|𝑉̂ |(12)𝑐 ⊗ 𝑑⟩ − (−)𝑗𝑐 +𝑗𝑑 −𝑗𝑐𝑑 ⟨(12)𝑎 ⊗ 𝑏|𝑉̂ |(12)𝑑 ⊗ 𝑐⟩) ( 𝑁𝑎𝑏 𝑁𝑐𝑑 Three-particle states Three-particle states have 3 nontrivially distinct ways of coupling. We will stick to the convention of coupling the first two, then the third, which we call the standard coupling order. In this case, 85 the product state in J-scheme is given by |((12)3)𝑎 ⊗ 𝑏 ⊗ 𝑐⟩ = ∑ |𝑎 ⊗ 𝑏 ⊗ 𝑐⟩⟨𝑎, 𝑏|𝑎𝑏⟩⟨𝑎𝑏, 𝑐|𝑎𝑏𝑐⟩ 𝑚𝑎 𝑚𝑏 𝑚𝑐 As usual, the J-scheme antisymmetrized state is formed by coupling the M-scheme antisymmetrized state, 1 |((12)3)𝑎𝑏𝑐⟩ = √ ∑ |𝑎𝑏𝑐⟩⟨𝑎, 𝑏|𝑎𝑏⟩⟨𝑎𝑏, 𝑐|𝑎𝑏𝑐⟩ 𝑁(𝑎𝑏)𝑐 𝑚𝑎 𝑚𝑏 𝑚𝑐 where the normalization constant 𝑁(𝑎𝑏)𝑐 is given by 𝑁(𝑎𝑏)𝑐 = 1 − (−)2𝑗𝑎 +𝑗𝑎𝑏 𝛿𝛼 𝛼 𝛿𝑗 𝑗 𝑎 𝑏 𝑎𝑏 ⎧ ⎫ ⎪ ⎪ ⎪ ⎪ 𝑗𝑎 𝑗𝑏 𝑗𝑎𝑏 ⎪ ⎪ 2𝑗𝑎𝑏𝑐 − (−) 𝚥̆𝑎𝑏 ⎨ 𝛿𝛼 𝛼 𝛿𝑗 𝑗 ⎬ 𝑏 𝑐 𝑏𝑐 ⎪ ⎪ ⎪ ⎪ 𝑗𝑎𝑏𝑐 𝑗𝑏 𝑗𝑎𝑏 ⎪ ⎪ ⎩ ⎭ ⎧ ⎫ ⎪ ⎪ ⎪ ⎪ 𝑗 𝑗 𝑗 𝑎 𝑎𝑏 ⎪ ⎪ 𝑏 2𝑗𝑎𝑏𝑐 − (−) 𝚥̆𝑎𝑏 ⎨ 𝛿𝛼 𝛼 𝛿𝑗 𝑗 ⎬ 𝑎 𝑐 𝑎𝑐 ⎪ ⎪ ⎪ ⎪ 𝑗𝑎𝑏𝑐 𝑗𝑎 𝑗𝑎𝑏 ⎪ ⎪ ⎩ ⎭ ⎧ ⎫ ⎪ ⎪ ⎪ ⎪ 𝑗𝑎 𝑗𝑎 𝑗𝑎𝑏 ⎪ ⎪ 𝑗𝑎𝑏 + 2(−) 𝚥̆𝑎𝑏 ⎨ 𝛿𝛼 𝛼 𝛿𝑗 𝑗 𝛿𝛼 𝛼 𝛿𝑗 𝑗 ⎬ 𝑎 𝑏 𝑎𝑏 𝑎 𝑐 𝑎𝑐 ⎪ ⎪ ⎪ ⎪ 𝑗𝑎𝑏𝑐 𝑗𝑎 𝑗𝑎𝑏 ⎪ ⎪ ⎩ ⎭ 3.12 Matrix elements in J-scheme In this work, we do not use normalized J-scheme states: equations tend to be simpler if we √ use unnormalized matrix elements in which the 1/ 𝑁 factor (see Eq. 3.27) is omitted. This convention is used throughout. 86 3.12.1 Standard-coupled matrix elements 𝑚𝑝 𝑚𝑞 𝑚𝑟 𝑚𝑠 Given an M-scheme two-body matrix 𝐴𝑝𝑞𝑟𝑠 𝑗𝑝𝑞 𝑚𝑝𝑞 𝑗𝑟𝑠 𝑚𝑟𝑠 (12;34) 𝐴𝑝𝑞𝑟𝑠 = ∑ 𝑚𝑝 𝑚𝑞 𝑚𝑟 𝑚𝑠 , we can couple 𝑝 to 𝑞 and 𝑟 to 𝑠, 𝑚𝑝 𝑚𝑞 𝑚𝑟 𝑚𝑠 ⟨𝑝, 𝑞|𝑝𝑞⟩⟨𝑟, 𝑠|𝑟𝑠⟩𝐴𝑝𝑞𝑟𝑠 where ⟨𝑝, 𝑞|𝑝𝑞⟩ = ⟨𝑗𝑝 𝑚𝑝 𝑗𝑞 𝑚𝑞 |𝑗𝑝𝑞 𝑚𝑝𝑞 ⟩ is the CG coefficient (Sec. 3.2). We call this the standard coupling for two-body matrix elements and denote it by schematically as 12; 34. We will often omit the (12; 34) superscript as we consider this the default coupling scheme. If the matrix is a spherical scalar, then thanks to the Wigner–Eckart theorem we can omit many of the superscripts: 𝑗𝑝𝑞 𝑚𝑝𝑞 𝑗𝑟𝑠 𝑚𝑟𝑠 (12;34) 𝐴𝑝𝑞𝑟𝑠 𝑗𝑝𝑞 (12;34) where 𝐴𝑝𝑞𝑟𝑠 𝑗𝑝𝑞 (12;34) = 𝛿𝑗 𝑗 𝛿𝑚 𝑚 𝐴𝑝𝑞𝑟𝑠 𝑝𝑞 𝑟𝑠 𝑝𝑞 𝑟𝑠 denotes the reduced matrix element in the CG convention (Sec. 3.6). Like any reduced matrix element, it is entirely independent of 𝑚. If 𝐴̂ is a spherical tensor of rank 𝑗𝐴 and projection 𝑚𝐴 , then it is more convenient to use the reduced matrix element in the 3-jm convention 𝑗𝐴 𝑚𝐴 𝑗𝑝𝑞 𝑚𝑝𝑞 𝑗𝑟𝑠 𝑚𝑟𝑠 (12;34) 𝐴𝑝𝑞𝑟𝑠 ⎛ = ⎞ 𝑗𝑟𝑞 ⎟ 𝑗𝐴 𝑗𝑝𝑞 𝑗𝑟𝑠 (12;34) ⎜ ⎟𝐴𝑝𝑞𝑟𝑠 ⎜−𝑚𝑝𝑠 𝑚𝐴 𝑚𝑟𝑞 ⎟ ⎝ ⎠ 𝑗 −𝑚 ⎜ 𝑗𝑝𝑠 (−) 𝑝𝑞 𝑝𝑞 𝑗𝐴 The standard coupling can be extended for higher-body operators: one simply couples the bra and ket indices in the order as written. For example, a three-body matrix in standard coupling 87 would be 𝑗𝑝𝑞𝑟 𝑚𝑝𝑞𝑟 𝑗𝑝𝑞 𝑗𝑠𝑡𝑢 𝑚𝑠𝑡𝑢 𝑗𝑠𝑡 ((12)3;(45)6) 𝐴𝑝𝑞𝑟𝑠𝑡𝑢 = ∑ 𝑚𝑝 𝑚𝑞 𝑚𝑟 𝑚𝑠 𝑚𝑡 𝑚𝑢 𝑚𝑝 𝑚𝑞 𝑚𝑟 𝑚𝑠 𝑚𝑡 𝑚𝑢 ⟨𝑝, 𝑞|𝑝𝑞⟩⟨𝑝𝑞, 𝑟|𝑝𝑞𝑟⟩⟨𝑠, 𝑡|𝑠𝑡⟩⟨𝑠𝑡, 𝑢|𝑠𝑡𝑢⟩𝐴𝑝𝑞𝑟𝑠𝑡𝑢 This is denoted schematically by (12)3; (45)6. In the case of spherical scalars, we have the following reduced matrix elements in the CG convention: 𝑗𝑝𝑞𝑟 𝑚𝑝𝑞𝑟 𝑗𝑝𝑞 𝑗𝑠𝑡𝑢 𝑚𝑠𝑡𝑢 𝑗𝑠𝑡 ((12)3;(45)6) 𝐴𝑝𝑞𝑟𝑠𝑡𝑢 3.12.2 𝑗𝑝𝑞𝑟 𝑗𝑝𝑞 𝑗𝑠𝑡 ((12)3;(45)6) 𝛿𝑚 𝑚 𝐴𝑝𝑞𝑟𝑠𝑡𝑢 𝑗 𝑝𝑞𝑟 𝑠𝑡𝑢 𝑝𝑞𝑟 𝑠𝑡𝑢 = 𝛿𝑗 Pandya-coupled matrix elements Besides the standard coupling, two-body operators can be coupled in several other ways. Some are equivalent to 12; 34 up to a phase factor. A nontrivial combination is the Pandya coupling ̌ 32: ̌ [Pan56; Suh07] 14; ̌ 2) ̌ 𝑗𝑝𝑠 𝑚𝑝𝑠 𝑗𝑟𝑞 𝑚𝑟𝑞 (14;3 𝐴𝑝𝑠𝑟𝑞 =− ∑ 𝑚𝑝 𝑚𝑠 𝑚𝑟 𝑚𝑞 𝑚𝑝 𝑚𝑞 𝑚𝑟 𝑚𝑠 ̌ ̌ ⟨𝑝, 𝑠|𝑝𝑠⟩⟨𝑟, 𝑞|𝑟𝑞⟩𝐴 𝑝𝑞𝑟𝑠 ̌ where the ⟨𝑝, 𝑠|𝑝𝑠⟩ uses the time-reversed CG notation introduced in Eq. 3.26. The extraneous minus sign in front of the summation is conventional: if we treat this a recoupling of field operators, we would obtain a minus sign due to antisymmetry since the permutation 1234 → 1432 is odd. If instead we omit the extraneous minus sign, the coupling is often referred to as cross-coupling [Kuo+81] rather than Pandya-coupling. For spherical scalars, we have the following reduced matrix elements in the CG convention. ̌ 2) ̌ 𝑗𝑝𝑠 𝑚𝑝𝑠 𝑗𝑟𝑞 𝑚𝑟𝑞 (14;3 𝐴𝑝𝑠𝑟𝑞 ̌ 2) ̌ 𝑗𝑝𝑠 (14;3 = 𝛿𝑗 𝑗 𝛿𝑚 𝑚 𝐴𝑝𝑠𝑟𝑞 𝑝𝑠 𝑟𝑞 𝑝𝑠 𝑟𝑞 88 They are related to the standard-coupled reduced matrix elements the Pandya transformation: ̌ 2) ̌ 𝑗𝑝𝑠 (14;3 𝐴𝑝𝑠𝑟𝑞 ⎧ ⎫ ⎪ ⎪ ⎪ ⎪ 𝑗 𝑗 𝑗 𝑝 𝑞 𝑝𝑞 ⎪ ⎪ 𝑗𝑝𝑞 (12;34) 2𝑗𝑝𝑞 2 ̆ = − ∑ (−) 𝚥𝑝𝑞 ⎨ 𝐴𝑝𝑞𝑟𝑠 ⎬ ⎪ ⎪ 𝑗𝑝𝑞 ⎪ ⎪ 𝑗 𝑗 𝑗 ⎪ ⎩ 𝑟 𝑠 𝑝𝑠 ⎪ ⎭ The inverse Pandya transformation is nearly the same: ⎧ ⎫ ⎪ ⎪ ⎪ ̌ ̌ 𝑗 𝑗 𝑗 ⎪ 𝑗𝑝𝑠 (12;34) 2𝑗𝑝𝑞 2 ⎪ 𝑝 𝑞 𝑝𝑞 ⎪ 𝑗𝑝𝑠 (14;32) 𝐴𝑝𝑞𝑟𝑠 = −(−) 𝐴𝑝𝑠𝑟𝑞 ∑ 𝚥̆𝑝𝑠 ⎨ ⎬ ⎪ ⎪ 𝑗𝑝𝑠 ⎪ 𝑗𝑟 𝑗𝑠 𝑗𝑝𝑠 ⎪ ⎪ ⎪ ⎩ ⎭ However, typically when Pandya-coupled matrices are involved, the fermionic antisymmetry is temporarily broken. As a result, in our implementation, Pandya-coupled matrices are not antisymmetrized even though standard-coupled matrices are. To restore the antisymmetry when performing the inverse transformation, we must perform an explicit antisymmetrization during the inverse transformation: 𝐴12;34 𝑝𝑞𝑟𝑠 = (1+𝑗𝑝 +𝑗𝑞 −𝑗𝑝𝑞 ) (1+𝑗 +𝑗 −𝑗 ) 2𝑗 −(−) 𝑝𝑞 𝑝𝑞 𝑟𝑠 𝑟 𝑠 𝑟𝑠 ⎧ ⎫ ⎪ ⎪ ⎪ ⎪ 𝑗 𝑗 𝑗 𝑝 𝑞 𝑝𝑞 ⎪ ⎪ ̃ 14;3 ̌ ̌ 2 ̆ 𝐴𝑝𝑠𝑟𝑞2 ∑ 𝚥𝑝𝑠 ⎨ ⎬ ⎪ ⎪ 𝑗𝑝𝑠 ⎪ 𝑗 𝑗 𝑗 ⎪ ⎪ ⎩ 𝑟 𝑠 𝑝𝑠 ⎪ ⎭ ̃ indicates that the matrix element is not antisymmetrized and  (𝑖) is where the tilde symbol (𝐴) the (−)𝑖 -symmetrization symbol in Sec. 2.1.2. For completeness, we also include the Pandya transformation for spherical tensor operators, ⎧ ⎫ ⎪ ⎪ ⎪ ⎪ 𝑗 𝑗 𝑗 ⎪ ⎪ 𝑝 𝑞 𝑝𝑞 ⎪ ⎪ ⎪ ⎪ ̌ 2) ̌ 𝑗𝐴 𝑗𝑝𝑠 𝑗𝑟𝑞 (14;3 ⎪ ⎪ 𝑗𝐴 𝑗𝑝𝑞 𝑗𝑟𝑠 (12;34) 𝑗𝑞 +𝑗𝑠 −𝑗𝑟𝑠 +𝑗𝑟𝑞 ̆ ̆ ̆ ̆ 𝐴𝑝𝑠𝑟𝑞 = − ∑ 𝚥𝑝𝑞 𝚥𝑟𝑠 𝚥𝑝𝑠 𝚥𝑟𝑞 (−) 𝐴𝑝𝑞𝑟𝑠 ⎨ 𝑗 𝑗 𝑗 𝑠 𝑟 𝑟𝑠 ⎬ ⎪ ⎪ 𝑗𝑝𝑞 𝑗𝑟𝑠 ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ 𝑗 𝑗 𝑗 𝑝𝑠 𝑟𝑞 𝐴⎪ ⎪ ⎪ ⎩ ⎭ 89 where we use reduced matrix elements in the 3-jm convention, ̌ 2) ̌ 𝑗𝐴 𝑚𝐴 𝑗𝑝𝑠 𝑚𝑝𝑠 𝑗𝑟𝑞 𝑚𝑟𝑞 (14;3 𝐴𝑝𝑠𝑟𝑞 ⎛ = ⎞ ̌ 2) ̌ 𝑗𝑟𝑞 ⎟ 𝑗𝐴 𝑗𝑝𝑠 𝑗𝑟𝑞 (14;3 ⎜ ⎟𝐴𝑝𝑠𝑟𝑞 ⎜−𝑚𝑝𝑠 𝑚𝐴 𝑚𝑟𝑞 ⎟ ⎝ ⎠ 𝑗 −𝑚 ⎜ 𝑗𝑝𝑠 (−) 𝑝𝑠 𝑝𝑠 𝑗𝐴 The inverse transformation is identical except the summation is over 𝑗𝑝𝑠 and 𝑗𝑟𝑞 . 3.12.3 Implicit-J convention To keep J-scheme of scalar operators concise, we will omit explicit mention of composite angular momenta within the matrix elements: 𝑗𝑝𝑞 𝐴𝑝𝑞𝑟𝑠 𝐴𝑝𝑞𝑟𝑠 𝑗𝑝𝑞𝑟 𝑗𝑝𝑞 𝑗𝑟𝑠 𝐴𝑝𝑞𝑟𝑠𝑡𝑢 𝐴𝑝𝑞𝑟𝑠𝑡𝑢 We will also omit mentions of Kronecker deltas between angular momenta as well as triangular deltas. We call this the implicit-J convention. As an example, consider the following scalar equation written in our implicit-J convention: 2 𝐶𝑝𝑞 = 𝚥̆𝑖𝑝 1 ∑ ∑ 2 𝐴𝑖𝑝𝑎𝑏 𝐵𝑎𝑏𝑖𝑞 2 𝑗𝑖𝑝 𝑖⧵𝑎𝑏 𝚥̆𝑝 To decode this, we follow these steps: 1. We first determine the set of composite angular momentum variables. This comes from a combination of (a) the composite angular momenta from the left-hand side (there are none, since 𝐶𝑝𝑞 is only one-body), (b) the composite angular momenta that are being explicitly 90 summed over (namely 𝑗𝑖𝑝 ). 2 𝚥̆𝑖𝑝 𝑗𝑖𝑝 ? 1 𝐶𝑝𝑞 = ∑ ∑ 2 𝐴𝑖𝑝𝑎𝑏 𝐵𝑎𝑏𝑖𝑞 2 𝑗𝑖𝑝 𝑖⧵𝑎𝑏 𝚥̆𝑝 2. Next, we fill in the remaining slots for composite angular momenta using conservation laws. Since 𝑗𝑖𝑝 = 𝑗𝑎𝑏 , the missing angular momentum on 𝐵 is simply 𝑗𝑖𝑝 : 2 𝚥̆𝑖𝑝 𝑗𝑖𝑝 𝑗𝑖𝑝 1 𝐶𝑝𝑞 = ∑ ∑ 2 𝐴𝑖𝑝𝑎𝑏 𝐵𝑎𝑏𝑖𝑞 2 𝑗𝑖𝑝 𝑖⧵𝑎𝑏 𝚥̆𝑝 3. We may use the conservation laws to determine the Kronecker deltas for the elementary angular momenta: 2 𝚥̆𝑖𝑝 𝑗𝑖𝑝 𝑗𝑖𝑝 1 𝐶𝑝𝑞 = 𝛿𝑗 𝑗 ∑ ∑ 2 𝐴𝑖𝑝𝑎𝑏 𝐵𝑎𝑏𝑖𝑞 2 𝑝 𝑞 𝑗𝑖𝑝 𝑖⧵𝑎𝑏 𝚥̆𝑝 4. Finally, we use selection rules to restrict the composite angular momenta via triangular deltas: }{ } 2 { 𝚥̆𝑖𝑝 𝑗𝑖𝑝 𝑗𝑖𝑝 1 𝐶𝑝𝑞 = 𝛿𝑗 𝑗 ∑ ∑ 2 𝑗𝑖 𝑗𝑝 𝑗𝑖𝑝 𝑗𝑎 𝑗𝑏 𝑗𝑖𝑝 𝐴𝑖𝑝𝑎𝑏 𝐵𝑎𝑏𝑖𝑞 2 𝑝 𝑞 𝑗𝑖𝑝 𝑖⧵𝑎𝑏 𝚥̆𝑝 This can be generalized to spherical tensors by omitting the tensor ranks: 𝑗𝐴 𝑗𝑝𝑞 𝑗𝑟𝑠 𝐴𝑝𝑞𝑟𝑠 𝐴𝑝𝑞𝑟𝑠 𝑗𝐴 𝑗𝑝𝑞𝑟 𝑗𝑝𝑞 𝑗𝑟𝑠𝑡 𝑗𝑟𝑠 𝐴𝑝𝑞𝑟𝑠𝑡𝑢 𝐴𝑝𝑞𝑟𝑠𝑡𝑢 The procedure to decode these is analogous: tensor ranks should be treated like composite angular 91 momenta. 92 Chapter 4 Many-body methods We now discuss the many-body methods that form the core of our many-body code. In Sec. 2.1.2, we have noted that antisymmetrized states (Slater determinants) provide solutions for any noninteracting fermionic system. We have not yet discussed how to solve interacting systems however, which is the principal focus of many-body theory. In general, while solutions of the non-interacting Hamiltonian 𝐻̂ ◦ are often not solutions of any interacting Hamiltonian 𝐻̂ , they do nonetheless provide a useful basis for the Fock space. We expect from basic linear algebra that, if the degrees of freedom (including boundary conditions) are the same between 𝐻̂ NI and 𝐻̂ , then any exact 𝑁 -particle solution |𝛹 ⟩ can be expanded as a linear combination of antisymmetrized states, |𝛹 ⟩ = 1 † † ∑ 𝛹𝑝1 …𝑝𝑁 𝑎̂𝑝1 ⋯ 𝑎̂𝑝𝑁 |∅⟩ 𝑁 ! 𝑝1 …𝑝𝑁 Solving a quantum system in this manner is the central theme of exact diagonalization methods, such as full configuration interaction (FCI) [Ols+88; KH84] and no-core shell model (NCSM) [NVB00; Nav+09]. The key advantage of exact diagonalization is the ability to obtain exact numeric results within the basis (up to machine precision), capturing all the details of the quantum system. However, such methods are very costly as the number of 𝑁 -particle basis states 𝑛B increases rapidly with 93 the number of particles 𝑁 and the number of single-particle states 𝑛b , specifically 𝑛B = 𝑛b (𝑁 ) where (𝑛𝑘) denotes the binomial coefficient. The combinatorial explosion quickly renders such methods unfeasible in systems with even a moderate number of particles, beyond the computational power that exists in the observable universe. Alternative many-body methods strive to avoid this problem by limiting the 𝑁 -particle Hilbert space under consideration. It can be particularly beneficial if the non-interacting Hamiltonian 𝐻̂ ◦ that generates the basis states is to some extent similar to the interacting Hamiltonian 𝐻̂ . That is, one decomposes 𝐻̂ into 𝐻̂ = 𝐻̂ ◦ + 𝑉̂ where the contributions of the perturbation 𝑉̂ are expected to be small in some sense. In this case, one or a few antisymmetrized states may serve as a good zeroth order approximation to the system. For now, we will only consider using a single antisymmetrized state as the initial approximation. This limits our consideration to closed-shell systems in which the number of particles coincides with a magic number. This distinguished antisymmetrized state will serve as our reference state (Fermi vacuum). 94 4.1 Hartree-Fock method The reference state formed by basis states of the non-interacting Hamiltonian may not offer a good approximation of the true ground state (i.e. of the interacting Hamiltonian). The Hartree–Fock (HF) method [Har28; Foc30] provides a way to optimize the basis states such that the reference state provides the best variational estimate of the ground state energy. 4.1.1 Hartree–Fock equations Using the variational principle, one can compute an approximate ground state |𝛷⟩ by minimizing the energy expectation value (Hartree–Fock energy) 𝐸𝛷 = ⟨𝛷|𝐻̂ |𝛷⟩ (4.1) with respect to a reference state |𝛷⟩, subject to the restriction that |𝛷⟩ remains a single Slater determinant constructed from an unknown single-particle basis |𝑝 ′ ⟩,1 ′ |𝛷⟩ = |𝑖1′ … 𝑖𝑁 ⟩ where {𝑖1′ , … , 𝑖𝑁 } are an unknown set of occupied state labels drawn from the unknown singleparticle basis. The restriction of |𝛷⟩ to a single Slater determinant is what enables the simplicity and efficiency of this method. To perform numerical calculations, we further assume that each unknown state |𝑝 ′ ⟩ is built from a linear combination of known states |𝑝⟩, with an unknown matrix of coefficients 𝑪 defined 1 The unknown basis is distinguished from the known basis by the prime symbol ′ in their labels. 95 via the transformation equation |𝑝 ′ ⟩ = ∑|𝑝⟩𝐶𝑝𝑝 ′ 𝑝 This allows the problem to be reduced from an abstract minimization problem Eq. 4.1 to a concrete numerical problem. The caveat is that the set of known functions must be large enough to capture the relevant behavior of the system. To ensure orthonormality of the states, we require there to be as many unknown states |𝑝 ′ ⟩ as known states |𝑝⟩, and the coefficient matrix 𝑪 must be unitary, 𝑪 †𝑪 = 𝟏 These conditions are more strict than needed, but they greatly simplify the calculations and allow the states |𝑝 ′ ⟩ to act as optimized inputs for methods beyond HF (post-HF methods). At the end of the calculation, of the set of states |𝑝 ′ ⟩ there would be exactly 𝑁 occupied states that participate in the optimized Slater determinant |𝛷⟩. The remaining unoccupied states serve as the complementary space into which particles can be excited by the interaction 𝑉̂ during post-HF calculations. Consider a Hamiltonian 𝐻̂ that can be decomposed into a set of (1, 2, 3)-body operators relative to the physical vacuum, 𝐻̂ = 𝐻̂ 1∅ + 𝐻̂ 2∅ + 𝐻̂ 3∅ where 𝐻̂ 𝑘∅ is its 𝑘-body component relative to the physical vacuum. (We will omit the ∅ suffix in 96 this section.) The goal is to find the coefficients 𝑪 that minimize the Hartree–Fock energy 𝐸𝛷 , 1 𝐸𝛷 = ∑⟨𝑖 ′ |𝐻̂ 1 |𝑖 ′ ⟩ + ∑ ⟨𝑖 ′ 𝑗 ′ |𝐻̂ 2 |𝑖 ′ 𝑗 ′ ⟩ 2 ′′ ′ (4.2) 𝑖 𝑗 ⧵ 𝑖 ⧵ where ⟨𝑝 ′ |𝐻̂ 1 |𝑞 ′ ⟩ = ∑ 𝐶 ∗ ′ ⟨𝑝|𝐻̂ 1 |𝑞⟩𝐶𝑞𝑞′ 𝑝𝑝 𝑝𝑞 (4.3) ′ ′ ′ ′ ⟨𝑝 𝑞 |𝐻̂ 2 |𝑟 𝑠 ⟩ = ∑ 𝐶 ∗ ′ 𝐶 ∗ ′ ⟨𝑝𝑞|𝐻̂ 2 |𝑟𝑠⟩𝐶𝑟𝑟 ′ 𝐶𝑠𝑠 ′ 𝑝𝑞𝑟𝑠 𝑝𝑝 𝑞𝑞 and ∑𝑖 ′ ⧵ denotes a summation over all hole states |𝑖 ′ ⟩ in the unknown basis (see Eq. 2.3). With the method of Lagrange multipliers, the minimization problem can be reduced to the solving of a nonlinear equation – the self-consistent Hartree–Fock equations: 𝑭 𝑪 = 𝑪𝜺 (4.4) where the Fock matrix 𝑭 is defined as 𝐹𝑝𝑞 = ⟨𝑝|𝐻̂ 1 |𝑞⟩ + ∑ ∑ 𝐶 ∗ ′ ⟨𝑝𝑟|𝐻̂ 2 |𝑞𝑠⟩𝐶𝑠𝑖 ′ (4.5) 𝑟𝑠 𝑖 ′ ⧵ 𝑟𝑖 with 𝑖 ′ ranging over occupied states only, and 𝜺 is a vector of Lagrange multipliers, which serve to constrain the orthonormality of the single-particle basis. Each multiplier 𝜀𝑝 ′ is associated with a specific single-particle state |𝑝 ′ ⟩. Observe that the Fock matrix 𝑭 contains precisely the matrix elements of the one-body Hamiltonian 𝐻̂ 1𝛷 relative to the Fermi vacuum |𝛷⟩ in the original basis |𝑝⟩ Eq. 2.4, and the HF energy 𝐸𝛷 is exactly the zero-body component in Eq. 2.4. 97 4.1.2 HF equations in J-scheme In this work, we use the implicit-J convention of Sec. 3.12.3 to describe J-scheme equations. In J-scheme, the HF energy of Eq. 4.2 is given by 𝐸𝛷 = ∑ 𝚥̆2′ ⟨𝑖 ′ |𝐻̂ 1 |𝑖 ′ ⟩ + 𝑖 𝑖′⧵ 1 ∑ ∑ 𝚥̆2 ⟨𝑖 ′ 𝑗 ′ |𝐻̂ 2 |𝑖 ′ 𝑗 ′ ⟩ 2 𝑗 ′ ′ ′ ′ 𝑖′𝑗 ′ (4.6) 𝑖 𝑗 𝑖 𝑗 ⧵ and the Fock matrix of Eq. 4.5 is given by 2 𝚥̆𝑝𝑟 𝐹𝑝𝑞 = ⟨𝑝|𝐻̂ 1 |𝑞⟩ + ∑ ∑ 2 𝐶 ∗ ′ ⟨𝑝𝑟|𝐻̂ 2 |𝑞𝑠⟩𝐶𝑠𝑖 ′ 𝑗𝑝𝑟 𝑟𝑠 𝑖 ′ ⧵ 𝚥̆𝑝 𝑟𝑖 (4.7) The transformation equations of Eq. 4.3 remain superficially identical to M-scheme. 4.1.3 Solving HF equations Aside from trivial cases that are analytically solvable, the HF equation is generally solved numerically using an iterative algorithm. We begin with an initial guess 𝑪 (𝑘) on the 𝑘-th iteration, which is fed into Eq. 4.5 to produce the Fock matrix. This is then used in Eq. 4.4, which leads to a standard eigenvalue problem from which 𝑪 (𝑘+1) arises as the matrix of eigenvectors and 𝜺 (𝑘+1) as the vector of eigenvalues. This process can be repeated indefinitely until 𝑪 approaches a fixed point (self-consistency). While in theory it is possible for the solution to never reach a fixed point, or that it may require an unfeasibly large number of iterations, in practice this naive approach can adequately provide solutions for many cases. In other cases where it is insufficient, methods such as direct inversion of the iterative subspace (DIIS) [Pul80; Pul82], Broyden’s method [Bro65], or even ad hoc linear mixing can improve and accelerate convergence greatly. Therefore, the possibility of slow or non-convergence is generally not a concern in practice. 98 For the initial guess, we simply use the ground state of our noninteracting Hamiltonian, thus 𝑪 (0) = 𝟏, the identity matrix. At each iteration, we calculate the sum of the Lagrange multipliers 𝜺 as a diagnostic for convergence: as the iteration approaches convergence, the change in the sum per iteration should decrease rapidly. 4.1.4 Post-HF methods Since HF restricts the ground state to merely a single Slater determinant of single-particle states, it cannot provide an exact solution to a problem where multi-particle correlations are present even if the single-particle basis is not truncated (infinite in size). The discrepancy between the HF energy and the exact ground state energy is often referred to as the correlation energy, by definition. The focus of post-HF methods such as IM-SRG or CC is to add corrections beyond mean-field approximations such as HF. To make use of the HF solution as the reference state for post-HF calculations, we transform the matrix elements via Eq. 4.3. In effect, this means we are no longer operating within the harmonic oscillator single-particle basis, but rather a HF-optimized single-particle basis. However, we will omit the prime symbols as the post-HF methods are generic and can be used in any basis, whether optimized by HF or not. A commonly used post-HF method is the Møller–Plesset perturbation theory at second order (MP2) [MP34], which adds an energy correction to the Hartree–Fock result: 𝛥𝐸 = 𝑉𝑖𝑗𝑎𝑏 𝑉𝑎𝑏𝑖𝑗 1 ∑ 4 𝑖𝑗⧵𝑎𝑏 𝛥𝑖𝑗𝑎𝑏 (4.8) where 𝑉𝑖𝑗𝑎𝑏 are two-body matrix elements of the HF-transformed Hamiltonian, 𝛥 denotes the 99 Møller–Plesset energy denominators [MP34], 𝑘 𝛥𝑞 …𝑞 𝑝 …𝑝 = ∑ (𝜀𝑞 − 𝜀𝑝 ) 1 𝑘 1 𝑘 𝑖=1 𝑖 𝑖 (4.9) and 𝜀𝑝 are HF orbital energies. In J-scheme, the MP2 correction is given by: 𝛥𝐸 = 𝑉𝑖𝑗𝑎𝑏 𝑉𝑎𝑏𝑖𝑗 1 ∑ ∑ 𝚥̆𝑖𝑗2 4 𝑗𝑖𝑗 𝑖𝑗⧵𝑎𝑏 𝛥𝑖𝑗𝑎𝑏 (4.10) The MP2 calculation is extremely simple and cheap, thus it is often used as a diagnostic for estimating the strength of correlations that remain unaccounted for. A more sophisticated post-HF method is the coupled-cluster (CC) method [SB09], in which the 𝑁 -particle correlated wave function |𝛹 ⟩ is expressed as the exponential ansatz, ̂ |𝛹 ⟩ = e𝑇 |𝛷⟩ Here, |𝛷⟩ is a Slater determinant reference state such as the one from HF and 𝑇̂ is the cluster operator, which is a sum of 𝑘-particle-𝑘-hole excitation operators of various 𝑘. The Schrödinger equation with this ansatz becomes a set of non-linear algebraic equations (coupled-cluster equations) with which one can solve for the matrix elements of 𝑇̂ and thereby obtain information about |𝛹 ⟩. The focus of this work is not on the coupled-cluster method, however, although we will present benchmarks of it for comparison. Our focus is on the in-medium similarity renormalization group (IM-SRG) method. 100 4.2 4.2.1 Similarity renormalization group methods Free space SRG The central theme of similarity renormalization group (SRG) methods is the application of a continuous sequence of unitary transformations on the Hamiltonian to evolve it into a band- or block-diagonal form. This allows the decoupling of a small, designated model space from its larger complementary space. The problem can thus be truncated to the small model space while preserving a large amount of information about the system. See for examples [Keh06; Her+16; HLK17] for derivations and calculational details. The sequence of transformations is parameterized by a continuous variable 𝑠 known as the flow parameter. Without loss of generality, we can define 𝑠 = 0 to be the beginning of this sequence, thus 𝐻̂ (0) is simply the original Hamiltonian. At any value of 𝑠, the evolving Hamiltonian 𝐻̂ (𝑠) is related to the original Hamiltonian by 𝐻̂ (𝑠) = 𝑈̂ (𝑠)𝐻̂ (0)𝑈̂ † (𝑠) where 𝑈 (𝑠) is a unitary operator that describes the product of all such transformations since 𝑠 = 0. Taking the derivative with respect to 𝑠, we obtain: d ̂ d𝑈̂ (𝑠) ̂ d𝑈̂ † (𝑠) 𝐻 (𝑠) = 𝐻 (0)𝑈̂ † (𝑠) + 𝑈̂ (𝑠)𝐻̂ (0) d𝑠 d𝑠 d𝑠 ̂ as If we define the generator 𝜂(𝑠) ̂ = 𝜂(𝑠) d𝑈̂ (𝑠) ̂ † 𝑈 (𝑠) d𝑠 (4.11) 101 we find that it is antihermitian as a result of the unitarity of 𝑈̂ (𝑠): ̂ + 𝜂̂† (𝑠) = 𝜂(𝑠) d ̂ 𝑈 (𝑠)𝑈̂ † (𝑠)) = 0 d𝑠 ( From this property we can derive a differential equation known as the SRG flow equation: d𝐻̂ (𝑠) ̂ 𝐻̂ (𝑠)] = [𝜂(𝑠), d𝑠 (4.12) This equation allows 𝐻̂ (𝑠) to be evaluated without explicitly constructing the full transformation ̂ the generator of the transformation. When 𝑈̂ (𝑠). The focus is instead shifted to the operator 𝜂(𝑠), ̂ is multiplicatively integrated (product integral), the full unitary transformation 𝑈̂ (𝑠) is 𝜂(𝑠) recovered: →𝑛 ̂ 𝑖 )𝛥𝑠 𝑈̂ (𝑠 ′ ) = lim ∏ e𝜂(𝑠 (4.13) 𝛥𝑠→0 𝑖=1 where 𝑠𝑖 = 𝑖𝛥𝑠, 𝑛 = ⌊𝑠 ′ /𝛥𝑠⌋, ⌊𝑥⌋ denotes the floor of 𝑥, and the product is ordered from left (𝑖 = 1) to right (𝑖 = 𝑛). This is the formal solution to the linear differential equation Eq. 4.11. The product integral in Eq. 4.13 may also be reinterpreted as “𝑠-ordering” [Rei13] in analogy to time-ordering from quantum field theory. The power of SRG methods lies in the flexibility of the generator 𝜂,̂ which is usually chosen in an 𝑠-dependent manner. In particular, it is often dependent on the evolving Hamiltonian 𝐻̂ (𝑠). The operator 𝜂̂ determines which parts of the Hamiltonian matrix would become suppressed by the evolution, which are usually considered “off-diagonal” in an abstract sense. The “off-diagonal” parts could be elements far away from the matrix diagonal, in which case the evolution drives the matrix towards a band-diagonal form. Or, the “off-diagonal” parts could be elements that couple 102 the ground state from the excited state, in which case the evolution drives the matrix towards a block-diagonal form that isolates the ground state. Or, the “off-diagonal” could be literally the elements that do not lie on the diagonal, in which case the evolution would simply diagonalize the Hamiltonian. Through different choices of 𝜂,̂ the SRG evolution can be controlled and adapted to the features of a particular problem. 4.2.2 In-medium SRG The SRG flow equation Eq. 4.12 can be solved in the second quantization formalism described in Sec. 2.2, where field operators are defined with respect to the physical vacuum state. However, since the basis of a many-body problem grows factorially with the number of particles and the size of the model space, the applicability of the naive (free-space) SRG method is restricted to comparatively small systems. A more practical approach is to perform the evolution in medium [Keh06], i.e. using a many-body Slater determinant as a reference state, which is assumed to be a fair approximation to the true ground state. This gives rise to the in-medium similarity renormalization group (IM-SRG) method [TBS12; Her+16; HLK17]. We begin by decomposing the Hamiltonian 𝐻̂ into normal-ordered components relative to an appropriately chosen reference state (Fermi vacuum) |𝛷⟩: 1 † † † 𝛷 𝛷 𝐻̂ = 𝐸𝛷 + ∑ 𝐻𝑝𝑞 ∶𝑎̂𝑝 𝑎̂𝑞 ∶ + ∑ 𝐻𝑝𝑞𝑟𝑠 ∶𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑠 𝑎̂𝑟 ∶ + ⋯ 4 𝑝𝑞𝑟𝑠 𝑝𝑞 (4.14) where 𝐸𝛷 is the energy of the reference state and 𝐻𝑝𝛷 …𝑝 𝑞 …𝑞 are matrix elements of the 𝑘-body 1 𝑘 1 𝑘 component 𝐻̂ 𝑘𝛷 . In IM-SRG we work exclusively with matrix elements relative to |𝛷⟩, thus we will omit the 𝛷 suffix in this section. The use of a Hamiltonian with components relative to the Fermi vacuum may seem like a 103 triviality – it is still the same 𝐻̂ after all. However, this makes a critical difference when the operator expressions are truncated, i.e. higher-body components discarded from the computation for efficiency reasons. By normal-ordering the components relative to a reference state |𝛷⟩, we preserve a portion of the higher-body contributions within the lower-body operators, significantly decreasing the importance of higher-body operators. Higher-body operators arise from integrating the flow equations of Eq. 4.12, which is one of the main challenges of the SRG method. With each evaluation of the commutator, the Hamiltonian gains terms of increasingly higher order, and these induced contributions will in subsequent integration steps feed back into terms of lower order. Thus, the higher-body contributions are not irrelevant to the final solution even if only the ground state energy (zero-body component) is desired. Computationally, higher-body terms rapidly become unfeasible to handle: naive storage of the matrix elements of 𝑘-body operator requires an exponentially increasing amount of memory, (𝑛b2𝑘 ) where 𝑛b is the number of single-particle basis states. Moreover, the flow equations are capable of generating an infinite number of higher-body terms as the Hamiltonian evolves. To make the method tractable, the IM-SRG flow equations must be closed by truncating the equations to a finite order. We call this operator truncation. In this work, we truncate both 𝐻̂ and 𝜂̂ at the two-body level, leading to an approach known as IM-SRG(2). This normal-ordered two-body approximation appears to be sufficient in many cases and has yielded excellent results for several nuclei [TBS11; Rot+12; Her+16]. Operator truncation is but one out of the two primary sources of error in this method. The 104 other source of error comes from basis truncation: the size of the single-particle is finite and therefore does not encompass the full infinite-dimensional Hilbert space. This is a concern for any finite-basis approach, including HF, IM-SRG, CC, and many others. This source of error can be reduced by increasing the size of the basis at the expense of greater computational effort, albeit the cost increases much less rapidly in this direction. The CPU cost of IM-SRG methods is polynomial with respect to the number of states in the single-particle basis 𝑛b . For IM-SRG(2) in particular, the CPU cost scales roughly as (𝑛b6 ) This is comparable to coupled cluster singles-and-doubles (CCSD), which also scales as (𝑛b6 ). The commutator in the flow equations Eq. 4.12 ensures that the evolved state 𝑈̂ (𝑠)|𝛷⟩ consists of linked diagrams only [SB09]. This indicates that IM-SRG is a size-extensive [Bar81] method by construction, even if the operators are truncated. An accurate and robust solver is required to solve ordinary differential equation (ODE) in Eq. 4.12. In particular, the solver must be capable of handling the stiffness that often arises in such problems. For our numerical experiments, we used a high-order ODE solver algorithm by L. F. Shampine and M. K. Gordon [SG75], which is a multistep method based on the implicit Adams predictor-corrector formulas. Its source code is freely available [ODE; SgOde]. IM-SRG has relations to several other well-known methods of quantum chemistry such as coupled cluster theory [SB09], canonical transformation theory [Whi02; NYC10], the irreducible/antiHermitian contracted Schrödinger equation approach [Maz07b; Maz07a], and the driven similarity renormalization group method [Eva14]. These connections are explored in more detail in [Her17]. 105 4.2.3 IM-SRG generators With an appropriate choice of the generator 𝜂,̂ the evolved state 𝑈̂ (𝑠)|𝛷⟩ will gradually approach a more “diagonal” form. If the “diagonal” form decouples the ground state from the excited states, then 𝑈̂ (∞)|𝛷⟩ would yield the exact ground state solution of the problem if no operator or basis truncations are made. In particular, 𝐸𝛷 (∞) would be the exact ground state energy. The traditional Wegner generator [Weg01] is defined as 𝜂̂Wg = [𝐻̂ d , 𝐻̂ − 𝐻̂ d ] = [𝐻̂ d , 𝐻̂ ] where 𝐻̂ d denotes the “diagonal” part of the Hamiltonian and 𝐻̂ − 𝐻̂ d denotes the “off-diagonal” part. This is in the abstract sense described at the end of Section Sec. 4.2.1. Since 𝐻̂ depends on the flow parameter 𝑠, so does 𝜂̂ in general. Since 𝜂̂Wg is a commutator between two Hermitian operators, it is antihermitian as required for a generator. Additionally, it can be shown that the commutator has the property of suppressing off-diagonal matrix elements as the state evolves via the flow equation [Keh06], as we would like. Matrix elements “far” from the diagonal – i.e. where the Hamiltonian couples states with large energy differences – are suppressed much faster than those “close” to the diagonal. There exist several other generators in literature. One choice, proposed by White [Whi02], makes numerical approaches much more efficient. The problem with the Wegner generator is the widely varying decaying speeds of the Hamiltonian matrix elements. Terms with large energy separations from the ground state are suppressed initially, followed by those with smaller energy separations. This leads to stiffness in the flow equation, which in turn causes numerical difficulties when solving the set of coupled differential equations. The White generator takes an alternative approach, which is well suited for problems where 106 one is mainly interested in the ground state of a system. Firstly, instead of driving all off-diagonal elements of the Hamiltonian to zero, the generator focuses exclusively on those that are coupled to the reference state |𝛷⟩ so as to decouple the reference state from the remaining Hamiltonian. This reduces the amount of change done to the Hamiltonian, reducing the accuracy lost from the operator truncation. Secondly, the rate of decay in Hamiltonian matrix elements are approximately normalized by dividing the generator matrix elements by an appropriate factor. This ensures that the affected elements decay at approximately the same rate, reducing the stiffness of the flow equations. The White generator is explicitly constructed in the following way [TBS11; Whi02]: 𝜂̂Wh = 𝜂̂′ − 𝜂̂′† (4.15) where 𝜂̂′ is defined as 𝐻𝑎𝑏𝑖𝑗 † † 𝐻 1 † 𝜂̂′ = ∑ 𝑎𝑖 ∶𝑎̂𝑎 𝑎̂𝑖 ∶ + ∑ ∶𝑎̂ 𝑎̂ 𝑎̂ 𝑎̂ ∶ + ⋯ 4 𝑖𝑗⧵𝑎𝑏 𝛥̃ 𝑎𝑏𝑖𝑗 𝑎 𝑏 𝑗 𝑖 𝑖⧵𝑎 𝛥̃ 𝑎𝑖 The symbol 𝛥̃ denotes the Epstein–Nesbet energy denominators [Eps26; Nes55; SB09], defined as 𝛥̃ 𝑎𝑖 = 𝐸𝛷 − 𝐸𝛷 𝑎𝑖 = 𝛥𝑎𝑖 − 𝐻𝑎𝑖𝑎𝑖 𝛥̃ 𝑎𝑏𝑖𝑗 = 𝐸𝛷 𝑎𝑏𝑖𝑗 − 𝐸𝛷 = 𝛥𝑎𝑏𝑖𝑗 + 𝐻𝑎𝑏𝑎𝑏 − 𝐻𝑎𝑖𝑎𝑖 − 𝐻𝑏𝑖𝑏𝑖 + 𝐻𝑖𝑗𝑖𝑗 − 𝐻𝑎𝑗𝑎𝑗 − 𝐻𝑏𝑗𝑏𝑗 𝛥̃ 𝑎 …𝑎 𝑖 …𝑖 = 𝐸𝛷 − 𝐸𝛷 1 𝑘1 𝑘 𝑎1 …𝑎𝑘 𝑖1 …𝑖𝑘 107 whereas 𝛥 denotes the Møller–Plesset energy denominators [MP34] defined in Eq. 4.9. White generators can also use Møller–Plesset energy denominators directly in lieu of Epstein–Nesbet energy denominators [Her+16], which leads to a slightly different variant of the White generator. In our calculations, we use exclusively Epstein–Nesbet denominators. Compared to the Wegner generator, where the derivatives of the final flow equations contain cubes of the Hamiltonian matrix elements (i.e. each term contains a product of 3 one-body and/or two-body matrix elements), the elements in White generators contribute only linearly. This reduces the stiffness in the differential equation, providing a net increase in computational efficiency as stiff ODE solvers tend to be slower and consume more memory. 4.2.4 IM-SRG(2) equations In the 2-body operator truncation scheme, the generator 𝜂̂ can be written as a generic 2-body operator: † 𝜂̂ = ∑ 𝜂𝑝𝑞 ∶𝑎̂𝑝 𝑎̂𝑞 ∶ + 𝑝𝑞 1 † † ∑ 𝜂𝑝𝑞𝑟𝑠 ∶𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑠 𝑎̂𝑟 ∶ 4 𝑝𝑞𝑟𝑠 where 𝜂𝑝𝑞 and 𝜂𝑝𝑞𝑟𝑠 respectively are its one- and two-body matrix elements normal ordered relative to |𝛷⟩ and subject to the antihermittivity constraint. The main complication of the IM-SRG flow equation Eq. 4.12 lies in the commutator, [𝜂,̂ 𝐻̂ ] = 𝜂̂𝐻̂ − 𝐻̂ 𝜂̂ By expanding the commutator diagrammatically, we find that all terms where 𝜂̂ and 𝐻̂ are connected (disconnected diagrams) vanish because they commute. The remaining terms are 108 ̂ 𝜂,̂ 𝐻̂ ), in either order: simply the linked products between the two operators, which we denote 𝐶( ̂ 𝜂,̂ 𝐻̂ ) − 𝐶( ̂ 𝐻̂ , 𝜂) ̂ [𝜂,̂ 𝐻̂ ] = 𝐶( ̂ 𝐴, ̂ 𝐵) ̂ where 𝐶̂ is a (0, 1, 2, 3)-operator given by Consider a generic linked product 𝐶( 1 † † † 𝐶̂ = 𝐶𝛷 + ∑ 𝐶𝑝𝑞 ∶𝑎̂𝑝 𝑎̂𝑞 ∶ + ∑ 𝐶𝑝𝑞𝑟𝑠 ∶𝑎̂𝑝 𝑎̂𝑞 𝑎̂𝑠 𝑎̂𝑟 ∶ 4 𝑝𝑞 + 𝑝𝑞𝑟𝑠 1 † † † ∶𝑎̂ 𝑎̂ 𝑎̂ 𝑎̂ 𝑎̂ 𝑎̂ ∶ ∑ 𝐶 36 𝑝𝑞𝑟𝑠𝑡𝑢 𝑝𝑞𝑟𝑠𝑡𝑢 𝑝 𝑞 𝑟 𝑢 𝑡 𝑠 To write out the linked product, we start considering all possible Hugenholtz skeletons2 𝐶̂ 𝑐𝑎𝑏 ̂ 𝑏 is the rank of the second operator from 𝐵, ̂ and 𝑐 where 𝑎 is the rank of the first operator from 𝐴, is the rank of the product diagram. This leads to the following terms: 𝐶̂ 0 = 𝐶̂ 011 + 𝐶̂ 022 𝐶̂ 1 = 𝐶̂ 111 + 𝐶̂ 112 + 𝐶̂ 121 + 𝐶̂ 122 𝐶̂ 2 = 𝐶̂ 212 + 𝐶̂ 221 + 𝐶̂ 222 𝐶̂ 3 = 𝐶̂ 322 We can then elaborate on this by considering all possible assignments of the arrows. We classify ̂ which is also these diagrams as 𝐶̂ 𝑐𝑎𝑏𝑑 where 𝑑 is the number of arrows going from 𝐵̂ toward 𝐴, 2 Hugenholtz skeletons are Hugenholtz diagrams without arrows. 109 the number of particle lines. 𝐶̂ 011 = 𝐶̂ 0110 𝐶̂ 022 = 𝐶̂ 0220 𝐶̂ 111 = 𝐶̂ 1110 + 𝐶̂ 1111 𝐶̂ 112 = 𝐶̂ 1120 𝐶̂ 121 = 𝐶̂ 1210 𝐶̂ 122 = 𝐶̂ 1220 + 𝐶̂ 1221 𝐶̂ 212 = 𝐶̂ 2120 + 𝐶̂ 2121 𝐶̂ 221 = 𝐶̂ 2210 + 𝐶̂ 2211 𝐶̂ 222 = 𝐶̂ 2220 + 𝐶̂ 2221 + 𝐶̂ 2222 𝐶̂ 322 = 𝐶̂ 3220 + 𝐶̂ 3221 Finally, we write out the diagrams as, 1 ∑ 𝐴 𝐵 4 𝑖𝑗⧵𝑎𝑏 𝑖𝑗𝑎𝑏 𝑎𝑏𝑖𝑗 𝐶𝛷0110 = + ∑ 𝐴𝑖𝑎 𝐵𝑎𝑖 𝐶𝛷0220 = + 1110 𝐶𝑝𝑞 = − ∑ 𝐴𝑖𝑞 𝐵𝑝𝑖 1111 𝐶𝑝𝑞 = + ∑ 𝐴𝑝𝑎 𝐵𝑎𝑞 1120 𝐶𝑝𝑞 = + ∑ 𝐴𝑖𝑎 𝐵𝑎𝑝𝑖𝑞 1210 𝐶𝑝𝑞 = + ∑ 𝐴𝑖𝑝𝑎𝑞 𝐵𝑎𝑖 𝑖⧵𝑎 𝑖⧵ ⧵𝑎 𝑖⧵𝑎 1220 𝐶𝑝𝑞 =− 𝑖⧵𝑎 1 ∑𝐴 𝐵 2 𝑖𝑗⧵𝑎 𝑖𝑗𝑎𝑞 𝑎𝑝𝑖𝑗 1221 𝐶𝑝𝑞 =+ 1 𝐵 ∑ 𝐴 2 𝑖⧵𝑎𝑏 𝑖𝑝𝑎𝑏 𝑎𝑏𝑖𝑞 2120 𝐶𝑝𝑞𝑟𝑠 = −2𝑟𝑠 ∑ 𝐴𝑖𝑟 𝐵𝑝𝑞𝑖𝑠 2121 𝐶𝑝𝑞𝑟𝑠 = +2𝑝𝑞 ∑ 𝐴𝑝𝑎 𝐵𝑎𝑞𝑟𝑠 2210 𝐶𝑝𝑞𝑟𝑠 = −2𝑝𝑞 ∑ 𝐴𝑖𝑞𝑟𝑠 𝐵𝑝𝑖 2211 𝐶𝑝𝑞𝑟𝑠 = +2𝑟𝑠 ∑ 𝐴𝑝𝑞𝑎𝑠 𝐵𝑎𝑟 1 2220 𝐶𝑝𝑞𝑟𝑠 = + ∑ 𝐴𝑖𝑗𝑟𝑠 𝐵𝑝𝑞𝑖𝑗 2 𝑖𝑗⧵ 2221 𝐶𝑝𝑞𝑟𝑠 = −4𝑝𝑞 𝑟𝑠 ∑ 𝐴𝑖𝑞𝑎𝑟 𝐵𝑎𝑝𝑖𝑠 𝑖⧵ ⧵𝑎 𝑖⧵ ⧵𝑎 𝑖⧵𝑎 1 2222 𝐶𝑝𝑞𝑟𝑠 = + ∑ 𝐴𝑝𝑞𝑎𝑏 𝐵𝑎𝑏𝑟𝑠 2 ⧵𝑎𝑏 3220 𝐶𝑝𝑞𝑟𝑠𝑡𝑢 = −9𝑝𝑞𝑟 𝑠𝑡𝑢 ∑ 𝐴𝑖𝑞𝑠𝑡 𝐵𝑝𝑟𝑖𝑢 3221 𝐶𝑝𝑞𝑟𝑠𝑡𝑢 = +9𝑝𝑞𝑟 𝑠𝑡𝑢 ∑ 𝐴𝑝𝑞𝑎𝑡 𝐵𝑎𝑟𝑠𝑢 𝑖⧵ ⧵𝑎 Fig. 4.1 shows these diagrams in diagrammatic form. 110 0-body 2-body 1-body 3-body ̂ ∙) in the IM-SRG flow Figure 4.1: Hugenholtz diagrams representing the linked product 𝐶(◦, ̂ We omit diagrams equation, with open circles representing 𝐴̂ and filled circles representing 𝐵. that are related by permutations among the external bra lines or among the external ket lines. 4.2.5 IM-SRG(2) equations in J-scheme Once again, we use the implicit-J convention (Sec. 3.12.3) to write J-scheme equations. Although some equations in J-scheme appear superficially identical to those in M-scheme, they are not interpreted in the same way due to the lack of 𝑚-type variables in J-scheme. The Epstein–Nesbet energy denominators that arise in White generators contain two-body terms that cannot be expressed in J-scheme. As a practical workaround, one could replace occurrences of 𝐻𝑝𝑞𝑟𝑠 in the denominator with the monopole matrix element mono 𝐻𝑝𝑞𝑟𝑠 = 𝚥̆2 𝐻 𝑝𝑞 𝑝𝑞 𝑝𝑞𝑟𝑠 ∑𝑗 2 ∑𝑗 𝚥̆𝑝𝑞 𝑝𝑞 { } 𝑗𝑝 𝑗𝑞 𝑗𝑝𝑞 mono Unlike the usual matrix element 𝐻𝑝𝑞𝑟𝑠 , the monopole matrix element 𝐻𝑝𝑞𝑟𝑠 does not depend on 𝑗𝑝𝑞 . 111 The replacement by monopole matrix elements leads to the following Epstein–Nesbet energy denominators: mono 𝛥̃ mono = 𝛥𝑎𝑖 − 𝐻𝑎𝑖𝑎𝑖 𝑎𝑖 mono mono mono mono mono mono 𝛥̃ mono − 𝐻𝑎𝑗𝑎𝑗 − 𝐻𝑏𝑗𝑏𝑗 𝑎𝑏𝑖𝑗 = 𝛥𝑎𝑏𝑖𝑗 + 𝐻𝑎𝑏𝑎𝑏 − 𝐻𝑎𝑖𝑎𝑖 − 𝐻𝑏𝑖𝑏𝑖 + 𝐻𝑖𝑗𝑖𝑗 These do result in a different White generator, however. The generator in M-scheme is no longer equivalent to that in J-scheme if monopole matrix elements are used. Finally, here are the J-scheme IM-SRG(2) equations using the implicit-J convention (Sec. 3.12.3): 𝐶𝛷0110 = + ∑ 𝚥̆𝑖2 𝐴𝑖𝑎 𝐵𝑎𝑖 1 𝐶𝛷0220 = + ∑ ∑ 𝚥̆𝑖𝑗2 𝐴𝑖𝑗𝑎𝑏 𝐵𝑎𝑏𝑖𝑗 4 𝑗𝑖𝑗 𝑖𝑗⧵𝑎𝑏 1110 𝐶𝑝𝑞 = − ∑ 𝐴𝑖𝑞 𝐵𝑝𝑖 1111 𝐶𝑝𝑞 = + ∑ 𝐴𝑝𝑎 𝐵𝑎𝑞 𝑖⧵𝑎 𝑖⧵ 1120 𝐶𝑝𝑞 = 1220 𝐶𝑝𝑞 = ⧵𝑎 2 𝚥̆𝑖𝑝 1210 𝐶𝑝𝑞 = + ∑ ∑ 2 𝐴𝑖𝑝𝑎𝑞 𝐵𝑎𝑖 𝑗𝑖𝑝 𝑖⧵𝑎 𝚥̆𝑝 2 𝚥̆𝑎𝑝 + ∑ ∑ 2 𝐴𝑖𝑎 𝐵𝑎𝑝𝑖𝑞 𝑗𝑎𝑝 𝑖⧵𝑎 𝚥̆𝑝 2 𝚥̆𝑎𝑝 1 − ∑ ∑ 2 𝐴𝑖𝑗𝑎𝑞 𝐵𝑎𝑝𝑖𝑗 2 𝑗𝑎𝑝 𝑖𝑗⧵𝑎 𝚥̆𝑝 1221 𝐶𝑝𝑞 2 𝚥̆𝑖𝑝 1 = + ∑ ∑ 2 𝐴𝑖𝑝𝑎𝑏 𝐵𝑎𝑏𝑖𝑞 2 𝑗𝑖𝑝 𝑖⧵𝑎𝑏 𝚥̆𝑝 2120 𝐶𝑝𝑞𝑟𝑠 = −2𝑟𝑠 ∑ 𝐴𝑖𝑟 𝐵𝑝𝑞𝑖𝑠 2121 𝐶𝑝𝑞𝑟𝑠 = +2𝑝𝑞 ∑ 𝐴𝑝𝑎 𝐵𝑎𝑞𝑟𝑠 2210 𝐶𝑝𝑞𝑟𝑠 = −2𝑝𝑞 ∑ 𝐴𝑖𝑞𝑟𝑠 𝐵𝑝𝑖 2211 𝐶𝑝𝑞𝑟𝑠 = +2𝑟𝑠 ∑ 𝐴𝑝𝑞𝑎𝑠 𝐵𝑎𝑟 1 2220 𝐶𝑝𝑞𝑟𝑠 = + ∑ 𝐴𝑖𝑗𝑟𝑠 𝐵𝑝𝑞𝑖𝑗 2 𝑖𝑗⧵ 2221 𝐶̃𝑝𝑠𝑟𝑞 = +4 ∑ 𝐴̃ 𝑖𝑎𝑟𝑞 𝐵̃𝑝𝑠𝑖𝑎 𝑖⧵ ⧵𝑎 𝑖⧵ ⧵𝑎 𝑖⧵𝑎 1 2222 𝐶𝑝𝑞𝑟𝑠 = + ∑ 𝐴𝑝𝑞𝑎𝑏 𝐵𝑎𝑏𝑟𝑠 2 ⧵𝑎𝑏 ̃ denotes non-antisymmetrized Pandya-coupled matrix elements where the tilde symbol (𝐶) (Sec. 3.12.2). 112 4.3 Quasidegenerate perturbation theory The IM-SRG method provides a means to calculate the ground state energy of any system that is reasonably approximated by a single Slater determinant. This works well for closed-shell systems, but it does not provide a direct means to obtain the ground state energy of open-shell systems. While there exist more complicated multi-reference approaches to IM-SRG that seek to tackle the general problem [Her+16], we opted to use a perturbative approach, which is simple, inexpensive, and as we shall see from the results, quite effective for many problems. Quasidegenerate perturbation theory (QDPT) [Lin74; Kva74] is an extension to the usual perturbation theory framework to support multiple reference states instead of just one. This is useful for solving open-shell systems in which there are multiple reference states sharing similar (quasidegenerate) or equal (degenerate) energies. It is particularly useful if the open-shell system is only a few particles away from a closed-shell system. We will focus primarily on states that are one particle different from a closed-shell system. Specifically, we wish to calculate addition energies 𝜀𝑎 and removal energies 𝜀𝑖 of such systems, defined as 𝜀𝑎 = 𝐸𝛷 − 𝐸𝛷 𝑎 𝜀𝑖 = 𝐸𝛷 − 𝐸𝛷 𝑖 respectively. As usual in perturbation theory, we start by splitting the Hamiltonian 𝐻̂ into two components, 𝐻̂ = 𝐻̂ ◦ + 𝑉̂ Here 𝐻̂ ◦ is the zeroth-order model Hamiltonian that is easy to solve (typically a non-interacting Hamiltonian) and 𝑉̂ is the perturbation that makes the problem difficult. We choose a few of the 113 eigenstates of the model Hamiltonian as our set of model states |𝑢 ′◦ ⟩, 𝐻̂ ◦ |𝑢 ′◦ ⟩ = 𝐸 ◦ ′ |𝑢 ′◦ ⟩ 𝑢 and we want to solve for the corresponding unknown eigenstates |𝑢⟩ of the full Hamiltonian, 𝐻̂ |𝑢⟩ = 𝐸𝑢 |𝑢⟩ We define a wave operator 𝛺̂ that projects some set of states |𝑢 ◦ ⟩ from the model space to the true ground state |𝑢⟩ (i.e. of the full Hamiltonian): ̂ ◦⟩ |𝑢⟩ = 𝛺|𝑢 (4.16) where |𝑢 ◦ ⟩ is taken to be a linear combination of our selection of model states |𝑢 ′◦ ⟩, |𝑢 ◦ ⟩ = ∑|𝑢 ′◦ ⟩𝐶𝑢′ 𝑢 𝑢′ with 𝐶𝑢′ 𝑢 being some coefficient matrix. ̂ We assume it has the following There is some freedom in the choice of the wave operator 𝛺. form: 𝛺̂ = 𝑃̂ + 𝑄̂ 𝛺̂ 𝑃̂ (4.17) where 114 • 𝑃̂ is a projection operator for the model space, 𝑃̂ = ∑ 𝑃̂𝑢 𝑢 • 𝑃̂𝑢 is the projection operator for |𝑢 ◦ ⟩, 𝑃̂𝑢 = |𝑢 ◦ ⟩⟨𝑢 ◦ | ̂ • 𝑄̂ is the complement of 𝑃, 𝑄̂ = 1 − 𝑃̂ This definition of 𝛺̂ entails that the exact states |𝑢⟩ are no longer normalized but instead satisfy the so-called intermediate normalization, ⟨𝑢|𝑢 ◦ ⟩ = 1 From Eqns. 4.16, 4.17 we observe that 𝛺̂ 𝐻̂ ◦ = 𝛺̂ 𝑃̂ 𝐻̂ ◦ 𝑃̂ 𝛺̂ = 𝛺̂ 𝐻̂ ◦ 𝛺̂ ̂ 𝑢 𝛺̂ 𝑃̂𝑢 = 𝛺̂ 𝐻̂ 𝛺̂ 𝐻̂ 𝛺̂ = ∑ 𝛺𝐸 𝑢 ̂ 𝐻̂ ◦ ], leading to the generalized These equations can be used to simplify the commutator [𝛺, Bloch equation [LM86] that defines QDPT: ̂ 𝐻̂ ◦ ] = (1 − 𝛺) ̂ 𝑉̂ 𝛺̂ [𝛺, 115 The commutator on the left may be “inverted” using the resolvent approach [SB09, p. 50], resulting in the relation: ̂ 𝑉̂ 𝛺̂ 𝑃̂𝑢 𝑄̂ 𝛺̂ 𝑃̂𝑢 = 𝑅̂ 𝑢 (1 − 𝛺) where 𝑅̂ 𝑢 is the resolvent,3 ̂ 𝑢◦ − 𝑄̂ 𝐻̂ ◦ 𝑄) ̂ −1 𝑄̂ 𝑅̂ 𝑢 = 𝑄(𝐸 Now define 𝛺̂ as a series of terms of increasing order, quantified by the exponent (degree) of the perturbation 𝑉̂ , ∞ 𝛺̂ = ∑ 𝛺̂ (𝑛) 𝑛=0 We can then derive a recursion relation that allows 𝛺̂ to be calculated to any order ⎧ ⎪ ⎪ ⎪𝑃̂ (𝑛) ⎪ ̂ 𝛺 =⎨ ⎪ ⎪ ̂ (𝑘) ̂ ̂ (𝑛−𝑘−1) 𝑃̂𝑢 ⎪ ∑ 𝑅̂ 𝑉̂ 𝛺̂ (𝑛−1) + ∑𝑛−1 ⎪ 𝑘=1 𝛺 𝑉 𝛺 ) ⎩ 𝑢 𝑢( 3 In some literature, the resolvent 𝑅̂ 𝑢 is denoted by 𝑄̂ 𝐸𝑢◦ − 𝐻̂ ◦ 116 if 𝑛 = 0 if 𝑛 > 0 Up to third order, we have 𝛺̂ (1) 𝑃̂𝑢 = 𝑅̂ 𝑢 𝑉̂ 𝑃̂𝑢 𝛺̂ (2) 𝑃̂𝑢 = 𝑅̂ 𝑢 𝑉̂ 𝑅̂ 𝑢 − ∑ 𝑅̂ 𝑣 𝑉̂ 𝑃̂𝑣 𝑉̂ 𝑃̂𝑢 ) ( 𝑣 𝛺̂ (3) 𝑃̂𝑢 = 𝑅̂ 𝑢 𝑉̂ 𝑅̂ 𝑢 𝑉̂ 𝑅̂ 𝑢 − 𝑉̂ 𝑅̂ 𝑢 ∑ 𝑅̂ 𝑣 𝑉̂ 𝑃̂𝑣 − ∑ 𝑅̂ 𝑣 𝑉̂ 𝑃̂𝑣 𝑉̂ 𝑅̂ 𝑢 ( 𝑣 𝑣 − ∑ 𝑅̂ 𝑣 𝑉̂ 𝑅̂ 𝑣 𝑉̂ 𝑃̂𝑣 + ∑ 𝑅̂ 𝑣 ∑ 𝑅̂ 𝑤 𝑉̂ 𝑃̂𝑤 𝑉̂ 𝑃̂𝑣 𝑉̂ 𝑃̂𝑢 ) 𝑣 𝑤 𝑣 We can define an effective Hamiltonian 𝐻̂ eff = 𝑃̂ 𝐻̂ 𝛺̂ which acts only in the model space but yields the correct eigenvalues of the full space, 𝐻̂ eff |𝑢 ◦ ⟩ = 𝐸𝑢 |𝑢 ◦ ⟩ Thus, the energy corrections are given by: ⎧ ⎪ ⎪ ⎪⟨𝑢 ◦ |𝐻̂ ◦ |𝑢 ◦ ⟩ (𝑛) ⎪ 𝐸𝑢 = ⎨ ⎪ ⎪ ⎪ ⟨𝑢 ◦ |𝑉̂ 𝛺̂ (𝑛−1) |𝑢 ◦ ⟩ ⎪ ⎩ if 𝑛 = 0 if 𝑛 > 0 The coefficients 𝐶𝑢′ 𝑢 are obtained by diagonalizing the effective Hamiltonian through the eigenvalue problem, ∑⟨𝑢 ′◦ |𝐻̂ eff |𝑣 ′◦ ⟩𝐶𝑣 ′ 𝑢 = 𝐶𝑢 ′ 𝑢 𝐸𝑢 ′ (4.18) 𝑣 117 4.3.1 QDPT equations We now consider the application of QDPT to the treatment of addition and removal energies via the particle-hole formalism. Take each reference state to be a Slater determinant constructed by adding or removing a single particle 𝑢 to an existing closed-shell Fermi vacuum |𝛷⟩, |𝑢 ◦ ⟩ = |𝛷𝑢 ⟩ Take note that in QDPT Fermi vacuum and reference state are no longer synonymous. We choose 𝑢 to be close to the Fermi level: it should be a single-particle state within an adjacent shell (valence shell). Therefore, the number of reference states in the model space of QDPT is equal to the number of particles in either the lowest unoccupied shell or the highest occupied shell of |𝛷⟩, depending on whether we are considering addition or removal energies, respectively. We can then express the perturbation expansion in terms of summations over matrix elements as we did for the IM-SRG flow equation. We will restrict ourselves to the case where the perturbation 𝑉̂ is a two-body operator. The second-order QDPT corrections of the left-shift operator (or reaction operator) 𝑊̂ = 𝐻̂ eff − 𝐻̂ ◦ are: (2) 𝑊𝑝𝑞 = + 𝑉𝑖𝑝𝑎𝑏 𝑉𝑎𝑏𝑖𝑞 1 𝑉𝑖𝑗𝑎𝑞 𝑉𝑎𝑝𝑖𝑗 1 − ∑ ∑ 2 𝑖⧵𝑎𝑏 𝛥𝑖𝑞𝑎𝑏 2 𝑖𝑗⧵𝑎 𝛥𝑖𝑗𝑎𝑝 Here, 𝑉𝑎𝑏𝑖𝑞 are matrix elements of the two-body operator 𝑉̂ and 𝛥 denotes Møller–Plesset denominators as defined in Eq. 4.9. These second-order corrections are depicted as perturbative diagrams (Sec. 2.7.1) in Fig. 4.2. 118 Third-order QDPT corrections are: (3) 𝑊𝑝𝑞 = 𝑉𝑖𝑝𝑎𝑏 𝑉𝑎𝑏𝑐𝑑 𝑉𝑐𝑑𝑖𝑞 1 𝑉𝑖𝑗𝑎𝑞 𝑉𝑎𝑝𝑏𝑐 𝑉𝑏𝑐𝑖𝑗 1 𝑉𝑖𝑗𝑎𝑏 𝑉𝑎𝑏𝑐𝑞 𝑉𝑐𝑝𝑖𝑗 1 − − ∑ ∑ ∑ 4 𝑖⧵𝑎𝑏𝑐𝑑 𝛥𝑖𝑞𝑎𝑏 𝛥𝑖𝑞𝑐𝑑 4 𝑖𝑗⧵𝑎𝑏𝑐 𝛥𝑖𝑗𝑎𝑝 𝛥𝑖𝑗𝑏𝑐 4 𝑖𝑗⧵𝑎𝑏𝑐 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑖𝑗𝑐𝑝 𝑉𝑖𝑗𝑎𝑞 𝑉𝑘𝑙𝑖𝑗 𝑉𝑎𝑝𝑘𝑙 1 𝑉𝑖𝑝𝑎𝑏 𝑉𝑗𝑘𝑖𝑞 𝑉𝑎𝑏𝑗𝑘 1 𝑉𝑖𝑗𝑎𝑏 𝑉𝑘𝑝𝑖𝑗 𝑉𝑎𝑏𝑘𝑞 1 − + + ∑ ∑ ∑ 4 𝑖𝑗𝑘𝑙⧵𝑎 𝛥𝑖𝑗𝑎𝑝 𝛥𝑘𝑙𝑎𝑝 4 𝑖𝑗𝑘⧵𝑎𝑏 𝛥𝑖𝑞𝑎𝑏 𝛥𝑗𝑘𝑎𝑏 4 𝑖𝑗𝑘⧵𝑎𝑏 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑘𝑞𝑎𝑏 + 𝑉𝑖𝑗𝑎𝑏 𝑉𝑘𝑝𝑗𝑞 𝑉𝑎𝑏𝑖𝑘 1 𝑉𝑖𝑗𝑎𝑏 𝑉𝑏𝑝𝑐𝑞 𝑉𝑎𝑐𝑖𝑗 1 𝑉𝑖𝑝𝑎𝑞 𝑉𝑎𝑗𝑏𝑐 𝑉𝑏𝑐𝑖𝑗 1 + + ∑ ∑ ∑ 2 𝑖𝑗𝑘⧵𝑎𝑏 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑖𝑘𝑎𝑏 2 𝑖𝑗⧵𝑎𝑏𝑐 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑖𝑗𝑎𝑐 2 𝑖𝑗⧵𝑎𝑏𝑐 𝛥𝑖𝑎 𝛥𝑖𝑗𝑏𝑐 𝑉𝑖𝑗𝑎𝑏 𝑉𝑎𝑘𝑖𝑗 𝑉𝑏𝑝𝑘𝑞 𝑉𝑖𝑗𝑎𝑏 𝑉𝑎𝑏𝑖𝑐 𝑉𝑐𝑝𝑗𝑞 1 𝑉𝑖𝑝𝑎𝑞 𝑉𝑗𝑘𝑖𝑏 𝑉𝑎𝑏𝑗𝑘 1 1 + − − ∑ ∑ ∑ 2 𝑖𝑗⧵𝑎𝑏𝑐 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑗𝑞𝑐𝑝 2 𝑖𝑗𝑘⧵𝑎𝑏 𝛥𝑖𝑎 𝛥𝑗𝑘𝑎𝑏 2 𝑖𝑗𝑘⧵𝑎𝑏 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑘𝑞𝑏𝑝 𝑉𝑖𝑝𝑎𝑐 𝑉𝑗𝑐𝑏𝑞 𝑉𝑎𝑏𝑖𝑗 𝑉𝑖𝑗𝑎𝑏 𝑉𝑏𝑝𝑗𝑐 𝑉𝑎𝑐𝑖𝑞 𝑉𝑖𝑝𝑎𝑐 𝑉𝑗𝑎𝑏𝑖 𝑉𝑏𝑐𝑗𝑞 + ∑ + ∑ + ∑ 𝛥𝑖𝑞𝑎𝑐 𝛥𝑖𝑗𝑎𝑏 𝛥𝑖𝑞𝑎𝑐 𝛥𝑗𝑞𝑏𝑐 𝑖𝑗⧵𝑎𝑏𝑐 𝑖𝑗⧵𝑎𝑏𝑐 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑖𝑞𝑎𝑐 𝑖𝑗⧵𝑎𝑏𝑐 − − ∑ 𝑖𝑗𝑘⧵𝑎𝑏 𝑉𝑖𝑘𝑎𝑞 𝑉𝑎𝑗𝑖𝑏 𝑉𝑏𝑝𝑗𝑘 𝛥𝑖𝑘𝑎𝑝 𝛥𝑗𝑘𝑏𝑝 − ∑ 𝑖𝑗𝑘⧵𝑎𝑏 𝑉𝑖𝑘𝑎𝑞 𝑉𝑗𝑝𝑏𝑘 𝑉𝑎𝑏𝑖𝑗 𝛥𝑖𝑘𝑎𝑝 𝛥𝑖𝑗𝑎𝑏 − ∑ 𝑖𝑗𝑘⧵𝑎𝑏 𝑉𝑖𝑗𝑎𝑏 𝑉𝑏𝑘𝑗𝑞 𝑉𝑎𝑝𝑖𝑘 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑖𝑘𝑎𝑝 Perturbative diagrams (Sec. 2.7.1) of third-order corrections are also shown in Fig. 4.2. One of the benefits of applying QDPT to an IM-SRG-evolved Hamiltonian is that many of the QDPT terms vanish. In IM-SRG, a generator that decouples the ground state energy is required to drive certain classes of matrix elements to zero. Consider for example the White generator, which eliminates matrix elements of the form: 𝑉𝑖𝑗𝑎𝑏 = 𝑉𝑎𝑏𝑖𝑗 = 0 This means certain kinds of vertices in the diagrams become forbidden, reducing the number of nonzero diagrams at third order from 18 to only four. Out of these four, two of them contribute only to the correction of hole states (removal energies), while the other two contribute only to the correction of the particle states (addition energies). Note that the final step of diagonalizing the effective Hamiltonian (Eq. 4.18) is usually not 119 second order nonzero for IM-SRG + QDPT: addition removal third order Figure 4.2: Perturbative Hugenholtz diagrams (Sec. 2.7.1) of the second- and third-order QDPT corrections. Denominator lines have been elided. When QDPT is performed on IM-SRG-evolved Hamiltonians, many of the diagrams vanish. The remaining nonvanishing diagrams for addition energy are highlighted in blue and for removal energy are highlighted in red. needed for the calculation of single-particle energies with one valence shell as the matrix is often already diagonal due to conservation laws of the quantum system. In J-scheme, the second-order corrections are: (2) 𝑊𝑝𝑞 = 2 2 𝚥̆𝑖𝑝 𝑉𝑖𝑝𝑎𝑏 𝑉𝑎𝑏𝑖𝑞 1 𝚥̆𝑎𝑝 𝑉𝑖𝑗𝑎𝑞 𝑉𝑎𝑝𝑖𝑗 1 − ∑ ∑ 2 ∑ ∑ 2 2 𝑗𝑖𝑝 𝑖⧵𝑎𝑏 𝚥̆𝑝 𝛥𝑖𝑞𝑎𝑏 2 𝑗𝑎𝑝 𝑖𝑗⧵𝑎 𝚥̆𝑝 𝛥𝑖𝑗𝑎𝑝 As usual, these equations use the implicit-J convention (Sec. 3.12.3). For efficiency, the third-order corrections in J-scheme make use of the non-antisymmetrized Pandya-transformed matrix elements of 𝑉̂ , which are denoted 𝑉̃𝑝𝑠𝑟𝑞 (Sec. 3.12.2). Using these 120 matrix elements, we may write the third-order terms as: (3) 𝑊𝑝𝑞 = 1 + ∑ ∑ 4 𝑗𝑖𝑝 𝑖⧵𝑎𝑏𝑐𝑑 1 − ∑ ∑ 4 𝑗𝑐𝑝 𝑖𝑗⧵𝑎𝑏𝑐 2 𝚥̆𝑖𝑝 𝑉𝑖𝑝𝑎𝑏 𝑉𝑎𝑏𝑐𝑑 𝑉𝑐𝑑𝑖𝑞 𝚥̆𝑝2 𝛥𝑖𝑞𝑎𝑏 𝛥𝑖𝑞𝑐𝑑 1 − ∑ ∑ 4 𝑗𝑎𝑝 𝑖𝑗⧵𝑎𝑏𝑐 2 𝑉𝑖𝑗𝑎𝑞 𝑉𝑎𝑝𝑏𝑐 𝑉𝑏𝑐𝑖𝑗 𝚥̆𝑎𝑝 2 𝛥𝑖𝑗𝑎𝑝 𝛥𝑖𝑗𝑏𝑐 𝚥̆𝑝 2 2 𝑉𝑖𝑗𝑎𝑏 𝑉𝑎𝑏𝑐𝑞 𝑉𝑐𝑝𝑖𝑗 1 𝑉𝑖𝑗𝑎𝑞 𝑉𝑘𝑙𝑖𝑗 𝑉𝑎𝑝𝑘𝑙 𝚥̆𝑐𝑝 𝚥̆𝑎𝑝 − ∑ ∑ 4 𝑗𝑎𝑝 𝑖𝑗𝑘𝑙⧵𝑎 𝚥̆𝑝2 𝛥𝑖𝑗𝑎𝑝 𝛥𝑘𝑙𝑎𝑝 𝚥̆𝑝2 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑖𝑗𝑐𝑝 2 2 𝚥̆𝑘𝑝 𝑉𝑖𝑗𝑎𝑏 𝑉𝑘𝑝𝑖𝑗 𝑉𝑎𝑏𝑘𝑞 𝚥̆𝑖𝑝 𝑉𝑖𝑝𝑎𝑏 𝑉𝑗𝑘𝑖𝑞 𝑉𝑎𝑏𝑗𝑘 1 1 + ∑ ∑ 2 + ∑ ∑ 2 4 𝑗𝑖𝑝 𝑖𝑗𝑘⧵𝑎𝑏 𝚥̆𝑝 𝛥𝑖𝑞𝑎𝑏 𝛥𝑗𝑘𝑎𝑏 4 𝑗𝑘𝑝 𝑖𝑗𝑘⧵𝑎𝑏 𝚥̆𝑝 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑘𝑞𝑎𝑏 2 2 𝚥̆𝑘𝑝 𝚥̆𝑖𝑗 𝑉𝑖𝑗𝑎𝑏 𝑉𝑘𝑝𝑗𝑞 𝑉𝑎𝑏𝑖𝑘 1 1 − + ∑ ∑ 22 ∑ ∑ 2 𝑗𝑘𝑝 𝑗𝑖𝑗 𝑖𝑗𝑘⧵𝑎𝑏 𝚥̆𝑝 𝚥̆𝑗 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑖𝑘𝑎𝑏 2 𝑗𝑏𝑝 𝑗𝑎𝑏 𝑖𝑗⧵𝑎𝑏𝑐 1 + ∑ ∑ 2 𝑗𝑖𝑝 𝑗𝑖𝑗 𝑖𝑗⧵𝑎𝑏𝑐 2 2 𝚥̆𝑖𝑝 𝚥̆𝑖𝑗 𝑉𝑖𝑝𝑎𝑞 𝑉𝑎𝑗𝑏𝑐 𝑉𝑏𝑐𝑖𝑗 𝚥̆𝑝2 𝚥̆𝑖2 𝛥𝑖𝑎 𝛥𝑖𝑗𝑏𝑐 1 + ∑ ∑ 2 𝑗𝑐𝑝 𝑗𝑖𝑗 𝑖𝑗⧵𝑎𝑏𝑐 2 2 𝚥̆𝑏𝑝 𝚥̆𝑎𝑏 𝑉𝑖𝑗𝑎𝑏 𝑉𝑏𝑝𝑐𝑞 𝑉𝑎𝑐𝑖𝑗 𝚥̆𝑝2 𝚥̆𝑏2 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑖𝑗𝑎𝑐 2 2 𝚥̆𝑐𝑝 𝚥̆𝑖𝑗 𝑉𝑖𝑗𝑎𝑏 𝑉𝑎𝑏𝑖𝑐 𝑉𝑐𝑝𝑗𝑞 𝚥̆𝑝2 𝚥̆𝑗2 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑗𝑞𝑐𝑝 2 2 2 2 𝚥̆𝑏𝑝 𝚥̆𝑎𝑏 𝑉𝑖𝑗𝑎𝑏 𝑉𝑎𝑘𝑖𝑗 𝑉𝑏𝑝𝑘𝑞 𝚥̆𝑖𝑝 𝚥̆𝑎𝑏 𝑉𝑖𝑝𝑎𝑞 𝑉𝑗𝑘𝑖𝑏 𝑉𝑎𝑏𝑗𝑘 1 1 − ∑ ∑ ∑ ∑ 2 𝑗𝑖𝑝 𝑗𝑎𝑏 𝑖𝑗𝑘⧵𝑎𝑏 𝚥̆𝑝2 𝚥̆𝑎2 𝛥𝑖𝑎 𝛥𝑗𝑘𝑎𝑏 2 𝑗𝑏𝑝 𝑗𝑎𝑏 𝑖𝑗𝑘⧵𝑎𝑏 𝚥̆𝑝2 𝚥̆𝑏2 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑘𝑞𝑏𝑝 2 ̃ 2 ̃ 𝑉𝑖𝑎𝑐𝑝 𝑉̃𝑐𝑞𝑏𝑗 𝑉̃𝑏𝑗𝑖𝑎 𝑉𝑖𝑎𝑏𝑗 𝑉̃𝑏𝑗𝑐𝑝 𝑉̃𝑐𝑞𝑖𝑎 𝚥̆𝑐𝑝 𝚥̆𝑐𝑝 +∑ ∑ 2 +∑ ∑ 2 𝛥𝑖𝑞𝑎𝑐 𝛥𝑖𝑗𝑎𝑏 𝑗𝑐𝑝 𝑖𝑗⧵𝑎𝑏𝑐 𝚥̆𝑝 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑖𝑞𝑎𝑐 𝑗𝑐𝑝 𝑖𝑗⧵𝑎𝑏𝑐 𝚥̆𝑝 − 2 ̃ 2 ̃ 𝚥̆𝑝𝑘 𝑉𝑖𝑎𝑐𝑝 𝑉̃𝑗𝑏𝑖𝑎 𝑉̃𝑐𝑞𝑗𝑏 𝑉𝑖𝑎𝑞𝑘 𝑉̃𝑗𝑏𝑖𝑎 𝑉̃𝑝𝑘𝑗𝑏 𝚥̆𝑐𝑝 +∑ ∑ 2 −∑ ∑ 2 𝛥𝑖𝑞𝑎𝑐 𝛥𝑗𝑞𝑏𝑐 𝛥𝑖𝑘𝑎𝑝 𝛥𝑗𝑘𝑏𝑝 𝑗𝑐𝑝 𝑖𝑗⧵𝑎𝑏𝑐 𝚥̆𝑝 𝑗𝑝𝑘 𝑖𝑗𝑘⧵𝑎𝑏 𝚥̆𝑝 2 ̃ 2 ̃ 𝚥̆𝑝𝑘 𝚥̆𝑝𝑘 𝑉𝑖𝑎𝑞𝑘 𝑉̃𝑝𝑘𝑏𝑗 𝑉̃𝑏𝑗𝑖𝑎 𝑉𝑖𝑎𝑏𝑗 𝑉̃𝑏𝑗𝑞𝑘 𝑉̃𝑝𝑘𝑖𝑎 −∑ ∑ 2 −∑ ∑ 2 𝛥𝑖𝑘𝑎𝑝 𝛥𝑖𝑗𝑎𝑏 𝑗𝑝𝑘 𝑖𝑗𝑘⧵𝑎𝑏 𝚥̆𝑝 𝑗𝑝𝑘 𝑖𝑗𝑘⧵𝑎𝑏 𝚥̆𝑝 𝛥𝑖𝑗𝑞𝑎𝑏𝑝 𝛥𝑖𝑘𝑎𝑝 121 Chapter 5 Application to quantum systems The two main systems that we study in this work are quantum dots and nuclei. Quantum dots are a remarkably simple system for studying quantum phenomena and provide a testbed for both theoretical calculations and experimental measurements as the strength of its correlations can be easily tuned by adjusting the width of the external trap. In contrast, nuclei are natural, self-bound systems with a nuclear force that is both complicated and uncertain. For simplicity, we begin with quantum dots and use it to test the effectiveness of our manybody methods. Ultimately, nuclei are the more challenging and intriguing system to study, and they tend to be more practically relevant. 5.1 Quantum dots Quantum dots, also known as “artificial atoms”, are prototypical quantum systems consisting of electrons confined by an external potential. 5.1.1 Quantum dot Hamiltonian We will devote our focus on circular quantum dots, consisting of a collection of nonrelativistic electrons trapped in a two-dimensional harmonic oscillator potential, interacting through the standard Coulomb interaction. The parameters of the system are: • 𝑁 : the number of electrons, 122 • 𝑚: the mass of each electron, • 𝑒: the charge of each electron, • 𝜖: the permittivity of the medium, and • 𝜔: the angular frequency of the harmonic oscillator potential. The three basic components of the Hamiltonian are the kinetic energy 𝑡(𝒑), the potential energy 𝑢(𝒓), and the Coulomb interaction 𝑣(𝑅): 𝑡(𝒑) = 𝒑2 2𝑚 𝑢(𝒓) = 𝑚𝜔 2 𝒓 2 2 𝑣(𝑅) = 𝑒2 4𝜋𝜖|𝑅| where 𝒓 is the position of an electron relative to the center of the trap, 𝒑 is its linear momentum, and 𝑅 is the distance between two electrons. The kinetic and potential energies combine to form the standard harmonic oscillator Hamiltonian ℎ(𝒓, 𝒑): ℎ(𝒓, 𝒑) = 𝑡(𝒑) + 𝑢(𝒓) The quantum many-body problem is described by the Hamiltonian 𝐻̂ = 𝐻̂ 1 + 𝐻̂ 2 where 𝐻̂ 1 and 𝐻̂ 2 are respectively its one- and two-body components,1 namely 𝑁 𝐻̂ 1 = ∑ ℎ(𝒓̂𝛼 , 𝒑̂𝛼 ) 𝛼=1 𝑁 𝛼−1 (5.1) 𝐻̂ 2 = ∑ ∑ 𝑣(|𝒓̂𝛼 − 𝒓̂𝛽 |) 𝛼=1 𝛽=1 1 These components are defined relative to the physical vacuum. 123 The operator 𝒓̂𝛼 is the position operator of the 𝛼-th particle,2 and 𝒑̂𝛼 = −i𝛁̂ 𝒓 is its momentum 𝛼 operator. Even though the model system contains five parameters, many of them are redundant. With an appropriate choice of units, the number of parameters in the system can be reduced to just two. For this system, it is convenient to choose atomic units where ℏ = 𝑚 = 𝑒 = 4𝜋𝜖 = 1 Here, Hartree 𝐸h is the unit of energy and Bohr radius 𝑎 is the unit of length: 𝐸h = 𝑚 𝑒2 2 ( 4𝜋𝜖ℏ ) 𝑎= 4𝜋𝜖ℏ2 𝑚𝑒 2 This leaves us with (𝑁 , 𝜔) as the only two parameters needed to specify the quantum dot system, with 𝜔 in units of 𝐸h /ℏ. 5.1.2 Fock–Darwin basis We will use the noninteracting part of the many-body Hamiltonian 𝐻̂ 1 to define the single-particle basis. The single-particle Hamiltonian is of the form: 1 1 ℎ̂ = 𝛁̂ 2 + 𝜔 2 𝒓̂ 2 2 2 In Cartesian coordinates, the two-dimensional harmonic oscillator is trivially reducible to the well-known one-dimensional problem. However, to exploit the circular symmetry, we prefer to use Fock–Darwin states [Foc28; Dar31], which are written in polar coordinates 𝒓 = (𝑟, 𝜑). Such 2 The ordering of the particle labels 𝛼 is unimportant as they exist only for the purpose of bookkeeping. 124 states have the computationally useful property of conserving orbital angular momentum, 𝜕̂ 𝐿̂ 3 = −i 𝜕𝜑 The Fock–Darwin wave functions can be decomposed into radial and angular components,[Loh10] √ 𝐹𝑛𝑚 (𝑟, 𝜑) = 𝓁 𝑅𝑛𝜇 (𝜌) = √ 𝑚𝜔 𝑚𝜔 𝑅𝑛|𝑚 | 𝑟 𝐴 (𝜑) 𝓁 ( ℏ ) 𝑚𝓁 ℏ √ −𝜌 2 /2 𝜇 𝜇 2 𝜌 𝐿̄𝑛 (𝜚 ) 2e (5.2) 1 𝐴𝑚 (𝜑) = √ ei𝑚𝓁 𝜑 𝓁 2𝜋 √ in ordinary units. Here, ℏ/𝑚𝜔 is the characteristic length of the harmonic oscillator, 𝛤 (𝑥) is the gamma function, and 𝐿̄𝛼𝑛 (𝑥) is the normalized variant of the associated Laguerre polynomial 𝐿𝛼𝑛 (𝑥) of degree 𝑛 and parameter 𝛼 [DLMF]: √ 𝑛! 𝐿𝛼 (𝑥) 𝛤 (𝑛 + 𝛼 + 1) 𝑛 d𝑛 1 𝐿𝛼𝑛 (𝑥) = 𝑥 −𝛼 e𝑥 𝑛 (e−𝑥 𝑥 𝛼+𝑛 ) 𝑛! d𝑥 𝐿̄𝛼𝑛 (𝑥) = (5.3) The normalized Laguerre polynomials satisfy the following orthogonality relation: ∞ ∫ 0 (𝛼) (𝛼) 𝑢 𝛼 e−𝑢 𝐿̄𝑚 (𝑢)𝐿̄𝑛 (𝑢) d𝑢 = 𝛿𝑚𝑛 The states are labeled by two quantum numbers: the principal quantum number 𝑛 ∈ {0, 1, 2, …} and orbital angular momentum projection 𝑚𝓁 ∈ { … , −2, −1, 0, +1, +2, …}. For a wave function, 𝑛 indicates the degree of the Laguerre polynomial, whereas 𝑚𝓁 is the eigenvalue of 𝐿̂ 3 . Since electrons are spin- 12 fermions, they can occupy either of the two possible spin states 𝜒− 1 2 125 or 𝜒+ 1 . Thus, every single-particle basis state |𝑛𝑚𝓁 𝑚𝑠 ⟩ contains both a spatial component (5.2) 2 and a spin component, ⟨𝑟𝜑𝑚𝑠′ |𝑛𝑚𝓁 𝑚𝑠 ⟩ = 𝐹𝑛𝑚 (𝑟, 𝜑)𝛿𝑚 𝑚′ 𝓁 𝑠 𝑠 (5.4) } { Here we have introduced spin projection 𝑚𝑠 ∈ − 12 , + 12 as the third quantum number, which is E/ω = k + 1 the eigenvalue of the spin projection operator 𝑆̂3 . 5 +½ 3 0 1 2 −½ 1 −3 0 ms n +3 mℓ Figure 5.1: The 42 lowest single-particle states (the first 5 shells) in the 2D harmonic oscillator basis. Each box represents a single-particle state arranged by 𝑚𝓁 , 𝑚𝑠 , and energy, and the up/down arrows indicate the spin of the states. Within each column, the principal quantum number 𝑛 increases as one traverses upward. The energy of the single-particle state |𝑛𝑚𝓁 𝑚𝑠 ⟩ is given by 𝜀𝑛𝑚 𝑚 = (2𝑛 + |𝑚𝓁 | + 1)ℏ𝜔 𝓁 𝑠 (5.5) in ordinary units. These energies are degenerate with respect to the spin projection 𝑚𝑠 as our Hamiltonian ℎ̂ does not distinguish between them. Additionally, they are degenerate with respect to the number of quanta 𝑘, defined as 𝑘 = 2𝑛 + |𝑚𝓁 | (5.6) 126 We also call 𝑘 the shell index of the two-dimensional harmonic oscillator as this nonnegative integer labels each shell starting from zero. The shells are equidistant with an energy spacing of ℏ𝜔. This is depicted graphically in Fig. 5.1. When the number of particles 𝑁 satisfies 𝑁 = 𝐾F (𝐾F + 1) for some nonnegative integer 𝐾F , there would be just enough particles to form a closed-shell Slater determinant, leading to a unique, well-isolated ground state. These specific values of 𝑁 form the magic numbers of this system. We call 𝐾F the number of filled shells (or “Fermi level”). In particular, a single-particle state is occupied in the ground state Slater determinant if and only if 𝑘 < 𝐾F , where 𝑘 is the shell index of the single-particle state as defined in Eq. 5.6. 5.1.3 Coulomb interaction in the Fock–Darwin basis For many-body calculations, we will need matrix elements of the Coulomb interaction in the Fock–Darwin basis that we chose. The antisymmetrized matrix elements, needed for Eq. 2.2, are given by ⟨(𝑛𝑚𝑠)1 (𝑛𝑚𝑠)2 |𝐻̂ 2 |(𝑛𝑚𝑠)3 (𝑛𝑚𝑠)4 ⟩ = ⟨(𝑛𝑚)1 (𝑛𝑚)2 |𝐻̂ 2 |(𝑛𝑚)3 (𝑛𝑚)4 ⟩𝛿𝑠 𝑠 𝛿𝑠 𝑠 1 3 2 4 − ⟨(𝑛𝑚)1 (𝑛𝑚)2 |𝐻̂ 2 |(𝑛𝑚)4 (𝑛𝑚)3 ⟩𝛿𝑠 𝑠 𝛿𝑠 𝑠 1 4 2 3 where for brevity we have relabeled the quantum numbers with 𝑚 = 𝑚𝓁 and 𝑠 = 𝑚𝑠 , and ⟨(𝑛𝑚)1 (𝑛𝑚)2 |𝐻̂ 2 |(𝑛𝑚)3 (𝑛𝑚)4 ⟩ 𝐹(𝑛𝑚) (𝒓)𝐹(𝑛𝑚) (𝒓 ′ )𝐹(𝑛𝑚) (𝒓)𝐹(𝑛𝑚) (𝒓 ′ ) 2 2 ′ 𝑒2 1 2 3 4 = d 𝑟d 𝑟 4π𝜖 ∬ |𝒓 − 𝒓 ′ | 127 (5.7) denotes the non-antisymmetrized matrix element in ordinary units, and 𝐹𝑛𝑚 (𝒓) denotes a Fock– Darwin wave function. Analytically, the integral may be evaluated [AM98] as ⟨(𝑛𝑚)1 (𝑛𝑚)2 |𝐻̂ 2 |(𝑛𝑚)3 (𝑛𝑚)4 ⟩ √ ℏ𝜔𝐸h √ 𝑛1 𝑛2 𝑛3 𝑛4 4 𝑛𝑖 ! = 𝛿𝑚 +𝑚 ,𝑚 +𝑚 ∏ ∑ ∑ ∑ ∑ 1 2 3 4 𝑖=1 (𝑛𝑖 + |𝑚𝑖 |)! 𝑗 =0 𝑗 =0 𝑗 =0 𝑗 =0 4 3 2 1 𝛾1 𝛾2 𝛾3 𝛾4 (−)𝑗𝑖 𝑛𝑖 + |𝑚𝑖 | 1 ∑ ∑ ∑ ∑ (𝑖=1 𝑗𝑖 ! ( 𝑛𝑖 − 𝑗𝑖 )) 2(𝐺+1)/2 𝑙 =0 𝑙 =0 𝑙 =0 𝑙 =0 1 2 3 4 4 ∏ 𝐺 − 𝛬 + 1 4 𝛾𝑖 𝛬 𝛿𝑙 +𝑙 ,𝑙 +𝑙 (−)𝛾2 +𝛾4 −𝑙2 −𝑙4 𝛤 1 + 𝛤 ∏ 1 2 3 4 ) 𝑖=1 ( 𝑙𝑖 ) ( 2) ( 2 4 𝐺 = ∑ 𝛾1 𝑖=1 4 𝛬 = ∑ 𝑙1 𝑖=1 |𝑚1 | + 𝑚1 2 |𝑚2 | + 𝑚2 𝛾2 = 𝑗2 + 𝑗4 + 2 |𝑚 | + 𝑚3 𝛾3 = 𝑗3 + 𝑗1 + 3 2 |𝑚 | + 𝑚4 𝛾4 = 𝑗4 + 𝑗2 + 4 2 𝛾1 = 𝑗1 + 𝑗3 + |𝑚3 | − 𝑚3 2 |𝑚4 | − 𝑚4 + 2 |𝑚 | − 𝑚1 + 1 2 |𝑚 | − 𝑚2 + 2 2 + However, the analytic approach is rather inefficient: it has effectively 7 nested summations, which means the computational cost of each matrix element grows as (𝑘 7 ) where 𝑘 is the number of shells. It is also prone to precision losses due to the highly oscillatory terms. A more effective way to compute the integral is through the technique described in [Kva08] as implemented in the OpenFCI package. By transforming product states |(𝑛𝑚)1 ⊗ (𝑛𝑚)2 ⟩ into their 128 center-of-mass frame, one arrives at a radial integral ′ 𝜇 𝐶 ′ = 2(−)𝑛+𝑛 ∫ 𝑛𝑛 0 ∞ √ 2 𝜇 𝜇 𝑅 2𝜇 𝐿̄𝑛 (𝑅 2 )𝐿̄ ′ (𝑅 2 )𝑣( 2𝑅)e−𝑅 𝑅 d𝑅 𝑛 where 𝐿̄𝛼𝑛 (𝑥) is the normalized associated Laguerre polynomial defined in Eq. 5.3 and 𝑣(𝑅) is our central interaction, although this technique generalizes to many kinds of central interactions. The radial integral may be calculated exactly using Gauss–Hermite quadrature of sufficiently high order. The results are transformed back into the laboratory frame using Talmi–Brody–Moshinsky transformation brackets [Tal52; BM67; Mos59]. 5.2 Nuclei The nuclear many-body problem is challenging problem due to the strength of as well as the uncertainty in the interaction. 5.2.1 The nuclear Hamiltonian A nucleus is a self-bound system of nucleons: neutrons and protons. The nucleons interact with each other through the nuclear interaction. The parameters of the system are: • 𝐴: the number of nucleons, • 𝑁 : the number of neutrons,3 • 𝑍 : the number of protons, • 𝑚: the mass of each nucleon, and • 𝑉̂ : the nuclear interaction. Note that for simplicity we treat neutrons and protons as having the same mass, which is 3 Note the difference in notation compared to quantum dots. 129 generally adequate given the current levels of accuracy. The many-body Hamiltonian consists of two components, the relative kinetic energy 𝑇̂ rel and the nuclear interaction 𝑉̂ , 𝐻̂ = 𝑇̂ rel + 𝑉̂ The relative kinetic energy is given by: 𝐴 𝐴 𝛼−1 (𝒑̂𝛼 − 𝒑̂𝛽 )2 𝐴 𝒑̂ 2 1 𝛼 2 rel ̂ − = ∑ ∑ 𝑇 = ∑ ∑ 𝒑̂𝛼 ) 2𝑚 𝛼=1 𝛽=1 𝛼=1 2𝑚 2𝑚𝐴 (𝛼=1 In second quantization, this can be written as a combination of a one-body and a two-body operator: 𝑡̂1rel (𝒑) = (1 − 1 𝒑̂ 2 𝐴 ) 2𝑚 𝑡̂2rel (𝒑, 𝒑 ′ ) = − 𝒑̂ ⋅ 𝒑̂ ′ 𝑚𝐴 𝐴 𝛼−1 𝐴 𝑇̂2rel = ∑ ∑ 𝑡̂2rel (𝒑𝛼 , 𝒑𝛽 ) 𝑇̂1rel = ∑ 𝑡̂1rel (𝒑𝛼 ) 𝛼=1 𝛽=1 𝛼=1 The units we use in nuclear theory are MeV, fm, and combinations thereof. We set the constants ℏ = 𝑐 = 1. 5.2.2 The nuclear interaction The nuclear interaction 𝑉̂ is generally quite complicated. Typically it is either a two-body operator, or a combination of two-body and three-body operators. In principle, this interaction could even have higher-body operators than three. Unlike quantum dots, there are many possible choices for 𝑉̂ , none of which could be considered canonical. This is due to current limitations in the understanding of the nuclear interaction. 130 So far, the state of the art in nuclear interactions lies in chiral effective field theory (chiral EFT or 𝜒 -EFT) [ME11; EHM09], which uses a power-counting scheme to build an effective Lagrangian with nucleons as the degrees of freedom. Most of the coupling constants of this Lagrangian are not known a priori and must be determined by fitting experimental data. Chiral EFT interactions are characterized by the level of truncation in the power-counting scheme, as well as the cut-off momentum 𝛬 used for regularization. A commonly used choice in the literature is the nucleon-nucleon interaction of [EM03] computed to the next-to-next-to-nextto-leading order (N3 LO) with a momentum cutoff at 𝛬 = 500 MeV. This interaction has proven to be quite accurate in practice. Many kinds of nuclear interactions, including chiral EFT ones, are typically hard in that they couple low-momentum states with high-momentum ones, caused by the presence of a strongly repulsive core [BFS10]. This can significantly hinder the convergence of many-body methods, necessitating the use of a large single-particle basis. To mitigate this, free-space SRG may be used to renormalize the interaction, decoupling the low-momentum states from high-momentum states, thereby softening the interaction. This extra preprocessing step confers significant benefits to the convergence of many-body methods, reducing computational cost [BFP07]. The SRG softening is characterized by the flow parameter 𝑠SRG , or equivalently by the momentum 1 𝜆SRG = 4 𝑠SRG which is not to be confused with the cutoff momentum 𝛬 in chiral EFT. In our calculations, we choose 𝑠SRG = 0.0625 fm4 or equivalently 𝜆SRG = 2 fm−1 . 131 5.2.3 Spherical harmonic oscillator basis The standard basis used for nuclei is that of the three-dimensional harmonic oscillator, chosen for both its analytic properties and similarity to the nuclear problem. Note unlike quantum dots, the spherical oscillator basis are not the eigenstates of the one-body part of the nuclear Hamiltonian. The frequency 𝜔 of the basis is not associated with the physical system, unlike in the case of quantum dots. Therefore, it adds an additional, arbitrary parameter for the nuclear many-body problem. The parameter can be used to evaluate the quality of the result: in a perfect calculation where the results are well converged, there should be no dependence on 𝜔 since it is not a physical parameter. There are several kinds of bases for the three-dimensional harmonic oscillator. We choose the spherical version to take advantage of angular momentum symmetries. They are given by: √ 𝑚𝜔 𝓁 +3/2 𝓁 −𝑚𝜔𝑟 2 /(2ℏ) ̄(𝓁 +1/2) 𝑚𝜔𝑟 2 𝑌 (𝜃, 𝜑) 𝜓𝑛𝓁 𝑚 (𝑟, 𝜃, 𝜑) = 2( 𝑟 e 𝐿𝑛 𝓁 ( ℏ ) 𝓁 𝑚𝓁 ℏ ) where 𝑛 is the principal quantum number, 𝓁 is the orbital angular momentum magnitude, 𝑚𝓁 is the orbital angular momentum projection, 𝐿̄𝛼𝑛 are normalized associated Laguerre polynomials defined in Eq. 5.3, and 𝑌𝓁 𝑚 are spherical harmonics. 𝓁 1p1/2 1p3/2 0f5/2 0d3/2 1s1/2 0d5/2 0p1/2 0p3/2 0s1/2 Figure 5.2: Shell structure of the spherical harmonic oscillator 132 0f7/2 The energy is given by: 3 𝐸𝑛𝓁 𝑚 = ℏ𝜔 (𝑒 + ) 𝓁 2 where 𝑒 is the shell index of the three-dimensional harmonic oscillator: 𝑒 = 2𝑛 + 𝓁 (5.8) which counts shells starting at zero. Compare with Eq. 5.6, which is for the two-dimensional harmonic oscillator. These shells are also equidistant with an energy spacing of ℏ𝜔. Nucleons are associated with two additional non-spatial quantum numbers: spin projection 𝑚𝑠 = ±1/2 and isospin projection 𝑚𝑡 = ±1/2. This means a proper nucleonic state should have 5 quantum numbers: |𝑛𝓁 𝑚𝓁 𝑚𝑠 𝑚𝑡 ⟩ In practice, however, it is more beneficial to use LS coupled states as the nuclear Hamiltonian conserves not 𝑳̂ but 𝑱̂ : 1 |𝑛𝓁 𝑗𝑚𝑗 𝑚𝑡 ⟩ = ∑ |𝑛𝓁 𝑚𝓁 𝑚𝑠 𝑚𝑡 ⟩⟨𝓁 𝑚𝓁 𝑚𝑠 |𝑗𝑚𝑗 ⟩ 2 𝑚𝓁 𝑚𝑠 The corresponding harmonic oscillator shell structure is shown in Fig. 5.2 using spectroscopic notation 𝑛𝓁𝑗 , where s, p, d, f correspond to 𝓁 = 0, 𝓁 = 1, 𝓁 = 2, and 𝓁 = 3. The nuclear Hamiltonian also conserves parity, thus it can be convenient to use the parity 133 quantum number 𝜋 = (−)𝓁 in lieu of 𝓁 , since from 𝜋 and 𝑗 one can recover 𝓁 : |𝑛𝜋𝑗𝑚𝑗 𝑚𝑡 ⟩ ≃ |𝑛𝓁 𝑗𝑚𝑗 𝑚𝑡 ⟩ For calculations, it is necessary to truncate the single-particle harmonic oscillator basis. The simplest way is to impose a limit on the number of shells by the maximum shell index parameter 𝑒max : 𝑒 ≤ 𝑒max (5.9) We can analogously limit 𝑛 and/or 𝓁 : 𝑛 ≤ 𝑛max 𝓁 ≤ 𝓁max (5.10) On two-particle states constructed from the harmonic oscillator, we may also impose a limit through the 𝐸max parameter (not to be confused with energy): 𝑒1 + 𝑒2 ≤ 𝐸max (5.11) Currently, for our calculations we only use the 𝑒max truncation. In future, we may require other forms of truncation in addition to 𝑒max to keep the basis from growing too rapidly as we explore higher numbers of shells. 134 5.2.4 Matrix elements of kinetic energy For calculations in a harmonic oscillator basis, one often needs to compute matrix elements of the kinetic energy, ⟨𝑛′ 𝓁 ′ 𝑚𝓁′ | 𝒑̂ 2 |𝑛𝓁 𝑚𝓁 ⟩ 2𝑚 Since linear momentum squared 𝒑̂ 2 is a scalar, it commutes with angular momentum 𝑳̂ and therefore matrix elements with differing 𝓁 and 𝑚𝓁 must vanish. For now, let us use natural units – we will return to ordinary units shortly. To simplify the calculation, observe that 𝒓̂ 2 𝒑̂ 2 = 𝐻̂ − 2 2 This way, instead of calculating an integral involving a Laplacian, we can get away with an integral involving just 𝑟 2 . Using the recurrence relation of Laguerre polynomials, 3 1 (𝓁 +1/2) (𝓁 +1/2) 2 (𝓁 +1/2) 2 (𝑟 ) = (𝑛 + 1)𝐿𝑛+1 (𝑟 2 ) + (𝑛 + 𝓁 + )𝐿𝑛−1 (𝑟 2 ) (2𝑛 + 𝓁 + 2 − 𝑟 )𝐿𝑛 2 we can expand √ 1 𝒓̂ 2 |𝑛𝓁 𝑚𝓁 ⟩ = − 𝑛(𝑛 + 𝓁 + )|(𝑛 − 1)𝓁 𝑚𝓁 ⟩ 2 3 + (2𝑛 + 𝓁 + )|𝑛𝓁 𝑚𝓁 ⟩ 2 √ 3 − (𝑛 + 1)(𝑛 + 𝓁 + )|(𝑛 + 1)𝓁 𝑚𝓁 ⟩ 2 135 Hence, in ordinary units the matrix elements of potential energy are ′ ′ ⟨𝑛 𝓁 𝑚𝜔 𝑚𝓁′ | 2 2 𝒓̂ 2 𝛿𝓁 ′ 𝓁 𝛿𝑚′ 𝑚 ℏ𝜔 𝓁 𝓁 2 |𝑛𝓁 𝑚𝓁 ⟩ = 3 2𝑛 + 𝓁 + 𝛿 ′ − 2) 𝑛 𝑛 (( √ 1 𝜂(𝜂 + 𝓁 + )𝛿|𝑛′ −𝑛|1 2 ) where 𝜂 = max{𝑛′ , 𝑛} is the larger of the two. From here it is straightforward to compute the matrix elements of kinetic energy, ′ ′ ⟨𝑛 𝓁 𝒑̂ 𝑚𝓁′ | 2 2𝑚 |𝑛𝓁 𝑚𝓁 ⟩ = 𝛿𝓁 ′ 𝓁 𝛿𝑚′ 𝑚 ℏ𝜔 𝓁 𝓁 2 3 2𝑛 + 𝓁 + 𝛿 ′ + 2) 𝑛 𝑛 (( √ 1 𝜂(𝜂 + 𝓁 + )𝛿|𝑛′ −𝑛|1 2 ) with the same 𝜂 as defined earlier. 136 (5.12) Chapter 6 Implementation We now discuss the details of our specific implementation of the many-body methods that we have discussed. In our experience, we find a dearth of such documentation in scientific literature, potentially leading to the loss of valuable practical knowledge. We hope readers will find this information helpful for either developing their own codes, reproducing our results, or utilizing our code. The many-body methods in this work are implemented as part of the Lutario project [Lutario], an open-source library written in Rust, dual licensed under the permissive MIT [MIT] and Apache 2.0 licenses [Apache2]. Lutario implements a J-scheme framework for many-body calculations, upon which HF, Møller–Plesset perturbation theory to second order (MP2), IM-SRG(2), and QDPT3 are written. The code supports several systems, including quantum dots and nuclei, whose results we discuss in detail in the next chapter. The code also contains implementations of infinite matter and homogeneous electron gas, but we have not included any of those results in this work. 6.1 Programming language Rust is a systems programming language focused on memory safety and performance [Rust; RustBook]. It is intended to fulfill a niche similar to those of other close-to-metal languages such as C, C++, or Fortran. These languages are characterized by extremely low overhead on all operations and they offer a high degree of manual control over memory usage and layout. This contrasts with the higher level, garbage-collected languages such as C#, Java, Python, or R, where 137 the manual memory management is eschewed in favor of an automatic memory management with the aid of a garbage collector (GC) that reclaims unused memory without the programmer’s assistance. Rust differs from mainstream close-to-metal languages like C or C++ in a few critical ways: • The Rust language is partitioned into safe and unsafe subsets. While the unsafe subset is as flexible and performant as C, the safe subset sacrifices a bit of flexibility or performance so as to prevent the dreaded undefined behavior that plagues similar languages. Use of the safe subset is heavily encouraged by design. • Among many ideas adopted from research in functional programming languages, it offers a novel affine type system augmented with borrowing semantics, allowing easy management of scarce resources such as memory and file handles. In a way, the design choices of Rust is a natural consequence of making safety a top priority and then making pragmatic trade-offs between flexibility and performance. Nonetheless, our motivation for choosing Rust is not simply because of safety, which is certainly important but not the most important concern in numerical software. Instead, we chose Rust for a combination of reasons: • Rust includes a subset of the features commonly found in functional programming languages, greatly enhancing productivity. These features include closures, algebraic data types, and traits. While they have also made their way to other languages such as C++, Java, or C#, which were originally object-oriented but have become increasingly multi-paradigm, Rust was originally designed with these features from the outset, and as a result they integrate better into the language’s design, whereas older languages have had to retrofit these features. • Rust comes with an official package manager Cargo [Cargo] with high adoption among the community. It makes it extremely easy to build and install Rust crates (packages) from the 138 Rust package registry [CratesIo], while encouraging sharing and reuse of code. • Rust has a flourishing and close-knit community from many diverse backgrounds, ranging from system programmers to high-performance computing specialists. This aids adoption of the young language and offers a helpful environment for learners. With that being said, there are also reasons to not choose Rust: • Rust remains a very young language by any measure. While the language is officially stable, some portions remain under experimentation. Large parts of the library ecosystem are still in their infancy stages, so there is a high risk of immature, rapidly evolving libraries. • Rust puts safety above all else. As a result, highly performant but unsafe Rust code can be awkward and non-idiomatic to write. This can often be mitigated with the design of safer data abstractions, but these are also active areas of research. • The lack of a garbage collector requires significant compromises on abstractions in Rust. For example, closures in Rust are more complex (but also more performant) than those in languages with GC such as Python or JavaScript. One should consider whether these complications are a worthwhile trade-off. We will discuss the project with a perspective heavily influenced by Rust, but conceptually many of these apply to C and C++ just as well. We will use Rust snippets to illustrate concepts, but we expect any reader familiar with C++ should have little trouble adjusting to the slightly different notation. In the next two subsections we will provide some motivations to the design of Rust, which can be safely skipped. 139 6.1.1 Undefined behavior Undefined behavior (UB) is any behavior that is not defined by the language. Compilers are not obliged to detect whether a program has UB. If a program does have UB, the compiled program is not guaranteed to function correctly at all. It should not be confused with implementation-defined behavior, in which the behavior is allowed to vary from platform to platform but must remain documented and predictable. In C and C++, the list of potential UB is numerous [C11, Annex J.2, p. 557 - 571]. To name a few: • buffer overflow: use of memory beyond the range that was allocated; • null pointer dereference: attempting to dereference an invalid (null) pointer; • use after free: use of memory that has already been deallocated; • use of uninitialized data: attempting to read uninitialized variables or arrays • data races: use of the same memory location from multiple threads without proper synchronization, in which at least one of the them is performing a write; and • signed arithmetic overflow: when the result of an arithmetic operation is too large or too negative to fit in the signed integer type. In software infrastructure, UB can be a bountiful source for security vulnerabilties. In highperformance computing (HPC), the concern of UB lies less so in security, but more in the risk of incorrect computations with possibly subtle and/or non-deterministic effects. This is especially pernicious as many optimizing compilers for C, C++, and Fortran take for granted that UB never occur, leading to miscompilations when they do inevitably occur as a result of programmer error. The following C program gives an example of miscompilation due to UB: int main(int argc, char **argv) { 140 if (argc == 1) { int *p; return *p; } return 42; } If the program is executed with no arguments, then argc is 1.1 In that scenario, the program has UB: one is not permitted to dereference an uninitialized pointer p. Naively, one would expect an uninitialized variable to contain a random memory address, which is highly likely to be unallocated. Therefore, one would expect the program to crash with a segmentation fault (memory access violation) with high probability. Indeed this is what typically happens if the program is compiled without optimizations (the so-called -O0 compiler flag). However, when compiled with optimizations at level 1 (-O1) or higher under Clang or GNU C Compiler (GCC),2 the program would simply exit silently with 42, despite argc being 1. It is as if the compiler had entirely excised the if block from the code, treating argc == 1 to be an unfulfillable condition because return *p has undefined behavior, which the compiler assumes is not supposed to ever happen. In most languages, the programmer may reduce the risk of undefined behavior through appropriate discipline, defensive checks at run time, or the use of safer abstractions. A large fraction of these errors are avoided entirely through automatic memory management. 1 2 Note that argc counts the name of the program as an additional argument. This was tested on Clang 5.0.1 and GCC 7.2.1. 141 6.1.2 Uniqueness and borrowing Rust tackles UB from a different angle than most languages: it tries to prevent such mistakes from happening through static analysis of the code (the type system, in particular). This is achieved through two unconventional features adapted from its predecessor Cyclone [Jim+02]. The first idea is that of uniqueness. Some forms of data are designated as unique, which means once they are consumed or given away they cannot be used again – the compiler assures this. With the guarantee that a piece of data is unique, one effectively has exclusive control over it. Specifically: • We can modify its contents without the possibility that another agent might accidentally observe the changes. In particular, if we destroy the object, no-one – not us nor anyone else – can use it again, preventing use-after-free bugs. • We can be certain that its contents will stay the same unless we change it or relinquish control to another part of the program. This is extremely beneficial for not only optimization purposes, but also for readability. • No other thread has this data, so there is no possibility of data races. Uniqueness is a powerful guarantee, but it can also be very limiting. To overcome this Rust offers a complementary feature called borrowing, where a unique data is temporarily yielded to another agent for a limited amount of time. This duration of time is known as the lifetime of the borrow. Borrowing is classified into two kinds: • When data is mutably borrowed, the borrower will be granted temporary but exclusive control over the data. The borrower is free to do anything it pleases with the data, but it must guarantee that under all circumstances the data remains valid when the lifetime ends.3 During the lifetime of the borrow, the lender is denied all access to the data and cannot lend 3 It can, for example, destroy the data object, but it must immediately recreate a similar one in its place. 142 it again until the end of the lifetime. • Alternatively, one can grant a shared borrow of a data, which yields restricted access of the data to the borrower, which typically means the data becomes read-only. During the lifetime of the borrow, the lender can continue granting shared borrows of the data, or access the data directly under the same restrictions. This leads to a general programming principle referred to as aliasing XOR mutability: data should be modified only if it has exclusive control over the data. While this principle is not a hard and fast rule, it can aid both readability and compiler optimizations. With the idea of exclusive control encoded within the type system, Rust makes this principle enforceable by the compiler. The downside of this approach lies in the complications that uniqueness and borrowing introduce to the language and data abstractions. Programming with uniqueness types and borrowing remains fairly novel and under-explored in practice. 6.2 Structure of the program Calculations in our many-body program follows a linear pipeline: 1. Basis: Set up data structures needed to organize matrix elements. 2. Input: Read and/or compute Hamiltonian matrix elements. 3. HF: Compute coefficient matrix and HF-transformed Hamiltonian. 4. Normal ordering: Obtain Hamiltonian relative to Fermi vacuum. 5. IM-SRG: Evolve Hamiltonian using IM-SRG. 6. QDPT: Compute perturbative corrections to addition and removal energies. The first two steps are highly dependent on the quantum system involved, whereas the remaining steps are designed to be independent of the details of any particular system. We emphasize that the design of the program grew out of the needs of the program rather 143 than some idealistic vision. From our experience, attempting to dictate an “intuitive” structure to programs generally leads to leaky abstractions and lackluster performance. It is more preferable to allow the program to evolve organically to meet its own computational demands, and develop abstractions and models around the natural flow of data to aid human comprehension. 6.3 External libraries We utilize several external libraries in our program. Noteworthy ones include: • BLAS (Basic Linear Algebra Subprograms [Law+79]) is used for its vector and matrix operations, especially the GEMM (General Matrix-Matrix Multiplication) routine. Note that we do not use the reference implementation of BLAS from Netlib. We instead use highly optimized implementations such as OpenBLAS [XQS17; GG08; Wan+13]. • LAPACK (Linear Algebra Package, [And+99]) is used for solving the eigenvalue problem in the Hartree–Fock method. • The Shampine–Gordon ODE solver [SG75; ODE; SgOde] is used for solving the IM-SRG flow equation. • The wigner-symbols library [Wei99; Wei98; WSR] is used to calculate of angular momentum (re)coupling coefficients needed for J-scheme. • The non-cryptographic Fowler–Noll–Vo (FNV) [FNV] hash algorithm is used for hash tables. Rust’s default choice is more secure, but slower. 6.4 Basis and data layout A critical question in computational many-body theory is how one should store the matrix elements, which can be numerous. Generally speaking, while there is no one-size-fits-all solution, there are 144 a few distinct storage layouts that are of use to our three many-body methods. We must also be wary of introducing too many storage layouts, which would introduce bloat and redundancies to our code, reducing compilation speed, and hindering comprehension and maintenance. One of the first choices lies in the scheme: M-scheme or J-scheme? Since we wish to study nuclei and similar systems, using J-scheme is necessary as the performance of M-scheme code is noticeably worse even for something as small as helium. The divergence in performance will only worsen as one adds more particles and/or shells. But there is also a trade-off: J-scheme code can be more difficult to understand and more difficult to verify. In fact, an easy way to verify J-scheme code would be to perform computations using both J- and M-scheme and compare their results. One might be tempted to write code that performs both, but fortunately this is mostly unnecessary. J-scheme code can be used to perform pseudo-M-scheme calculations by associating each particle with a fictitious j quantum number that is always zero, which must not be confused with the physical 𝑗 quantum number. There are certain optimizations that can be done when j is always zero, but this suffices for verifying the correctness of the code. For codes up to two-body interactions with real matrix elements, we use four separate kinds of operators: • zero-body operator • standard-coupled one-body operator • standard-coupled two-body operator • Pandya-coupled two-body operator Zero-body operators are simply floating-point numbers. All other operators are stored as block-diagonal matrices to exploit the sparsity of the matrix. Specifically, because of conservation 145 laws such as [𝐻̂ , 𝐽̂3 ] = 0 our Hamiltonian matrices are guaranteed to have a certain block diagonal form: 𝑚j ≠ 𝑚j′ ⟹ ⟨𝑚j 𝛼|𝐻̂ |𝑚j′ 𝛽⟩ = 0 6.4.1 Matrix types The most basic data type is that of a matrix. A (dense) matrix containing entries of type T, denoted Mat, is a combination of three items,4 struct Mat { ptr: *mut T // data pointer num_rows: usize, // number of rows num_cols: usize, // number of columns } • Here, ptr is declared to have type *mut T, namely a mutable pointer to T.5 This is conventional but also somewhat deceptive, because we are actually storing a whole array of T objects at the location. The pointer simply provides the address to the first entry in this array, assuming the array is at least one element long. • The dimensions are declared to have type usize,6 which is the pointer-sized unsigned integer type conventionally used to store lengths of data in memory. 4 We aim to use valid Rust code throughout to illustrate concepts, but the actual implementation may differ slightly in details. 5 This is equivalent to (T *) in C or C++. 6 This is equivalent to size_t in C or C++. 146 We use zero-based indices throughout the discussion. There are two common matrix layout conventions: row-major (colloquially known as C order), where the matrix is laid out row by row, or col-major (Fortran order), where the matrix is laid out column by column. In both cases, the index 𝑓 (𝑖, 𝑗) of an element within the array at ptr is given by the equation 𝑓 (𝑖, 𝑗) = 𝑖𝑛 + 𝑗 (6.1) What differs is the interpretation of the variables: • In the row-major convention, 𝑖 is the row index, 𝑛 is the number of columns, and 𝑗 is the column index. • In the column-major convention, 𝑖 is the column index, 𝑛 is the number of rows, and 𝑗 is the row index. In our code, we adhere to the row-major convention. We use the Mat data type to represent an owning matrix: it has exclusive ownership of its contents. When a Mat object is destroyed, its associated memory is automatically deallocated by the destructor we implemented. To share the matrix or submatrices of it, we introduce two separate types MatRef<'a, T> (shared matrix reference) and MatMut<'a, T> (mutable matrix reference). The reference types both have a lifetime parameter 'a that determines the lifetime of the borrow. Unlike Mat, we introduce an additional field to the contents of MatRef and MatMut: struct MatRef { // or MatMut ptr: *const T // data pointer num_rows: usize, // number of rows 147 num_cols: usize, // number of columns stride: usize, // gap between each row } The stride parameter allows us to extract references of submatrices (incomplete matrices). This is useful because in many situations we only want to operate on, say, the hole states but not the particle states, or vice versa. In this case, the indexing formula in Eq. 6.1 is interpretedly differently: 𝑛 is now the stride of the matrix. We also use a triangular matrix data type TriMat, which can represent not just triangular matrices but also ±-symmetric and ±-Hermitian matrices. In a (non-strict) triangular matrix data type, we store the diagonal and all elements above it, or the diagonal and all elements below it. Because we chose row-major matrices, the latter convention turns out to be more convenient, as we can write the indexing formula as: 𝑔(𝑖, 𝑗) = 𝑖+1 𝑗 (𝑖 + 1)𝑖 +𝑗 + = ( 2 ) (1) 2 which is independent of the matrix’s dimensions. This formula readily generalizes to higher-rank simplex-shaped tensors. A block-diagonal matrix is conceptually a matrix composed to square matrices arranged along the diagonal. In terms of data, a block-diagonal matrix is simply an array of matrices. In Rust, this can be represented by the nested type Vec>, where Vec denotes a growable array7 of objects of type M. Each block (or channel as we often call them in code) is indexed by 𝑙 (channel index) and each element is indexed by a triplet (𝑙, 𝑢, 𝑣), with 𝑢 being the row index within the block and 𝑣 7 This is approximately equivalent to std::vector in C++. 148 being the column index within the block. The indices 𝑢 and 𝑣 are known as auxiliary indices. The size of blocks may vary within the matrix. Programmatically, block-diagonal matrices are represented by an array of matrices. In Rust, this would be Vec> where Mat denotes our own custom matrix data type with entries of type T. Effectively, all operations on block-diagonal matrices are performed block-wise. For example, 𝑙 matrix multiplication between two block matrices 𝐴𝑙𝑢𝑣 and 𝐵𝑢𝑣 can be written as: 𝑙 𝑙 𝐶𝑢𝑤 = ∑ 𝐴𝑙𝑢𝑣 𝐵𝑣𝑤 𝑣 which is equivalent to 𝑪 𝑙 = ∑ 𝑨𝑙 𝑩𝑙 𝑣 This is a very convenient computational property. It provides an avenue for the parallelization of block-diagonal matrix multiplication, since the block operations are independent of each other. We can generalize block-diagonal matrices such that the blocks are no longer required to be square nor do they have to lie on the diagonal. Instead, they simply need to be arranged so as to touch each other at their top-left/bottom-right corners. Implementation of operations on these generalized block-diagonal matrices remains identical. There are additional optimizations one can apply to the layout of block-diagonal matrices. One can, for example, pack the contents of all matrices into a single contiguous array and store the matrix dimensions in a separate array along with offsets to each of these blocks. The array of offsets ℎ(𝑙), which we call block offsets, is given by the formula 𝑙−1 ℎ(𝑙) = ∑ 𝑒(𝑙 ′ ) 𝑙 ′ =0 149 where 𝑒(𝑙) is the extent of the 𝑙-th block, which for an ordinary rectangular block with dimensions 𝑚(𝑙) × 𝑛(𝑙) is simply 𝑒(𝑙) = 𝑚(𝑙)𝑛(𝑙). For convenience, we allow the indices of ℎ(𝑙) to range from 0 to 𝑙 rather than 0 to 𝑙 − 1 as would be typical with zero-based indexing. The value of ℎ𝑙 is simply the length of the entire array. To save memory, the block offsets can be shared between matrices that have precisely the same layout of blocks. 6.4.2 Basis charts A row index pair (𝑙, 𝑢) can be considered an abstract label for a left basis vector in this matrix, whereas a column index pair (𝑙, 𝑣) can be considered a label for a right basis vector. For a one-body operators, each index pair corresponds to a one-particle state in J-scheme, |𝑗𝜅𝜇⟩ with 𝑗 being the angular momentum magnitude, 𝜅 representing all remaining conserved quantum numbers, and 𝜇 representing all remaining non-conserved quantum numbers. Since J-scheme states are reduced states, the angular momentum projection 𝑚 is absent entirely. The combination of (𝑗, 𝜅) is conserved, thus we have the bijection 𝑙 ≃ (𝑗, 𝜅) in the one-particle basis. In code, we can store this bijection using a special bidirectional lookup table that we call a chart, which is a pair of two data structures: struct Chart { encoder: HashMap, 150 decoder: Vec, } The encoder is a hash table that maps from a T object into an index, whereas the decoder is a vector that maps from an index to a T object. Here, T can be any hashable object with an equality relation. In this case, we choose T = (Half, K), where Half is our custom data type for representing half-integers like 𝑗, and K is the type of 𝜅. In our code, we do not store 𝜅 directly, but represent 𝜅 using another abstract index 𝑘 isomorphic to 𝜅. This design allows the type of the 𝑙 ≃ (𝑗, 𝑘) chart to be completely independent of the type of 𝜅, avoiding code bloat due to monomorphization. The rationale for this is that most operations in many-body theory only require knowledge of the total angular momentum magnitude 𝑗 and not of 𝜅. There is also a bijection between 𝜇 and 𝑢 but it is 𝑙-dependent, (𝑙, 𝑢) ≃ (𝑙, 𝜇) This bijection is needed to recover the non-conserved quantum numbers and is needed to interpret matrix elements (e.g. reading input matrix elements, displaying output), but is irrelevant within the core of the many-body methods. For two-body operators, each index pair corresponds to an unnormalized two-particle state in J-scheme, |𝑗12 𝜅12 𝑗1 𝜅1 𝜇1 𝑗2 𝜅2 𝜇2 ⟩ 151 Since 𝑗12 𝜅12 is conserved, we have the bijection, 𝑙12 ≃ (𝑗12 , 𝜅12 ) akin to one-particle states. Notice that the two-particle state can be compressed to |𝑗12 𝑝1 𝑝2 ⟩ where 𝑝 is some index isomorphic to (𝑗, 𝜅, 𝜇) that we call the orbital index, 𝑝 ≃ (𝑗, 𝜅, 𝜇) The 𝜅12 disappears because it is determined uniquely by the relation ⎧ ⎪ ⎪ ⎪ ̇ 2 ⎪𝜅1 +𝜅 𝜅12 = ⎨ ⎪ ⎪ ⎪ 𝜅 −𝜅 ̇ ⎪ ⎩ 1 2 if operator standard-coupled (6.2) if operator is Pandya-coupled ̇ denotes the Abelian operation used to combine the conserved where the dotted plus sign (+) quantum numbers and the dotted minus sign (−) ̇ denotes its inverse. Usually, this is simply addition, but for certain multiplicative quantum numbers like parity this would translate to multiplication. We thus have the bijection (𝑙12 , 𝑢12 ) ≃ (𝑗12 , 𝑝1 , 𝑝2 ) which allows us to relate two-particle states to one-particle states (orbitals) entirely independent of 152 the concrete quantum numbers. It is not necessary to relate the two-particle index pairs (𝑙12 , 𝑢12 ) to the concrete quantum numbers directly. For convenience, we use a specific choice of orbital index, defined as 𝑝(𝑙, 𝑢) = 𝑀(𝑙) + 𝑢 where 𝑀(𝑙) is an array of channel offsets, defined as 𝑙−1 𝑀(𝑙) = ∑ 𝑚(𝑙 ′ ) (6.3) 𝑙 ′ =0 where 𝑚(𝑙 ′ ) is the number of one-particle states in the one-particle channel 𝑙 ′ . For standard-coupled two-body operators, we impose an additional constraint to save memory: 𝑝1 ≥ 𝑝2 The antisymmetry of the states allows us to easily invert the order if this constraint is violated: |𝑗12 𝑝2 𝑝1 ⟩ = (−)𝑗1 +𝑗2 −𝑗12 |𝑗12 𝑝1 𝑝2 ⟩ In overall, we classify the bijections into two broad categories: • Bijections that are dependent on the concrete quantum numbers 𝜅 and 𝜇 are stored in a generic8 data structure that we call the atlas, which necessarily depend on the types of 𝜅 and 𝜇. • Bijections that are independent of the concrete quantum numbers, as well as layout information (dimensions and offsets, as in Eqns. 6.3, 6.4) are stored in a non-generic data 8 Generic data structures are known as templated types in C++. 153 structure that we call the scheme. The scheme is stored within the atlas for convenience, but most many-body methods do not require the atlas at all; they only need the scheme. The atlas is typically only needed during the input stage where matrix elements are read in, for conversion between J-scheme and pseudo-Mscheme, or for identification of basis states in debugging/display. 6.4.3 Access of matrix elements Within each block, we partition the states into several contiguous parts, indexed by a part label 𝜒 . • For the one-body operator, states are divided into hole (𝜒 = 0) and particle (𝜒 = 1) parts. • For the standard-coupled two-body operator, states are divided into hole-hole (𝜒 = 0), hole-particle/particle-hole (𝜒 = 1), and particle-particle (𝜒 = 2) parts. • For the Pandya-coupled two-body operator, states are divided into hole-hole (𝜒 = (0, 0)), hole-particle (𝜒 = (0, 1)), particle-hole (𝜒 = (1, 0)), and particle-particle (𝜒 = (1, 1)) parts. This partitioning scheme makes it possible to avoid unnecessary iteration over states that do not contribute to a many-body diagram. Implementing this requires subdividing the channels according to 𝜒 , thus we will need analogous quantities to those in Eq. 6.3, such as: 𝑙−1 𝜒 −1 𝑀(𝑙, 𝜒 ) = ∑ ∑ 𝑚(𝑙 ′ , 𝜒 ′ ) (6.4) 𝑙 ′ =0 𝜒 ′ =0 which we call the part offset. Here, 𝑚(𝑙 ′ , 𝜒 ′ ) is the number of one-particle states in the one-particle channel 𝑙 ′ within part 𝜒 ′ . While the implicit antisymmetrization of standard-coupled two-particle states saves a significant amount of memory, they do complicate the translation of many-body equations into 154 code. To reduce this cognitive load, we introduce an augmented two-particle state index triplet (𝑡12 , 𝑙12 , 𝑢12 ) that includes an extra permutation parameter 𝑡12 . The permutation 𝑡12 can be either 0 or 1 if 𝑝1 ≠ 𝑝2 , or it can only be 0 if 𝑝1 = 𝑝2 . • If 𝑡12 = 0, then we interpret (𝑡12 , 𝑙12 , 𝑢12 ) as the usual state |𝑗12 ; 𝑝1 𝑝2 ⟩. • However, if 𝑡12 = 1, then we interpret (𝑡12 , 𝑙12 , 𝑢12 ) as the permuted state |𝑗12 ; 𝑝2 𝑝1 ⟩ = (−)𝑗1 +𝑗2 −𝑗12 |𝑗12 ; 𝑝1 𝑝2 ⟩. The augmented state (𝑡12 , 𝑙12 , 𝑢12 ) has the advantage of being in a one-to-one correspondence to our intuitive notion of a two-particle state on paper. Thus it offers a useful abstraction that hides the internal complications of implicit antisymmetrization. When a matrix element is accessed using an augmented state index, we must perform a phase adjustment depending on the value of 𝑡, 𝐟𝐮𝐧𝐜𝐭𝐢𝐨𝐧 get(𝑉 , (𝑡12 , 𝑙12 , 𝑢12 ), (𝑡34 , 𝑙34 , 𝑢34 )) 𝐢𝐟 𝑙12 ≠ 𝑙34 0 𝐞𝐥𝐬𝐞 𝑙 𝜙12 𝜙34 𝑉𝑢12 12 𝑢34 where ⎧ ⎪ ⎪ ⎪ ⎪0 𝜙𝑎𝑏 = ⎨ ⎪ ⎪ ⎪ −(−1)𝑗𝑎 +𝑗𝑏 −𝑗𝑎𝑏 ⎪ ⎩ if 𝑡𝑎𝑏 = 0 if 𝑡𝑎𝑏 = 1 When a matrix element is set using an augmented state index, we perform the same phase 155 adjustment to the value being set, 𝐟𝐮𝐧𝐜𝐭𝐢𝐨𝐧 set(𝑉 , (𝑡12 , 𝑙12 , 𝑢12 ), (𝑡34 , 𝑙34 , 𝑢34 ), 𝑥) assert(𝑙12 = 𝑙34 ) 𝑙 𝑉𝑢12 ← 𝜙12 𝜙34 𝑥 12 𝑢34 where the left arrow (←) denotes array element assignment. If 𝑙12 ≠ 𝑙34 , the operation aborts with an error. However, this setter is a rather leaky abstraction. Suppose we attempt to, say, increment every matrix element by one, 𝑉𝑝𝑞𝑟𝑠 ← 𝑉𝑝𝑞𝑟𝑠 + 1 using the naive algorithm 𝐟𝐨𝐫 pq 𝐢𝐧 all_augmented_states 𝐟𝐨𝐫 rs 𝐢𝐧 all_augmented_states set(𝑉 , pq, rs, get(𝑉 , pq, rs) + 1) As it turns out, this will cause many of the matrix elements to be incremented twice instead of just once. This is because multiple augmented states map to the same unaugmented state. To remedy 156 this, we introduce a separate abstraction for the addition-assignment operation defined as 𝐟𝐮𝐧𝐜𝐭𝐢𝐨𝐧 add(𝑉 , (𝑡12 , 𝑙12 , 𝑢12 ), (𝑡34 , 𝑙34 , 𝑢34 ), 𝑥) assert(𝑙12 = 𝑙34 ) 𝜙 𝜙 𝑙 𝑙 𝑉𝑢12 ← 𝑉𝑢12 + 12 34 𝑥 12 𝑢34 12 𝑢34 𝑁 𝑁 12 34 where 𝑁𝑎𝑏 is the normalization factor in Eq. 3.27, which simplifies to 𝑁𝑎𝑏 = 2−𝛿𝑝 𝑝 if non-existent 𝑎 𝑏 states are excluded. The denominator helps compensate for the overcounting. 6.4.4 Initialization of the basis 6.4.4.1 Input single-particle basis To set up all the necessary basis structures for many-body theory, we require the following data, all of which are specific to each quantum system: • We need a list of all single-particle states (“orbitals”) in the quantum system. • For every single-particle state, we need to know its part label 𝜒 , which tells us whether it is a hole (occupied) state or a particle (unoccupied) state relative to the Fermi vacuum Slater determinant. • For every single-particle state, we need to know to its 𝑗, 𝜅, and 𝜇 quantum numbers. We allow both 𝜅 and 𝜇 to be of practically any type and leave them as generic type parameters. • We require 𝜅-type values (1) to be cloneable, (2) to have a total equality relation, (3) to be hashable, and (4) to form an abelian group (i.e. to support the +̇ and −̇ operations in Eq. 6.2). The first three conditions are needed to set up efficient mappings between arbitrary 𝜅 values and 𝑘 indices using hash tables.9 The last condition is needed to compute conserved 9 We could have asked for a total ordering instead of hashability, in which case we would use ordered trees instead of hash tables. However, trees are slower and the inherent ordering of trees does not convey any advantages for our 157 quantum numbers for multi-particle states. • We require 𝜇-type values (1) to be cloneable, (2) to have a total equality relation, and (3) to be hashable. These conditions are needed to set up efficient mappings between arbitrary 𝜇 values and 𝑢 indices. Once we have this information, we can construct both the atlas and the scheme data structures for the system. 6.4.4.2 Channelized atlas initialization The general process for setting up any channelized basis is straightforward. The input is a sequence of (𝜆, 𝜒 , 𝜇) states, where • 𝜆 is the channel, • 𝜒 is the part, and • 𝜇 is any auxiliary information needed to uniquely identify it within all states of the same 𝜆. The output are various charts, including 𝑙 ≃ 𝜆 and (𝑙, 𝑢) ≃ (𝑙, 𝜇), and layout information (arrays of dimensions and offsets, such as 𝑀(𝑙) in Eq. 6.3). The process goes as follows: 1. Iterate over each state (𝜆, 𝜒 , 𝜇) and incrementally build the single-particle chart for 𝑙 ≃ 𝜆. Store each (𝑙, 𝜒 , 𝜇) to a temporary array. 2. Sort the temporary array in lexicographical order, grouping the states by 𝑙 and then by 𝜒 . 3. Iterate over the sorted array to derive the charts 𝑝 ≃ (𝑙, 𝑢) ≃ (𝑙, 𝜇) and layout information (see Eqns. 6.3, 6.4). 6.4.4.3 Many-body atlas initialization The channelized atlas initialization procedure is then applied to one-particle, standard-coupled two-particle, and Pandya-coupled two-particle bases: purposes. 158 1. To build the one-particle basis for the one-body operator, iterate over the input singleparticle basis (Sec. 6.4.4.1) states (𝜒 , 𝑗, 𝜅, 𝜇) and incrementally update the single-particle channel chart 𝑘 ≃ 𝜅. The states (𝜆 = (𝑗, 𝑘), 𝜒 , 𝜇) are then passed to the channelized atlas initialization procedure (Sec. 6.4.4.2) to obtain the necessary charts and layouts. 2. To build the two-particle basis for the standard-coupled two-body operator, iterate over the Cartesian product of the single-particle states with itself, yielding (𝑙1 , 𝑢1 , 𝑙2 , 𝑢2 ) per iteration: a. Use the single-particle chart to recover 𝑝1 , 𝑝2 , 𝑗1 , 𝑗2 , 𝜅1 , 𝜅2 , 𝜒1 , and 𝜒2 . b. Skip the iteration if 𝑝1 < 𝑝2 . ̇ 2 and 𝜒12 = 𝜒1 + 𝜒2 (𝜒1 , 𝜒2 ∈ {0, 1} and 𝜒12 ∈ {0, 1, 2}). c. Compute 𝜅12 = 𝜅1 +𝜅 d. Update the two-particle channel chart 𝑘12 ≃ 𝜅12 . { } e. For each 𝑗12 compatible with 𝑗1 𝑗2 𝑗12 , push the state (𝜆 = (𝑗12 , 𝑘12 ), 𝜒 = 𝜒12 , 𝜇 = (𝑝1 , 𝑝2 )) into a temporary array. Finally, pass the temporary array of states to the channelized atlas initialization procedure (Sec. 6.4.4.2) to obtain the necessary charts and layouts.10 3. To build the two-particle basis for the Pandya-coupled two-body operator, iterate over the Cartesian product of the single-particle states with itself, yielding (𝑙1 , 𝑢1 , 𝑙4 , 𝑢4 ) per iteration: a. Use the single-particle chart to recover 𝑝1 , 𝑝4 , 𝑗1 , 𝑗4 , 𝜅1 , 𝜅4 , 𝜒1 , and 𝜒4 . b. Compute 𝜅14 = 𝜅1 −𝜅 ̇ 4 and 𝜒14 = 𝜒1 + 2𝜒4 (𝜒1 , 𝜒4 ∈ {0, 1} and 𝜒14 ∈ {0, 1, 2, 3}). c. Update the two-particle channel chart 𝑘14 ≃ 𝜅14 . { } d. For each 𝑗14 compatible with 𝑗1 𝑗4 𝑗14 , push the state (𝜆 = (𝑗14 , 𝑘14 ), 𝜒 = 𝜒14 , 𝜇 = (𝑝1 , 𝑝4 )) into a temporary array. Finally, pass the temporary array of states to the channelized atlas initialization procedure 10 The temporary array isn’t technically needed, especially if the language has good support for coroutines/generators, allowing the data to be passed into the generic channelized atlas initialization procedure in parallel. We found it easier to describe the algorithm this way, and regardless the temporary array has a negligible impact on performance. 159 (Sec. 6.4.4.2) to obtain the necessary charts and layouts. Note that step 2 and 3 differ in only two aspects: the abelian operation used for 𝜅 (addition vs subtraction), and the presence or absence of the implicit antisymmetrization constraint 𝑝1 ≥ 𝑝2 . 6.4.4.4 Basis initialization for quantum dots The Fock–Darwin basis is used for quantum dot calculations. In our implementation of the quantum dot system, 𝑗 is not used, so we can simply set it to zero throughout. The set of conserved quantum numbers are 𝜅 = (𝑚𝓁 , 𝑚𝑠 ), the projections of orbital angular momentum and spin. This leaves us with 𝜇 = 𝑛, the principal quantum number. The abelian group on 𝜅 = (𝑚𝓁 , 𝑚𝑠 ) is defined in a straightforward manner: 0̇ = (0, 0) ̇ 𝓁′ , 𝑚𝑠′ ) = (𝑚𝓁 + 𝑚𝓁′ , 𝑚𝑠 + 𝑚𝑠′ ) (𝑚𝓁 , 𝑚𝑠 )+(𝑚 (𝑚𝓁 , 𝑚𝑠 )−(𝑚 ̇ 𝓁′ , 𝑚𝑠′ ) = (𝑚𝓁 − 𝑚𝓁′ , 𝑚𝑠 − 𝑚𝑠′ ) The occupied states for quantum dots are always selected in complete shells – a shell consists of all states that share the same single-particle energy in Eq. 5.5. Moreover, systems we study always contain complete shells filled from the bottom. These are the 𝑁 -particle electron configurations we use: • 𝑁 = 2: 0s2 • 𝑁 = 6: 0s2 0p4 • 𝑁 = 12: 0s2 0p4 1s2 0d4 • 𝑁 = 20: 0s2 0p4 1s2 0d4 1p4 0f 4 • etc. 160 Here, the notation 𝑛𝓁 𝑖 means there are 𝑖 particles in states with 𝑛 and |𝑚𝓁 | = 𝓁 and s ↔ 0, p ↔ 1, d ↔ 2, f ↔ 3, as usual for spectroscopic notation. 6.4.4.5 Basis initialization for nuclei The 3D harmonic oscillator basis is used for nuclei calculations. In J-scheme nuclear calculations, the input 𝑗 quantum number is simply the total angular momentum magnitude 𝑗. The set of conserved quantum numbers are 𝜅 = (𝜋, 𝑚𝑡 ), parity and isospin projection. This leaves us with 𝜇 = 𝑛, the principal quantum number. The abelian group on 𝜅 = (𝜋, 𝑚𝑡 ) is defined as: 0̇ = (+, 0) ̇ ′ , 𝑚𝑡′ ) = (𝜋𝜋 ′ , 𝑚𝑡 + 𝑚𝑡′ ) (𝜋, 𝑚𝑡 )+(𝜋 (𝜋, 𝑚𝑡 )−(𝜋 ̇ ′ , 𝑚𝑡′ ) = (𝜋𝜋 ′ , 𝑚𝑡 − 𝑚𝑡′ ) In pseudo-M-scheme nuclear calculations, which we use mainly for testing purposes, the input 𝑗 quantum number11 is artificially set to zero. The set of conserved quantum numbers are 𝜅 = (𝜋, 𝑚𝑗 , 𝑚𝑡 ), parity and the projections of total angular momentum and isospin. This leaves us with 𝜇 = (𝑛, 𝑗), the principal quantum number and total angular momentum magnitude. Note that 𝑗 cannot be put into 𝜅 because we are using uncoupled two-particle states. 11 Not to be confused with the physical 𝑗 quantum number, which is put in 𝜇. 161 The abelian group on 𝜅 = (𝜋, 𝑚𝑗 , 𝑚𝑡 ) is defined as: 0̇ = (+, 0, 0) ̇ ′ , 𝑚𝑗′ , 𝑚𝑡′ ) = (𝜋𝜋 ′ , 𝑚𝑗 + 𝑚𝑗′ , 𝑚𝑡 + 𝑚𝑡′ ) (𝜋, 𝑚𝑗 , 𝑚𝑡 )+(𝜋 (𝜋, 𝑚𝑗 , 𝑚𝑡 )−(𝜋 ̇ ′ , 𝑚𝑗′ , 𝑚𝑡′ ) = (𝜋𝜋 ′ , 𝑚𝑗 − 𝑚𝑗′ , 𝑚𝑡 − 𝑚𝑡′ ) 6.5 Input matrix elements The procurement of input matrix elements varies wildly from system to system and there is not much code that can be shared among them outside of I/O utilities. 6.5.1 Inputs for quantum dots The one-body matrix for quantum dots is diagonal and can be computed using Eq. 5.5. Two-body matrix elements are more difficult to compute. We outsource the bulk of the work to the OpenFCI package [Kva08] and precompute the non-antisymmetrized matrix elements of Eq. 5.7 with the frequency-dependence factored out: ⟨(𝑛𝑚)1 (𝑛𝑚)2 |𝐻̂ 2 |(𝑛𝑚)3 (𝑛𝑚)4 ⟩ √ ℏ𝜔𝐸h (Recall that 𝑚 is a shorthand for 𝑚𝓁 for quantum dots.) The elements are stored in a simple binary file format. In this format, the file is contiguous array of 16-byte entries, where the first 8 bytes of each entry contains the quantum numbers 𝑛1 , 𝑚1 , 𝑛2 , 𝑚2 , 𝑛3 , 𝑚3 , 𝑛4 , 𝑚4 in that order. Each 𝑛 is an 8-bit unsigned integer and each 𝑚 is a 8-bit 162 signed integer. The remaining 8 bytes contain the value of the matrix element as a little-endian 64-bit IEEE 754 double-precision floating-point number. Schematically, we can depict an entry as the following structure: struct Entry { n1: u8, m1: i8, n2: u8, m2: i8, n3: u8, m3: i8, n4: u8, m4: i8, value: f64, } To save space, not all matrix elements are stored. We restrict matrix elements to those that satisfy both of the following canonicalization conditions: (𝑝1 , 𝑝2 ) ≤ sort(𝑝3 , 𝑝4 ) (𝑝1 , 𝑝3 ) ≤ (𝑝2 , 𝑝4 ) 163 where ⎧ ⎪ ⎪ ⎪ ⎪(𝑝3 , 𝑝4 ) sort(𝑝3 , 𝑝4 ) = ⎨ ⎪ ⎪ ⎪ (𝑝 , 𝑝 ) ⎪ ⎩ 4 3 𝑘 (𝑘 + 2) + 𝑚𝑖 𝑝𝑖 = 𝑖 𝑖 2 if 𝑝3 ≤ 𝑝4 otherwise 𝑘𝑖 = 2𝑛𝑖 + |𝑚𝑖 | Note that comparisons such as (𝑎, 𝑏) ≤ (𝑐, 𝑑) use lexicographical ordering. 6.5.2 Inputs for nuclei The one-body matrix for nuclei is the kinetic energy operator, which is not diagonal but can still be easily computed using Eq. 5.12. Note that the equation does not include the (1 − 1/𝐴) factor that arises from the center-of-mass kinetic energy subtraction. The two-body matrix elements consists of two parts. Firstly, there is a two-body component arising from the center-of-mass kinetic energy subtraction: 𝒑̂ ⋅ 𝒑̂ ⟨𝑝𝑞| − 1 2 |𝑝𝑞⟩ ( 𝑚𝐴 ) This quantity can be computed easily in the center-of-mass frame. The Talmi–Brody–Moshinsky transformation brackets [Tal52; BM67; Mos59] can be used to convert the result back into lab frame. The second part is the actual nuclear interaction. There are many possible choices here, and they are often available precomputed in a variety of tabular formats. A common format that used for nuclear matrix elements is the Darmstadt ME2J format 164 [Bin14; Cal14; Lan14]. The chiral-EFT interactions, including [EM03], are often distributed in this format. In this format, all matrix elements are stored in a predefined order without explicitly writing out the quantum numbers. The iteration order is parametrized by (𝑒max , 𝑛max , 𝓁max , 𝐸max ) as defined in Eqns. 5.9, 5.10, 5.11. The first three parameters constrain the single-particle basis, which is constructed by the following algorithm: 𝐟𝐨𝐫 𝑒 𝐢𝐧 0, … , 𝑒max 𝑒 𝐟𝐨𝐫 𝜆 𝐢𝐧 0, … , ⌊ ⌋ 2 𝐥𝐞𝐭 𝓁 = 2𝜆 + (𝑒 mod 2) 𝐥𝐞𝐭 𝑛 = 𝑒−𝓁 2 𝐢𝐟 𝓁 > 𝓁max 𝐛𝐫𝐞𝐚𝐤 𝐢𝐟 𝑛 > 𝑛max 𝐜𝐨𝐧𝐭𝐢𝐧𝐮𝐞 | 1| 1 𝐟𝐨𝐫 𝛿 𝐢𝐧 ||𝓁 − || − , … , 𝓁 2| 2 | 1 𝐥𝐞𝐭 𝑗 = 𝛿 + 2 𝐲𝐢𝐞𝐥𝐝 (𝑒, 𝑛, 𝓁 , 𝑗) The algorithm establishes an ordering on the single-particle states, which we denote (𝑒1 , 𝑛1 , 𝓁1 , 𝑗1 ), (𝑒2 , 𝑛2 , 𝓁2 , 𝑗2 ), … , (𝑒𝑛 , 𝑛𝑛 , 𝓁𝑛 , 𝑗𝑛 ) b b b b where 𝑛b is the number of single-particle states. Then, we must iterate over the two-body matrix 165 elements in the following order, constrained by 𝐸max : 𝐟𝐨𝐫 𝑝 𝐢𝐧 1, … , 𝑛b 𝐟𝐨𝐫 𝑞 𝐢𝐧 1, … , 𝑝 𝐢𝐟 𝑒𝑝 + 𝑒𝑞 > 𝐸max 𝐛𝐫𝐞𝐚𝐤 𝐟𝐨𝐫 𝑟 𝐢𝐧 1, … , 𝑝 𝐟𝐨𝐫 𝑠 𝐢𝐧 1, … , (𝐢𝐟 𝑟 < 𝑝 𝐭𝐡𝐞𝐧 𝑟 𝐞𝐥𝐬𝐞 𝑞) 𝐢𝐟 𝑒𝑟 + 𝑒𝑠 > 𝐸max 𝐛𝐫𝐞𝐚𝐤 𝐢𝐟 (𝓁1 + 𝓁2 + 𝓁3 + 𝓁4 ) mod 2 ≠ 0 𝐜𝐨𝐧𝐭𝐢𝐧𝐮𝐞 𝐟𝐨𝐫 𝐽 𝐢𝐧 max{|𝑗𝑝 − 𝑗𝑞 |, |𝑗𝑟 − 𝑗𝑠 |}, … , min{𝑗𝑝 + 𝑗𝑞 , 𝑗𝑟 + 𝑗𝑠 } 𝐟𝐨𝐫 𝑇 𝐢𝐧 0, 1 𝐟𝐨𝐫 𝑀𝑇 𝐢𝐧 −𝑇 , … , 𝑇 𝐲𝐢𝐞𝐥𝐝 (𝑛𝑝 , 𝓁𝑝 , 𝑗𝑝 , 𝑛𝑞 , 𝓁𝑞 , 𝑗𝑞 , 𝑛𝑟 , 𝓁𝑟 , 𝑗𝑟 , 𝑛𝑠 , 𝓁𝑠 , 𝑗𝑠 , 𝐽 , 𝑇 , 𝑀𝑇 ) Note that in ME2J, the particle physics convention is used for isospin, so 𝑚𝑡 = − 12 is for neutrons and 𝑚𝑡 = + 12 is for protons. 6.6 Implementation of HF The overall structure of our HF program is as follows: 166 1. Begin with the initial coefficient matrix 𝑪 (0) set to the identity matrix. 2. Now we loop over 𝑖 from 1 and terminate at some high cut-off (e.g. 1024): a. Compute the Fock matrix 𝑭 (new) using 𝑪 (𝑖−1) . b. Mix 𝑭 (𝑖−1) and 𝑭 (new) to obtain 𝑭 (𝑖) using Eq. 6.6. c. Solve the Hartree–Fock equation as a Hermitian eigenvalue problem on 𝑭 (𝑖) . This results in a new set of coefficients 𝑪 (𝑖) and a vector of eigenvalues (orbital energies) 𝜺 (𝑖) . We use heevr from LAPACK for this, applied separately to every block of the matrix. (𝑖) d. Compute the sum of orbital energies 𝑆 (𝑖) = ∑𝑝 𝚥̆𝑝2 𝜀𝑝 as a diagnostic for convergence. e. Adjust the linear mixing factor using Eq. 6.7. f. Test how much 𝑆 (𝑖) has changed compared to 𝑆 (𝑖−1) . If this is within the desired tolerance, break the loop. 3. Report whether the HF calculation has reached convergence (i.e. whether the loop was broken because the tolerance has met). Usually, the program will abort if this fails. 4. Transform the Hamiltonian using the final coefficient matrix. 6.6.1 Calculation of the Fock matrix From 𝑪, we compute an auxiliary matrix 𝑸 defined as 𝑄𝑟𝑠 = ∑ 𝐶 ∗ ′ 𝐶𝑠𝑖 ′ 𝑖⧵ 𝑟𝑖 This summation may be readily computed using GEMM. Using 𝑸, we can reduce the cost of computing the Fock matrix, which is now described by 167 this equation in J-scheme: 2 𝚥̆𝑝𝑟 ̂ 𝐹𝑝𝑞 = ⟨𝑝|𝐻1 |𝑞⟩ + ∑ 2 𝑄𝑟𝑠 ⟨𝑝𝑟|𝐻̂ 2 |𝑞𝑠⟩ 𝑗𝑝𝑟 𝑟𝑠 𝚥̆𝑝 (6.5) Compared with Eq. 4.7, which has a triply-nested sum, this equation only has a doubly-nested sum. As a demonstration of our J-scheme framework, we include the code used to calculate the two-body contribution to the Fock matrix below. pub fn fock2( h2: &OpJ200, q1: &OpJ100, f1: &mut OpJ100, ) { let scheme = h2.scheme(); for pr in scheme.states_20(&occ::ALL2) { let (p, r) = pr.split_to_10_10(); for q in p.costates_10(&occ::ALL1) { for s in r.costates_10(&occ::ALL1) { for qs in q.combine_with_10(s, pr.j()) { f1.add(p, q, pr.jweight(2) / p.jweight(2) * q1.at(r, s) 168 * h2.at(pr, qs)); } } } } } The inputs to this function are the three operator matrices h2 (𝑯2 , the two-body Hamiltonian), q1 (𝑸), and f1 (𝑭 ). The output is f1 (𝑭 is mutated in-place). The function begins by binding a reference of the scheme of h2 to the scheme variable. This is done out of convenience. One could just as well have chosen q1.scheme(), or f1.scheme(), since all three operators are expected to have the same scheme as a pre-condition. The outermost loop over iterates over all standard-coupled two-particle states |𝑗𝑝𝑟 ; 𝑝𝑟⟩. Keep in mind that although in storage we deduplicate states related by antisymmetry, the high-level interface here takes great pains to avoid exposing this internal detail. The two-particle state |𝑗𝑝𝑟 ; 𝑝𝑟⟩ is then split into two single-particle states |𝑝⟩ and |𝑟⟩. Note that this is a many-to-one process: multiple two-particle state can split into the same pair of single-particle states. The next loop iterates over all |𝑞⟩ that are also co-states of |𝑝⟩: these are all states that share the same channel as |𝑝⟩. These states have the same 𝑙 ≃ (𝑗, 𝜅) and thus reside within the same one-body matrix block, allowing us to avoid wasting time on matrix elements that are trivially zero. Another loop iterates over all |𝑠⟩ that are co-states of |𝑟⟩. In the innermost loop, we combine |𝑞⟩, |𝑠⟩, and 𝑗𝑝𝑟 to form the state |𝑗𝑝𝑟 ; 𝑞𝑠⟩. This loop is somewhat unusual in that it iterates at most once. If for some reason the state |𝑗𝑝𝑟 ; 𝑞𝑠⟩ is forbidden, the innermost loop would do nothing. Otherwise, there can only be one state |𝑗𝑝𝑟 ; 𝑞𝑠⟩ that satisfies 169 the requirements. Lastly, we add the appropriate contributions to f1 using the usual formula. The add function and at (getter) automatically handle the antisymmetrization phases behind the scenes. Note that the p.jweight(n) function computes 𝚥̆𝑝𝑛 . This code is written in a rather naive way and utilizes the high-level interface of our J-scheme framework. It is certainly not the most efficient way of calculating the Fock matrix, but we consider its simplicity to be an advantage. Compared to other parts of the calculation, this sum is far from being the bottleneck, thus optimizing this code is not a high priority. 6.6.2 Ad hoc linear mixing In some systems, the convergence of Hartree–Fock calculations can sometimes be very slow. This is usually the result of a highly oscillatory convergence. Several methods exist to mitigate this problem, including direct inversion of the iterative subspace (DIIS) [Pul80; Pul82] and Broyden’s method [Bro65]. In our code, we implement a very simple ad hoc linear mixing strategy that, in practice, can aid convergence in many cases. The general idea is that if the sum of energies 𝑆 is changing sign, then we attempt to dampen the oscillations by mixing in some portion of the old Fock matrix. If this converging is not oscillatory, then we try to keep most of the new Fock matrix. The mixing is determined by a factor 𝑐 (𝑖) that is updated from iteration to iteration. The next Fock matrix to be used 𝑭 (𝑖) is computed as: 𝑭 (𝑖) = 𝑐 (𝑖) 𝑭 (𝑖−1) + (1 − 𝑐 (𝑖) )𝑭 (new) (6.6) where 𝑭 (new) is the Fock matrix as computed via Eq. 6.5. 170 At each step, we update the mixing factor 𝑐 (𝑖) via the logic: ⎧ ⎪ ⎪ ⎪ min{ 21 , 𝑏𝑐 (𝑖−1) } ⎪ 𝑐 (𝑖) = ⎨ ⎪ ⎪ 𝑐 (𝑖−1) ⎪ ⎪ ⎩ 𝑏 if (𝑆 (𝑖) − 𝑆 (𝑖−1) )(𝑆 (𝑖−1) − 𝑆 (𝑖−2) ) < 0 (6.7) otherwise where 𝑏 > 1 is some arbitrary constant that controls how rapid 𝑐 should respond to the presence or absence of oscillations. We usually choose 𝑏 = 2. The min{ 12 , …} prevents the calculation from stalling because too much of the old matrix is being retained. 6.6.3 HF transformation of the Hamiltonian The HF transformation is describe by Eq. 4.3, which we reproduce here in J-scheme (not that there is any difference): 𝐻 ′′ ′ = ∑ 𝐶 ∗ ′ 𝐻𝑝𝑞 𝐶𝑞𝑞′ 𝑝 𝑞 𝑝𝑝 𝑝𝑞 𝐻 ′′ ′ ′ ′ = ∑ 𝐶 ∗ ′ 𝐶 ∗ ′ 𝐻𝑝𝑞𝑟𝑠 𝐶𝑟𝑟 ′ 𝐶𝑠𝑠 ′ 𝑝 𝑞 𝑟 𝑠 𝑝𝑞𝑟𝑠 𝑝𝑝 𝑞𝑞 The one-body term is very cheap and can be written in a naive way like the Fock matrix calculation. The two-body term can be fairly expensive. Naive implementation of the equation would result in an 8-th power scaling, which is unbearably slow. Fortunately, the calculation can be broken down into two 6-th power steps at the cost of a temporary two-body matrix , 𝑇𝑝 ′ 𝑞′ 𝑟𝑠 = ∑ 𝐶 ∗ ′ 𝐶 ∗ ′ 𝐻𝑝𝑞𝑟𝑠 𝑝𝑞 𝑝𝑝 𝑞𝑞 𝐻 ′′ ′ ′ ′ 𝑝 𝑞 𝑟 𝑠 (6.8) = ∑ 𝑇𝑝 ′ 𝑞 ′ 𝑟𝑠 𝐶𝑟𝑟 ′ 𝐶𝑠𝑠 ′ 𝑟𝑠 This could be broken down even further into four 5-th power steps, but we generally find this 171 an unnecessary complication – in particular, it would involve a temporary non-antisymmetrized two-body matrix, which would require introducing yet another matrix data type. Eq. 6.8 can be programmed naively, which results in a slow but tolerable transformation. Alternatively, one could perform the transformation using GEMM. Our benchmarks indicate that the use of GEMM can provide a two-orders-of-magnitude improvement in speed. Unfortunately, it causes the internal details of implicit antisymmetrization to leak, complicating the phase factor. In any case, the technique is as follows. Define the following two-body antisymmetrized coefficient matrix 𝑮: (1+𝑗 +𝑗 −𝑗 ) (1+𝑗 ′ +𝑗 ′ −𝑗𝑟𝑠 ) 𝐺𝑟𝑠𝑟 ′ 𝑠 ′ = 𝑁𝑟𝑠 𝑟𝑠 𝑟 𝑠 𝑟𝑠  ′ ′ 𝑟 𝑠 𝐶𝑟𝑟 ′ 𝐶𝑠𝑠 ′ 𝑟 𝑠 where 𝑁𝑟𝑠 is the normalization factor in Eq. 3.27 and  (𝑖) is the (−)𝑖 -symmetrization symbol of Sec. 2.1.2. Then we can compute the transformation using GEMM: 𝑇𝑝 ′ 𝑞′ 𝑟𝑠 = ∑ 𝐺 ∗ ′ ′ 𝐻𝑝𝑞𝑟𝑠 𝑝≥𝑞 𝑝𝑞𝑝 𝑞 𝐻 ′′ ′ ′ ′ = ∑ 𝑇𝑝 ′ 𝑞′ 𝑟𝑠 𝐺𝑟𝑠𝑟 ′ 𝑠 ′ 𝑝 𝑞 𝑟 𝑠 𝑟≥𝑠 6.7 Implementation of normal ordering Before performing IM-SRG(2), it is necessary to obtain matrix elements of 𝐻̂ relative to the Fermi vacuum. This step is often referred to as the normal ordering of 𝐻̂ (the terminology is somewhat overloaded). As part of this step, we also obtain the Hartree–Fock energy. In the case of two-body operators, there are only two interesting operations here. One is the calculation of the zero-body component (HF energy) using Eq. 4.2 or Eq. 2.4, which we reproduce 172 here in J-scheme: 𝐸𝛷 = 𝐸∅ + ∑ 𝚥̆𝑖2 𝐻𝑖𝑖∅ + 𝑖⧵ 1 ∑ ∑ 𝚥̆2 𝐻 ∅ 2 𝑗𝑖𝑗 𝑖𝑗⧵ 𝑖𝑗 𝑖𝑗𝑖𝑗 We have omitted the primes because at this point normal ordering itself can be applied independent of HF. This calculation can be done naively as it is very cheap. The other part is the folding of the two-body component into the one-body component as shown in Eq. 2.4 and reproduced here in J-scheme: 𝛷 𝐻𝑝𝑞 = ∅ 𝐻𝑝𝑞 2 𝚥̆𝑝𝑖 ∅ + ∑ ∑ 2 𝐻𝑝𝑖𝑞𝑖 𝑗𝑝𝑖 𝑖⧵ 𝚥̆𝑝 This calculation can also be done naively as it is still very cheap. 6.8 IM-SRG(2) implementation The overall structure of the IM-SRG implementation is centered around an ODE loop with tests for convergence, much like HF. The inputs to IM-SRG are the normal-ordered, zero-, one-, and two-body operator matrices in their standard-coupled forms. 1. Pack all three standard-coupled Hamiltonian components into a single array 𝒚 for the ODE solver to consume. In doing so, deduplicate elements that are related by hermitivity. 2. Initialize and maintain a cache of 6-j symbols, needed for the Pandya transformations. 3. Initialize the Shampine–Gordon ODE solver. 4. Now enter the main IM-SRG loop, starting with the flow parameter 𝑠 set to zero. If the loop exceeds some predefined limit on 𝑠, abort. a. Request the solver to proceed to 𝑠 + 𝛥𝑠, for some 𝛥𝑠 specified by the user. Provide 173 the derivative function 𝒚̇ = 𝒇 (𝑠, 𝒚) to the solver. While the solver is stepping, it will attempt to evaluate our function 𝒇 : • Unpack 𝒚 back into the standard-coupled operator matrices 𝑯 . • Compute the generator 𝜼 from 𝑯 . • Compute the comutator 𝑫 = [𝜼, 𝑯 ], making use of the 6-j cache. • Pack the comutator 𝑫 into the derivative array 𝒚.̇ b. If the stepping failed, abort. c. Get the ground state energy 𝐸𝛷 , which in our packing convention is simply the first element of 𝒚. d. Check how much the ground state energy has changed since the previous iteration. If it is less the user-specified tolerance, break the loop with success. We use the White generator for our IM-SRG calculations, as described in Eq. 4.15. Our implementation supports both Møller–Plesset and Epstein–Nesbet denominators, using monopole matrix elements in the latter case. 6.8.1 Calculation of the IM-SRG(2) commutator The bulk of the implementation complexity and computational cost lies in the calculation of the commutator 𝑫 = [𝜼, 𝑯 ]. At the moment, we implement this as by calculating the linked products ̂ This allows us to reuse the linked product of 𝜂̂𝐻̂ and subtracting the linked products of 𝐻̂ 𝜂. code. However, in the future, we may disrupt this symmetry for optimization reasons – to take ̂ higher sparsity as compared to 𝐻̂ . advantage of 𝜂’s Since the linked product corresponds to the 𝐶̂ operator in Secs. 4.2.4, 4.2.5, we will discuss the various terms using the naming convention in that chapter. We will not attempt to discuss all of the terms but instead focus on a few interesting ones. 174 6.8.1.1 Optimization of terms 2220 and 2222 These are one of the most costly terms in the commutator, but also one the easiest to optimize: 2220 𝐶𝑝𝑞𝑟𝑠 = 1 ∑𝐴 𝐵 2 𝑖𝑗⧵ 𝑖𝑗𝑟𝑠 𝑝𝑞𝑖𝑗 2222 𝐶𝑝𝑞𝑟𝑠 = 1 𝐵 ∑𝐴 2 ⧵𝑎𝑏 𝑝𝑞𝑎𝑏 𝑎𝑏𝑟𝑠 Calculating these terms using GEMM is quite straightforward and offers orders of magnitude in improvement. However, a subtlety arises due to the implicit antisymmetrization, which we also encountered earlier in the HF transformation optimization: we must not double-count the 𝑖 = 𝑗 (or 𝑎 = 𝑏) states. With this taken into account, the equations become 2220 𝐶𝑝𝑞𝑟𝑠 = 1 ∑𝑁 𝐴 𝐵 2 𝑖≥𝑗⧵ 𝑖𝑗 𝑖𝑗𝑟𝑠 𝑝𝑞𝑖𝑗 2222 𝐶𝑝𝑞𝑟𝑠 = 1 𝐵 ∑ 𝑁 𝐴 2 ⧵𝑎≥𝑏 𝑎𝑏 𝑝𝑞𝑎𝑏 𝑎𝑏𝑟𝑠 where 𝑁𝑎𝑏 denotes the normalization factor in Eq. 3.27. This is an unfortunate consequence of using unnormalized matrix elements; had we used normalized ones, the spurious 𝑁𝑎𝑏 factor would not appear. Note that the above two equations are extremely similar and can be implemented as just one function. The difference between the two is the that 𝐴 and 𝐵 have been swapped, and that the parts of states being summed over are different. 175 6.8.1.2 Optimization of terms 2221 The 2221 term is one of the most interesting and costly terms. It is actually described by a threestep process. First, use the Pandya transformation to convert the standard-coupled operators into Pandya coupling (Sec. 3.12.2): ⎧ ⎫ ⎪ ⎪ ⎪ ⎪ 𝑗 𝑗 𝑗 𝑝 𝑞 𝑝𝑞 ⎪ ⎪ 2𝑗 2 𝑝𝑞 ̃ 𝐴𝑝𝑠𝑟𝑞 = − ∑ (−) 𝚥̆𝑝𝑞 ⎨ 𝐴𝑝𝑞𝑟𝑠 ⎬ ⎪ ⎪ 𝑗𝑝𝑞 ⎪ ⎪ 𝑗 𝑗 𝑗 ⎪ ⎩ 𝑟 𝑠 𝑝𝑠 ⎪ ⎭ Then, use GEMM to compute the product using Pandya-coupled matrices: 2221 𝐶̃𝑝𝑠𝑟𝑞 = +4 ∑ 𝐴̃ 𝑖𝑎𝑟𝑞 𝐵̃𝑝𝑠𝑖𝑎 𝑖⧵𝑎 Finally, convert back into standard coupling using the antisymmetrizing inverse Pandya transformation. The GEMM part is probably the most straightforward. Unlike 2220 or 2221, there are no unusual phase factors because we do not use implicit antisymmetrization here. Our benchmarks show that a very significant amount of time is spent on the Pandya transformation, thus it is worthwhile to optimize that operation despite being a roughly 5-th power operation. One technique is to rewrite the Pandya transformation itself as a GEMM-compatible product: 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑗 𝑝𝑞𝑟 𝑠 𝑝𝑞𝑟 𝑠 𝑝𝑞𝑟 𝑠 𝐴̃ 𝑗 ;𝛼 𝛼 𝛼 𝛼 = − ∑ 𝑊𝑗 ;𝑗 𝐴𝑗 ;𝛼 𝛼 𝛼 𝛼 𝑝𝑠 𝑝 𝑞 𝑟 𝑠 𝑝𝑠 𝑝𝑞 𝑝𝑞 𝑝 𝑞 𝑟 𝑠 𝑗 𝑝𝑞 176 where 𝑗𝑝 𝑗𝑞 𝑗𝑟 𝑗𝑠 𝑊𝑗 ;𝑗 𝑝𝑠 𝑝𝑞 ⎧ ⎫ ⎪ ⎪ ⎪ ⎪ 𝑗 𝑗 𝑗 2𝑗𝑝𝑞 2 ⎪ 𝑝 𝑞 𝑝𝑞 ⎪ = (−) 𝚥̆𝑝𝑞 ⎨ ⎬ ⎪ ⎪ ⎪ 𝑗𝑟 𝑗𝑠 𝑗𝑝𝑠 ⎪ ⎪ ⎪ ⎩ ⎭ In this “four-j” matrix layout, each diagonal block of 𝐴 or 𝐴̃ is indexed not by the usual channels, but by (𝑗𝑝 , 𝑗𝑞 , 𝑗𝑟 , 𝑗𝑠 ). The right axis of both matrices is labeled by (𝛼𝑝 , 𝛼𝑞 , 𝛼𝑟 , 𝛼𝑠 ), where 𝛼𝑝 denotes all the non-𝑗 quantum numbers of 𝑝. The use of this layout, in conjunction with a GEMM-powered Pandya transformation, saves about 40% time.12 The gains are not as dramatic as in the case of 2220 or 2222 because the matrix-matrix multiplication is only over 𝑗𝑝𝑠 whose dimensions are usually not very big. The dominant work is now pushed onto the conversion from the standard- or Pandya-coupled matrices into this four-j layout. This can be expensive due to the large number of hash table lookups for translation between two-particle states and pairs of single-particle states. To mitigate this we cache the translated indices within a separate four-j-layout matrix, bypassing the need for expensive hash table lookups. This saves another 50% time at the cost of extra memory usage.13 6.9 QDPT3 implementation The QDPT3 implementation is fairly tedious as it involves coding about 20 or so terms from Sec. 4.3.1. It is also quite error-prone, much like the IM-SRG commutator, therefore extensive testing is necessary. Fortunately, all terms up to third order are fairly inexpensive, therefore writing them out naively using the high-level J-scheme interface would suffice as the cost of IM-SRG dwarfs the 12 13 Benchmarked using 𝑒max = 4 for an 16 O-like system. Benchmarked using 𝑒max = 4 for an 16 O-like system. 177 cost of QDPT. Additionally, a large number of QDPT terms share similar topologies: there is one unique topology at second order (type A), and only three unique topologies at third order (types B, C, and D). Thus, they can reuse with the same code simply by tweaking a the state parts that are being summed over and customizing the denominator. As an example, consider the type B QDPT term: (B) 𝑊𝑝𝑞 (𝜒𝑟 , 𝜒𝑠𝑡 , 𝜒𝑢𝑣 , 𝐷) 1 = ∑ ∑ ∑ 4 𝑟∈𝜒𝑟 𝑠𝑡∈𝜒𝑠𝑡 𝑢𝑣∈𝜒𝑢𝑣 2 𝚥̆𝑟𝑝 𝐻𝑟𝑝𝑠𝑡 𝐻𝑠𝑡𝑢𝑣 𝐻𝑢𝑣𝑟𝑞 𝚥̆𝑝2 𝐷(𝑟, 𝑠, 𝑡, 𝑢, 𝑣) All of the first six terms/diagrams at third-order, shown in the equations of Sec. 4.3.1, have this type B topology. The arguments 𝜒𝑟 , 𝜒𝑠𝑡 , and 𝜒𝑢𝑣 indicate which parts of the states should be summed (i.e. hole or particle) for |𝑟⟩, |𝑠𝑡⟩, and |𝑢𝑣⟩ respectively. The code to compute type B terms is shown below: pub fn qdpt_term_b( h1: &OpJ100, h2: &OpJ200, p: StateJ10, q: StateJ10, // these are denoted "chi" in the equations r_occ: Occ, st_occ: [Occ; 2], uv_occ: [Occ; 2], // the denominator (closure / function object) 178 denom: F, ) -> f64 where F: Fn(StateJ10, StateJ10, StateJ10, StateJ10, StateJ10) -> f64, { // make sure p and q are within the same block // (i.e. have the same conserved quantum numbers) assert_eq!(p.lu().l, q.lu().l); let scheme = h1.scheme(); let mut result = 0.0; for r in scheme.states_10(&[r_occ]) { for jrp in Half::tri_range(r.j(), p.j()) { // combining states can fail, // in which case we just continue let rp = match r.combine_with_10(p, jrp) { None => continue, Some(x) => x, }; let rq = match r.combine_with_10(q, jrp) { None => continue, Some(x) => x, }; 179 for st in rp.costates_20(&[st_occ]) { let (s, t) = st.split_to_10_10(); for uv in rp.costates_20(&[uv_occ]) { let (u, v) = uv.split_to_10_10(); result += 1.0 / 4.0 * rp.jweight(2) / p.jweight(2) * h2.at(rp, st) * h2.at(st, uv) * h2.at(uv, rq) / denom(r, s, t, u, v); } } } } // in Rust syntax, the last expression of a function is // implicitly returned if not terminated by semicolon result } Observe that we allow the denominator argument denom to be a closure of any type F, allowing it to be easily inlined by the compiler for efficiency. This permits the use of anonymously-typed closures, each with a distinct type, making it trivial for the compiler to tell different closures apart. As long as the type of the closure is not erased, the compiler is guaranteed to create distinct copies of the qdpt_term_b function for each closure type F, greatly improving optimizability. This is an 180 inherent feature of monomorphization in both Rust and C++. Here is a snippet of code that demonstrates the use of qdpt_term_b to compute the first third-order term shown in the equations of Sec. 4.3.1: qdpt_term_b( h1, h2, p, q, // notation: I = hole state, A = particle state occ::I, occ::AA, occ::AA, // we define the denominator using a lambda function; |i, a, b, c, d| { // the "hd" function extracts the diagonal part // of the one-body Hamiltonian (hd(i) + hd(q) - hd(a) - hd(b)) * (hd(i) + hd(q) - hd(c) - hd(d)) }, ) 6.10 Testing and benchmarking The first line of defense for ensuring correct code is through properly designed abstractions and data types. By categorizing values into distinct types one can avoid accidental confusion of quantities. For example, we have introduced a special data type called Half to represent half-integers. Since no native machine type exists for half-integers, the usual workaround is to represent halfintegers with twice its effective value. For example, the half-integer 𝑚 = 3/2 would be represented 181 as m = 3 on a computer. This leaves room for human error, if one say, adds a half-integer 𝑚 = 3/2 to a normal integer 𝑛 = 1. The result would be 3 + 1 = 4, which is incorrect. The Half data type, defined below, prevents this problem, pub struct Half(pub i32); It is not possible to add Half to an i32, because no such operator is defined. Thus the human error becomes a compile error, preventing the incorrect program from compiling. As another example, we have distinct types for standard-coupled and Pandya-coupled twobody matrices, which prevents us from accidentally using a Pandya-coupled state to look up a standard-coupled matrix. Types cannot catch all bugs, but with judicious use they certainly catch a lot of the obvious ones. We use tests to catch bugs that cannot be detected at compile time, either because the solution would be too complex, too awkward to use, or downright impossible. Not only do tests ensure that the code is correct right now, they also guard against future mistakes as the code evolves. Several kinds of testing strategies are used in Lutario. The most basic ones are unit tests, which are short tests intended to verify basic functionality. These are often suitable for small functions that require little to no setup. For example, we have the following test for our implementation of Euclidean division and modulo: #[test] fn test_euclid_div_mod() { assert_eq!(euclid_div(10, 5), 10 / 5); assert_eq!(euclid_mod(10, 5), 10 % 5); assert_eq!(euclid_div(-10, 5), -10 / 5); 182 assert_eq!(euclid_mod(-10, 5), -10 % 5); assert_eq!(euclid_div(10, -5), 10 / -5); assert_eq!(euclid_mod(10, -5), 10 % -5); /* etc ... */ } The function attribute #[test] informs the Rust compiler that this function is part of the test suite. The test explores all the potential sign errors that could happen in an implementation of Euclidean division and modulo. It is generally impossible to check programs over all possible inputs as the input space is usually far too large. One way to ensure that the interesting cases are tested is through code coverage tools. These tools can track which lines of the source code are executed during the tests. If there are certain lines that are never executed because an if-condition is never true during the tests, then those lines effectively untested. Full code coverage is not a guarantee that the test is exhaustive, however. When the input space is too large to explore, one could also consider randomized testing, in which inputs 𝑦 are generated randomly and then the test is responsible for verifying the results 𝑦 = 𝑓 (𝑥) in some way. One could either (1) compare the results using another function 𝑓 ′ that reproduces the result, or (2) check whether certain properties 𝑃(𝑥, 𝑦) hold (property testing). We offer a more concrete example in Sec. 6.10.1. While it is generally difficult to prove that testing has exhaustively covered all cases, it is nevertheless better to have at lesat one test case than none. These are often called smoke tests and they are still remarkably useful in practice. Larger tests, where multiple components of the program are tested together, are known as integration tests. These are used to test the many-body methods, as they are fairly complicated 183 and require several components working together to achieve a result. We have numerical results for, e.g. ground state energy, from other implementations of the same many-body methods that we can test against. From time to time, bugs will inevitably slip past the existing tests. Whenever such a bug is discovered, it is important to add additional tests to ensure the bug will not go undetected again in the future – these are known as regression tests. Tests are only useful if they are being run. Unfortunately, tests may require a substantial amount of time to run, which discourages the programmer from running such tests. Frequent runs of tests are important: they ensure that code remains valid at all times, and they allow problems to be discovered at the earliest opportunity. In Lutario, we have configured a continuous integration (CI) system that automatically runs tests on every commit pushed to the repository and notifies failures by email. It ensures that problems are always discovered quickly. Furthermore, it allows us to keep the build process streamlined and reproducible as otherwise the automated testing script, which runs in a clean environment, would fail. It helps prevent environmental problems where the code functions correctly only on the developer’s machines, but not on the users’. 6.10.1 Randomized testing of numerical code The sheer number and tedious nature of the IM-SRG commutator terms and QDPT terms offers a ripe environment for human errors. To mitigate against this, we use tests to verify that the commutators are performing the calculations we expect. There is a chicken-or-egg problem regarding numerical computations: we generally do not know the answers a priori without running a program to calculate it – manual calculations are usually impractical – yet we do not know if the program is calculating the formula we intended. 184 To break this loop, we have to trust at least one program to compute the result – to “bootstrap” our test suite. We assign the most trust to the simplest and most naively implementation of the program. Even if it is very slow, it is often sufficient to test just a few small nontrivial cases. This would serve as our reference program. With a reference program in hand, we need some input (matrix elements) to test against. We could use actual matrix elements from physical systems, but it suffices to use a randomly generated set of matrix elements, provided that these matrices satisfy the necessary symmetries and conservation laws for the formula to remain valid. This has the added advantage that as long as the random number generator is deterministic, we only need to store the seed to recover the entire suite of test matrices. In the predecessor to Lutario, we have generated a set of random test matrices in the quantum dot basis for testing the commutator. They were verified by comparing against an extremely naive implementation that does not take advantage of the sparsity of the matrix. These input matrices, along with the expected output, have now been inherited by Lutario’s test suite. They ensure that the new J-scheme implementation remains correct for 𝑗 = 0 (i.e. pseudo-M-scheme). To test cases where 𝑗 ≠ 0 (proper J-scheme), we construct random matrix elements in the nuclei basis in J-scheme and compute the commutator in two different ways: • We perform the commutator in J-scheme (operation 𝐶J ), and then convert the resulting matrices to pseudo-M-scheme (operation 𝜑). • We convert the matrices to pseudo-M-scheme (operation 𝜑), and then perform the commutator in pseudo-M-scheme (operation 𝐶M ). We expect the results to be identical in both cases. This is mathematically described by the 185 commutative square: 𝜑◦𝐶J = 𝐶M ◦𝜑 This is a general approach of testing J-scheme equations that does not require us to know what the correct answers are, as long as the pseudo-M-scheme code is correct. 6.10.2 Linting, static analysis, and dynamic sanitization Several kinds of automated tools exist to aid the detection of bugs. Static analyzers read the source code of a program and attempt to look for bugs without actually running it. Due to the halting problem, it is impossible for a static analyzer to avoid false negatives in any Turing-complete language. Linting tools are a subtype of static analyzers designed to find not only bugs, but also suspicious constructs, non-idiomatic code, and, in some cases, code that does not conform to a particular stylistic convention. Modern compilers are also capable of giving useful warnings for potentially buggy code. C and C++ compilers by default are very conservative about warnings, but it is possible to request more comprehensive diagnostics using a flag similar to -Wall. This alone can catch many common mistakes. In contrast, the Rust compiler by default issues all warnings. Our code is always written to avoid such warnings, even if the warning is of low priority or not justified. This ensures that if an important warning appears later on, it is not drown out by the deluge of low-priority warnings that had been intentionally ignored. If a warning is a false positive, we can either find a workaround or, failing that, silence the warning at that particular location using an attribute such 186 as #[allow(...)] in Rust. Dynamic sanitizers are designed to detect errors during the execution of a program. Dynamic sanitizers are naturally better at detecting problems, but aside from the need to actually execute the program, they also introduce some performance overhead. Examples of such tools include Valgrind [Valgrind], as well as various Clang and GCC sanitizer flags (-fsanitize=...) . Sanitizers can be extremely helpful at finding the cause of bugs when there is suspicion of memory errors in a given program. In our experience, Valgrind has been particularly effective at detecting memory errors in our C and C++ projects. The tools can even be used pre-emptively, run routinely as part of the test suite, to reduce the risk of memory errors being introduced as the codebase evolves. 6.10.3 Benchmarks and profiling For benchmarking, we make use of Rust’s official (but unstable) test library, which offers a very simple interface: #![feature(test)] extern crate test; // import the test library #[bench] fn my_bench(b: &mut Bencher) { b.iter(|| { // code goes here }); } The code within the closure || { ... } is executed several times by the benchmark runner 187 to obtain an accurate timing along with an estimated uncertainty. This means the code being benchmarked must avoid irreversibly changing the environment, or else the timing will not be accurate. It is important to write the benchmarked code in a way such that the compiler cannot delete the code entirely. Consider this example, where one is attempting to benchmark the addition of two integers: b.iter(|| { let x = 1 + 2; }); There are several reasons why this naive benchmark would not yield any meaningful results: • The compiler can easily precompute the result “3” without any effort. This means the input must not be predictable to the compiler. To mitigate this, one could either read the input from a file, randomize the input, or use a special black_box function to obscure the input from the optimizer, e.g. black_box(1) + 2. • Even if the compiler does not know the inputs, it does know that addition is a pure operation with no side-effects. Thus it would safe to hoist the statement outside the loop (b.iter(...) is really a loop in disguise). One could insert black_box(x) within the loop to prevent this. • Moreover, the compiler can easily see that the output variable x is not being used. This means the compiler will likely delete the entire calculation through dead-code elimination (DCE). To mitigate this, one could either print the output, or again use a black_box. • Lastly, addition of integers is such a fast operation that the overhead from the benchmark runner as well as environmental noise will heavily skew the results. We use the nuclei system for benchmarks, but with randomized matrix elements. We split the commutator into groups of terms that are benchmarked separately so that we can analyze the 188 individual terms separately without the expensive ones drowning out the cheap ones. To analyze the performance costs of given implementation, we make use of profilers. We generally avoid profilers that instrument code, because the instrumentation itself can easily add a substantial amount of overhead that can completely distort the results. For this reason, we use Perf [Perf], a sampling profiler for Linux that captures stack traces of the program periodically. Similar tools exist other platforms. Perf pairs quite well with flame graphs [Gre16] for visualization, allowing easy identification of hotspots in the code. Perf can run an optimized program as-is, with no instrumentation. The only extra information needed for sensible output is debugging information (-g flag in most compilers), which is tracked separately and does not pessimize the program. Unfortunately, high levels of optimization usually renders the debugging information inaccurate, so it remains important to compare against the assembly code. 6.11 Version control and reproducibility The codebase for Lutario is stored in a distributed version control system (DVCS) and can be viewed online [Lutario]. We use the Git [Git] as our DVCS but one could equally well have chosen other DVCSes such as Mercurial [Hg]. Version control systems (VCS) are tools designed to store the entire history of a codebase. At a rudimentary level, it may be considered a special kind of database tailored specifically for projects that are dominated by plain text files like code. By recording all changes that occur in a project, it becomes easy to track down the origin of both code and bugs. VCSes are also designed to support collaboration on projects. Collaborators may work independently on different parts of the project, accumulating their own history of changes. They can periodically synchronize and merge their changes together to form a unified timeline. The merge 189 can be automated as long as the collaborators work on different parts of the project. Distributed VCSes are unique in that, unlike centralized VCSes, each repository – i.e. the directory managed by the VCS – maintains its own database of histories and is on equal footing as all other repositories. This means there is no centralized point of failure if any one of the repositories becomes inaccessible, allowing it act as a distributed backup system. The histories need not match either: a repository might store the main history of the project, but may also keep a private fork of this history, or of a new feature, or something entirely unrelated. VCSes are most useful when they store predominantly relevant, textual data. It is particularly important to avoid storing large files as they can rapidly grow the size of the database. It is also important to avoid storing files that could be easily regenerated, such as executable files, library files, or any non-essential or transient files. Ignore lists are useful for filtering out irrelevant files. Changes in a VCS are stored in the unit of a commit, which should generally perform a single task or add a single feature. Maintaining a clean commit history ensures that if problems appear later on, one can easily isolate the cause down to a single commit, with the aid of strategies such as bisection (e.g. git-bisect). The use of a version control aids in the reproducibility of results. One can accurately refer to a specific version of code within a version-controlled repository using commit identifiers or human-readable tags. In particular, Git and Hg use hashes as the commit identifier, thus knowing the hash one can verify whether the files of the commit are correct with a high degree of confidence, as it is very difficult to forge these hashes.14 Of course, knowing that one has the correct code alone does not guarantee that the results will be reproduced perfectly. One may also need to track the version numbers of all transitive 14 Unfortunately, SHA-1 attacks are becoming more and more possible, which means it may be possible for an attacker to forge commit hashes. Nonetheless, by accident it remains extremely difficult to have two different commits sharing identical commit hashes. 190 dependencies of the program, the compiler, as well as the environmental conditions under which the program is run. Nondeterminism caused by environmental fluctuations (e.g. in parallel code) can further complicate reproducibility. 6.12 Documentation There are two orthogonal ways to categorize documentation. On one axis, there is • external documentation (for users), and • internal documentation (for developers of the project). On another axis: • There is reference documentation (manuals, technical documents, specifications, API15 documentation), which aims to describe every detail of the program including corner cases. It is usually written to follow the structure of the program (modules, functions, data types). Their target audience are the advanced users who already know their way around the software. • There is also review documentation (tutorials, guides, overviews), which are usually pedagogical in nature. They are used to teach the important parts of a program, without overwhelming the reader with details. They generally do not follow the structure of the program, but are structured more like a book intended for human consumption. The target audience are the new users who are not yet familiar with the software. At the moment, external documentation for Lutario is very sparse, given the recency of the project. As the project is still under heavily development, we expect the user-facing interfaces to change substantially. We will consider adding external documentation when a point of stability is reached. 15 API is a common programming acronym for application programming interface, or simply interface. 191 Internal documentation is primarily through this chapter – which may become out of date as the project progresses – as well as the source code comments. This chapter is intended to be an overview of the machinery in Lutario without focus on any one particular aspect. Source code comments may be categorized into two types: • Documentation comments are designated by the /// or //! prefix in Rust.16 They are useful for documenting public interfaces (APIs). These special comments can be automatically exported by the Rustdoc documentation generator. The tool outputs a book in HTML format with the comments displayed against the corresponding module, function, data type, etc. Similar tools exist for other languages, including Sphinx [Sphinx] for Python, Haddock [Haddock] for Haskell, and Doxygen [Doxygen] for C, C++, and Fortran. They can also be used to provide examples. These snippets of code are automatically tested by the Rust build system, ensuring that the example code does not fall out of date as the code evolves. • Normal comments (// or /* ... */ in Rust) are used to explain tricky aspects of the code for the developers. They are generally used sparingly, because such comments are meant to convey important information that is not evident from the code itself. Excessive use of comments can hinder the readability of code. Moreover, comments – which are not sanity-checked by the compiler – are always at risk of becoming out of sync with the actual code. Tests themselves can also serve as useful examples, if they are written cleanly. Such dualpurpose tests are extremely useful: they are automatically tested for validity, moreover a learning user can immediately read from the test code what the expected output of the program should be. We currently have three major integration 16 In other languages, one might find /** or /*! prefixes for documentation comments. 192 6.13 Coding style While source code is to be ultimately consumed by compilers and interpreters, it is equally important for it to be comprehensible to human readers. This reduces mistakes, encourages collaboration, and simplifies maintenance of the program over the long run. 6.13.1 Formatting of code On a superficial level, code should be formatted neatly and, most importantly, consistently. One should adhere to the official style guide of the language (if any), or any prevailing style used by the language community, domain, project, and/or subproject. These style conventions help establish many aspects of formatting, including indentation, spacing, line length, wrapping, and naming conventions. Some languages such as Fortran, C, C++, or Haskell lack official style guides, but there may exist one or more de facto styles from which one can adopt. Others, like Go, Rust, Python have official style guides [Gofmt; FmtRFCs; PEP8] with varying degrees of strictness, which improves collaboration and avoids unnecessary bikeshedding (trivial arguments) among the language community. In either case, various automatic reformatting tools are available to help maintain uniformity in coding style, such as clang-format for C and C++ [ClFmt], gofmt for Go [Gofmt], and rustfmt for Rust [Rustfmt]. 6.13.2 Coupling and complexity A major source of complexity in programs arises from coupling: an interaction between different components of a system. It is analogous to coupling in physics. A system of non-interacting particles is generally easy to study. As the interactions become stronger and stronger, the system 193 becomes increasingly difficult to understand. The same principle applies to programming. Coupling should generally be avoided where possible. But that is unlikely in any non-trivial program. When it is not avoidable, coupling should always be explicitly visible to the reader. This helps avoid “effect at a distance” where, say, a programmer attempts to fix a bug, only to break something else entirely unrelated. Many kinds of coupling exist. The most common one is aliasing: when different parts of a program have a shared reference or pointer to the same variable, and at least one them modifies it. As discussed in Sec. 6.1.2, if one has exclusive control over a piece of data, they can modify it without other components of the program observing the effects of the modification. If one has shared a piece of data with other components of the program and the data is never modified by anyone, then no-one will know the difference either. However, if the data is mutated, then problems can arise because the value of the variable may unexpectedly change. Thus, aliasing makes it difficult to reason about code. Without thread synchronization, aliasing generally breaks thread-safety. This is because modern CPUs like to cache data as much as possible. Without some sort of notification to the CPU that data has been modified by another thread, it will by default assume that it has exclusive control over it and continue using the cached value. The only way to ensure this is safe is through synchronization (e.g. memory fences, mutexes), which carries a performance penalty. Even without threads, there are other performance penalties that arise from aliasing. The compiler can make fewer assumptions about the behavior of an aliased variable, therefore code that involves aliasing may be less well optimized. Aliasing is not always avoidable. It is generally a good idea to document where aliasing occurs. Rust, in particular, takes a fairly draconian stance with regard to aliasing: all aliasing is forbidden except through one of the alias-enabling wrapper types (e.g. Cell, RefCell, Mutex, RWLock). 194 C and C++ have a set of rules (type-based alias analysis / strict aliasing rule) that determine when aliasing is acceptable and when it is not (in which case aliasing becomes undefined behavior). In C, one may assert the absence of aliasing through the restrict keyword, but the compiler make no effort to verify that assertion. Global variables are a special case of aliasing, except more sinister because they are much less obvious, since whether a function accesses a global variable cannot be deduced from the function signature. The only way to tell whether a function uses a global variable is by inspecting the contents of the function and all its transitive dependencies. Aliasing may be considered a type of side effect. A function is said to have side effects if it modifies some kind of state that is externally visible. Aliased variables are examples of such state, but so are things like input/output (I/O), spawning/killing a process, sending/receiving data over network, etc. Side effects are a form of coupling as well, except the coupling may involve the external environment: other processes, other machines, or even other people. Like any coupling, it is always good idea to document side effects to aid reasoning of programs. To help manage side effects, one should keep them contained and isolated. In particular, code that has lots of side effects should be kept separate from code with no side effects (pure code). Complicated logic are best written without side effects, allowing it to be easily refactored without concern of temporal ordering. Furthermore, pure code is generally more reusable and composable, whereas code with side-effects are usually less flexible. Some languages such as Haskell or PureScript explicitly track side-effects through the type system, encouraging the programmer to manage side-effects in a principled manner. As an example, in our Lutario codebase, we generally refrain from performing any sort of I/O except in designated functions. In cases where it is not obvious, we name the function with a do_ 195 prefix to indicate that it does I/O. 6.13.3 Trade-offs We advise against blind adherence to any particular paradigm, principle, or pattern in programming. After all, programming is best described as a form of engineering where one must constantly make compromises and trade-offs. There are no hard and fast rules in programming: it is normally a good idea to follow them, but it is even more important to understand their provenance, costs, and benefits so that the programmer can judge whether the pay-offs are worthwhile. Over-engineering can increase the size of the codebase, which can impede understanding just as much as unruly one does. 196 Chapter 7 Results and analysis Finally, we discuss the results we obtained with our many-body methods for quantum dots and nuclei. 7.1 Methodology input matrix elements Hartree–Fock improve ground state energy CC or IM-SRG improve addition and removal energy output EOM or QDPT ground state addition and energy removal energies Figure 7.1: A schematic view of the various ways in which many-body methods in this work could be combined to calculate ground state, addition, and removal energies. There is significant flexibility in the application of many-body methods. The approaches we use are shown in Fig. 7.1. Applying the methods in this order maximizes the benefits of each method: HF acts as an initial, crude procedure to soften the Hamiltonian, followed by IM-SRG or CC (coupled cluster method) to refine the ground state energy, and then finally QDPT or EOM (equations-of-motion method) to refine the addition and removal energies. We expect single- 197 reference IM-SRG and CC to recover a substantial part of the dynamical correlations, while QDPT and EOM help account for static correlations. The general process begins with setting up the input matrix elements. Afterward, there are several paths through which one can traverse Fig. 7.1 to obtain output observables. Our primarily focus is on the three combinations: a. HF + IM-SRG(2) + QDPT3, computed by us, b. HF + IM-SRG(2) + EOM2, computed and contributed by Nathan M. Parzuchowski, and c. HF + CCSD + EOM2, computed and contributed by Samuel J. Novario. It is possible to omit some steps of the process. For example, one can omit HF, but continue with the remaining two steps. While this is doable, from our experience HF significantly improves the results of the later post-HF methods at very low cost compared to the post-HF methods. Therefore, in practice there is little reason to omit HF. We will however investigate the effects of removing one or more of the post-HF methods. Since every calculation in this work begins with the HF stage, we will not explicitly state HF unless there is no post-HF method used at all, in which case we write HF only. All calculations of ground state energy 𝐸𝑁 in this work are restricted to cases where the number of particles 𝑁 is a magic number, i.e. a closed shell system. This is a limitation of the many-body methods used in this work and while there are ways to overcome this limit they are beyond the scope of this work (see [Her17]). Addition/removal energies 𝜀 (±) are similarly restricted in that we only calculate the energy difference between 𝐸𝑁 of a closed shell system and 𝐸𝑁 ±1 of the same system but with one particle added/removed: 𝜀 (+) = 𝐸(𝑁 +1) − 𝐸𝑁 𝜀 (−) = 𝐸𝑁 − 𝐸(𝑁 −1) 198 7.2 Results for quantum dots The results in this section have been previously presented in [Yua+17]. There is a difference, however, in the numerical data for HF + QDPT3 presented here. In the original paper, one of the QDPT3 was calculated with the incorrect sign, affecting all HF + QDPT3 results. It has been corrected in this chapter. The conclusions remain unchanged. Ideally, ground state energies should be characterized entirely by the two system parameters (𝑁 , 𝜔), where 𝑁 is number of particles and 𝜔 is the oscillator frequency. However, the methods that we study are limited to a finite (truncated) basis and the results depend on the level of truncation. This is characterized by 𝐾 , the total number of shells in the single-particle basis. Thus, results are generally presented as a graph plotted against 𝐾 . In Sec. 7.2.4 we discuss how to estimate results as 𝐾 → ∞ (infinite-basis limit) through extrapolations. The addition and removal energies are similar, but they require an additional parameter: the total orbital angular momentum 𝑀𝓁 , defined as the sum of the 𝑚𝓁 of each particle. This is due to the presence of multiple states with near-degenerate energies. For this work, we will consider exclusively the addition/removal energies with the lowest |𝑀𝓁 | subject to the constraint that the particle added/removed lies within the next/last shell. This means the 𝑁 + 1 states of interest are those with |𝑀𝓁 | = 𝐾F mod 2 (where mod stands for the modulo operation) where 𝐾F is the number of occupied shells, while the 𝑁 − 1 states of interest are those with |𝑀𝓁 | = 1 − (𝐾F mod 2). Not all cases are solvable with our selection of many-body methods. Low frequency systems are particularly strenuous for these many-body methods due to their strong correlations, leading to equations that are difficult and expensive to solve numerically. In the tables, n.c. marks the cases where IM-SRG(2) or CCSD either diverged or converged extremely slowly. This also affects the extrapolation results in Sec. 7.2.4, as for consistency reasons we chose to extrapolate only when all five points were available. 199 Numerical calculations in this section are performed with a relative precision of about 10−5 or lower. This does not necessarily mean the results are as precise as 10−5 , since numerical errors tend to accumulate over the multiple steps of the calculation, thus the precision of the final results is expected to be roughly 10−4 . 7.2.1 Ground state energy Table 7.1: Ground state energy of quantum dots with 𝑁 particles and an oscillator frequency of 𝜔. For every row, the calculations are performed in a harmonic oscillator basis with 𝐾 shells. The abbreviation *n.c.* stands for *no convergence*: these are cases where IM-SRG(2) or CCSD either diverged or converged extremely slowly. 𝑁 6 6 6 12 12 12 20 20 20 30 30 30 42 42 42 56 56 56 𝜔 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 𝐾 14 14 14 16 16 16 16 16 16 16 16 16 20 20 20 20 20 20 HF 3.8524 8.0196 20.7192 12.9247 26.5500 66.9113 31.1460 63.5388 158.0043 62.6104 126.5257 311.8603 110.7797 223.5045 547.6832 182.6203 363.8784 885.8539 MP2 3.5449 7.6082 20.1939 12.2460 25.6433 65.7627 29.9674 61.9640 156.0239 60.8265 124.1279 308.8611 108.1350 219.9270 543.2139 179.2370 359.1916 879.9325 IM-SRG(2) 3.4950 7.5731 20.1681 12.2215 25.6259 65.7475 29.9526 61.9585 156.0233 60.6517 124.1041 308.8830 108.0604 220.0227 543.3399 n.c. 359.1997 880.1163 CCSD 3.5831 7.6341 20.2000 12.3583 25.7345 65.8097 30.1610 62.1312 156.1243 61.0261 124.3630 309.0300 108.5150 220.3683 543.5423 179.6938 359.6744 880.3781 Fig. 7.2 and Tbl. 7.1 display a selection of ground state energies calculated using HF + IM-SRG(2) and HF + CCSD as described in Sec. 7.1. We include results from Møller–Plesset perturbation theory to second order (MP2), DMC [Høg13], and FCI [Ols13] (see Tbl. 7.2) for comparison where available. 200 = = . 7.8 7.6 = = . 128 126 MP2 IM-SRG(2) CCSD FCI DMC 124 5 10 10.0 = = . 20.4 12.5 311 15.0 = = . 310 880 309 20.2 5 10 = = . 882 10.0 12.5 15.0 (number of shells) 16 18 20 Figure 7.2: Plots of ground state energy of quantum dots with 𝑁 particles and an oscillatory frequency of 𝜔 against the number of shells 𝐾 . Since DMC does not utilize a finite basis, the horizontal axis is irrelevant and DMC results are plotted as horizontal lines. We do not include results from HF only to avoid overshadowing the comparatively smaller differences between the non-HF results in the plots. Some HF results can be found in Fig. 7.5 instead. Generally, the HF ground state energies differ from the non-HF ones by a few to several percent, whereas non-HF energies tend to differ from each other by less than a percent. With respect to the number of shells, both IM-SRG(2) and CCSD appear to converge slightly Table 7.2: Similar to Table 7.1, this table compares the ground state energies of quantum dots calculated using IM-SRG(2), CCSD, and FCI [Ols13]. 𝑁 2 2 2 2 2 2 6 6 6 𝜔 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 𝐾 IM-SRG(2) 5 n.c. 5 0.9990 5 3.0068 10 n.c. 10 0.9973 10 2.9961 8 3.4906 8 7.5802 8 20.2020 201 CCSD 0.4416 1.0266 3.0176 0.4411 1.0236 3.0069 3.5853 7.6446 20.2338 FCI 0.4416 1.0266 3.0176 0.4411 1.0236 3.0069 3.5552 7.6155 20.2164 faster than second order perturbation theory (MP2), mainly due to the presence of higher order corrections in IM-SRG(2) and CCSD. There are a few cases where the IM-SRG over-corrects the result, leading to an energy lower than the quasi-exact DMC results. This is not unexpected given that, unlike the HF results, the IM-SRG method is non-variational in the presence of operator truncations, which in turn results in small unitarity violations. This over-correction tends to occur when the frequency is low (high correlation), or when few particles are involved. 7.2.2 Addition and removal energies Table 7.3: Addition energy of quantum dot systems. See Table 7.1 for details. 𝑁 𝜔 𝐾 6 6 6 12 12 12 20 20 20 30 30 30 42 42 42 56 56 56 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 14 14 14 16 16 16 16 16 16 16 16 16 20 20 20 20 20 20 HF +QDPT3 1.1849 2.4737 6.4374 1.9129 3.9266 9.9182 2.7383 5.5552 13.7902 3.7185 7.3230 17.9321 4.6931 9.2021 22.3494 5.9292 11.3123 26.9828 IM-SRG(2) +QDPT3 1.2014 2.5003 6.4546 1.9248 3.9394 9.9256 2.7143 5.5400 13.7799 3.6467 7.2719 17.9022 4.5751 9.1072 22.2941 n.c. 11.1683 26.9033 IMSRG(2) +EOM 1.1809 2.4916 6.4532 1.9094 3.9354 9.9274 2.7149 5.5409 13.7844 3.6536 7.2810 17.9088 4.5867 9.1188 22.3012 n.c. 11.1813 26.9118 CCSD +EOM 1.1860 2.4833 6.4453 1.9014 3.9205 9.9136 2.7040 5.5226 13.7667 3.6454 7.2615 17.8875 4.5750 9.0963 22.2766 5.7661 11.1518 26.8842 The results of our addition and removal energy calculations are summarized in Fig. 7.3 and Fig. 7.4 respectively. The figures show the addition/removal energies for using the approaches 202 Table 7.4: Removal energy of quantum dot systems. See Table 7.3 for details. 𝑁 𝜔 𝐾 6 6 6 12 12 12 20 20 20 30 30 30 42 42 42 56 56 56 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 14 14 14 16 16 16 16 16 16 16 16 16 20 20 20 20 20 20 HF +QDPT3 1.0073 2.0778 5.2217 1.7518 3.5782 8.8426 2.5610 5.2061 12.7548 3.5161 6.9697 16.9584 4.4481 8.8124 21.3807 5.6254 10.8917 26.0420 IM-SRG(2) +QDPT3 0.9500 2.0346 5.1950 1.6961 3.5334 8.8104 2.5133 5.1639 12.7201 3.4445 6.9282 16.9243 4.3868 8.7765 21.3453 n.c. 10.8471 26.0094 IMSRG(2) +EOM 0.9555 2.0398 5.1970 1.7017 3.5366 8.8102 2.5184 5.1660 12.7185 3.4485 6.9289 16.9215 4.3902 8.7766 21.3421 n.c. 10.8454 26.0056 CCSD +EOM 1.0054 2.0782 5.2220 1.7503 3.5779 8.8409 2.5670 5.2105 12.7546 3.5113 6.9785 16.9613 4.4451 8.8263 21.3848 5.6341 10.8957 26.0507 mentioned in Sec. 7.1. Where available, results from diffusion Monte Carlo (DMC) [Ped+11] are shown as a dashed line. As before, we do not include results from HF only in these plots as they are significantly further from the rest. Analogously, we also exclude results from pure IM-SRG (i.e. without QDPT nor EOM) or pure CCSD, as QDPT or EOM both add significant contributions to addition and removal energies. Some HF only and pure IM-SRG results can be seen in Fig. 7.5. There is strong agreement between IM-SRG(2) + QDPT3 and IM-SRG(2) + EOM2 in many cases, and slightly weaker agreement between the IM-SRG and CCSD families. This suggests that the EOM2 corrections are largely accounted for by the inexpensive QDPT3 method. However, in some cases, most notably with few particles and high correlations (low frequency), the IM-SRG(2) + QDPT3 result differs significantly from both IM-SRG(2) + EOM2 and CCSD + EOM2. 203 = = . 2.7 2.6 2.5 7.50 7.25 10 10.0 12.5 IM-SRG(2) + QDPT3 IM-SRG(2) + EOM2 CCSD + EOM2 DMC 15.0 (+) 5 = = . 7.75 = = . 6.7 6.6 6.5 = = . 18.2 18.0 5 10 = = . 27.2 27.0 10.0 12.5 15.0 (number of shells) 16 18 20 Figure 7.3: Addition energies for a selection of quantum dot parameters. See Fig. 7.2 for details. 7.2.3 Rate of convergence To analyze the rate of convergence more quantitatively, we define 𝜌𝐾 as the relative backward difference of the energy (relative slope): 𝜌𝐾 = 𝜀𝐾 − 𝜀(𝐾 −1) 𝜀𝐾 The denominator allows the quantity to be meaningfully compared between different systems. We expect this quantity to become increasingly small as the calculations converge towards the complete basis set limit. In Fig. 7.6, we plot the 𝜌15 for IM-SRG(2) + QDPT3. The many-body methods were tested against a modified Coulomb-like interaction, parametrized by two lengths 𝜎A and 𝜎B that characterize the range of the interaction: 2 2 2 2 1 (1 + 𝑐)1−1/𝑐 𝑉𝜎 ,𝜎 (𝑟) = 1 − e−𝑟 /(2𝜎A ) e−𝑟 /(2𝜎B ) A B ( ) 𝑐 𝑟 204 2.2 = = . 2.1 7.50 = = . 7.25 IM-SRG(2) + QDPT3 IM-SRG(2) + EOM2 CCSD + EOM2 DMC 7.00 10 10.0 12.5 15.0 ( ) 5 = = . 5.30 5.25 5.20 = = . 17.2 17.0 5 10 10.0 12.5 15.0 (number of shells) = = . 26.2 26.0 16 18 20 Figure 7.4: Removal energies for a selection of quantum dot parameters. See Fig. 7.3 for details. where 𝑐 = √ 𝜎B /𝜎A . The coefficient is chosen to ensure the peak of the envelope remains at unity. With (𝜎A , 𝜎B ) = (0, ∞) one recovers the original Coulomb interaction. By increasing 𝜎A one can truncate the short-range part of the interaction, and analogously by increasing 𝜎B one can truncate the long-range part of the interaction. For our numerical experiments we considered the following four combinations of (𝜎A , 𝜎B ): (0, ∞), ( 12 , ∞), (0, 4), ( 21 , 4). Reducing the short-range part of the interaction appears to improve the rate of convergence substantially. Many of the cases have reached the precision of the ODE solver (10−5 to 10−6 ). In contrast, eliminating the long-range part of the interaction had very little effect. This suggests that the main cause of the slow convergence lies in the highly repulsive, short-ranged part of the interaction, which leads to the presence of nondifferentiable cusps (the so-called Coulomb cusps) in the exact wave functions that are difficult to reproduce exactly using linear combinations of the smooth harmonic oscillator wave functions. The convergence is negatively impacted at lower frequencies and, to a lesser extent, by the increased number of particles. Both are expected: lower frequencies increase the correlation in 205 CCSD CCSD + EOM2 HF only HF only + QDPT3 IM-SRG(2) IM-SRG(2) + EOM2 IM-SRG(2) + QDPT3 MP2 / 1.00 0.95 0.2 0.4 0.6 0.8 1.0 1.00 1.000 ( )/ ( ) (+)/ (+) 1.025 0.975 0.950 0.95 0.90 0.2 0.4 0.6 0.8 1.0 0.2 0.4 0.6 0.8 1.0 Figure 7.5: The behavior of ground state, addition, and removal energies as a function of the oscillator frequency 𝜔, with 𝐾 = 10 shells in the basis. The energy is normalized with respect to the HF values to magnify the differences. Lower frequency leads to stronger correlations and thereby a more difficult problem. the system, while higher number of particles naturally require more shells to converge. In general, there does not appear to be any difference between the convergence behavior of addition energies as compared to that of removal energies. 7.2.4 Extrapolation To reduce errors from the basis set truncation, one can either use explicitly correlated R12/F12 methods that account for the correct cusp behavior in many-electron wave functions [Kut85; KK87; KBV12], or one can use basis extrapolation techniques. In the present work, we focus on the latter. As derived by Kvaal [Kva09; KHM07], the asymptotic convergence of quantum dot observables in a finite harmonic oscillator basis can be approximately described by a power law 206 ( , ) (, ) (, ) (, ) (, ) | | 10−4 (20, 0.28) ( , ) (12, 0.28) (6, 0.28) (20, 1.0) (12, 1.0) (6, 1.0) 10−5 Figure 7.6: The impact of the interaction on convergence of addition and removal energies using IM-SRG(2) + QDPT3. For clarity, the plot does not distinguish between addition and removal energies. The horizontal axis shows the system parameters, where 𝑁 is the number of particles and 𝜔 is the oscillator frequency. The vertical axis shows |𝜌15 | (relative slope), which estimates the rate of convergence at 15 total shells. The lower the value of |𝜌15 |, the faster the convergence. The data points are categorized by the interactions. The trends suggest that the singular short-range part of the interaction has a much stronger impact on the convergence than the long-range tail. model: 𝛥𝐸 ∝ 𝐾 −𝛽 where 𝛥𝐸 is the difference between the finite-basis result and the infinite-basis result, 𝐾 is the number of shells in the single-particle basis, and 𝛽 is some positive real exponent. The smoothness of the exact wave function determines the rate of the convergence: the more times the exact wave function can be differentiated, the higher the exponent 𝛽. We note that this model was derived under the assumption that all correlations are included in the calculation (i.e. FCI), thus we are making an assumption that our selection of methods approximately obey the same behavior. The validity of this assumption will be assessed at the end of this section. 207 Table 7.5: Extrapolated ground state energies for quantum dots with fit uncertainties, computed from the approximate Hessian in the Levenberg–Marquardt fitting algorithm. These uncertainties also determine the number of significant figures presented. Extrapolations are done using 5-point fits where the number of shells 𝐾 ranges between 𝐾stop − 4 and 𝐾stop (inclusive). The abbreviation *n.c.* stands for *no convergence*: these are extrapolations where, out of the 5 points, at least one of them was unavailable because IM-SRG(2) or CCSD either diverged or converged extremely slowly. 𝑁 6 6 6 12 12 12 20 20 20 30 30 30 42 42 42 56 56 56 𝜔 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 𝐾stop 14 14 14 16 16 16 16 16 16 16 16 16 20 20 20 20 20 20 MP2 3.5108(4) 7.5608(3) 20.129 98(5) 12.198(7) 25.548(1) 65.627(2) 29.87(5) 61.88(1) 155.758(3) 59.8(2) 123.95(8) 308.80(5) 106.3(4) 219.6(2) 542.686(9) 172.9(6) 357.3(6) 879.86(8) IM-SRG(2) 3.4963(5) 7.569 71(2) 20.1481(3) 12.2217(2) 25.6146(1) 65.6970(7) 29.950(1) 61.946(3) 155.912(4) n.c. 124.00(4) 308.85(3) 107.0(1) 219.89(8) 543.074(3) n.c. n.c. 880.07(7) CCSD 3.581 83(2) 7.628 12(7) 20.1791(3) 12.3575(4) 25.7190(2) 65.7579(8) 30.13(2) 62.114(5) 156.010(3) 60.3(2) 124.26(5) 309.00(3) 107.1(4) 220.2(1) 543.276(4) 174(1) 358.1(5) 880.33(7) In general, the exponent 𝛽 cannot be determined a priori, thus we will empirically compute 𝛽 by fitting the following model through our data: 𝐸 = 𝛼𝐾 −𝛽 + 𝛾 (7.1) As a nonlinear curve fit, it can be quite sensitive to the initial parameters. Therefore, good guesses of the parameters are necessary to obtain a sensible result. For this, we first fit a linear model of 208 Table 7.6: Extrapolated addition energies for quantum dots with fit uncertainties. The abbreviation *n.c.* has the same meaning as in Table 7.5. The abbreviation *n.f.* stands for *no fit*: this particular extrapolation resulted in unphysical parameters (𝛽 ≤ 0). See Table 7.5 for other details. 𝑁 𝜔 𝐾stop 6 6 6 12 12 12 20 20 20 30 30 30 42 42 42 56 56 56 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 14 14 14 16 16 16 16 16 16 16 16 16 20 20 20 20 20 20 IM-SRG(2) +QDPT3 1.206(2) 2.63(8) 6.4536(1) n.f. 3.925(5) 9.9235(2) 2.708(4) 5.539 15(1) 13.7759(8) n.c. 7.18(3) 17.897(4) 4.19(6) 9.068(6) 22.2943(7) n.c. n.c. 26.86(4) IMSRG(2) +EOM 1.180 95(5) 2.490 39(2) 6.4491(7) 1.909 274(1) 3.9339(3) 9.9235(5) 2.705(3) 5.5405(3) 13.779(1) n.c. 7.18(5) 17.902(6) 4.28(4) 9.08(1) 22.301 47(1) n.c. n.c. 26.87(4) CCSD +EOM 1.185 81(2) 2.482 13(4) 6.440 747(1) 1.901 39(2) 3.918 520(9) 9.9070(1) 2.682(2) 5.521 80(7) 13.760(2) 3.40(2) 7.16(4) 17.880(6) 4.33(2) 9.05(1) 22.2768(9) 3(3) 10.7(3) 26.84(4) log |𝜕𝐸/𝜕𝐾 | against log 𝐾 : | 𝜕𝐸 | log|| || = −(𝛽 + 1) log 𝐾 + log |𝛼𝛽| | 𝜕𝐾 | This is useful because linear fits are very robust and will often converge even if the initial parameters are far from their final values. It also provides a means to visually assess the quality of the fit. The derivative is approximated using the central difference: 𝜕𝐸 1 1 ≈ 𝐸 (𝐾 + ) − 𝐸 (𝐾 − ) 𝜕𝐾 2 2 The process of numerically calculating the derivative can amplify the noise in the data and 209 Table 7.7: Extrapolated removal energies for quantum dots with fit uncertainties. See Table 7.6 for details. 𝑁 𝜔 𝐾stop 6 6 6 12 12 12 20 20 20 30 30 30 42 42 42 56 56 56 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 0.1 0.28 1.0 14 14 14 16 16 16 16 16 16 16 16 16 20 20 20 20 20 20 IM-SRG(2) +QDPT3 0.9509(2) 2.033 96(1) 5.188 89(8) 1.696 24(8) 3.532 236(5) 8.8039(4) 2.5112(6) 5.163(1) 12.7122(4) n.c. 6.88(2) 16.925(2) 4.04(8) 8.73(3) 21.338(1) n.c. n.c. 26.008(9) IMSRG(2) +EOM 0.9561(4) 2.0387(2) 5.186(3) 1.701 81(6) 3.535 12(9) 8.803 90(1) 2.5163(8) 5.165(1) 12.7101(5) n.c. 6.88(2) 16.923(2) 4.06(7) 8.73(3) 21.335(1) n.c. n.c. 26.004(8) CCSD +EOM 1.004 943(8) 2.076 20(2) 5.2154(1) 1.750 31(7) 3.575 27(1) 8.8331(2) 2.55(1) 5.208(3) 12.7442(2) 3.35(6) 6.94(3) 16.963(2) 4.1(2) 8.76(6) 21.378(2) 5.3(1) 10.75(9) 26.050(9) distorts the weights of the data points. Moreover, it does not provide a means to compute 𝛾 , the extrapolated energy. Thus a second accurate nonlinear curve fit is necessary. The parameters 𝛼 and 𝛽 are extracted from the linear fit and used as inputs for a power-law fit of 𝐸 against 𝐾 . It is necessary to estimate the infinite-basis energy 𝛾 as well, which is done by fitting Eq. 7.1 while the parameters 𝛼 and 𝛽 are fixed to the initial guesses. The fixing ensures that the fit is still linear in nature and thus highly likely to converge. Afterward, we do a final fit with all three parameters free to vary. All fits are done using the traditional Levenberg–Marquardt (LM) optimization algorithm [Lev44; Mar63] as implemented in MINPACK [Mor78; MGH80], with equal weighting of all data points. There is still one additional tuning knob for this model that is not explicitly part of Eq. 7.1: the range of data points taken into consideration (fit range). Since the model describes the asymptotic 210 10 3 6.48 (energy) 2 CCSD + EOM2 HF only + QDPT3 IM-SRG(2) + EOM2 IM-SRG(2) + QDPT3 6.46 (+) (+)/ 10 6.44 6 × 100 101 (number of shells) 10 15 (number of shells) Figure 7.7: A five-point fit of the addition energies of the (𝑁 , 𝜔) = (6, 1.0) system with 𝐾stop = 15. The grey shaded region contains the masked data points, which are ignored by the fitting procedure. The left figure plots the central difference of the addition energies 𝜀 (+) with respect to the number of shells 𝐾 . On such a plot, the power law model should appear as a straight line. The fits are optimized using the procedure described in Sec. 7.2.4. Note that the lines do not evenly pass through the points in the left plot as the fitting weights are tuned for the energy on a linear scale, not the energy differences on a logarithmic scale. behavior, we do not expect the fit to produce good results when the energy is still very far from convergence. To account for this, we only fit the last few data points within some chosen range. If the range is too large, then the non-asymptotic behavior would perturb the result too much, whereas if the range is too small, there would be more noise and less confidence in whether the trend is legitimate rather than accidental. Empirically, we chose to fit the last 5 points of our available data. The results are shown in Tbls. 7.5, 7.6, and 7.7. A specific example of the fit is shown in Fig. 7.7 The LM fitting procedure also computes uncertainties for the parameters from an approximate Hessian of the model function. It is therefore tempting to use the uncertainty of the fit to quantify the uncertainty of the extrapolated energy. We certainly would not expect this to account for the error due to the operator truncation, but how accurately does it quantify the discrepancy of our extrapolated result from the true infinite-basis energy? We investigated this idea by performing a fit over all possible 5-point fit ranges [𝐾stop −4, 𝐾stop ]. 211 By comparing the extrapolated results at varying values of 𝐾stop with the extrapolated result at the highest possible 𝐾stop and treating the latter as the “true” infinite-basis result, we can statistically assess whether the fit uncertainties are a good measure of the discrepancy from the true infinite-basis result. Our results show a somewhat bimodal distribution: when the relative fit uncertainty is higher than 10−3.5 , the fit uncertainty quantifies the discrepancy well; otherwise, the fit uncertainty underestimates the discrepancy by a factor of 10 or less. Unlike the other methods, HF energies are somewhat unusual in that they generally do not conform to the power-law model. In fact, the plots indicate an exponential convergence with respect to the number of shells, which has also been observed in molecular systems [Hal+99]. We surmise that HF is insensitive to the Coulomb cusp. Nonetheless, despite the poor fits that often arise, the extrapolated energies are often quite good for HF. This is likely due to its rapid convergence, which leaves very little degree of freedom even for a poorly chosen model. Moreover, we found that the fit uncertainties of the energy are fairly good measures of the true discrepancy. Not all fits yield a positive value of 𝛽 for addition and removal energies, which suggests that the data points do not converge, or require a very high number of shells to converge. This affects exclusively IM-SRG(2) + QDPT3 for systems with few particles and low frequencies, indicating that perturbation theory is inadequate for such systems. 7.3 Results for nuclei In this section, we provide a few selected results for nuclear systems as a proof of concept. Due to time constraints, we have not been able to run calculations with higher values of 𝑒max (Eq. 5.9) or to explore a greater span of the oscillator frequency 𝜔 of the basis. We expect to gather a more diverse collection of results in a future publication [Yua+]. 212 16O 164.00 164.25 E /MeV 164.50 CCSD, emax = 10 CCSD, emax = 8 IMSRG(2), emax = 10 IMSRG(2), emax = 8 164.75 165.00 165.25 165.50 20.0 22.5 25.0 /(MeV/ ) 27.5 Figure 7.8: Ground state of 16 O, computed using IM-SRG(2) and CCSD with the N3 LO(𝛬 = 500 MeV, 𝜆SRG = 2 fm−1 ) interaction Fig. 7.8 shows the computed ground state energies of oxygen-16 plotted as a function of the basis oscillator frequency 𝜔. The results were computed using two many-body methods: HF + IM-SRG and HF + CCSD (coupled cluster singles and doubles). The interaction we use is the N3 LO(𝛬 = 500 MeV) interaction of [EM03], softened by SRG evolution to 𝜆SRG = 2 fm−1 . We use a strictly two-body nuclear interaction here. We observe that both methods agree with each other to about 1 MeV. Furthermore, we see that the results are very close to convergence with respect to 𝑒max . The cup-shaped curve suggests the existence of a local minimum near 𝜔 = 24 MeV/ℏ. The curve is quite flat, which again suggests that the results are nearly converged. For reference, the experimental value is about −128 MeV. The reason for this large discrepancy is that the SRG softening of the interaction has introduced a significant three-body component to the nuclear interaction that we are neglecting. With the appropriate treatment of this three-body component, one can achieve values much closer to experimental data. Readers interested in more 213 elaborate ground state energy calculations using IM-SRG may consult [Her+13]. 17O 16O (0d5/2n) /MeV 7.45 7.50 CCSD + EOM2, emax = 10 CCSD + EOM2, emax = 8 IMSRG(2) + QDPT3, emax = 10 IMSRG(2) + QDPT3, emax = 8 7.55 7.60 7.65 7.70 20 25 /(MeV/ ) Figure 7.9: Addition energy from 16 O to 17 O, computed using IM-SRG(2) + QDPT3 and CCSD + EOM2 with the N3 LO(𝛬 = 500 MeV, 𝜆SRG = 2 fm−1 ) interaction We now consider the addition energy going from oxygen-16 to oxygen-17, achieved by adding a neutron to the 0d5/2 state. This is presented in Fig. 7.9. The energies were calculated using HF + IM-SRG(2) + QDPT3 and HF + CCSD + EOM2 with the same nuclear interaction as before. Both methods agree with each other to about 0.2 MeV. With respect to 𝑒max , both curves are converging at a rate of 0.05 MeV per shell, which is also quite good. Unlike the ground state however, the curve is no longer cup-shaped, but increasing with the frequency. This is not entirely unusual, as such shapes have been observed in other non-energy observables. It may also be possible that there is a local minimum to the left side of the graph, though we consider this unlikely given our removal energy results in the next figure. For comparison, the experimental value is about −4.1 MeV. We suspect that the absence of three-body forces is a significant reason for this discrepancy. The removal energy going from oxygen-16 to nitrogen-15 is achieved by removing a proton 214 16O 15N (0p1/2p) /MeV 22.00 22.05 CCSD + EOM2, emax = 10 CCSD + EOM2, emax = 8 IMSRG(2) + QDPT3, emax = 10 IMSRG(2) + QDPT3, emax = 8 22.10 22.15 22.20 22.25 22.30 20 25 /(MeV/ ) Figure 7.10: Removal energy from 16 O to 15 N, computed using IM-SRG(2) + QDPT3 and CCSD + EOM2 with the N3 LO(𝛬 = 500 MeV, 𝜆SRG = 2 fm−1 ) interaction from the 0p1/2 state. This is presented in Fig. 7.10. The energies were calculated using HF + IM-SRG(2) + QDPT3 and HF + CCSD + EOM2 with the same nuclear interaction as before. Both methods agree with each other to about 0.3 MeV. With respect to 𝑒max , both curves are converging at a rate of 0.02 MeV per shell, which is really good considering the magnitude of the removal energy. Like the addition energies, the curve is not cup-shaped, but leans to the side. However, in this case we clearly see a point where the curves at different 𝑒max values cross each other, at around 𝜔 = 25 MeV/ℏ. For comparison, the experimental value is about −12 MeV. Again, our values are significantly different, likely due to missing three-body contributions. − For reference, we have also attached the results for nitrogen-15 in the excited state 𝐽 𝜋 = 32 in Fig. 7.11, oxygen-23 in Fig. 7.12, and oxygen 21 in Fig. 7.13. All these results were calculated using the same approach as before. In all cases, the difference between the two methods is very small and the convergence with respect to 𝑒max appears to be quite good. 215 16O 15N 3 2 ( ) (0p3/2p) /MeV 31.40 31.45 CCSD + EOM2, emax = 10 CCSD + EOM2, emax = 8 IMSRG(2) + QDPT3, emax = 10 IMSRG(2) + QDPT3, emax = 8 31.50 31.55 31.60 31.65 20 25 /(MeV/ ) − Figure 7.11: Removal energy from 16 O to 15 N in the excited 𝐽 𝜋 = 32 state, computed using IM-SRG(2) + QDPT3 and CCSD + EOM2 with the N3 LO(𝛬 = 500 MeV, 𝜆SRG = 2 fm−1 ) interaction From the preliminary results so far, we see that our perturbative results agree quite well with the EOM results. In conjunction with the testing and verification described in Sec. 6.10, this helps confirm the correctness of our J-scheme implementation. We believe these results indicate a promising start for more extensive studies of nuclei through this approach. 216 23O 22O 9.7 (1s1/2n) /MeV 9.8 CCSD + EOM2, emax = 10 CCSD + EOM2, emax = 8 IMSRG(2) + QDPT3, emax = 10 IMSRG(2) + QDPT3, emax = 8 9.9 10.0 10.1 10.2 10.3 20 25 /(MeV/ ) Figure 7.12: Addition energy from 22 O to 23 O, computed using IM-SRG(2) + QDPT3 and CCSD + EOM2 with the N3 LO(𝛬 = 500 MeV, 𝜆SRG = 2 fm−1 ) interaction 22O 21O (0d5/2n) /MeV 12.00 CCSD + EOM2, emax = 10 CCSD + EOM2, emax = 8 IMSRG(2) + QDPT3, emax = 10 IMSRG(2) + QDPT3, emax = 8 12.05 12.10 12.15 20 25 /(MeV/ ) Figure 7.13: Removal energy from 22 O to 21 O, computed using IM-SRG(2) + QDPT3 and CCSD + EOM2 with the N3 LO(𝛬 = 500 MeV, 𝜆SRG = 2 fm−1 ) interaction 217 Chapter 8 Conclusions In this work, our focus has been on the calculation of single-particle energies (addition and removal energies) of quantum dots and nuclei using a combination of Hartree–Fock (HF) theory, in-medium similarity renormalization group theory up to two-body operators (IM-SRG(2)), and quasidegenerate perturbation theory at third order (QDPT3). We have compared the results to other methods like equations-of-motion up to two-particle excitations (EOM2) and coupled cluster with singles and doubles (CCSD) and found good agreement in the majority of the systems. Thus, we have a reasonably effective and inexpensive way to compute energies of states near closed-shell nuclei. To achieve this calculation, we have developed an open-source J-scheme implementation of the three major many-body methods verified by a variety of tests. It is capable of calculating various quantum systems, including quantum dots and nuclei. The framework of the code is highly flexible: one can readily add additional quantum systems simply by writing a module that supplies the appropriate input single-particle basis (Sec. 6.4.4.1). In concert with the J-scheme implementation, we have also developed a graphical tool for painless manipulation of angular momentum coupling diagrams. This greatly reduces the effort required to derive J-scheme equations and eliminates many sources of human error. We expect this to be particularly useful in theories where spherical tensor operators occur. 218 8.1 Future perspectives There are many directions in which our current work can be improved upon. The most immediate extension is the exploration of additional parameters for our nuclear calculations, including additional oscillator frequencies 𝜔, additional values of 𝑒max (maximum shell index, Eq. 5.9), and of course additional nuclear isotopes. There are numerous possibilities here. After obtaining nuclear results with more parameters, we could perform a more detailed analysis of the convergence patterns with respect to both 𝑒max and 𝜔. We can also compute extrapolations using, for example, the prescription in [Her+16]. As we have already implemented systems like infinite nuclear matter [HLK17] and homogeneous electron gas [SG13], we could explore these systems and analyze the quality our method in these systems. Neutron drop calculations can also be readily achieved with our code since it uses essentially the same basis as nuclei. It is possible to construct valence shell model Hamiltonians using only QDPT [HKO95], but concerns were raised about its convergence due to the strength of the nuclear interaction. Given our preliminary but promising results, it may be possible to use IM-SRG + QDPT to construct valence shell model Hamiltonians and operators with comparable quality to those from EOM-based approaches, which are significantly more expensive. The inclusion of three-body force is likely a necessity for results that are comparable with experimental data. We can introduce a large fraction of its contribution through the three-body normal-ordering process, which is computationally tractable, unlike IM-SRG(3). We could also upgrade the HF framework to include three-body forces. We could improve the IM-SRG(2) approximation by incorporating some of the truncated higher-body terms in the commutator through approximate techniques such as those described in [Her+16; Mor16]. It may also be worth evaluating additional QDPT terms at fourth order 219 for greater accuracy. Since the nature of IM-SRG can eliminate a large number of QDPT terms, QDPT4 may be feasible. Some classes of diagrams could even be summed to infinite order through resummation techniques. Our J-scheme implementation is not yet fully optimized. Some of the expensive commutator terms are still coded fairly naively and could be improved. We have also made very little use of parallelization at either the shared-memory or distributed-memory level – currently, parallelization occurs primarily within the external GEMM implementation, which is limited to threads. The Shampine–Gordon ODE solver library that we use is very much designed for distributed-memory parallelization – if we enable this feature, it would help distribute both the computational and memory load across multiple nodes. Several of the expensive GEMM calculations could be distributed between nodes on a block-by-block basis similar to [Akt+11]. 220 REFERENCES 221 REFERENCES [Akt+11] H. M. Aktulga, C. Yang, E. G. Ng, P. Maris, and J. P. Vary. “Large-scale parallel null space calculation for nuclear configuration interaction”. 2011 International Conference on High Performance Computing Simulation. July 2011, pp. 176–185. doi: 10.1109/HPCSim.2011.5999822. [AM98] E. Anisimovas and A. Matulis. “Energy spectra of few-electron quantum dots”. J. Phys. Condens. Mat. 10.3 (1998), p. 601. doi: 10.1088/0953-8984/10/3/013. [And+99] E. Anderson, Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney, and D. Sorensen. LAPACK Users’ Guide. Third. Philadelphia, PA: Society for Industrial and Applied Mathematics, 1999. isbn: 0-89871-447-8 (paperback). doi: 10.1137/1.9780898719604. url: http: //www.netlib.org/lapack/lug/. [Apache2] Apache License, Version 2.0. Apache Software Foundation. url: https://www.apache. org/licenses/LICENSE-2.0. [Bar81] R. J. Bartlett. “Many-body perturbation-theory and Coupled Cluster Theory for electron correlation in molecules”. Annu. Rev. Phys. Chem. 32 (1981), p. 359. doi: 10.1146/annurev.pc.32.100181.002043. [BFP07] S. K. Bogner, R. J. Furnstahl, and R. J. Perry. “Similarity renormalization group for nucleon-nucleon interactions”. Phys. Rev. C 75 (2007), p. 061001. [BFS10] S.K. Bogner, R.J. Furnstahl, and A. Schwenk. “From low-momentum interactions to nuclear structure”. Progress in Particle and Nuclear Physics 65.1 (2010), pp. 94–147. issn: 0146-6410. doi: 10.1016/j.ppnp.2010.03.001. arXiv: 0912.3688. [Bin14] Sven Binder. “Coupled-Cluster Theory for Nuclear Structure”. PhD thesis. Darmstadt: Technische Universität, Feb. 2014. url: https://tuprints.ulb.tu-darmstadt.de/3946/. [BL09] Ewald Balcar and Stephen W. Lovesey. Introduction to the Graphical Theory of Angular Momentum. Case Studies. 1st ed. Vol. 234. Springer Tracts in Modern Physics. Berlin, Heidelberg: Springer, 2009. isbn: 978-3-642-03117-5. doi: 10.1007/978-3-642-03118-2. [BM67] T.A. Brody and M. Moshinsky. Tables of transformation brackets for nuclear shellmodel calculations. 2nd ed. Mexico, 1967. [Bog+14] S. K. Bogner, H. Hergert, J. D. Holt, A. Schwenk, S. Binder, A. Calci, J. Langhammer, and R. Roth. “Nonperturbative Shell-Model Interactions from the In-Medium Similarity Renormalization Group”. Phys. Rev. Lett. 113 (14 Oct. 2014), p. 142501. doi: 10.1103/PhysRevLett.113.142501. arXiv: 1402.1407. 222 [Bra67] Baird H. Brandow. “Linked-Cluster Expansions for the Nuclear Many-Body Problem”. Rev. Mod. Phys. 39 (4 Oct. 1967), pp. 771–828. doi: 10.1103/RevModPhys.39.771. [Bro65] Charles G Broyden. “A class of methods for solving nonlinear simultaneous equations”. Math. Comput. 19.92 (1965), pp. 577–593. doi: 10.1090/S0025- 5718- 19650198670-6. [BW88] B A Brown and B H Wildenthal. “Status of the Nuclear Shell Model”. Annual Review of Nuclear and Particle Science 38.1 (1988), pp. 29–66. doi: 10.1146/annurev.ns.38. 120188.000333. [C11] ISO International Standard ISO/IEC 9899:2011 – Programming languages C. Standard. Geneva, Switzerland: International Organization for Standardization, Dec. 2011. url: http://open-std.org/jtc1/sc22/wg14/www/standards.html#9899. [Cal14] Angelo Calci. “Evolved Chiral Hamiltonians at the Three-Body Level and Beyond”. PhD thesis. Darmstadt: Technische Universität, June 2014. url: https://tuprints.ulb. tu-darmstadt.de/4069/. [Cargo] Cargo: The Rust package manager. GitHub. url: https://github.com/rust-lang/cargo. [ClFmt] ClangFormat. LLVM. 2017. url: https://clang.llvm.org/docs/ClangFormat.html. [Dar31] C. G. Darwin. “The Diamagnetism of the Free Electron”. Mathematical Proceedings of the Cambridge Philosophical Society 27.1 (1931), pp. 86–90. doi: 10.1017/ S0305004100009373. [DLMF] NIST Digital Library of Mathematical Functions. Release 1.0.14 of 2016-12-21. F. W. J. Olver, A. B. Olde Daalhuis, D. W. Lozier, B. I. Schneider, R. F. Boisvert, C. W. Clark, B. R. Miller and B. V. Saunders, eds. 2016. url: http://dlmf.nist.gov. [Doxygen] Dimitri van Heesch. Doxygen. 2017. url: http://doxygen.org. [EHM09] E. Epelbaum, H.-W. Hammer, and Ulf-G. Meißner. “Modern theory of nuclear forces”. Rev. Mod. Phys. 81 (4 Dec. 2009), pp. 1773–1825. doi: 10.1103/RevModPhys.81.1773. arXiv: 0811.1338. [EM03] D. R. Entem and R. Machleidt. “Accurate charge-dependent nucleon-nucleon potential at fourth order of chiral perturbation theory”. Phys. Rev. C 68 (4 Oct. 2003), p. 041001. doi: 10.1103/PhysRevC.68.041001. arXiv: nucl-th/0304018. [Eps26] Paul S. Epstein. “The Stark Effect from the Point of View of Schroedinger’s Quantum Theory”. Phys. Rev. 28 (4 Oct. 1926), pp. 695–710. doi: 10.1103/PhysRev.28.695. 223 [Eva14] Francesco A. Evangelista. “A driven similarity renormalization group approach to quantum many-body problems”. J. Chem. Phys. 141.5 (2014), p. 054109. doi: 10.1063/1.4890660. [Fey49] R. P. Feynman. “The Theory of Positrons”. Phys. Rev. 76 (6 Sept. 1949), pp. 749–759. doi: 10.1103/PhysRev.76.749. [FmtRFCs] Rust code formatting RFCs. GitHub. url: https://github.com/rust-lang-nursery/fmtrfcs. [FNV] Glenn Fowler, Landon Curt Noll, Kiem-Phong Vo, Donald Eastlake, and Tony Hansen. The FNV Non-Cryptographic Hash Algorithm. Internet-Draft draft-eastlake-fnv-14. IETF Secretariat, Dec. 2017. url: https://tools.ietf.org/html/draft-eastlake-fnv-14. [Foc28] V. Fock. “Bemerkung zur Quantelung des harmonischen Oszillators im Magnetfeld”. Z. Phys. 47.5 (May 1928), pp. 446–448. issn: 0044-3328. doi: 10.1007/BF01390750. [Foc30] V. Fock. “Näherungsmethode zur Lösung des quantenmechanischen Mehrkörperproblems”. Z. Phys. 61.1 (Jan. 1930), pp. 126–148. issn: 0044-3328. doi: 10.1007/ BF01340294. [GG08] Kazushige Goto and Robert A. van de Geijn. “Anatomy of High-performance Matrix Multiplication”. ACM Trans. Math. Softw. 34.3 (May 2008), 12:1–12:25. issn: 00983500. doi: 10.1145/1356052.1356053. url: http://www.cs.utexas.edu/~flame/pubs/ GotoTOMS_revision.pdf. [Git] Git. 2017. url: https://git-scm.com. [Gofmt] Command gofmt. Build version go 1.9.2. Google. url: https://golang.org/cmd/gofmt/. [Gol57] Jeffrey Goldstone. “Derivation of the Brueckner many-body theory”. Proceedings of the Royal Society of London A: Mathematical, Physical and Engineering Sciences 239.1217 (1957), pp. 267–279. issn: 0080-4630. doi: 10.1098/rspa.1957.0037. url: http://rspa.royalsocietypublishing.org/content/239/1217/267. [Gre16] Brendan Gregg. “The Flame Graph”. Commun. ACM 59.6 (May 2016), pp. 48–57. issn: 0001-0782. doi: 10.1145/2909476. url: http://queue.acm.org/detail.cfm?id=2927301. [Gt16] Torbjörn Granlund and the GMP development team. GNU MP: The GNU Multiple Precision Arithmetic Library. 6.1.2. 2016. url: https://gmplib.org. [Haddock] Simon Marlow. Haddock: A Haskell Documentation Tool. 2017. url: https://www. haskell.org/haddock/. [Hal+99] Asger Halkier, Trygve Helgaker, Poul Jørgensen, Wim Klopper, and Jeppe Olsen. “Basis-set convergence of the energy in molecular Hartree–Fock calculations”. Chem. 224 Phys. Lett. 302.5 (1999), pp. 437–446. issn: 0009-2614. doi: 10.1016/S0009-2614(99) 00179-7. [Har28] D. R. Hartree. “The Wave Mechanics of an Atom with a Non-Coulomb Central Field. Part I. Theory and Methods”. Math. Proc. Cambridge 24.1 (1928), pp. 89–110. doi: 10.1017/S0305004100011919. [Her+13] H. Hergert, S. K. Bogner, S. Binder, A. Calci, J. Langhammer, R. Roth, and A. Schwenk. “In-medium similarity renormalization group with chiral two- plus three-nucleon interactions”. Phys. Rev. C 87 (3 Mar. 2013), p. 034307. doi: 10.1103/PhysRevC.87. 034307. arXiv: 1212.1190. [Her+16] H. Hergert, S. K. Bogner, T. D. Morris, A. Schwenk, and K. Tsukiyama. “The InMedium Similarity Renormalization Group: A novel ab initio method for nuclei”. Phys. Rep. 621 (2016), p. 165. doi: 10.1016/j.physrep.2015.12.007. [Her17] H Hergert. “In-medium similarity renormalization group for closed and open-shell nuclei”. Phys. Scr. 92.2 (2017), p. 023002. doi: 10.1088/1402-4896/92/2/023002. [Hg] Mercurial. 2017. url: https://www.mercurial-scm.org. [HKO95] Morten Hjorth-Jensen, Thomas T. S. Kuo, and Eivind Osnes. “Realistic effective interactions for nuclear systems”. Physics Reports 261.3 (1995), pp. 125–270. issn: 0370-1573. doi: 10.1016/0370-1573(95)00012-6. [HLK17] Morten Hjorth-Jensen, Maria Paola Lombardo, and Ubirajara van Kolck. An Advanced Course in Computational Nuclear Physics: Bridging the Scales from Quarks to Neutron Stars. Vol. 936. Lecture Notes in Physics. Cham: Springer International Publishing, 2017. isbn: 978-3-319-53336-0. doi: 10 .1007 / 978 - 3 - 319 - 53336 - 0_ 1. url: https: //github.com/ManyBodyPhysics/LectureNotesPhysics. [Hoe14] Christian Hoelbling. “Lattice QCD: Concepts, Techniques and Some Results”. Acta Physica Polonica B 45.12 (2014), p. 2143. doi: 10.5506/APhysPolB.45.2143. arXiv: 1410.3403. [Høg13] Jørgen Høgberget. “Quantum Monte-Carlo Studies of Generalized Many-body Systems”. MA thesis. University of Oslo, 2013. url: https://www.duo.uio.no/handle/ 10852/37167. [Hug57] N. M. Hugenholtz. “Perturbation theory of large quantum systems”. Physica 23.1 (1957), pp. 481–532. issn: 0031-8914. doi: 10.1016/S0031-8914(57)92950-6. [IAH07] N. Ishii, S. Aoki, and T. Hatsuda. “Nuclear Force from Lattice QCD”. Phys. Rev. Lett. 99 (2 July 2007), p. 022001. doi: 10.1103/PhysRevLett.99.022001. arXiv: nucl-th/0611096. 225 [Iri+16] T. Iritani, T. Doi, S. Aoki, S. Gongyo, T. Hatsuda, Y. Ikeda, T. Inoue, N. Ishii, K. Murano, H. Nemura, and K. Sasaki. “Mirage in temporal correlation functions for baryon-baryon interactions in lattice QCD”. Journal of High Energy Physics 1610.10 (Oct. 2016), p. 101. issn: 1029-8479. doi: 10.1007/JHEP10(2016)101. arXiv: 1607.06371. [Ish+12] Noriyoshi Ishii, Sinya Aoki, Takumi Doi, Tetsuo Hatsuda, Yoichi Ikeda, Takashi Inoue, Keiko Murano, Hidekatsu Nemura, and Kenji Sasaki. “Hadron–hadron interactions from imaginary-time Nambu–Bethe–Salpeter wave function on the lattice”. Physics Letters B 712.4 (2012), pp. 437–441. issn: 0370-2693. doi: 10.1016/j.physletb.2012.04. 076. arXiv: 1203.3642. [Jim+02] Trevor Jim, J. Gregory Morrisett, Dan Grossman, Michael W. Hicks, James Cheney, and Yanling Wang. “Cyclone: A Safe Dialect of C”. USENIX Annual Technical Conference, General Track. 2002. url: http://www.cs.umd.edu/~mwh/papers/cyclonecuj.pdf. [Jucys] Jucys. GitHub. url: https://github.com/Rufflewind/jucys. [KBV12] Liguo Kong, Florian A. Bischoff, and Edward F. Valeev. “Explicitly Correlated R12/F12 Methods for Electronic Structure”. Chem. Rev. 112.1 (2012). PMID: 22176553, pp. 75– 107. doi: 10.1021/cr200204r. [Keh06] S. Kehrein. The Flow Equation Approach to Many-Particle Systems. Springer Tracts in Modern Physics. Springer, 2006. doi: 10.1007/3-540-34068-8. [KH84] P. J. Knowles and N. C. Handy. “A new determinant-based full configuration interaction method”. Chemical Physics Letters 111.4 (1984), pp. 315–321. issn: 0009-2614. doi: 10.1016/0009-2614(84)85513-X. [KHM07] S. Kvaal, M. Hjorth-Jensen, and H. Møll Nilsen. “Effective interactions, large-scale diagonalization, and one-dimensional quantum dots”. Phys. Rev. B 76 (2007), p. 085421. doi: 10.1103/PhysRevB.76.085421. [KK87] Wim Klopper and Werner Kutzelnigg. “Møller-plesset calculations taking care of the correlation CUSP”. Chem. Phys. Lett. 134.1 (1987), pp. 17–22. issn: 0009-2614. doi: 10.1016/0009-2614(87)80005-2. [Kuo+81] T. T. S Kuo, J. Shurpin, K. C. Tam, E. Osnes, and P. J. Ellis. “A simple method for evaluating Goldstone diagrams in an angular momentum coupled representation”. Annals of Physics 132.2 (1981), pp. 237–276. issn: 0003-4916. doi: 10.1016/00034916(81)90068-3. [Kut85] Werner Kutzelnigg. “r12-Dependent terms in the wave function as closed sums of partial wave amplitudes for large l”. Theor. chim. acta 68.6 (Dec. 1985), pp. 445–469. issn: 1432-2234. doi: 10.1007/BF00527669. 226 [Kva08] S. Kvaal. “Open source FCI code for quantum dots and effective interactions”. ArXiv e-prints (Oct. 2008). arXiv: 0810.2644. [Kva09] Simen Kvaal. “Harmonic oscillator eigenfunction expansions, quantum dots, and effective interactions”. Phys. Rev. B 80 (2009), p. 045321. doi: 10.1103/PhysRevB.80. 045321. [Kva74] V. Kvasnička. “Construction of model hamiltonians in framework of RayleighSchrödinger perturbation theory”. Czech. J. Phys. Sect. B 24.6 (June 1974), pp. 605–615. issn: 1572-9486. doi: 10.1007/BF01587295. [Lan14] Joachim Langhammer. “Chiral Three-Nucleon Interactions in Ab-Initio Nuclear Structure and Reactions”. PhD thesis. Darmstadt: Technische Universität, Feb. 2014. url: https://tuprints.ulb.tu-darmstadt.de/3945/. [Law+79] C. L. Lawson, R. J. Hanson, D. R. Kincaid, and F. T. Krogh. “Basic Linear Algebra Subprograms for Fortran Usage”. ACM Trans. Math. Softw. 5.3 (Sept. 1979), pp. 308– 323. issn: 0098-3500. doi: 10.1145/355841.355847. [Lep05] G. P. Lepage. “What is Renormalization?” ArXiv (June 2005). arXiv: hep-ph/0506330. [Lev44] Kenneth Levenberg. “A Method for the Solution of Certain Non-Linear Problems in Least Squares”. Q. Appl. Math. 2.2 (1944), pp. 164–168. issn: 0033569X, 15524485. url: https://www.jstor.org/stable/43633451. [Lin74] I. Lindgren. “The Rayleigh-Schrodinger perturbation and the linked-diagram theorem for a multi-configurational model space”. J. Phys. Pt. B Atom. M. P. 7.18 (1974), p. 2441. doi: 10.1088/0022-3700/7/18/010. [LM86] Ingvar Lindgren and John Morrison. Atomic Many-Body Theory. 2nd ed. Vol. 3. Springer Series on Atomic, Optical, and Plasma Physics. Berlin, Heidelberg: Springer, 1986. isbn: 9783642616402. doi: 10.1007/978-3-642-96614-9. [Loh10] Magnus Pedersen Lohne. “Coupled-cluster studies of quantum dots”. MA thesis. University of Oslo, 2010. url: https://www.duo.uio.no/handle/10852/10966. [Lutario] Fei Yuan. Lutario. GitHub. url: https://github.com/xrf/lutario. [Mar63] Donald W. Marquardt. “An Algorithm for Least-Squares Estimation of Nonlinear Parameters”. J. Soc. Ind. Appl. Math. 11.2 (1963), pp. 431–441. doi: 10.1137/0111030. [Maz07a] David A. Mazziotti. “Anti-Hermitian Formulation of the Contracted Schrödinger Theory”. Reduced-Density-Matrix Mechanics: With Application to Many-Electron Atoms and Molecules. John Wiley& Sons, Inc., 2007, pp. 331–342. isbn: 9780470106600. doi: 10.1002/9780470106600.ch12. 227 [Maz07b] David A. Mazziotti. “Anti-Hermitian part of the contracted Schrödinger equation for the direct calculation of two-electron reduced density matrices”. Phys. Rev. A 75 (2 Feb. 2007), p. 022505. doi: 10.1103/PhysRevA.75.022505. [ME11] R. Machleidt and D. R. Entem. “Chiral effective field theory and nuclear forces”. Physics Reports 503.1 (2011), pp. 1–75. issn: 0370-1573. doi: 10.1016/j.physrep.2011. 02.001. arXiv: 1105.2919. [MGH80] J J Moré, B S Garbow, and K E Hillstrom. User guide for MINPACK-1. ANL-80-74. Argonne, IL, Aug. 1980. url: https://www.mcs.anl.gov/~more/ANL8074b.pdf. [MIT] MIT License. Open Source Initiative. url: https://opensource.org/licenses/MIT. [Mor16] Titus Dan Morris. “Systematic improvements of ab-initio in-medium similarity renormalization group calculations”. PhD thesis. Michigan State University, 2016. url: https://publications.nscl.msu.edu/thesis/Morris_2016_387.pdf. [Mor78] Jorge J. Moré. “The Levenberg-Marquardt algorithm: Implementation and theory”. Numerical Analysis: Proceedings of the Biennial Conference Held at Dundee, June 28–July 1, 1977. Ed. by G. A. Watson. Berlin, Heidelberg: Springer, 1978, pp. 105–116. isbn: 978-3-540-35972-2. doi: 10.1007/BFb0067700. [Mos59] Marcos Moshinsky. “Transformation brackets for harmonic oscillator functions”. Nuclear Physics 13.1 (1959), pp. 104–116. issn: 0029-5582. doi: 10.1016/0029-5582(59) 90143-9. [MP34] C. Møller and M. S. Plesset. “Note on an Approximation Treatment for Many-Electron Systems”. Phys. Rev. 46 (Oct. 1934), pp. 618–622. doi: 10.1103/PhysRev.46.618. [MPB15] T. D. Morris, N. M. Parzuchowski, and S. K. Bogner. “Magnus expansion and inmedium similarity renormalization group”. Phys. Rev. C 92 (3 Sept. 2015), p. 034331. doi: 10.1103/PhysRevC.92.034331. [Nav+09] Petr Navrátil, Sofia Quaglioni, Ionel Stetcu, and Bruce R. Barrett. “Recent developments in no-core shell-model calculations”. Journal of Physics G: Nuclear and Particle Physics 36.8 (2009), p. 083101. doi: 10.1088/0954-3899/36/8/083101. arXiv: 0904.0463. [Nes55] R. K. Nesbet. “Configuration interaction in orbital theories”. Proceedings of the Royal Society of London A: Mathematical, Physical and Engineering Sciences 230.1182 (1955), pp. 312–321. issn: 0080-4630. doi: 10 . 1098 / rspa . 1955 . 0134. eprint: http : //rspa.royalsocietypublishing.org/content/230/1182/312.full.pdf. [NVB00] P. Navrátil, J. P. Vary, and B. R. Barrett. “Large-basis ab initio no-core shell model and its application to 12 𝐂”. Phys. Rev. C 62 (5 Oct. 2000), p. 054311. doi: 10.1103/ PhysRevC.62.054311. 228 [NYC10] Eric Neuscamman, Takeshi Yanai, and Garnet Kin-Lic Chan. “A review of canonical transformation theory”. Int. Rev. Phys. Chem. 29.2 (2010), pp. 231–271. doi: 10.1080/ 01442351003620540. [ODE] Lawrence Shampine and Marilyn Gordon. ODE: Ordinary differential equation initialvalue problem solver. url: http://www.netlib.org/ode/ode.f. [Ols+88] Jeppe Olsen, Björn O. Roos, Poul Jørgensen, and Hans Jørgen Aa. Jensen. “Determinant based configuration interaction algorithms for complete and restricted configuration interaction spaces”. The Journal of Chemical Physics 89.4 (1988), pp. 2185–2192. doi: 10.1063/1.455063. [Ols13] Veronica K. Berglyd Olsen. “Full Configuration Interaction Simulation of Quantum Dots”. MA thesis. University of Oslo, 2013. url: https://www.duo.uio.no/handle/ 10852/34217. [Pan56] Sudhir P. Pandya. “Nucleon-Hole Interaction in jj Coupling”. Phys. Rev. 103 (4 Aug. 1956), pp. 956–957. doi: 10.1103/PhysRev.103.956. [Par17] Nathan Michael Parzuchowski. “Nuclear Spectroscopy with the In-Medium Similarity Renormalization Group”. PhD thesis. Michigan State University, 2017. url: https://d.lib.msu.edu/etd/4630. [Ped+11] M. Pedersen Lohne, G. Hagen, M. Hjorth-Jensen, S. Kvaal, and F. Pederiva. “Ab initio computation of the energies of circular quantum dots”. Phys. Rev. B 84 (2011), p. 115302. [PEP8] Guido van Rossum, Barry Warsaw, and Nick Coghlan. Style Guide for Python Code. Python Enhancement Proposal 8. July 2001. url: https://www.python.org/dev/peps/ pep-0008/. [Perf] perf: Linux profiling with performance counters. url: https://perf.wiki.kernel.org. [PMB17] N. M. Parzuchowski, T. D. Morris, and S. K. Bogner. “Ab initio excited states from the in-medium similarity renormalization group”. Phys. Rev. C 95 (4 Apr. 2017), p. 044304. doi: 10.1103/PhysRevC.95.044304. arXiv: 1611.00661. [Pul80] Péter Pulay. “Convergence acceleration of iterative sequences. the case of scf iteration”. Chem. Phys. Lett. 73.2 (1980), pp. 393–398. issn: 0009-2614. doi: 10.1016/00092614(80)80396-4. [Pul82] P. Pulay. “Improved SCF convergence acceleration”. J. Comput. Chem. 3.4 (1982), pp. 556–560. issn: 1096-987X. doi: 10.1002/jcc.540030413. [Rac42] Giulio Racah. “Theory of Complex Spectra. II”. Phys. Rev. 62 (9-10 Nov. 1942), pp. 438– 462. doi: 10.1103/PhysRev.62.438. 229 [Reg58] T. Regge. “Symmetry properties of Clebsch-Gordon’s coefficients”. Il Nuovo Cimento 10.3 (Nov. 1958), pp. 544–545. issn: 1827-6121. doi: 10.1007/BF02859841. [Rei13] Sarah Reimann. “Quantum-mechanical systems in traps and Similarity Renormalization Group theory”. MA thesis. University of Oslo, 2013. url: https://www.duo. uio.no/handle/10852/37161. [Rot+12] Robert Roth, Sven Binder, Klaus Vobig, Angelo Calci, Joachim Langhammer, and Petr Navrátil. “Medium-Mass Nuclei with Normal-Ordered Chiral NN+3N Interactions”. Phys. Rev. Lett. 109 (2012), p. 052501. [Rust] Rust. url: https://www.rust-lang.org. [RustBook] The Rust Project Developers. The Rust Programming Language. Ed. by Steve Klabnik. 2nd ed. 2017. url: https://github.com/rust-lang/book. [Rustfmt] rustfmt. GitHub. url: https://github.com/rust-lang-nursery/rustfmt. [RY04] J. Rasch and A. C. H. Yu. “Efficient Storage Scheme for Precalculated Wigner 3j, 6j and Gaunt Coefficients”. SIAM Journal on Scientific Computing 25.4 (2004), pp. 1416– 1428. doi: 10.1137/S1064827503422932. [SB09] I. Shavitt and R. J. Bartlett. Many-Body Methods in Chemistry and Physics: MBPT and Coupled-Cluster Theory. Cambridge Molecular Science. Cambridge University Press, 2009. [SG13] James J. Shepherd and Andreas Grüneis. “Many-Body Quantum Chemistry for the Electron Gas: Convergent Perturbative Theories”. Phys. Rev. Lett. 110 (22 May 2013), p. 226401. doi: 10.1103/PhysRevLett.110.226401. arXiv: 1310.6059. [SG75] L. F. Shampine and M. K. Gordon. Computer Solution of Ordinary Differential Equations: The Initial Value Problem. Freeman, 1975. [SgOde] Lawrence Shampine, Marilyn Gordon, and Fei Yuan. Parallelizable Shampine-Gordon ODE solver. GitHub. url: https://github.com/xrf/sg-ode. [Sphinx] Georg Brandl. Sphinx: Python Documentation Generator. 2018. url: http://www. sphinx-doc.org. [Str+16] S. R. Stroberg, H. Hergert, J. D. Holt, S. K. Bogner, and A. Schwenk. “Ground and excited states of doubly open-shell nuclei from ab initio valence-space Hamiltonians”. Phys. Rev. C 93 (5 May 2016), p. 051301. doi: 10.1103/PhysRevC.93.051301. arXiv: 1511.02802. 230 [Str+17] S. R. Stroberg, A. Calci, H. Hergert, J. D. Holt, S. K. Bogner, R. Roth, and A. Schwenk. “Nucleus-Dependent Valence-Space Approach to Nuclear Structure”. Phys. Rev. Lett. 118 (3 Jan. 2017), p. 032502. doi: 10.1103/PhysRevLett.118.032502. arXiv: 1607.03229. [Suh07] Jouni Suhonen. From Nucleons to Nucleus. Concepts of Microscopic Nuclear Theory. 1st ed. Theoretical and Mathematical Physics. Berlin, Heidelberg: Springer, 2007. isbn: 978-3-540-48861-3. doi: 10.1007/978-3-540-48861-3. [Tal52] Igal Talmi. “Nuclear Spectroscopy with Harmonic Oscillator Wave-Functions”. Helvetica Physica Acta 25.3 (1952), pp. 185–234. issn: 0018-0238. doi: 10.5169/seals112307. [TBS11] K. Tsukiyama, S. K. Bogner, and A. Schwenk. “In-Medium Similarity Renormalization Group For Nuclei”. Phys. Rev. Lett. 106 (2011), p. 222502. [TBS12] K. Tsukiyama, S. K. Bogner, and A. Schwenk. “In-medium similarity renormalization group for open-shell nuclei”. Phys. Rev. C 85 (2012), p. 061304. doi: 10.1103/PhysRevC. 85.061304. [Tho10] M. Thoennessen. “Plans for the Facility for Rare Isotope Beams”. Nuclear Physics A 834.1 (2010). The 10th International Conference on Nucleus-Nucleus Collisions (NN2009), pp. 688c–693c. issn: 0375-9474. doi: 10.1016/j.nuclphysa.2010.01.125. [Uka15] Akira Ukawa. “Kenneth Wilson and Lattice QCD”. Journal of Statistical Physics 160.5 (Sept. 2015), pp. 1081–1124. issn: 1572-9613. doi: 10.1007/s10955-015-1197-x. arXiv: 1501.04215. [Valgrind] Valgrind Developers. Valgrind. 2017. url: http://valgrind.org. [Wan+13] Qian Wang, Xianyi Zhang, Yunquan Zhang, and Qing Yi. “AUGEM: Automatically Generate High Performance Dense Linear Algebra Kernels on x86 CPUs”. Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis. SC ’13. Denver, Colorado: ACM, 2013, 25:1–25:12. isbn: 978-1-45032378-9. doi: 10.1145/2503210.2503219. url: https://xianyi.github.io/paper/augem_ SC13.pdf. [Weg01] Franz J. Wegner. “Flow equations for Hamiltonians”. Phys. Rep. 348 (2001), pp. 77–89. doi: 10.1016/S0370-1573(00)00136-8. [Wei79] Steven Weinberg. “Phenomenological Lagrangians”. Physica A: Statistical Mechanics and its Applications 96.1 (1979), pp. 327–340. issn: 0378-4371. doi: 10.1016/03784371(79)90223-1. [Wei98] Liqiang Wei. “New formula for 9-j symbols and their direct calculation”. Computers in Physics 12.6 (1998), pp. 632–634. doi: 10.1063/1.168745. 231 [Wei99] Liqiang Wei. “Unified approach for exact calculation of angular momentum coupling and recoupling coefficients”. Computer Physics Communications 120.2 (1999), pp. 222– 230. issn: 0010-4655. doi: 10.1016/S0010-4655(99)00232-5. [Whi02] S. R. White. “A numerical canonical transformation approach to quantum many body problems”. J. Chem. Phys. 117 (2002), p. 7472. [Wic50] G. C. Wick. “The Evaluation of the Collision Matrix”. Phys. Rev. 80 (2 Oct. 1950), pp. 268–272. doi: 10.1103/PhysRev.80.268. [Wig93] E. P. Wigner. “On the Matrices Which Reduce the Kronecker Products of Representations of S. R. Groups”. The Collected Works of Eugene Paul Wigner: Part A: The Scientific Papers. Ed. by Arthur S. Wightman. Berlin, Heidelberg: Springer, 1993, pp. 608–654. isbn: 978-3-662-02781-3. doi: 10.1007/978-3-662-02781-3_42. [Wil83] Kenneth G. Wilson. “The renormalization group and critical phenomena”. Rev. Mod. Phys. 55 (3 July 1983), pp. 583–600. doi: 10.1103/RevModPhys.55.583. eprint: https: //www.nobelprize.org/nobel_prizes/physics/laureates/1982/wilson-lecture.pdf. [WP06] Paul E. S. Wormer and Josef Paldus. “Angular Momentum Diagrams”. Ed. by J. R. Sabin and E. Brändas. Vol. 51. Advances in Quantum Chemistry Supplement C. Academic Press, 2006, pp. 59–123. doi: 10 . 1016 / S0065 - 3276(06 ) 51002 - 0. url: http://www.theochem.ru.nl/files/dbase/aqc-51-59-2006.pdf. [WSH] wigner-symbols. 2015. url: https://hackage.haskell.org/package/wigner-symbols. [WSR] wigner-symbols. 2017. url: https://crates.io/crates/wigner-symbols. [XQS17] Zhang Xianyi, Wang Qian, and Werner Saar. OpenBLAS. 2017. url: http://www. openblas.net. [YLV62] A. P. Yutsis, I. B. Levinson, and V. V. Vanagas. Mathematical Apparatus of The Theory of Angular Momentum. Trans. by A. Sen and R. N. Sen. Translated from Russian. Jerusalem: Israel Program for Scientific Translations, 1962. url: https : //archive.org/details/nasa_techdoc_19630001624. [Yua+] Fei Yuan, Samuel J. Novario, Nathan M. Parzuchowski, S. K. Bogner, and Morten Hjorth-Jensen. “Addition and removal energies of nuclei”. in preparation. [Yua+17] Fei Yuan, Samuel J. Novario, Nathan M. Parzuchowski, Sarah Reimann, S. K. Bogner, and Morten Hjorth-Jensen. “Addition and removal energies of circular quantum dots”. The Journal of Chemical Physics 147.16 (2017), p. 164109. doi: 10.1063/1.4995615. eprint: 1707.00229. url: https://doi.org/10.1063/1.4995615. 232