Subscriber access provided by University of Sunderland
Quantum Electronic Structure
An Efficient Hartree-Fock Implementation Based on the Contraction of Integrals in the Primitive Basis Joseph Held, Michael Hanrath, and Michael Dolg J. Chem. Theory Comput., Just Accepted Manuscript • DOI: 10.1021/acs.jctc.8b00358 • Publication Date (Web): 26 Oct 2018 Downloaded from http://pubs.acs.org on October 27, 2018
Just Accepted “Just Accepted” manuscripts have been peer-reviewed and accepted for publication. They are posted online prior to technical editing, formatting for publication and author proofing. The American Chemical Society provides “Just Accepted” as a service to the research community to expedite the dissemination of scientific material as soon as possible after acceptance. “Just Accepted” manuscripts appear in full in PDF format accompanied by an HTML abstract. “Just Accepted” manuscripts have been fully peer reviewed, but should not be considered the official version of record. They are citable by the Digital Object Identifier (DOI®). “Just Accepted” is an optional service offered to authors. Therefore, the “Just Accepted” Web site may not include all articles that will be published in the journal. After a manuscript is technically edited and formatted, it will be removed from the “Just Accepted” Web site and published as an ASAP article. Note that technical editing may introduce minor changes to the manuscript text and/or graphics which could affect content, and all legal disclaimers and ethical guidelines that apply to the journal pertain. ACS cannot be held responsible for errors or consequences arising from the use of information contained in these “Just Accepted” manuscripts.
is published by the American Chemical Society. 1155 Sixteenth Street N.W., Washington, DC 20036 Published by American Chemical Society. Copyright © American Chemical Society. However, no copyright claim is made to original U.S. Government works, or works produced by employees of any Commonwealth realm Crown government in the course of their duties.
Page 1 of 18 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Journal of Chemical Theory and Computation
An Efficient Hartree-Fock Implementation Based on the Contraction of Integrals in the Primitive Basis Joseph Held,∗ Michael Hanrath,∗ and Michael Dolg∗ Institute for Theoretical Chemistry, University of Cologne, Greinstr. 4, 50939 Cologne, Germany E-mail:
[email protected];
[email protected];
[email protected] Abstract A new approach to implement the restricted closed-shell Hartree-Fock equation is proposed. In the ansatz presented, the explicit transformation of integrals from the primitive to the atomic-orbital basis is omitted. Instead, the density matrix is transformed to the primitive basis, in which it is contracted with the untransformed integrals. Obtained is the two-electron part of the Fock matrix, which is transformed back to the atomic orbital basis. The remaining steps of the self-consistent field algorithm are then performed as usual. The program presented here incorporates the most important standard techniques, such as integral prescreening, convergence acceleration (via the direct inversion of the iterative subspace ansatz) and the differential density scheme. Test calculations on standard Hartree-Fock problems were compared to the commercially available MOLPRO and TURBOMOLE program packages. Except in a few special cases, the program presented here performs superior in comparison to those two programs. Speedups of up to 5 were found with respect to MOLPRO calculations and up to 3 for TURBOMOLE (in the latter case up to 55 for generalised contracted basis sets). The program structure is independent of the type of radial contraction, however the best results are obtained for generalised radial contraction basis sets of low contraction. The program is written in C++, and utilises code generation engines to automatically generate the routines for the integration and density contraction. Streaming SIMD extensions are used explicitly.
1
Introduction
Hartree-Fock theory 1–5 is of central importance for abinitio electronic structure calculations. Although the wave function obtained for the ground state of the system under investigation is not of the desired accuracy, these wave functions constitute the entry point for a plethora of more advanced methods. Within the context of Roothaan and Halls 6,7 basis set expansion, the Hartree-Fock ansatz became available in a routine fashion, although with limitations on the system size. Larger systems have been made available by the direct 8 self-consistent field (SCF) ansatz, especially in combination with advanced prescreening techniques. 9 Nowadays, several program packages, e.g., 10–13 are available to treat a variety of problems of chemical interest. In the work presented here, a novel ansatz to the route of transforming the two-electron integrals (ERI) from the primitive to the atomic-orbital (AO) basis 14 is presented. An implementation is investigated in which this transformation is omitted, by contracting the integrals directly in the primitive basis. Presented are internal comparisons of the two routes, as well as comparisons of the new ansatz to established program packages. The program presented has been written in C++, as part of the ’Quantum Objects Library’ (QOL), 15 which is developed at the Institute for Theoretical Chemistry, University of Cologne. In the work presented here, the Obara-Saika 16,17 (OS) scheme is used for the integra-
tion. In this traditional approach no additional techniques, such as RI, 18–22 density fitting, 23–26 Cholesky decompositions 27–29 or the multipole method 30,31 were applied. However, there is no conceptual obstacle preventing the inclusion of such techniques.
2
Basis Set Expansion
In the formalism of Roothaan and Hall, the integrodifferential Hartree-Fock equations are cast to simple matrix equations. For closed-shell systems, in a spatially restricted formalism using real AO basis functions, the Fock matrix is constructed as given in X 1 core Fij = Hij + Dkl hik|jli − hik|lji . (1) 2 kl | {z } Gij
In the direct SCF ansatz, the ERIs over AOs ZZ 1 hij|kli = i(1)j(2) k(1)l(2)dr1 dr2 r12
(2)
have to be recomputed in each iteration, making their efficient treatment mandatory. This efficiency depends strongly on the type of AOs |ii used. Several different types of AOs have been proposed over the years (for an exhaustive overview the reader is pointed to 32 ). Today,
ACS Paragon Plus Environment 1
Journal of Chemical Theory and Computation 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
primitive Cartesian Gaussians (PCGs) k 2 ˜ i (r, a, A) = xiA y j zA G exp(−arA ) A
(3)
j k
are used almost exclusively, due to their ease of integrability. They are centered on A, with the position of the electron relative this center: rA = r − A. The nonnegative integer Cartesian quantum numbers i, j and k give the total angular momentum l = i + j + k of the corresponding PCG. Using these functions however complicates integral processing. Despite their ease of integrability, they give a rather poor description of the electronic system, mostly due to the incorrect radial shape. To account for that, linear combinations of PCGs are employed in electronic structure calculations. This can be motivated by setting up the basis functions |ii in an ’atoms in molecules’ fashion. Atomic orbitals, centered on A, are used for basis functions which are set up as products of an angular and a radial part. |ii
AO
(r, ϑ, φ, A) = ψ rad (r, A) · ψ ang (ϑ, φ, A)
(4)
For the radial part the correct shape is approximated by a linear combination of Gaussians X 2 ψ rad (r, A, a) = Tνr exp(−aν rA ) (5) ν
while for the angular part real solid harmonics are used. l−|m| 2
Slm (x, y, z) =Nlm
t X X
|m| 2−vm
Nlm vm
lm Ctuv
· x2t+|m|−2(u+v) y 2(u+v) z l−2t−|m| t 1 l l−t =(−1)t+v−vm t |m| + t 4 t |m| · u 2v r 2(l + |m|)!(l − |m|)! 1 = |m| 2δ0m 2 l! 0 m≥0 = 1 m void DSSS ( double * out , const sh ellBat chData & sbd , const double * psss , const double * ssss ) { for ( int i = 0; i