<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Chem.</journal-id>
<journal-title>Frontiers in Chemistry</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Chem.</abbrev-journal-title>
<issn pub-type="epub">2296-2646</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1232425</article-id>
<article-id pub-id-type="doi">10.3389/fchem.2023.1232425</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Chemistry</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Efficient implementation of analytical gradients for periodic hybrid functional calculations within fitted numerical atomic orbitals from NAO2GTO</article-title>
<alt-title alt-title-type="left-running-head">Qin et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fchem.2023.1232425">10.3389/fchem.2023.1232425</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Qin</surname>
<given-names>Xinming</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/937818/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Shang</surname>
<given-names>Honghui</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Yang</surname>
<given-names>Jinlong</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>Hefei National Research Center for Physical Sciences at the Microscale</institution>, <institution>University of Science and Technology of China</institution>, <addr-line>Hefei</addr-line>, <addr-line>Anhui</addr-line>, <country>China</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Key Laboratory of Precision and Intelligent Chemistry</institution>, <institution>University of Science and Technology of China</institution>, <addr-line>Hefei</addr-line>, <addr-line>Anhui</addr-line>, <country>China</country>
</aff>
<aff id="aff3">
<sup>3</sup>
<institution>Hefei National Laboratory</institution>, <institution>University of Science and Technology of China</institution>, <addr-line>Hefei</addr-line>, <addr-line>Anhui</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1536132/overview">Murat Ke&#xe7;eli</ext-link>, Argonne National Laboratory (DOE), United States</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1762005/overview">Xiaowei Sheng</ext-link>, Anhui Normal University, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2035500/overview">Guo-Xu Zhang</ext-link>, Harbin Institute of Technology, China</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Honghui Shang, <email>shh@ustc.edu.cn</email>; Jinlong Yang, <email>jlyang@ustc.edu.cn</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>27</day>
<month>07</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2023</year>
</pub-date>
<volume>11</volume>
<elocation-id>1232425</elocation-id>
<history>
<date date-type="received">
<day>31</day>
<month>05</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>13</day>
<month>07</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Qin, Shang and Yang.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Qin, Shang and Yang</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>The NAO2GTO scheme provides an efficient way to evaluate the electron repulsion integrals (ERIs) over numerical atomic orbitals (NAOs) with auxiliary Gaussian-type orbitals (GTOs). However, the NAO2GTO fitting will significantly impact the accuracy and convergence of hybrid functional calculations. To address this issue, here we propose to use the fitted orbitals as a new numerical basis to properly handle the mismatch between NAOs and fitted GTOs. We present an efficient and linear-scaling implementation of analytical gradients of Hartree-Fock exchange (HFX) energy for periodic HSE06 calculations with fitted NAOs in the HONPAS package. In our implementation, the ERIs and their derivatives for HFX matrix and forces are evaluated analytically with the auxiliary GTOs, while other terms are calculated using numerically discretized GTOs. Several integral screening techniques are employed to reduce the number of required ERI derivatives. We benchmark the accuracy and efficiency of our implementation and demonstrate that our results of lattice constants, bulk moduli, and band gaps of several typical semiconductors are in good agreement with the experimental values. We also show that the calculation of HFX forces based on a master-worker dynamic parallel scheme has a very high efficiency and scales linearly with respect to system size. Finally, we study the geometry optimization and polaron formation due to an excess electron in rutile TiO<sub>2</sub> by means of HSE06 calculations to further validate the applicability of our implementation.</p>
</abstract>
<kwd-group>
<kwd>Hartree-Fock exchange</kwd>
<kwd>atomic forces</kwd>
<kwd>electron repulsion integral derivatives</kwd>
<kwd>NAO2GTO</kwd>
<kwd>fitted orbitals</kwd>
<kwd>integral screening</kwd>
<kwd>linear scaling</kwd>
</kwd-group>
<contract-num rid="cn001">22003061 22003073 T222202 22288201 22273092</contract-num>
<contract-num rid="cn002">2021YFB0300600</contract-num>
<contract-sponsor id="cn001">National Natural Science Foundation of China<named-content content-type="fundref-id">10.13039/501100001809</named-content>
</contract-sponsor>
<contract-sponsor id="cn002">National Key Research and Development Program of China<named-content content-type="fundref-id">10.13039/501100012166</named-content>
</contract-sponsor>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Theoretical and Computational Chemistry</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>The Kohn-Sham density-functional theory (KS-DFT) (<xref ref-type="bibr" rid="B24">Hohenberg and Kohn, 1964</xref>; <xref ref-type="bibr" rid="B33">Kohn and Sham, 1965</xref>) has become the most popular method for predicting the structural and electronic properties of molecular and condensed-matter systems. The success of DFT is attributed to the fact that the local-density approximation (LDA) (<xref ref-type="bibr" rid="B33">Kohn and Sham, 1965</xref>) and semilocal generalized-gradient approximation (GGA) (<xref ref-type="bibr" rid="B52">Perdew, 1985</xref>; <xref ref-type="bibr" rid="B53">Perdew et al., 1996</xref>) for exchange-correlation energy functional can provide reasonable accuracy at a low computational cost. However, local or semilocal functionals severely underestimate band gaps of semiconductors due to their intrinsic self-interaction error (<xref ref-type="bibr" rid="B46">Mori-S&#xe1;nchez et al., 2008</xref>). Dramatic improvements can be achieved by incorporating a certain fraction of non-local orbital-dependent Hartree-Fock exchange (HFX) into the local or semilocal exchange, producing so-called hybrid functionals (<xref ref-type="bibr" rid="B70">Stephens et al., 1994</xref>; <xref ref-type="bibr" rid="B1">Adamo and Barone, 1999</xref>; <xref ref-type="bibr" rid="B13">Ernzerhof and Scuseria, 1999</xref>; <xref ref-type="bibr" rid="B23">Heyd et al., 2003</xref>, <xref ref-type="bibr" rid="B22">2006</xref>; <xref ref-type="bibr" rid="B34">Krukau et al., 2006</xref>). In particular, the Heyd&#x2013;Scuseria&#x2013;Ernzerhof (HSE) screened hybrid functional (HSE03 (<xref ref-type="bibr" rid="B23">Heyd et al., 2003</xref>) or HSE06 (<xref ref-type="bibr" rid="B22">Heyd et al., 2006</xref>; <xref ref-type="bibr" rid="B34">Krukau et al., 2006</xref>)) is the most successful one in solid-state physics, which employs only a short-range HFX to avoid the problematic effects of long-range one in solids (<xref ref-type="bibr" rid="B29">Janesko et al., 2009</xref>). It has been shown that HSE can yield improved results of structural, thermochemical, and electronic properties for both molecules and solids (<xref ref-type="bibr" rid="B51">Paier et al., 2006b</xref>,<xref ref-type="bibr" rid="B50">a</xref>; <xref ref-type="bibr" rid="B45">Marsman et al., 2008</xref>; <xref ref-type="bibr" rid="B20">Henderson et al., 2011</xref>). Nevertheless, the evaluation of exact exchange is significantly more expensive than the local or semilocal approximations, which formally has a quartic scaling <inline-formula id="inf1">
<mml:math id="m1">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> with system size <italic>N</italic> and hinders the wide applications of hybrid functionals. As a result, it is of great importance to develop and implement efficient and linear-scaling approaches for large-scale hybrid functional calculations.</p>
<p>The success of hybrid functionals has also prompted the development of efficient numerical techniques for reducing the computational cost and scaling of HFX calculations in the past two decades. Currently, hybrid functional calculations for periodic systems are available in a range of DFT packages with plane-wave (PW) (<xref ref-type="bibr" rid="B45">Marsman et al., 2008</xref>; <xref ref-type="bibr" rid="B69">Spencer and Alavi, 2008</xref>; <xref ref-type="bibr" rid="B7">Broqvist et al., 2009</xref>; <xref ref-type="bibr" rid="B27">Hu et al., 2017b</xref>), Gaussian-type orbital (GTO) (<xref ref-type="bibr" rid="B23">Heyd et al., 2003</xref>; <xref ref-type="bibr" rid="B16">Guidon et al., 2008</xref>; <xref ref-type="bibr" rid="B37">Lee et al., 2022</xref>), and numerical atomic orbital (NAO) (<xref ref-type="bibr" rid="B66">Shang et al., 2011</xref>; <xref ref-type="bibr" rid="B38">Levchenko et al., 2015</xref>; <xref ref-type="bibr" rid="B58">Qin et al., 2015</xref>; <xref ref-type="bibr" rid="B41">Lin et al., 2020</xref>) basis sets. For PW basis sets, a low-rank approximation called adaptively compressed exchange (ACE) (<xref ref-type="bibr" rid="B40">Lin, 2016</xref>; <xref ref-type="bibr" rid="B26">Hu et al., 2017a</xref>) operator has been proposed, resulting in significant acceleration of hybrid functional calculations. When combined with the interpolative separable density fitting (ISDF) algorithm (<xref ref-type="bibr" rid="B44">Lu and Ying, 2015</xref>; <xref ref-type="bibr" rid="B27">Hu et al., 2017b</xref>), the overall computational scaling can be further reduced to <inline-formula id="inf2">
<mml:math id="m2">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. However, linear-scaling hybrid functional calculations within PWs cannot be achieved unless extended KS orbitals are converted to maximally localized Wannier functions (<xref ref-type="bibr" rid="B77">Wu et al., 2009</xref>; <xref ref-type="bibr" rid="B32">Ko et al., 2020</xref>). To enable linear-scaling hybrid functional calculations, one has to exploit the sparsity of HFX matrix represented with real-space localized basis functions. In this context, GTOs exhibit a natural advantage since they are analytical and decay exponentially in real space. Within GTOs, four-center electron repulsion integrals (ERIs) for constructing the HFX matrix can be evaluated analytically (<xref ref-type="bibr" rid="B59">Reine et al., 2012</xref>) and a number of linear-scaling approaches (<xref ref-type="bibr" rid="B8">Burant et al., 1996</xref>; <xref ref-type="bibr" rid="B63">Schwegler and Challacombe, 1996</xref>; <xref ref-type="bibr" rid="B62">Schwegler et al., 1997</xref>; <xref ref-type="bibr" rid="B48">Ochsenfeld et al., 1998</xref>) existed in the quantum chemistry community can be used as valuable references. Because of this, GTO-based electronic structure packages such as CP2K(<xref ref-type="bibr" rid="B35">K&#xfc;hne et al., 2020</xref>), CRYSTAL (<xref ref-type="bibr" rid="B11">Dovesi et al., 2020</xref>), Q-Chem (<xref ref-type="bibr" rid="B37">Lee et al., 2022</xref>), and Pyscf (<xref ref-type="bibr" rid="B71">Sun et al., 2020</xref>) have made great progress in periodic HFX calculations.</p>
<p>In fact, current linear-scaling electronic structure packages, such as SIESTA (<xref ref-type="bibr" rid="B68">Soler et al., 2002</xref>), CONQUEST (<xref ref-type="bibr" rid="B72">Torralba et al., 2008</xref>), OPENMX (<xref ref-type="bibr" rid="B49">Ozaki and Kino, 2005</xref>), FHI-aims (<xref ref-type="bibr" rid="B6">Blum et al., 2009</xref>), HONPAS(<xref ref-type="bibr" rid="B58">Qin et al., 2015</xref>; <xref ref-type="bibr" rid="B55">2020a</xref>) and ABACUS(<xref ref-type="bibr" rid="B39">Li et al., 2016</xref>), prefer to adopt NAO basis sets. Compared to exponentially decayed GTOs, NAOs are strictly localized in real space, which provides greater convenience for linear-scaling calculations. However, hybrid functional calculations with NAOs are more challenging since the numerical evaluation of ERIs is much more time-consuming. To reduce the computational cost, three possible routes can be taken. The first route is to expand the products of NAOs in terms of PWs (<xref ref-type="bibr" rid="B9">Chen et al., 2018</xref>; <xref ref-type="bibr" rid="B41">Lin et al., 2020</xref>), and the computational cost of HFX can be asymptotically quadratic due to the locality of NAOs. The second route is to introduce low-rank approximations, such as the resolution-of-the-identity (RI) approach (<xref ref-type="bibr" rid="B60">Ren et al., 2012</xref>; <xref ref-type="bibr" rid="B38">Levchenko et al., 2015</xref>; <xref ref-type="bibr" rid="B41">Lin et al., 2020</xref>, <xref ref-type="bibr" rid="B42">2021</xref>) and the ISDF decomposition (<xref ref-type="bibr" rid="B56">Qin et al., 2020b</xref>,<xref ref-type="bibr" rid="B57">c</xref>), which can significantly reduce the computational cost by avoiding four-center integrals. Furthermore, linear-scaling HFX calculation can be implemented by using the localized RI (LRI) approximation (<xref ref-type="bibr" rid="B38">Levchenko et al., 2015</xref>; <xref ref-type="bibr" rid="B41">Lin et al., 2020</xref>). The third route is to fit the NAOs with a linear combination of several GTOs so that the ERIs can also be calculated analytically with fitted GTOs. We have previously proposed this scheme called NAO2GTO (<xref ref-type="bibr" rid="B66">Shang et al., 2011</xref>) to take full advantages of both NAOs and GTOs. In conjunction with several integral screening techniques, HFX calculations based on the NAO2GTO scheme can be very efficient and scale linearly (<xref ref-type="bibr" rid="B66">Shang et al., 2011</xref>; <xref ref-type="bibr" rid="B58">Qin et al., 2015</xref>). In practice, however, the NAOs cannot be fitted accurately with a small number (e.g., 3&#x2013;6) of GTOs, which will seriously affects the accuracy and even the convergence of a hybrid functional calculation. We can improve the results by increasing the number of GTOs, but too many GTOs will significantly increase the computational cost of ERIs. To effectively utilize the NAO2GTO scheme for NAO-based hybrid functional calculations, it is crucial to address the mismatch between NAOs and fitted GTOs.</p>
<p>On the other hand, there have been few reports on analytical energy gradients (atomic forces) for periodic hybrid functional calculations with NAOs to date. Atomic forces are defined as analytical gradients of total energy to atomic positions, which are required for geometry optimization and <italic>ab initio</italic> molecular dynamics simulations. In the PW method, the two-electron HFX term has no contribution to atomic forces according to the Hellmann&#x2013;Feynman theorem (<xref ref-type="bibr" rid="B14">Feynman, 1939</xref>) since the PW basis set is orthogonal and independent of the atomic positions. However, the situation becomes more complicated for NAOs, where the atomic forces also include Pulay corrections (<xref ref-type="bibr" rid="B54">Pulay, 1969</xref>) due to changes in the basis functions with respect to atomic positions. For the HFX forces, it is necessary to compute the first derivatives of ERIs in order to obtain analytical gradients of the HFX energy. The NAO2GTO scheme combined with integral screening also provides an efficient way to analytically evaluate the ERI derivatives over NAOs. Therefore, the implementation of HFX forces with NAOs is relatively straightforward.</p>
<p>In this work, we aim to extend the linear-scaling approach for the HFX force calculations of periodic systems based on the NAO2GTO scheme in the HONPAS package. In our approach, the original NAOs are replaced by fitted GTOs, so as to eliminate the errors introduced by the NAO2GTO fitting as much as possible. The ERI derivatives are analytically evaluated with the NAO2GTO scheme, and the computational cost is reduced by using integral screening techniques, enabling linear-scaling HFX force calculations. A master-worker dynamic parallel strategy is also adopted to achieve high parallel efficiency. We benchmark the accuracy and efficiency of our implementation by performing HSE06 calculations for periodic systems and apply it to investigate the small polaronic behavior of excess electrons in rutile TiO<sub>2</sub>. The rest of the paper is organized as follows. <xref ref-type="sec" rid="s2">Section 2</xref> reviews the theoretical framework. <xref ref-type="sec" rid="s3">Section 3</xref> provides a detailed description of our approach and implementation. <xref ref-type="sec" rid="s4">Section 4</xref> validates the performance of our implementation. A summary is given in <xref ref-type="sec" rid="s5">Section 5</xref>.</p>
</sec>
<sec id="s2">
<title>2 Theory</title>
<sec id="s2-1">
<title>2.1 Hybrid functional for periodic systems</title>
<p>Hybrid functionals currently used in the generalized KS framework contain a fraction of non-local, exact HFX term. In the PBE0 hybrid functional (also known as PBEh or PBE1PBE) (<xref ref-type="bibr" rid="B1">Adamo and Barone, 1999</xref>; <xref ref-type="bibr" rid="B13">Ernzerhof and Scuseria, 1999</xref>), the exchange-correlation energy is written as<disp-formula id="e1">
<mml:math id="m3">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>xc</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mtext>PBE0</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>HF</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>PBE</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>PBE</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(1)</label>
</disp-formula>where 25% HFX <inline-formula id="inf3">
<mml:math id="m4">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>HF</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> is mixed with 75% Perdew-Burke&#x2013;Ernzerhof (PBE) exchange <inline-formula id="inf4">
<mml:math id="m5">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>PBE</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>, and the electronic correlation is still represented by the part of the PBE correlation <inline-formula id="inf5">
<mml:math id="m6">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>PBE</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>. The inclusion of the HFX in PBE0 reduces the self-interaction error of the density functional, resulting in a substantial improvement over the parent PBE. However, the full-range (FR) HFX is computationally very demanding and may be problematic in solids. To address this issue, Heyd, Scuseria, and Ernzerhof (<xref ref-type="bibr" rid="B23">Heyd et al., 2003</xref>; <xref ref-type="bibr" rid="B22">Heyd et al., 2006</xref>) proposed to replace the long-range part of HFX in the PBE0 by a corresponding PBE counterpart. Then, the resulting expression for the HSE exchange&#x2013;correlation energy is given by<disp-formula id="e2">
<mml:math id="m7">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>xc</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mtext>HSE</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>SR,HF</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>SR,PBE</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>LR,PBE</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>PBE</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(2)</label>
</disp-formula>where <inline-formula id="inf6">
<mml:math id="m8">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>SR,HF</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> and <inline-formula id="inf7">
<mml:math id="m9">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>LR,PBE</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is the short-range (SR) HFX and long-range (LR) PBE exchange energies, and <inline-formula id="inf8">
<mml:math id="m10">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>SR,PBE</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is the SR exchange energy. <italic>&#x3c9;</italic> is an adjustable screening parameter that defines the range separation, and <italic>&#x3c9;</italic> is set to 0.11 Bohr<sup>&#x2212;1</sup> for HSE06 (<xref ref-type="bibr" rid="B22">Heyd et al., 2006</xref>). Such a treatment not only improves the computational convenience but also avoids the problematic effects of LR HFX in metals and semiconductors with narrow band gaps.</p>
<p>For periodic systems, the HFX energy per unit cell can be written as<disp-formula id="e3">
<mml:math id="m11">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>HF</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>BZ</mml:mtext>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mo>&#x00D7;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>occ</mml:mtext>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a9;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x222b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mi mathvariant="bold">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mi mathvariant="bold">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.17em"/>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.17em"/>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:math>
<label>(3)</label>
</disp-formula>where <inline-formula id="inf9">
<mml:math id="m12">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> denote the <italic>i</italic>-th occupied (occ) crystalline spin-orbitals with spin <italic>&#x3c3;</italic> for <bold>k</bold> point sampling in the Brillouin zone (BZ), &#x3a9; is the unit cell volume. <inline-formula id="inf10">
<mml:math id="m13">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>HF</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> is used to represent the FR or SR HFX energy, and <inline-formula id="inf11">
<mml:math id="m14">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is either the Coulomb operator <inline-formula id="inf12">
<mml:math id="m15">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:math>
</inline-formula> in PBE0 or the screened Coulomb operator <inline-formula id="inf13">
<mml:math id="m16">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">e</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:mi mathvariant="bold">c</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:math>
</inline-formula> in HSE. Hereafter, we will formulate only the collinear spin-polarized case with <italic>&#x3c3;</italic> &#x3d; {<italic>&#x3b1;</italic>, <italic>&#x3b2;</italic>}.</p>
<p>In the linear combination of atomic orbitals (LCAO) method, the spin-orbitals are expanded in terms of a linear combination of Bloch basis functions<disp-formula id="e4">
<mml:math id="m17">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">i</mml:mi>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(4)</label>
</disp-formula>where <italic>&#x3d5;</italic>
<sub>
<italic>&#x3bc;</italic>
</sub>(<bold>r</bold> &#x2212; <bold>r</bold>
<sub>
<italic>&#x3bc;</italic>
</sub> &#x2212; <bold>R</bold>) denotes the <italic>&#x3bc;</italic>-th NAO centering at <bold>r</bold>
<sub>
<italic>&#x3bc;</italic>
</sub> within a lattice translation vector <bold>R</bold>, <inline-formula id="inf14">
<mml:math id="m18">
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is the expansion coefficient, and <italic>N</italic> is the number of primitive unit cells under the Born-von K&#xe1;rm&#xe1;n (BvK) periodic boundary conditions. Within NAOs, the HFX matrix for the self-consistent field (SCF) calculations can be written as<disp-formula id="e5">
<mml:math id="m19">
<mml:msubsup>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="normal">H</mml:mi>
<mml:mi mathvariant="normal">F</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(5)</label>
</disp-formula>and the corresponding HFX energy can be obtained by<disp-formula id="e6">
<mml:math id="m20">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>HF</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:munder>
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:munder>
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(6)</label>
</disp-formula>where the subscripts of Greek letters {<italic>&#x3bc;</italic>, <italic>&#x3bd;</italic>, <italic>&#x3ba;</italic>, <italic>&#x3bb;</italic>} label NAOs, the superscript <bold>0</bold> represents the reference primitive unit cell, while <bold>G</bold>, <bold>N</bold>, and <bold>H</bold> represent extended unit cells in the BvK supercells. The <inline-formula id="inf15">
<mml:math id="m21">
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> is the spin density matrix element, which can be obtained by an integration of the expanded coefficients in the BZ<disp-formula id="e7">
<mml:math id="m22">
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mtext>BZ</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>&#x2217;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>&#x3b8;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">F</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:msup>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.17em"/>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:math>
<label>(7)</label>
</disp-formula>where <italic>&#x3b8;</italic> represent the step function, <italic>&#x3f5;</italic>
<sub>
<italic>F</italic>
</sub> is the fermi energy and <inline-formula id="inf16">
<mml:math id="m23">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is the <italic>j</italic>-th eigenvalue at <bold>k</bold>. For hybrid functional calculations with NAOs, the main bottleneck is the evaluation of ERIs<disp-formula id="e8">
<mml:math id="m24">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x222c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.17em"/>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mspace width="0.17em"/>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
</sec>
<sec id="s2-2">
<title>2.2 Analytical gradients of HFX energy</title>
<p>Since the NAOs are dependent of atomic positions, in hybrid functional calculations we must additionally calculate the HFX contribution to atomic forces. TheHFX forces acting on the <italic>I</italic>-th atom can be directly obtained from the negative gradients of the HFX energy with respect to atomic position <bold>R</bold>
<sub>
<italic>I</italic>
</sub>
<disp-formula id="e9">
<mml:math id="m25">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msubsup>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>HF</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>HF</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(9)</label>
</disp-formula>Note that the first term in Eq. <xref ref-type="disp-formula" rid="e9">9</xref> can be rewritten as<disp-formula id="e10">
<mml:math id="m26">
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="normal">H</mml:mi>
<mml:mi mathvariant="normal">F</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(10)</label>
</disp-formula>which is automatically included in the orthogonalization force due to the non-orthonormality of the NAO basis set (<xref ref-type="bibr" rid="B68">Soler et al., 2002</xref>; <xref ref-type="bibr" rid="B39">Li et al., 2016</xref>). For periodic systems, the orthogonalization force is given by<disp-formula id="e11">
<mml:math id="m27">
<mml:msubsup>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>orth</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mi>H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:math>
<label>(11)</label>
</disp-formula>where <inline-formula id="inf17">
<mml:math id="m28">
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">&#x27e8;</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">&#x27e9;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is the overlap matrix element, and <inline-formula id="inf18">
<mml:math id="m29">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> is the energy-density matrix element given by<disp-formula id="e12">
<mml:math id="m30">
<mml:msubsup>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mtext>BZ</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msup>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">i</mml:mi>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.17em"/>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:math>
<label>(12)</label>
</disp-formula>where <inline-formula id="inf19">
<mml:math id="m31">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is the eigenstate energy.</p>
<p>Thus, we only need to deal with the second term<disp-formula id="e13">
<mml:math id="m32">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mspace width="1em"/>
<mml:mo>&#xd7;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(13)</label>
</disp-formula>in which the ERI derivatives have to be evaluated properly. Since each ERI may have four different centers, a maximum of 12 differentials is required. Therefore, the calculation of HFX forces is formally more troublesome than that of HFX matrix, and a poor implementation will decrease the overall performance.</p>
</sec>
</sec>
<sec sec-type="methods" id="s3">
<title>3 Methodology</title>
<sec id="s3-1">
<title>3.1 NAO2GTO scheme</title>
<p>A normalized NAO for atom <italic>I</italic> located at <bold>R</bold>
<sub>
<italic>I</italic>
</sub> is defined as the product of a numerical radial function and a real regular solid harmonic (<xref ref-type="bibr" rid="B68">Soler et al., 2002</xref>)<disp-formula id="e14">
<mml:math id="m33">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">Ilm&#x3b6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>NAO</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>&#x3b6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>NAO</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(14)</label>
</disp-formula>where <bold>r</bold>
<sub>
<italic>I</italic>
</sub> &#x3d; <bold>r</bold> &#x2212; <bold>R</bold>
<sub>
<italic>I</italic>
</sub>, <italic>r</italic>
<sub>
<italic>I</italic>
</sub> &#x3d; &#x7c;<bold>r</bold>
<sub>
<italic>I</italic>
</sub>&#x7c;, <italic>l</italic> and <italic>m</italic> label the angular and magnetic momentum quantum numbers, respectively. In multiple-<italic>&#x3b6;</italic> bases, <italic>&#x3b6;</italic> labels different basis with the same quantum numbers (<italic>l</italic>, <italic>m</italic>) but different radial shapes. For simplicity, we will omit the index <italic>&#x3b6;</italic> later. The numerical radial function involves a normalization factor <italic>N</italic> (<italic>l</italic>, <italic>&#x3b1;</italic>) and is numerically tabulated in a linear radial mesh. <inline-formula id="inf20">
<mml:math id="m34">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> also includes its individual normalization factor. NAOs are strictly localized in real space, which provides greater convenience for linear-scaling DFT calculations. However, the evaluation of ERIs over NAOs in real space is computationally expensive, which will introduce a big prefactor in linear-scaling HFX calculations (<xref ref-type="bibr" rid="B65">Shang et al., 2010</xref>).</p>
<p>In the LCAO framework, GTOs are by far the most commonly used basis functions to represent the molecular orbitals. This preference is mainly due to the analytical properties of GTOs, which allow efficient evaluation of ERIs for (post-)Hartree-Fock calculations. A normalized primitive spherical harmonic GTO is defined as<disp-formula id="e15">
<mml:math id="m35">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">Ilm&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>GTO</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>N</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>exp</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(15)</label>
</disp-formula>where <italic>&#x3b1;</italic> is the orbital exponent, and <italic>N</italic> (<italic>l</italic>, <italic>&#x3b1;</italic>) is the normalization factor over the radial coordinates<disp-formula id="e16">
<mml:math id="m36">
<mml:mi>N</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>!</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>!</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
<label>(16)</label>
</disp-formula>It is worth noting that most efficient algorithms for the evaluation of ERIs are based on Cartesian primitive GTOs<disp-formula id="e17">
<mml:math id="m37">
<mml:msub>
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>N</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>exp</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(17)</label>
</disp-formula>where <italic>l</italic> &#x3d; <italic>l</italic>
<sub>
<italic>x</italic>
</sub> &#x2b; <italic>l</italic>
<sub>
<italic>y</italic>
</sub> &#x2b; <italic>l</italic>
<sub>
<italic>z</italic>
</sub> labels the angular-momentum quantum number, <bold>R</bold>
<sub>
<italic>I</italic>
</sub> &#x3d; (<italic>R</italic>
<sub>
<italic>x</italic>
</sub>, <italic>R</italic>
<sub>
<italic>y</italic>
</sub>, <italic>R</italic>
<sub>
<italic>z</italic>
</sub>) is the orbital center, and <italic>N</italic> (<italic>l</italic>
<sub>
<italic>x</italic>
</sub>, <italic>l</italic>
<sub>
<italic>y</italic>
</sub>, <italic>l</italic>
<sub>
<italic>z</italic>
</sub>, <italic>&#x3b1;</italic>) is the normalization factor<disp-formula id="e18">
<mml:math id="m38">
<mml:mi>N</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>/</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x203c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x203c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x203c;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(18)</label>
</disp-formula>For a shell of angular momentum <italic>l</italic>, there will be 2<italic>l</italic> &#x2b; 1 spherical GTOs, but (<italic>l</italic> &#x2b; 1) (<italic>l</italic> &#x2b; 2)/2 Cartesian GTOs. The transformation between normalized spherical and Cartesian GTOs is required with a transformation matrix <italic>c</italic> (<italic>l</italic>, <italic>m</italic>, <italic>l</italic>
<sub>
<italic>x</italic>
</sub>, <italic>l</italic>
<sub>
<italic>y</italic>
</sub>, <italic>l</italic>
<sub>
<italic>z</italic>
</sub>) given by Schlegel and Frisch (<xref ref-type="bibr" rid="B61">Schlegel and Frisch, 1995</xref>).</p>
<p>In order to obtain ERIs efficiently, we can represent the NAOs in terms of a linear combination of spherical primitive GTOs, and then calculate the ERIs analytically by calling available libraries for GTO-based integrals (e.g. LIBINT (<xref ref-type="bibr" rid="B76">Valeev and Fermann, 2014</xref>)). This scheme is called NAO2GTO, which in principle is quite similar to the minimal STO-<italic>n</italic>G basis set used in the quantum chemistry community. In the NAO2GTO scheme, the numerical radial function of each NAO is fitted as a linear combination of different Gaussians,<disp-formula id="e19">
<mml:math id="m39">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>NAO</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2243;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>CGTO</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>exp</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(19)</label>
</disp-formula>where <italic>M</italic> is the number of Gaussians, <italic>&#x3b1;</italic>
<sub>
<italic>i</italic>
</sub> and <italic>D</italic>
<sub>
<italic>i</italic>
</sub> are the contraction coefficient and exponent, respectively, similar to contracted GTOs (CGTOs).</p>
</sec>
<sec id="s3-2">
<title>3.2 Replace NAOs with discretized CGTOs</title>
<p>If the NAO2GTO fitting is strictly accurate, the fitted orbitals will be automatically normalized because of the normalization of NAOs. Once there is a non-negligible fitting error, the fitted orbitals will not be normalized. Since normalization factors between NAOs and CGTOs are different, the following approximation will no longer hold<disp-formula id="e20">
<mml:math id="m40">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>NAO</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2260;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>CGTO</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>N</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>exp</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msub>
<mml:mrow>
<mml:mi>Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(20)</label>
</disp-formula>with a normalization factor<disp-formula id="e21">
<mml:math id="m41">
<mml:mi>N</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>!</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>!</mml:mo>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
<label>(21)</label>
</disp-formula>where <italic>&#x3b1;</italic> &#x3d; {<italic>&#x3b1;</italic>
<sub>
<italic>i</italic>
</sub>} and <bold>D</bold> &#x3d; {<italic>D</italic>
<sub>
<italic>i</italic>
</sub>}. In practice, it is difficult to achieve an exact NAO2GTO fitting with a small number of GTOs, such as <italic>M</italic> &#x3d; 3&#x2013;6. Then, the NAO2GTO fitting will inevitably introduce the ERI errors between original NAOs and fitted CGTOs. In some cases, such errors can even invalidate the final results. In our previous work, we employed the fitted CGTOs to approximately evaluate the ERIs for the HFX term while retaining original NAOs for pure DFT parts. For most systems, we have found that a self-consistent convergence problem often arises in hybrid functional calculations even with high-precision fitting.</p>
<p>To eliminate the fitting errors properly, here we replace original NAOs with the fitted and discretized CGTOs, which is done as the following steps:<list list-type="simple">
<list-item>
<p>&#x2022; Perform a less rigorous NAO2GTO fitting for each NAO to obtain a set of CGTOs according to Eq. <xref ref-type="disp-formula" rid="e19">19</xref>;</p>
</list-item>
<list-item>
<p>&#x2022; Calculate the normalization constant <italic>N</italic> (<italic>l</italic>, <italic>&#x3b1;</italic>, <bold>D</bold>) for each CGTO;</p>
</list-item>
<list-item>
<p>&#x2022; Calculate the cutoff radius for each CGTO;</p>
</list-item>
<list-item>
<p>&#x2022; Numerically tabulate the radial function of each CGTO multiplied by <italic>N</italic> (<italic>l</italic>, <italic>&#x3b1;</italic>, <bold>D</bold>).</p>
</list-item>
</list>
</p>
<p>Note that the fitted CGTOs will give larger cutoff radii compared to the original NAOs. Therefore, we need to feed the values inside a new cutoff radius back to the radial function, beyond which all values are equal to 0.</p>
</sec>
<sec id="s3-3">
<title>3.3 Evaluate ERIs and their derivatives with CGTOs</title>
<p>With the auxiliary CGTOs, one shell set of contracted ERIs (<italic>ab</italic>&#x7c;<italic>cd</italic>) can be calculated by<disp-formula id="e22">
<mml:math id="m42">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(22)</label>
</disp-formula>with<disp-formula id="e23">
<mml:math id="m43">
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>c</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(23)</label>
</disp-formula>where <italic>a</italic> denotes the shell orbital with angular momentum <italic>a</italic> &#x3d; <italic>a</italic>
<sub>
<italic>x</italic>
</sub> &#x2b; <italic>a</italic>
<sub>
<italic>y</italic>
</sub> &#x2b; <italic>a</italic>
<sub>
<italic>z</italic>
</sub>, <italic>k</italic> is the index of <italic>K</italic> GTOs, and [<italic>a</italic>
<sub>
<italic>k</italic>
</sub>
<italic>b</italic>
<sub>
<italic>l</italic>
</sub>&#x7c;<italic>c</italic>
<sub>
<italic>m</italic>
</sub>
<italic>d</italic>
<sub>
<italic>n</italic>
</sub>] represents a set of primitive ERIs over primitive Cartesian GTOs, in which (2<italic>a</italic> &#x2b; 1) (2<italic>b</italic> &#x2b; 1) (2<italic>c</italic> &#x2b; 1) (2<italic>d</italic> &#x2b; 1) primitive and contacted ERIs are calculated at once.</p>
<p>Since a primitive ERI contain four centers of <bold>A</bold>, <bold>B</bold>, <bold>C</bold>, and <bold>D</bold>, its first-order derivatives should have the following 12 terms<disp-formula id="e24">
<mml:math id="m44">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mspace width="0.3333em"/>
<mml:mspace width="0.3333em"/>
<mml:mspace width="0.3333em"/>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(24)</label>
</disp-formula>but only 9 derivatives are required because of the translational invariance<disp-formula id="e25">
<mml:math id="m45">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
<label>(25)</label>
</disp-formula>Analogously, the first-order derivatives of contracted ERIs can also be evaluated from the primitive ones, which are actually a linear combination of higher and lower angular momentum ERIs<disp-formula id="e26">
<mml:math id="m46">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(26)</label>
</disp-formula>
</p>
<p>We obtain the primitive ERIs and their derivatives from the LIBINT library, (<xref ref-type="bibr" rid="B76">Valeev and Fermann, 2014</xref>) which implements efficient recursive schemes based on the Obara-Saika method (<xref ref-type="bibr" rid="B47">Obara and Saika, 1986</xref>) together with the Head-Gordon-Pople (<xref ref-type="bibr" rid="B19">Head-Gordon and Pople, 1988</xref>) and Hamilton-Lindh (<xref ref-type="bibr" rid="B17">Hamilton and Schaefer, 1991</xref>; <xref ref-type="bibr" rid="B43">Lindh et al., 1991</xref>) variations. We also consider the eight-fold permutational symmetry of ERIs with NAOs, which for periodic systems is given by<disp-formula id="e27">
<mml:math id="m47">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">G</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(27)</label>
</disp-formula>In this way, we only need to handle about 1/8 of ERIs and their derivatives. Furthermore, the translational invariance also gives <inline-formula id="inf21">
<mml:math id="m48">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bc;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula>, which means that we can ignore the ERI derivatives if four orbitals have the same center.</p>
</sec>
<sec id="s3-4">
<title>3.4 Integral screening</title>
<p>In practice calculations, most of the ERIs and their derivatives have no significant contributions to the HFX matrix and forces, which can be omitted by using integral screening techniques. Thus, integral screening is essential for reducing the computational cost, which should be able to provide an easy-to-estimate upper bound for ERIs. We have previously employed several ERI screening techniques to obtain an efficient and linear-scaling HFX calculation (<xref ref-type="bibr" rid="B66">Shang et al., 2011</xref>; <xref ref-type="bibr" rid="B58">Qin et al., 2015</xref>). For the calculation of HFX forces, however, integral screening based on the upper bound of ERI derivatives is not a good choice. The reason is that, according to the Schwarz inequality (<xref ref-type="bibr" rid="B18">H&#xe4;ser and Ahlrichs, 1989</xref>), the upper bound of <inline-formula id="inf22">
<mml:math id="m49">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mi>&#x3bd;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3bb;</mml:mi>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> requires a relatively expensive calculation of <inline-formula id="inf23">
<mml:math id="m50">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mi>&#x3bd;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>(<xref ref-type="bibr" rid="B25">Horn et al., 1991</xref>), which does not appear in the ERI derivatives. Alternatively, we can use the same screening techniques based on the upper bound of ERIs as done in the construction of the HFX matrix. That is, if an ERI is skipped during the calculation of the HFX energy, its derivatives should also be neglected for the calculation of HFX forces. Here, we describe all the screening techniques we have employed to compute the HFX forces. For simplicity, we omit the superscripts of <bold>0</bold>, <bold>G</bold>, <bold>N</bold>, and <bold>H</bold> later, and the indices {<italic>&#x3bc;</italic>, <italic>&#x3bd;</italic>, <italic>&#x3ba;</italic>, <italic>&#x3bb;</italic>} label shell orbitals in the following.</p>
<sec id="s3-4-1">
<title>3.4.1 Schwarz screening with prametrized screening functions</title>
<p>The first integral screening is based on Cauthy-Schwarz inequality<disp-formula id="e28">
<mml:math id="m51">
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2264;</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
<label>(28)</label>
</disp-formula>which gives a rigorous upper bound for an ERI or a set of ERIs. The Schwarz screening actually takes advantage of the exponential decay of the orbital-pair charge distributions &#x3a9;<sub>
<italic>&#x3bc;&#x3bd;</italic>
</sub>(<bold>r</bold> &#x2212; <bold>P</bold>) &#x3d; <italic>&#x3c7;</italic>
<sub>
<italic>&#x3bc;</italic>
</sub>(<bold>r</bold> &#x2212; <bold>R</bold>
<sub>
<italic>&#x3bc;</italic>
</sub>)<italic>&#x3c7;</italic>
<sub>
<italic>&#x3bd;</italic>
</sub>(<bold>r</bold> &#x2212; <bold>R</bold>
<sub>
<italic>&#x3bd;</italic>
</sub>) to decrease the total number of ERIs to be considered from <inline-formula id="inf24">
<mml:math id="m52">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> to <inline-formula id="inf25">
<mml:math id="m53">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. To establish a straightforward Schwarz-screening procedure, we need to calculate and store two-center integrals as the screening matrix in the four-index (<italic>&#x3bc;</italic>, <italic>&#x3bd;</italic>, <italic>&#x3ba;</italic> and <italic>&#x3bb;</italic>) loop. However, this treatment is not efficient for large systems in which a large screening matrix is needed. Furthermore, it is inconvenient to employ the Schwarz screening for primitive ERIs since each shell quartet also requires calculating and storing its own screening matrix. In fact, it has been observed by <xref ref-type="bibr" rid="B15">Guidon et al. (2009)</xref> that the logarithm of a two-center ERI can be approximated as a quadratic function at a relatively large two-center distance <italic>R</italic>
<sub>
<italic>&#x3bc;&#x3bd;</italic>
</sub> between orbitals <italic>&#x3bc;</italic> and <italic>&#x3bd;</italic>
<disp-formula id="e29">
<mml:math id="m54">
<mml:mi>log</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2248;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:math>
<label>(29)</label>
</disp-formula>These quadratic functions only depend on the two-center distance <italic>R</italic>
<sub>
<italic>&#x3bc;&#x3bd;</italic>
</sub> but have different parameters <italic>t</italic>
<sub>0</sub> and <italic>t</italic>
<sub>2</sub> for different types of orbitals. Thus, we can use a set of quadratic functions (screening functions) instead of the screening matrix to estimate the upper bounds of both primitive and contracted ERIs. We obtain the fitting parameters <italic>t</italic>
<sub>0</sub> and <italic>t</italic>
<sub>2</sub> by minimizing an asymmetric penalty function (<xref ref-type="bibr" rid="B15">Guidon et al., 2009</xref>),<disp-formula id="e30">
<mml:math id="m55">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:math>
<label>(30)</label>
</disp-formula>at a radial grid of <inline-formula id="inf26">
<mml:math id="m56">
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> with the maximum distance <inline-formula id="inf27">
<mml:math id="m57">
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>, and the error is defined as<disp-formula id="e31">
<mml:math id="m58">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>log</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(31)</label>
</disp-formula>and<disp-formula id="e32">
<mml:math id="m59">
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="">
<mml:mrow>
<mml:mtable class="cases">
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mn>1</mml:mn>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mi mathvariant="normal">i</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mspace width="0.3333em"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mn>1</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mi mathvariant="normal">i</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mspace width="0.3333em"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(32)</label>
</disp-formula>where the choice of <italic>k</italic> (&#x394;<sub>
<italic>i</italic>
</sub>) ensures the fitted value at <inline-formula id="inf28">
<mml:math id="m60">
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> is always not less than the true one. In <xref ref-type="fig" rid="F1">Figure 1</xref>, we plot the fitting results for both primitive and contracted two-center integrals. It can be seen that the fitted value for each two-center distance is never less than the true one, indicating that the screening function can be approximately used as an upper bound in the Schwarz screening. As a result, we only need to fit the screening functions and store the fitting parameters for each type of shell pairs in advance, as shown in <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref> (Step 1).</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Logarithm of two-center integrals (blue solids) and fitting functions (red lines) as a function of the two-center distance for <bold>(A)</bold> primitive and <bold>(B)</bold> contracted integrals of <italic>p</italic>-type and <italic>d</italic>-type Si orbitals.</p>
</caption>
<graphic xlink:href="fchem-11-1232425-g001.tif"/>
</fig>
<p>
<statement content-type="algorithm" id="Algorithm_1">
<label>Algorithm 1</label>
<p>Flowchat of density matrix weighted Schwarz screening for HFX forces.<list list-type="simple">
<list-item>
<p>1:&#xa0;Step 1: Fit screening functions&#x2003;&#x22b3; For different types of shell orbitals</p>
</list-item>
<list-item>
<p>2:&#xa0;<bold>for</bold> is and js &#x2208; <italic>N</italic>
<sub>species</sub> <bold>do</bold>&#x2003;&#x22b3; Atomic species <italic>N</italic>
<sub>species</sub>
</p>
</list-item>
<list-item>
<p>3:&#xa0;<bold>for</bold> <italic>&#x3bc;</italic> &#x2208; is, <italic>&#x3bd;</italic> &#x2208; js <bold>do</bold>
</p>
</list-item>
<list-item>
<p>4:&#xa0;<bold>for</bold>&#xa0;<italic>a</italic> &#x2208; <italic>&#x3bc;</italic>, <italic>b</italic> &#x2208; <italic>&#x3bd;</italic>&#xa0;<bold>do</bold>
</p>
</list-item>
<list-item>
<p>5:&#xa0;<italic>R</italic>
<sub>
<italic>ab</italic>
</sub> &#x3d; <italic>R</italic>
<sub>
<italic>a</italic>
</sub> &#x2b; <italic>R</italic>
<sub>
<italic>b</italic>
</sub>
</p>
</list-item>
<list-item>
<p>6:&#xa0;Interpolate <italic>R</italic>
<sub>
<italic>i</italic>
</sub> and calculate[<italic>ab</italic>&#x7c;<italic>ab</italic>](<italic>R</italic>
<sub>
<italic>i</italic>
</sub>)</p>
</list-item>
<list-item>
<p>7:&#xa0;Fit <inline-formula id="inf29">
<mml:math id="m61">
<mml:mi>log</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2248;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>.</p>
</list-item>
<list-item>
<p>8:&#xa0;<bold>end for</bold>
</p>
</list-item>
<list-item>
<p>9:&#xa0;<italic>R</italic>
<sub>
<italic>&#x3bc;&#x3bd;</italic>
</sub> &#x3d; max{<italic>R</italic>
<sub>
<italic>&#x3bc;&#x3bd;</italic>
</sub>, <italic>R</italic>
<sub>
<italic>ab</italic>
</sub>}</p>
</list-item>
<list-item>
<p>10:&#xa0;Interpolate <italic>R</italic>
<sub>
<italic>i</italic>
</sub> and calculate (<italic>&#x3bc;&#x3bd;</italic>&#x7c;<italic>&#x3bc;&#x3bd;</italic>)(<italic>R</italic>
<sub>
<italic>i</italic>
</sub>)</p>
</list-item>
<list-item>
<p>11:&#xa0;Fit <inline-formula id="inf30">
<mml:math id="m62">
<mml:mi>log</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2248;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>12:&#xa0;<bold>end for</bold>
</p>
</list-item>
<list-item>
<p>13:&#xa0;<bold>end for</bold>
</p>
</list-item>
<list-item>
<p>14:&#xa0;Step 2: Build shell-pair lists&#x2003;&#x22b3; For all shell orbitals</p>
</list-item>
<list-item>
<p>15:&#xa0;<bold>for</bold> <italic>&#x3bc;</italic> &#x3d; 1, <italic>N</italic>
<sub>b</sub> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>16:&#xa0;<bold>for</bold> <italic>&#x3bd;</italic> &#x3d; 1, <italic>&#x3bc;</italic> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>17:&#xa0;&#xa0;<inline-formula id="inf31">
<mml:math id="m63">
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>18:&#xa0;&#xa0;<inline-formula id="inf32">
<mml:math id="m64">
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>19:&#xa0;&#xa0;<bold>if</bold> <inline-formula id="inf33">
<mml:math id="m65">
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> and <inline-formula id="inf34">
<mml:math id="m66">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3e;</mml:mo>
<mml:mi>log</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>Schwarz</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>&#xa0;<bold>then</bold>
</p>
</list-item>
<list-item>
<p>20:&#xa0;&#xa0;Add <italic>&#x3bc;</italic>, <italic>&#x3bd;</italic> to shell-pair list<sub>
<italic>&#x3bc;&#x3bd;</italic>
</sub>
</p>
</list-item>
<list-item>
<p>21:&#xa0;&#xa0;<bold>end if</bold>
</p>
</list-item>
<list-item>
<p>22:&#xa0;&#xa0;<bold>end for</bold>
</p>
</list-item>
<list-item>
<p>23:&#xa0;&#xa0;<bold>end for</bold>
</p>
</list-item>
<list-item>
<p>24:&#xa0;&#xa0;Step3: Compute HFX forces</p>
</list-item>
<list-item>
<p>25:&#xa0;&#xa0;<bold>for</bold> (<italic>&#x3bc;</italic>, <italic>&#x3bd;</italic>) &#x2208; list<sub>
<italic>&#x3bc;&#x3bd;</italic>
</sub>&#xa0;<bold>do</bold>
</p>
</list-item>
<list-item>
<p>26:&#xa0;&#xa0;<bold>for</bold> (<italic>&#x3ba;</italic>, <italic>&#x3bb;</italic>) &#x2208; list<sub>
<italic>&#x3ba;&#x3bb;</italic>
</sub>&#xa0;<bold>do</bold>
</p>
</list-item>
<list-item>
<p>27:&#xa0;&#xa0;<inline-formula id="inf35">
<mml:math id="m67">
<mml:msub>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#xd7;</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#xd7;</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>28:&#xa0;&#xa0;<bold>if</bold>&#xa0;<inline-formula id="inf36">
<mml:math id="m68">
<mml:mi>log</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3e;</mml:mo>
<mml:mi>log</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>Schwarz</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>29:&#xa0;&#xa0;&#xa0;<bold>for</bold> (<italic>k</italic>, <italic>l</italic>, <italic>m</italic>, <italic>n</italic>) &#x2208; (<italic>K</italic>, <italic>L</italic>, <italic>M</italic>, <italic>N</italic>)&#xa0;<bold>do</bold>
</p>
</list-item>
<list-item>
<p>30:&#xa0;&#xa0;&#xa0;<inline-formula id="inf37">
<mml:math id="m69">
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>31:&#xa0;&#xa0;&#xa0;<bold>if</bold> <inline-formula id="inf38">
<mml:math id="m70">
<mml:mi>log</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>log</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3e;</mml:mo>
<mml:mi>log</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>Schwarz</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>32:&#xa0;&#xa0;&#xa0;&#xa0;<bold>if</bold> Far-field SR ERIs and <italic>P</italic>
<sub>max</sub> &#xd7; <italic>C</italic>
<sub>max</sub> &#xd7; [<italic>ab</italic>&#x7c;<italic>cd</italic>]<sub>SR</sub> &#x3e; <italic>&#x3f5;</italic>
<sub>Far-filed</sub> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>33:&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;Call LIBINT to calculate primitive ERI derivatives</p>
</list-item>
<list-item>
<p>34:&#xa0;&#xa0;&#xa0;&#xa0;<bold>end if</bold>
</p>
</list-item>
<list-item>
<p>35:&#xa0;&#xa0;&#xa0;<bold>end if</bold>
</p>
</list-item>
<list-item>
<p>36:&#xa0;&#xa0;&#xa0;Calculate contracted ERI derivatives</p>
</list-item>
<list-item>
<p>37:&#xa0;&#xa0;<bold>end for</bold>
</p>
</list-item>
<list-item>
<p>38:&#xa0;&#xa0;&#xa0;Calculate HFX forces according to Eq. 13</p>
</list-item>
<list-item>
<p>39:&#xa0;&#xa0;<bold>end if</bold>
</p>
</list-item>
<list-item>
<p>40:&#xa0;<bold>end for</bold>
</p>
</list-item>
<list-item>
<p>41:&#xa0;<bold>end for</bold>
</p>
</list-item>
</list>
</p>
</statement>
</p>
</sec>
<sec id="s3-4-2">
<title>3.4.2 Far-field distance screening</title>
<p>The distance screening proposed by Izmaylov et al. (<xref ref-type="bibr" rid="B28">Izmaylov et al., 2006</xref>) further takes into account the decay of SR ERIs with respect to the distance <italic>R</italic>
<sub>PQ</sub> between two charge distribution centers <bold>P</bold> and <bold>Q</bold>. According to the multipole expansion, the primitive ERIs can be divided into near-field and far-field parts by (<xref ref-type="bibr" rid="B8">Burant et al., 1996</xref>)<disp-formula id="e33">
<mml:math id="m71">
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>PQ</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">Q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mspace width="0.3333em"/>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="normal">i</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">r</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mi mathvariant="normal">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
</mml:math>
<label>(33)</label>
</disp-formula>where <italic>&#x3f5;</italic> is a threshold that defines the spatial range of a distribution <inline-formula id="inf39">
<mml:math id="m72">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>. The far-field SR ERIs have the following approximation<disp-formula id="e34">
<mml:math id="m73">
<mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mtext>SR</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2248;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">r</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>PQ</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>PQ</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(34)</label>
</disp-formula>with<disp-formula id="e35">
<mml:math id="m74">
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt>
<mml:msup>
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mi>exp</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">A</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">B</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(35)</label>
</disp-formula>Thus, in HSE calculations we can employ the distance screening based on Eq. <xref ref-type="disp-formula" rid="e34">34</xref> to screen out far-field primitive ERIs.</p>
</sec>
<sec id="s3-4-3">
<title>3.4.3 NAO screening</title>
<p>The NAOs are strictly localized in real space, so the ERIs over NAOs will be strictly zero and negligible if two shell orbitals <italic>&#x3bc;</italic> and <italic>&#x3bd;</italic> (or <italic>&#x3ba;</italic> and <italic>&#x3bb;</italic>) do not overlap with <inline-formula id="inf40">
<mml:math id="m75">
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>. To reduce the number of four-index loops, as shown in <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref> (Step 2), we first construct two shell-pair lists (list<sub>
<italic>&#x3bc;&#x3bd;</italic>
</sub> and list<sub>
<italic>&#x3ba;&#x3bb;</italic>
</sub>) by taking into account the locality of NAOs, which is done prior to entering the calculation of HFX forces.</p>
<p>On the other hand, both the Hamiltonian and density matrices in pure DFT calculations exhibit a sparse pattern determined by the locality of NAOs. The matrix element <italic>H</italic>
<sub>
<italic>&#x3bc;&#x3ba;</italic>
</sub> is non-zero only when the orbitals <italic>&#x3bc;</italic> and <italic>&#x3ba;</italic> directly overlap each other or indirectly overlap through a non-local pseudopotential projector. For hybrid functional calculations, the HFX matrix can also be stored in the same sparse format as that of pure DFT. According to Eq. <xref ref-type="disp-formula" rid="e5">5</xref>, the NAO screening can screen out the ERIs for all shell pairs (<italic>&#x3bc;</italic>, <italic>&#x3ba;</italic>), (<italic>&#x3bc;</italic>, <italic>&#x3bb;</italic>), (<italic>&#x3bd;</italic>, <italic>&#x3ba;</italic>), and (<italic>&#x3bd;</italic>, <italic>&#x3bb;</italic>) do not overlap when considering the full ERI symmetry.</p>
</sec>
<sec id="s3-4-4">
<title>3.4.4 Density matrix screening</title>
<p>Our initial implementation of hybrid functionals is based on a non-direct SCF scheme, in which the ERIs are precalculated and stored in memory or disk with the above integral screening approaches (<xref ref-type="bibr" rid="B66">Shang et al., 2011</xref>). However, this scheme has a storage bottleneck and is not efficient for large systems since it does not exploit the sparse density matrix for integral screening. In fact, the ERIs are coupling with the density matrix in Eq. <xref ref-type="disp-formula" rid="e5">5</xref> and Eq. <xref ref-type="disp-formula" rid="e6">6</xref>, which means that a large ERI (<italic>&#x3bc;&#x3bd;</italic>&#x7c;<italic>&#x3ba;&#x3bb;</italic>) may also be negligible if the density matrix elements <italic>P</italic>
<sub>
<italic>&#x3bc;&#x3ba;</italic>
</sub> and <italic>P</italic>
<sub>
<italic>&#x3bd;&#x3bb;</italic>
</sub> are fairly small. The integral screening techniques to achieve linear scaling HFX calculations are linked closely to the sparse density matrix, such as the ONX (<xref ref-type="bibr" rid="B8">Burant et al., 1996</xref>; <xref ref-type="bibr" rid="B63">Schwegler and Challacombe, 1996</xref>) and LinK (<xref ref-type="bibr" rid="B62">Schwegler et al., 1997</xref>) algorithms. It should be pointed out that the NAO screening partially takes into account the sparsity of the density matrix, so it can also lead to a linear scaling HFX calculation (<xref ref-type="bibr" rid="B66">Shang et al., 2011</xref>).</p>
<p>In order to improve the screening efficiency, we employ the density-matrix- based screening approach combined with a direct SCF scheme to calculate ERIs on-the-fly at each SCF iteration, which avoids the usage of memory for ERIs. The density matrix screening is to introduce the density matrix in the Schwarz and distance screening procedures. Considering the full ERI symmetry, the density matrix weighted Schwarz screening for building the HFX matrix is given by<disp-formula id="e36">
<mml:math id="m76">
<mml:mi>max</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#xd7;</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>Schwarz</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(36)</label>
</disp-formula>where the initial density matrix can be obtained from a post-PBE calculation for the first SCF step. The HFX forces are calculated by direct differentiation of the HFX energy after the SCF convergence, thus the ERI derivatives can be screened out if the corresponding ERIs have a negligible contribution to the HFX energy. Following Guidon et al. (<xref ref-type="bibr" rid="B16">Guidon et al., 2008</xref>), we adopt the following screening criterion for the calculation of HFX forces<disp-formula id="e37">
<mml:math id="m77">
<mml:mn>2</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>max</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#xd7;</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#xd7;</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#xd7;</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3ba;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>Schwarz</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:math>
<label>(37)</label>
</disp-formula>where the factor 2 is derived from the double contributions of ERIs to the first term of HFX forces in Eq. <xref ref-type="disp-formula" rid="e9">9</xref>. Our density matrix weighted Schwarz screening for the calculation of HFX forces is shown in <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref> (Step 3). Since the products of converged density matrix elements are used, the calculation of the HFX forces will be more faster than the construction of the HFX matrix at each SCF step.</p>
</sec>
</sec>
<sec id="s3-5">
<title>3.5 Parallelization strategy</title>
<p>With the rapid development of computer clusters and supercomputers, high-performance computing (HPC) is now essential for program design. In the parallel implementation of HFX forces, the key is to distribute the calculation of ERI derivatives across different central processing unit (CPU) cores. Of course, a straightforward way is to evenly distribute all shell quartets on each processor. However, the total amount of shell quartets is unknown until the integral screening is finished. Furthermore, the computational cost for different types of shell quartets may be very different. For instance, (<italic>dd</italic>&#x7c;<italic>dd</italic>) with higher order angular momentum may be hundreds of times more expensive than (<italic>ss</italic>&#x7c;<italic>ss</italic>), which also may cause serious load imbalance. On the other hand, the distribution of the density matrix may also introduce additional communication when considering the full ERI symmetry. Therefore, load balancing and minimizing communication overhead are essential considerations in the parallel design of HFX force calculation.</p>
<p>For massively parallel computing, a better choice is to employ the master-worker dynamic parallel scheme, which can yield very high load balance and parallel efficiency. We have established a master-worker parallel scheme for the calculation of HFX forces as that for the construction of HFX matrix based on the dynamic parallel distribution algorithm (<xref ref-type="bibr" rid="B67">Shang et al., 2020</xref>). In this scheme, one message passing interface (MPI) process is designated as the master to manage the distribution of the shell quartets, while the remaining processes act as the workers responsible for integral evaluation. The computational task corresponding to the total amount of shell quartets is obtained by multiplying the size of shell-pair lists. Then, the shell quartets are assigned by the master to the worker processes in batches by request at a time. Each worker process requests individual and batched shell quartets from the master, and computes the ERI derivatives and HFX forces with integral screening. Once the current tasks are completed, the worker process continues to request new shell quartets until there are no tasks left. In order to further reduce the data communication for the density matrix, we replicate the global density matrix on each individual MPI process. Unlike the HFX matrix construction, the calculation of HFX forces does not require a MPI_ALLREDUCE operation, thus global communication can be avoided.</p>
<p>In recent years, heterogeneous architectures with dedicated accelerators have become increasingly available in modern HPC systems. As one of the most widely used accelerators, graphics processing unit (GPU) is designed specifically for handling massive parallelism and performing multiple computational tasks simultaneously. Nowadays, numerous quantum chemistry software packages have been equipped with GPU support, in particular, to accelerate the evaluation of ERIs and their subsequent contraction for constructing the HFX matrix (<xref ref-type="bibr" rid="B74">Ufimtsev and Martinez, 2008</xref>, <xref ref-type="bibr" rid="B75">2009</xref>; <xref ref-type="bibr" rid="B4">Barca et al., 2020</xref>). The GPU acceleration can be accomplished by mapping ERIs onto GPU threads, using either a one-block-one-contracted-integral algorithm or a one-thread-one-contracted-integral algorithm (<xref ref-type="bibr" rid="B74">Ufimtsev and Martinez, 2008</xref>). Regarding the master-worker parallel distribution, we can set an appropriate batch size and map the batched ERIs of a request across the GPU blocks or threads, which depends on the available resources on the GPU associated with each worker process. Therefore, our parallelization strategy presented above could also be extended to CPU-GPU heterogeneous parallelism, even though such an extension is not covered in the present work.</p>
</sec>
</sec>
<sec sec-type="results|discussion" id="s4">
<title>4 Results and discussion</title>
<p>In this section, we focus on demonstrating the numerical accuracy and efficiency of our implementation for HFX force calculations of periodic systems in the HONPAS package (<xref ref-type="bibr" rid="B58">Qin et al., 2015</xref>; <xref ref-type="bibr" rid="B55">Qin et al., 2020a</xref>). The norm-conserving PBE pseudopotentials of the Troullier-Martins type (<xref ref-type="bibr" rid="B73">Troullier and Martins, 1991</xref>) are used to represent the core-valence interaction. The pseudopotential for Ti includes semicore states (3<italic>s</italic> and 3<italic>p</italic>) in the valence. The NAOs are generated using default parameters or are optimized using the simplex utility in SIESTA, and the double-<italic>&#x3b6;</italic> plus polarization (DZP) basis set is employed. 5, 4, and 3 GTOs, namely 543, are used for <italic>s</italic>-, <italic>p</italic>-, and <italic>d</italic>-type NAOs of B, C, O, Si, and P, while a 544 fitting is used for Ti. The real-space mesh cutoff for all systems is set to 250 Ry. The tolerance of density matrix for the SCF convergence and the force tolerance in coordinate optimization are set to the values of 10<sup>&#x2013;4</sup> and 0.01&#xa0;eV/&#xc5;, respectively. After k-point convergence tests, the 8 &#xd7; 8 &#xd7; 8 Monkhorst-Pack k-point sampling in the BZ is chosen for bulk systems (Diamond, Si, SiC, BN, and BP).</p>
<sec id="s4-1">
<title>4.1 Numerical accuracy and efficiency</title>
<sec id="s4-1-1">
<title>4.1.1 Fitted orbitals for NAOs</title>
<p>In this work, we first use a linear combination of several Gaussians to fit the tabulated radial function of NAOs based on the NAO2GTO scheme and take the renormalized CGTOs as the new numerical basis functions with a cutoff radius <italic>R</italic>
<sub>c</sub>. Since the CGTOs decay exponentially in real space, we need to truncate them with a cutoff threshold defined as <italic>&#x3d5;</italic>
<sup>CGTO</sup> (<italic>R</italic>
<sub>c</sub>) &#x3c; <italic>&#x3f5;</italic>
<sub>cut</sub>. As illustrated in <xref ref-type="table" rid="T1">Table 1</xref>, a smaller threshold will result in a larger cutoff radius for each CGTO. When <italic>&#x3f5;</italic>
<sub>cut</sub> is set to 10<sup>&#x2013;3</sup>, the radius of a CGTO is slightly larger than that of its original NAO. However, a smaller value of <italic>&#x3f5;</italic>
<sub>cut</sub> &#x3d; 10<sup>&#x2013;7</sup> will yield 1.5&#x2013;2 times larger cutoff radii. In practice, the cutoff radius also depends on the minimum fitting exponent <italic>&#x3b1;</italic>
<sub>min</sub>, which is selected to be 0.15 in order to prevent the generation of too diffuse GTOs.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>The cutoff radii (in Bohr) of orbitals at a given threshold (<italic>&#x3f5;</italic>
<sub>cut</sub>) for silicon atom with the DZP basis set. <italic>s</italic>
<sub>1</sub> and <italic>s</italic>
<sub>2</sub> label the 1st-<italic>&#x3b6;</italic> and 2nd-<italic>&#x3b6; s</italic>-type orbitals, <italic>p</italic>
<sub>1</sub> and <italic>p</italic>
<sub>2</sub> label the 1st-<italic>&#x3b6;</italic> and 2nd-<italic>&#x3b6; p</italic>-type orbitals, and <italic>d</italic> denotes the polarized <italic>d</italic>-type orbital.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Orb.</th>
<th align="center">
<italic>&#x3f5;</italic>
<sub>cut</sub>
</th>
<th align="center">
<italic>s</italic>
<sub>1</sub>
</th>
<th align="center">
<italic>s</italic>
<sub>2</sub>
</th>
<th align="center">
<italic>p</italic>
<sub>1</sub>
</th>
<th align="center">
<italic>p</italic>
<sub>2</sub>
</th>
<th align="center">
<italic>d</italic>
</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">NAO</td>
<td align="left"/>
<td align="center">5.007</td>
<td align="center">4.419</td>
<td align="center">6.271</td>
<td align="center">5.007</td>
<td align="center">6.271</td>
</tr>
<tr>
<td align="center">CGTO</td>
<td align="char">10<sup>&#x2013;</sup>
<sup>3</sup>
</td>
<td align="center">5.172</td>
<td align="center">4.557</td>
<td align="center">8.481</td>
<td align="center">6.093</td>
<td align="center">7.789</td>
</tr>
<tr>
<td align="left"/>
<td align="char">10<sup>&#x2013;</sup>
<sup>4</sup>
</td>
<td align="center">5.972</td>
<td align="center">5.262</td>
<td align="center">9.549</td>
<td align="center">6.889</td>
<td align="center">8.630</td>
</tr>
<tr>
<td align="left"/>
<td align="char">10<sup>&#x2013;</sup>
<sup>5</sup>
</td>
<td align="center">6.677</td>
<td align="center">5.883</td>
<td align="center">10.500</td>
<td align="center">7.595</td>
<td align="center">9.385</td>
</tr>
<tr>
<td align="left"/>
<td align="char">10<sup>&#x2013;</sup>
<sup>6</sup>
</td>
<td align="center">7.313</td>
<td align="center">6.445</td>
<td align="center">11.366</td>
<td align="center">8.236</td>
<td align="center">10.077</td>
</tr>
<tr>
<td align="left"/>
<td align="char">10<sup>&#x2013;</sup>
<sup>7</sup>
</td>
<td align="center">7.900</td>
<td align="center">6.961</td>
<td align="center">12.167</td>
<td align="center">8.829</td>
<td align="center">10.720</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>We determine the cutoff radii by examining the ERI errors resulting from the truncation of CGTOs. We compare the ERIs for fitted CGTOs with different cutoff thresholds by using numerical and analytical integrations, respectively. As listed in <xref ref-type="table" rid="T2">Table 2</xref>, the maximum absolute error (&#x394;<italic>E</italic>
<sub>max</sub>) of ERIs can be as less as 2.4 &#xd7; 10<sup>&#x2013;6</sup>&#xa0;eV (1.76 &#xd7; 10<sup>&#x2013;7</sup> Ry) if <italic>&#x3f5;</italic>
<sub>cut</sub> &#x3d; 10<sup>&#x2013;5</sup> is given. Therefore, we decide to choose <italic>&#x3f5;</italic>
<sub>cut</sub> &#x3d; 10<sup>&#x2013;5</sup> as the default cutoff threshold for all hybrid functional calculations. From <xref ref-type="table" rid="T2">Table 2</xref>, we can also observe that the calculated ERIs over original NAO and fitted CGTO differ by a maximum of 0.533&#xa0;eV. Such a significant difference may render the hybrid functional calculation invalid if we use the fitted CGTOs for the HFX term while still relying on the original NAOs for other terms. To ensure the accuracy and reliability of the NAO2GTO scheme, we decide to apply the fitted CGTOs consistently across all components of the hybrid functional calculations. Specifically, we employ the analytical CGTOs for the HFX calculation while the numerically discretized CGTOs for other pure DFT calculations.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Analytical (Analy.) and Numerical (Numer.) ERIs (in eV) at a given cutoff threshold (<italic>&#x3f5;</italic>
<sub>cut</sub>). The tested system is the silicon atom with the DZP basis set. <italic>s</italic>
<sub>1</sub> and <italic>s</italic>
<sub>2</sub> label the 1st-<italic>&#x3b6;</italic> and 2nd-<italic>&#x3b6; s</italic>-type orbitals, <italic>p</italic>
<sub>1</sub> and <italic>p</italic>
<sub>2</sub> label the 1st-<italic>&#x3b6;</italic> and 2nd-<italic>&#x3b6; p</italic>-type orbitals with <italic>m</italic> &#x3d; &#x2212;1, <italic>d</italic> label the polarized <italic>d</italic>-type orbitals with <italic>m</italic> &#x3d; &#x2212;2, &#x394;<italic>E</italic>
<sub>max</sub> is the maximum absolute error between numerical and analytical ERIs.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Method</th>
<th align="center">
<italic>&#x3f5;</italic>
<sub>cut</sub>
</th>
<th align="center">(<italic>s</italic>
<sub>1</sub>
<italic>s</italic>
<sub>1</sub>&#x7c;<italic>s</italic>
<sub>1</sub>
<italic>s</italic>
<sub>1</sub>)</th>
<th align="center">(<italic>s</italic>
<sub>2</sub>
<italic>s</italic>
<sub>2</sub>&#x7c;<italic>s</italic>
<sub>2</sub>
<italic>s</italic>
<sub>2</sub>)</th>
<th align="center">(<italic>p</italic>
<sub>1</sub>
<italic>p</italic>
<sub>1</sub>&#x7c;<italic>p</italic>
<sub>1</sub>
<italic>p</italic>
<sub>1</sub>)</th>
<th align="center">(<italic>p</italic>
<sub>2</sub>
<italic>p</italic>
<sub>2</sub>&#x7c;<italic>p</italic>
<sub>2</sub>
<italic>p</italic>
<sub>2</sub>)</th>
<th align="center">(<italic>dd</italic>&#x7c;<italic>dd</italic>)</th>
<th align="center">&#x394;<italic>E</italic>
<sub>max</sub>
</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">Analy.</td>
<td align="center">CGTO</td>
<td align="center">11.80152342</td>
<td align="center">13.23662039</td>
<td align="center">10.35761045</td>
<td align="center">12.56349594</td>
<td align="center">9.28132159</td>
<td align="left"/>
</tr>
<tr>
<td align="center">Numer.</td>
<td align="center">10<sup>&#x2013;3</sup>
</td>
<td align="center">11.80001727</td>
<td align="center">13.23633404</td>
<td align="center">10.35760717</td>
<td align="center">12.56348421</td>
<td align="center">9.28132044</td>
<td align="center">2.32 &#xd7; 10<sup>&#x2013;3</sup>
</td>
</tr>
<tr>
<td align="left"/>
<td align="center">10<sup>&#x2013;4</sup>
</td>
<td align="center">11.80150036</td>
<td align="center">13.23661751</td>
<td align="center">10.35761042</td>
<td align="center">12.56349583</td>
<td align="center">9.28132172</td>
<td align="center">6.41 &#xd7; 10<sup>&#x2013;5</sup>
</td>
</tr>
<tr>
<td align="left"/>
<td align="center">10<sup>&#x2013;5</sup>
</td>
<td align="center">11.80152312</td>
<td align="center">13.23662036</td>
<td align="center">10.35761045</td>
<td align="center">12.56349594</td>
<td align="center">9.28132173</td>
<td align="center">2.4 &#xd7; 10<sup>&#x2013;6</sup>
</td>
</tr>
<tr>
<td align="left"/>
<td align="center">10<sup>&#x2013;6</sup>
</td>
<td align="center">11.80152342</td>
<td align="center">13.23662039</td>
<td align="center">10.35761046</td>
<td align="center">12.56349595</td>
<td align="center">9.28132173</td>
<td align="center">1.4 &#xd7; 10<sup>&#x2013;7</sup>
</td>
</tr>
<tr>
<td align="left"/>
<td align="center">10<sup>&#x2013;7</sup>
</td>
<td align="center">11.80152342</td>
<td align="center">13.23662038</td>
<td align="center">10.35761046</td>
<td align="center">12.56349595</td>
<td align="center">9.28132173</td>
<td align="center">1.4 &#xd7; 10<sup>&#x2013;7</sup>
</td>
</tr>
<tr>
<td align="left"/>
<td align="center">Original NAO</td>
<td align="center">11.80299940</td>
<td align="center">13.23767035</td>
<td align="center">10.37228773</td>
<td align="center">12.57084510</td>
<td align="center">8.74843515</td>
<td align="center">5.33 &#xd7; 10<sup>&#x2013;1</sup>
</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s4-1-2">
<title>4.1.2 Integral screening</title>
<p>We then benchmark the numerical accuracy and efficiency of different screening methods for the Si crystal with HSE06 calculations. The lattice constant is chosen to be 5.43&#xa0;&#xc5;, and the primitive unit cell containing two Si atoms is used. The Cartesian coordinates of two atoms are set to non-equilibrium positions of (0, 0, 0) and (1.3175, 1.3575, 1.3575), respectively, so that a relatively large value of atomic force in the <italic>x</italic> direction can be obtained. <xref ref-type="table" rid="T3">Table 3</xref> shows the absolute errors (total energy, band gap, and atomic force) and the wall time for the calculation of HFX matrix and forces under different screening methods and thresholds. The reference values in the table are obtained using Schwarz-screening only with a threshold of <italic>&#x3f5;</italic>
<sub>Schwarz</sub> &#x3d; 10<sup>&#x2013;10</sup> (in Ry), in which the HFX time is taken from the last SCF step.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Absolute errors (total energy &#x394;<italic>E</italic>
<sub>tot</sub> and band gap &#x394;<italic>E</italic>
<sub>g</sub> in eV, while atomic force &#x394;<italic>F</italic>
<sub>
<italic>x</italic>
</sub> in eV/&#xc5;) and wall time (in seconds) of different integral screening techniques for the Si crystal. All calculations are performed on 24 CPU cores.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center"/>
<th align="center">
<italic>&#x3f5;</italic>
<sub>Schwarz</sub>
</th>
<th align="center">
<italic>&#x3f5;</italic>
<sub>Farfield</sub>
</th>
<th align="center">&#x394;<italic>E</italic>
<sub>tot</sub>
</th>
<th align="center">&#x394;<italic>E</italic>
<sub>g</sub>
</th>
<th align="center">&#x394;<italic>F</italic>
<sub>
<italic>x</italic>
</sub>
</th>
<th align="center">
<italic>T</italic>
<sub>HFX</sub>
</th>
<th align="center">
<italic>T</italic>
<sub>Force</sub>
</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">Ref.</td>
<td align="center">10<sup>&#x2013;</sup>
<sup>10</sup>
</td>
<td align="center">None</td>
<td align="center">-213.752168</td>
<td align="center">-1.1946</td>
<td align="center">0.660689</td>
<td align="center">1392.2</td>
<td align="center">18829.6</td>
</tr>
<tr>
<td align="center">A</td>
<td align="center">10<sup>&#x2013;</sup>
<sup>7</sup>
</td>
<td align="center">None</td>
<td align="center">4 &#xd7; 10<sup>&#x2013;6</sup>
</td>
<td align="center">0</td>
<td align="center">1 &#xd7; 10<sup>&#x2013;6</sup>
</td>
<td align="center">509.5</td>
<td align="center">6622.9</td>
</tr>
<tr>
<td align="left"/>
<td align="center">10<sup>&#x2013;</sup>
<sup>6</sup>
</td>
<td align="center">None</td>
<td align="center">7.0 &#xd7; 10<sup>&#x2013;5</sup>
</td>
<td align="center">0</td>
<td align="center">1.0 &#xd7; 10<sup>&#x2013;5</sup>
</td>
<td align="center">333.7</td>
<td align="center">4345.0</td>
</tr>
<tr>
<td align="left"/>
<td align="center">10<sup>&#x2013;</sup>
<sup>5</sup>
</td>
<td align="center">None</td>
<td align="center">7.71 &#xd7; 10<sup>&#x2013;4</sup>
</td>
<td align="center">1.2 &#xd7; 10<sup>&#x2013;4</sup>
</td>
<td align="center">1.79 &#xd7; 10<sup>&#x2013;4</sup>
</td>
<td align="center">209.9</td>
<td align="center">2802.3</td>
</tr>
<tr>
<td align="center">AB</td>
<td align="center">10<sup>&#x2013;</sup>
<sup>7</sup>
</td>
<td align="center">10<sup>&#x2013;7</sup>
</td>
<td align="center">4 &#xd7; 10<sup>&#x2013;6</sup>
</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">410.0</td>
<td align="center">5257.9</td>
</tr>
<tr>
<td align="left"/>
<td align="center">10<sup>&#x2013;</sup>
<sup>6</sup>
</td>
<td align="center">10<sup>&#x2013;6</sup>
</td>
<td align="center">7.2 &#xd7; 10<sup>&#x2013;5</sup>
</td>
<td align="center">0</td>
<td align="center">1.3 &#xd7; 10<sup>&#x2013;5</sup>
</td>
<td align="center">271.2</td>
<td align="center">3524.3</td>
</tr>
<tr>
<td align="left"/>
<td align="center">10<sup>&#x2013;</sup>
<sup>5</sup>
</td>
<td align="center">10<sup>&#x2013;5</sup>
</td>
<td align="center">7.77 &#xd7; 10<sup>&#x2013;4</sup>
</td>
<td align="center">1.2 &#xd7; 10<sup>&#x2013;3</sup>
</td>
<td align="center">1.86 &#xd7; 10<sup>&#x2013;4</sup>
</td>
<td align="center">171.0</td>
<td align="center">2317.7</td>
</tr>
<tr>
<td align="center">ABC</td>
<td align="center">10<sup>&#x2013;</sup>
<sup>7</sup>
</td>
<td align="center">10<sup>&#x2013;7</sup>
</td>
<td align="center">4 &#xd7; 10<sup>&#x2013;6</sup>
</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">200.3</td>
<td align="center">2595.3</td>
</tr>
<tr>
<td align="left"/>
<td align="center">10<sup>&#x2013;</sup>
<sup>6</sup>
</td>
<td align="center">10<sup>&#x2013;6</sup>
</td>
<td align="center">7.2 &#xd7; 10<sup>&#x2013;5</sup>
</td>
<td align="center">0</td>
<td align="center">1.3 &#xd7; 10<sup>&#x2013;5</sup>
</td>
<td align="center">131.5</td>
<td align="center">1666.5</td>
</tr>
<tr>
<td align="left"/>
<td align="center">10<sup>&#x2013;</sup>
<sup>5</sup>
</td>
<td align="center">10<sup>&#x2013;5</sup>
</td>
<td align="center">7.77 &#xd7; 10<sup>&#x2013;4</sup>
</td>
<td align="center">1.2 &#xd7; 10<sup>&#x2013;3</sup>
</td>
<td align="center">1.86 &#xd7; 10<sup>&#x2013;4</sup>
</td>
<td align="center">80.3</td>
<td align="center">1043.0</td>
</tr>
<tr>
<td align="center">ABCD</td>
<td align="center">10<sup>&#x2013;</sup>
<sup>7</sup>
</td>
<td align="center">10<sup>&#x2013;7</sup>
</td>
<td align="center">5.3 &#xd7; 10<sup>&#x2013;5</sup>
</td>
<td align="center">0</td>
<td align="center">1.7 &#xd7; 10<sup>&#x2013;5</sup>
</td>
<td align="center">69.5</td>
<td align="center">62.4</td>
</tr>
<tr>
<td align="left"/>
<td align="center">10<sup>&#x2013;</sup>
<sup>6</sup>
</td>
<td align="center">10<sup>&#x2013;6</sup>
</td>
<td align="center">7.08 &#xd7; 10<sup>&#x2013;4</sup>
</td>
<td align="center">4.0 &#xd7; 10<sup>&#x2013;4</sup>
</td>
<td align="center">6.96 &#xd7; 10<sup>&#x2013;4</sup>
</td>
<td align="center">37.0</td>
<td align="center">18.8</td>
</tr>
<tr>
<td align="left"/>
<td align="center">10<sup>&#x2013;</sup>
<sup>5</sup>
</td>
<td align="center">10<sup>&#x2013;5</sup>
</td>
<td align="center">2.74 &#xd7; 10<sup>&#x2013;3</sup>
</td>
<td align="center">1.31 &#xd7; 10<sup>&#x2013;2</sup>
</td>
<td align="center">5.38 &#xd7; 10<sup>&#x2013;3</sup>
</td>
<td align="center">15.1</td>
<td align="center">4.8</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>As can be seen from <xref ref-type="table" rid="T3">Table 3</xref>, both the numerical accuracy and computational cost can efficiently be controlled by the thresholds. The screening methods of Schwarz (A), far-field (B), and NAO (C) show almost the same errors in energy and force at given thresholds, while the density matrix screening (D) yields relatively larger errors. All absolute errors lie within the range of 10<sup>&#x2212;5</sup>&#x2013;10<sup>&#x2212;4</sup> (eV or eV/&#xc5;) when the thresholds are set to be 10<sup>&#x2013;6</sup> (Ry), which is then chosen as the global default threshold. For building the HFX matrix, we find that applying more screening methods of A, B, and C only leads to 1-2 speed-up, which can be improved by further including D. The calculation of HFX forces requires to evaluate the first-order derivatives of ERIs, which contain 12 components. Therefore, we can also see that the computational time of HFX forces under the same screening methods without the density matrix is about 12 times higher than that of HFX matrix. However, if the density matrix screening is involved, the computational cost of HFX forces can be reduced by nearly 2-3 orders of magnitude. In particular, the HFX force calculation can eventually be faster than the HFX matrix construction with the thresholds larger than 10<sup>&#x2013;7</sup>. This dramatic improvement in efficiency can be attributed to two aspects: (1) the fully converged density matrix after the SCF iteration is more sparse; (2) the product of the sparse density matrix yields a smaller upper bound to filter out much more shell quartets.</p>
<p>We also compare the analytical and numerical gradients of total energy for the Si crystal. The numerical gradients are obtained by using the finite difference method, in which the first atom Si<sub>1</sub> is fixed at the origin and the other atom Si<sub>2</sub> located at (<italic>x</italic>, 1.3575, 1.3575) is moved along <italic>x</italic> direction. We perform a series of HSE06 calculations by varying the <italic>x</italic> coordinate of Si<sub>2</sub> from 1.3075 to 1.4075&#xa0;&#xc5;. As shown in <xref ref-type="fig" rid="F2">Figure 2</xref>, the <italic>x</italic> component of analytical forces acting on Si<sub>2</sub> are in very good agreement with the numerical differentiations of total energies. The maximum discrepancy between the analytical and numerical forces is less than 1.5 &#xd7; 10<sup>&#x2013;3</sup>&#xa0;eV/&#xc5;, which also indicates that our implementation is correct.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>
<bold>(A)</bold> Total energy and <bold>(B)</bold> atomic force as a function of Si coordinates. One atom is fixed at the origin, whereas the other atom is moved along the <italic>x</italic> direction. The curve shows a polynomial fitting of total energy, and its partial differential (the slope) is the numerical force <bold>F</bold>
<sub>
<italic>x</italic>
</sub> &#x3d; <italic>&#x2202;E</italic>
<sub>
<italic>tot</italic>
</sub>/<italic>&#x2202;</italic>
<bold>R</bold>
<sub>
<italic>x</italic>
</sub> with the finite difference method.</p>
</caption>
<graphic xlink:href="fchem-11-1232425-g002.tif"/>
</fig>
</sec>
<sec id="s4-1-3">
<title>4.1.3 Lattice constant, bulk modulus, and band gap</title>
<p>Furthermore, we verify the reliability of our improved NAO2GTO scheme that replaces the NAOs with numerically discretized CGTOs. We calculate the equilibrium lattice constants <italic>a</italic>
<sub>0</sub>, bulk moduli <italic>B</italic>
<sub>0</sub>, and band gaps <italic>E</italic>
<sub>g</sub> for several typical semiconductors with HSE06, and compare them with experimental (<xref ref-type="bibr" rid="B21">Heyd and Scuseria, 2004</xref>) and other theoretical (<xref ref-type="bibr" rid="B50">Paier et al., 2006a</xref>; <xref ref-type="bibr" rid="B38">Levchenko et al., 2015</xref>) results. The equilibrium lattice constants and bulk moduli are determined by fitting energy-volume (E-V) data with the third-order Birch-Murnaghan equation of state (<xref ref-type="bibr" rid="B5">Birch, 1947</xref>). The band gaps are obtained using single-point calculations at the optimized lattice constant. A 543 NAO2GTO fitting and cutoff threshold of <italic>&#x3f5;</italic>
<sub>Schwarz</sub> &#x3d; 10<sup>&#x2013;5</sup> are chosen. All screening methods with the default thresholds (<italic>&#x3f5;</italic>
<sub>Schwarz</sub> &#x3d; <italic>&#x3f5;</italic>
<sub>Farfield</sub> &#x3d; 10<sup>&#x2013;6</sup>) are applied.</p>
<p>As summarized in <xref ref-type="table" rid="T4">Table 4</xref>, our HSE06 results agree satisfactorily with the experimental values. It can also be seen that our results differ slightly from other theoretical values with a difference of 0.01&#x2013;0.025&#xa0;&#xc5; for <italic>a</italic>
<sub>0</sub>, 4&#x2013;10&#xa0;GPa for <italic>B</italic>
<sub>0</sub>, and 0.02&#x2013;0.18&#xa0;eV for <italic>E</italic>
<sub>g</sub>, respectively. Actually, such a discrepancy can also be found in other codes (Levchenko et al., 2015; Lin et al., 2020), which can be attributed to the use of different pseudopotentials and basis sets. In the NAO framework, it has been shown that the radial range and shape can influence the final results of DFT calculations (<xref ref-type="bibr" rid="B31">Junquera et al., 2001</xref>; <xref ref-type="bibr" rid="B3">Anglada et al., 2002</xref>). We use the NAO2GTO fitting to generate new numerical radial functions with a large cutoff radius, which will result in deviations in the HSE06 calculations due to the changes in the radial range and shape of NAOs. As a result, we decide to use 3-6 GTOs with the exponents larger than 0.15 to fit NAOs so that the basis functions do not change significantly. It is important to stress that, we have not observed numerical instability when using truncated CGTOs for HSE06 calculations, but more detailed tests for different systems are still necessary.</p>
<table-wrap id="T4" position="float">
<label>TABLE 4</label>
<caption>
<p>Lattice constants <italic>a</italic>
<sub>0</sub> (&#xc5;), bulk moduli <italic>B</italic>
<sub>0</sub> (GPa), and band gaps <italic>E</italic>
<sub>g</sub> (eV) for C, Si, SiC, BN, and BP with the cubic diamond structure. Experimental (Expt.) results are taken from in the literature (<xref ref-type="bibr" rid="B21">Heyd and Scuseria, 2004</xref>). Theoretical values are from Ref. (<xref ref-type="bibr" rid="B50">Paier et al., 2006a</xref>) with plane-wave basis sets, whereas values in parentheses are NAO-based results (<xref ref-type="bibr" rid="B38">Levchenko et al., 2015</xref>).</p>
</caption>
<table>
<thead valign="top">
<tr>
<th rowspan="2" align="center">Solid</th>
<th colspan="3" align="center">
<italic>a</italic>
<sub>0</sub>
</th>
<th colspan="3" align="center">
<italic>B</italic>
<sub>0</sub>
</th>
<th colspan="3" align="center">
<italic>E</italic>
<sub>g</sub>
</th>
</tr>
<tr>
<th align="center">HSE06</th>
<th align="center">Ref.</th>
<th align="center">Expt.</th>
<th align="center">HSE06</th>
<th align="center">Ref.</th>
<th align="center">Expt.</th>
<th align="center">HSE06</th>
<th align="center">Ref.</th>
<th align="center">Expt.</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">C</td>
<td align="center">3.559</td>
<td align="center">3.549</td>
<td align="center">3.567</td>
<td align="center">457</td>
<td align="center">467</td>
<td align="center">443</td>
<td align="center">5.58</td>
<td align="center">5.49</td>
<td align="center">5.48</td>
</tr>
<tr>
<td align="center">Si</td>
<td align="center">5.448</td>
<td align="center">5.435</td>
<td align="center">5.430</td>
<td align="center">101.6</td>
<td align="center">97.7</td>
<td align="center">99.2</td>
<td align="center">1.32</td>
<td align="center">1.14</td>
<td align="center">1.17</td>
</tr>
<tr>
<td align="left"/>
<td align="left"/>
<td align="center">(5.446)</td>
<td align="left"/>
<td align="left"/>
<td align="center">(97.6)</td>
<td align="left"/>
<td align="left"/>
<td align="center">(1.34)</td>
<td align="left"/>
</tr>
<tr>
<td align="center">SiC</td>
<td align="center">4.365</td>
<td align="center">4.348</td>
<td align="center">4.358</td>
<td align="center">222</td>
<td align="center">230</td>
<td align="center">225</td>
<td align="center">2.41</td>
<td align="center">2.39</td>
<td align="center">2.42</td>
</tr>
<tr>
<td align="center">BN</td>
<td align="center">3.622</td>
<td align="center">3.603</td>
<td align="center">3.616</td>
<td align="center">391</td>
<td align="center">402</td>
<td align="center">400</td>
<td align="center">6.01</td>
<td align="center">5.98</td>
<td align="center">6.4</td>
</tr>
<tr>
<td align="center">BP</td>
<td align="center">4.546</td>
<td align="center">4.521</td>
<td align="center">4.538</td>
<td align="center">163</td>
<td align="center">173</td>
<td align="center">165</td>
<td align="center">2.21</td>
<td align="center">2.16</td>
<td align="center">2.4</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec id="s4-2">
<title>4.2 Parallel efficiency and computational scaling</title>
<p>In order to illustrate the parallel scalability of our implementation, we perform &#x393;-only HSE06 calculations for the Si crystal with a supercell containing 512 atoms by using different CPU cores. The default parameters are used for NAO2GTO fitting and integral screening. Our calculations are performed on Intel(R) Xeon(R) CPUs (6258R <email>CPU@2.70GHz</email>). The wall time for building the HFX matrix in the last SCF step is recorded, while the reported wall time for computing the HFX forces only includes the second term in Eq. <xref ref-type="disp-formula" rid="e13">13</xref>
</p>
<p>
<xref ref-type="fig" rid="F3">Figure 3A</xref> shows the change of wall times with respect to the number of CPU cores ranging from 48 to 768. The calculation of HFX forces takes 222.1 and 99.2&#xa0;s for 48 and 768 CPU cores, respectively, which is 1.4&#x2013;2.2 times faster than the HFX matrix construction (2142.9 and 1521.9&#xa0;s). In the master-worker dynamic parallelization of HFX force calculation, the load balance can be effectively achieved, and only point-to-point communication of shell quartet indices is needed between the master and worker processes. Thus, the HFX force calculation scales nearly perfectly up to 768 CPU cores with a very high parallel efficiency of 95.9% as expected. However, the parallel efficiency for the construction of HFX matrix is significantly reduced to 57.8%. This reduction can be attributed to all-to-all communications required for building the global HFX matrix, which has been demonstrated in our previous work (<xref ref-type="bibr" rid="B67">Shang et al., 2020</xref>).</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>
<bold>(A)</bold> The change of wall clock time for HFX matrix and forces with respect to the number of CPU cores for the Si supercell containing 512 atoms. <bold>(B)</bold> The change time of wall clock time for HFX matrix and forces with respect to system size for Si supercells containing from 64 to 1024 atoms running on 240 CPU cores. The dashed lines correspond to a linear fit for the data. All calculations are performed on Intel(R) Xeon(R) CPUs (6258R <email>CPU@2.70GHz</email>).</p>
</caption>
<graphic xlink:href="fchem-11-1232425-g003.tif"/>
</fig>
<p>With such a good parallel scalability, we demonstrate the linear-scaling behavior of our implementation with respect to system size in parallel. We perform a series of &#x393;-only HSE06 calculations for the Si crystal with different supercells containing from 64 up to 1024 atoms on 240 CPU cores, in which the HFX matrix construction still maintains high parallel efficiency. As shown in <xref ref-type="fig" rid="F3">Figure 3B</xref>, the wall time of both HFX matrix and force computations scale linearly with respect to system size. In particular, the linear-scaling calculation of HFX forces has a smaller prefactor than that of HFX matrix.</p>
</sec>
<sec id="s4-3">
<title>4.3 Small electron polaron in rutile TiO<sub>2</sub>
</title>
<p>As a prototypical photocatalyst, TiO<sub>2</sub> is one of the most intensively studied materials, and polarons often play a decisive role in its applications (<xref ref-type="bibr" rid="B10">De Lile et al., 2022</xref>). For bulk rutile TiO<sub>2</sub>, excess electrons can self-trap to form small polarons associated with local lattice distortion (<xref ref-type="bibr" rid="B64">Setvin et al., 2014</xref>). It has shown that hybrid functionals are sufficiently accurate to describe the formation and properties of small polarons in rutile TiO<sub>2</sub>(<xref ref-type="bibr" rid="B30">Janotti et al., 2013</xref>; <xref ref-type="bibr" rid="B12">Elmaslmane et al., 2018</xref>; <xref ref-type="bibr" rid="B10">De Lile et al., 2022</xref>). Herein, we apply our code to investigate the small polaron due to the excess electron in bulk rutile TiO<sub>2</sub> with HSE06. In all our calculations, the experimental lattice constants of <italic>a</italic> &#x3d; 4.594&#xa0;&#xc5; and <italic>c</italic> &#x3d; 2.959&#xa0;&#xc5; are used. The calculated band gap for rutile TiO<sub>2</sub> is 3.28 eV, slightly higher than the experimental value of 3.03&#xa0;eV (<xref ref-type="bibr" rid="B2">Amtout and Leonelli, 1995</xref>) but lower than the reported HSE06 value of 3.39&#xa0;eV (<xref ref-type="bibr" rid="B36">Landmann et al., 2012</xref>). To simulate the formation of small polaron, a 3 &#xd7; 3 &#xd7; 4 supercell containing 216 atoms and &#x2212;1&#x7c;<italic>e</italic>&#x7c; net charge is used for spin-polarized HSE06 calculations. The k-point meshes of 2 &#xd7; 2 &#xd7; 2 and 4 &#xd7; 4 &#xd7; 4 are chosen for structural relaxation and electronic structure calculations, respectively. One Ti atom is specified an initial displacement (<inline-formula id="inf41">
<mml:math id="m78">
<mml:mo>&#x223c;</mml:mo>
<mml:mn>0.18</mml:mn>
</mml:math>
</inline-formula> &#xc5;) for localization of the polaron, and all atomic coordinates are relaxed until the forces acting on each atom are less than 0.04&#xa0;eV/&#xc5;.</p>
<p>After full structural optimization, we observe a local lattice distortion around one Ti ion in the electron-doped rutile TiO<sub>2</sub>. Compared to the pristine structure, the two Ti-O bonds perpendicular to the c-axis relax outward, increasing from 1.981 to 1.991&#xa0;&#xc5; in length. In particular, the other four bonds with an initial length of 1.948&#xa0;&#xc5; undergo two distinct changes: two of them increase to 2.011&#xa0;&#xc5;, while the remaining two decrease to 1.891&#xa0;&#xc5;. <xref ref-type="fig" rid="F4">Figure 4A</xref> shows the band structure, where we can find a localized spin-electron state located at roughly 0.88&#xa0;eV below the conduction band minimum (CBM). We also plot the spin density for this localized state in <xref ref-type="fig" rid="F4">Figure 4B</xref>. As expected, the spin density is localized on the single Ti ion with a local lattice distortion, indicating the formation of a small electron polaron. Our results are in good agreement with the reported HSE06 results, in which an electron polaron state at 0.77&#xa0;eV below the CBM was predicted by using VASP (<xref ref-type="bibr" rid="B30">Janotti et al., 2013</xref>).</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>
<bold>(A)</bold> HSE06 band structure and <bold>(B)</bold> spin density of the self-trapped electron for the supercell of rutile TiO<sub>2</sub> with an excess electron. The isosurface is set to be 10% of the maximum charge density, and a 3 &#xd7; 3 &#xd7; 4 supercell containing 216 atoms is used.</p>
</caption>
<graphic xlink:href="fchem-11-1232425-g004.tif"/>
</fig>
</sec>
</sec>
<sec sec-type="conclusion" id="s5">
<title>5 Conclusion</title>
<p>In summary, we have presented an efficient and linear-scaling implementation of analytical gradients of HFX energy for periodic HSE06 calculations within NAOs based on the NAO2GTO scheme. To minimize the errors caused by the NAO2GTO fitting, the original NAOs are replaced by the numerically discretized CGTOs. The ERIs and their derivatives for the HFX term are analytically evaluated with CGTOs, whereas other terms are obtained using discretized CGTOs. Several integral screening methods are utilized to reduce the computational cost of HFX forces, among which the density matrix screening can lead to a linear-scaling calculation of HFX forces with a smaller prefactor compared to the HFX matrix construction. We have demonstrated our implementation can yield accurate results of lattice constants, bulk moduli, and band gaps for several semiconductors. In addition, a master-worker dynamic parallel strategy is employed for computing the HFX forces, which can lead to very high parallel efficiency. We have also studied the small polaronic behavior of excess electrons in rutile TiO<sub>2</sub>, validating the capability of our code for predicting the polarons.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/Supplementary Material, further inquiries can be directed to the corresponding authors.</p>
</sec>
<sec id="s7">
<title>Author contributions</title>
<p>JY designed and directed the project. HS developed the theoretical formulas and techniques. XQ carried out the implementation and performed the numerical simulations. All authors contributed to the article and approved the submitted version.</p>
</sec>
<sec id="s8">
<title>Funding</title>
<p>This work is partly supported by the National Natural Science Foundation of China (Grant Nos. 22003061, 22003073, T2222026, 22288201, and 22273092), by the Innovation Program for Quantum Science and Technology (Grant No. 2021ZD0303306), by the National Key Research and Development Program of China (Grant No. 2021YFB0300600), by the Strategic Priority Research Program of the Chinese Academy of Sciences (Grant No. XDB0450101), and by the Anhui Initiative in Quantum Information Technologies (Grant No. AHY090400).</p>
</sec>
<ack>
<p>The authors acknowledge Prof. Javier Junquera (Departamento CITIMAC, Facultad de Ciencias, Universidad de Cantabria) and Dr. Yann Pouillon (Departamento CITIMAC, Facultad de Ciencias, Universidad de Cantabria) for helpful discussions. The authors thank the Supercomputing Center of Chinese Academy of Sciences, the Supercomputing Center of USTC, and the National Supercomputing Center in Jinan, Tianjin, and Guangzhou Supercomputing Centers for the computational resources.</p>
</ack>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s10">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Adamo</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Barone</surname>
<given-names>V.</given-names>
</name>
</person-group> (<year>1999</year>). <article-title>Toward reliable density functional methods without adjustable parameters: The PBE0 model</article-title>. <source>J. Chem. Phys.</source> <volume>110</volume>, <fpage>6158</fpage>&#x2013;<lpage>6170</lpage>. <pub-id pub-id-type="doi">10.1063/1.478522</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Amtout</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Leonelli</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>1995</year>). <article-title>Optical properties of rutile near its fundamental band gap</article-title>. <source>Phys. Rev. B</source> <volume>51</volume>, <fpage>6842</fpage>&#x2013;<lpage>6851</lpage>. <pub-id pub-id-type="doi">10.1103/PhysRevB.51.6842</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Anglada</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Soler</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Junquera</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Artacho</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2002</year>). <article-title>Systematic generation of finite-range atomic basis sets for linear-scaling calculations</article-title>. <source>Phys. Rev. B</source> <volume>66</volume>, <fpage>205101</fpage>. <pub-id pub-id-type="doi">10.1103/PhysRevB.66.205101</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Barca</surname>
<given-names>G. M. J.</given-names>
</name>
<name>
<surname>Galvez-Vallejo</surname>
<given-names>J. L.</given-names>
</name>
<name>
<surname>Poole</surname>
<given-names>D. L.</given-names>
</name>
<name>
<surname>Rendell</surname>
<given-names>A. P.</given-names>
</name>
<name>
<surname>Gordon</surname>
<given-names>M. S.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>High-performance, graphics processing unit-accelerated fock build algorithm</article-title>. <source>J. Chem. Theory Comput.</source> <volume>16</volume>, <fpage>7232</fpage>&#x2013;<lpage>7238</lpage>. <pub-id pub-id-type="doi">10.1021/acs.jctc.0c00768</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Birch</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>1947</year>). <article-title>Finite elastic strain of cubic crystals</article-title>. <source>Phys. Rev.</source> <volume>71</volume>, <fpage>809</fpage>&#x2013;<lpage>824</lpage>. <pub-id pub-id-type="doi">10.1103/PhysRev.71.809</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Blum</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Gehrke</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Hanke</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Havu</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Havu</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Ren</surname>
<given-names>X.</given-names>
</name>
<etal/>
</person-group> (<year>2009</year>). <article-title>
<italic>Ab initio</italic> molecular simulations with numeric atom-centered orbitals</article-title>. <source>Comput. Phys. Commun.</source> <volume>180</volume>, <fpage>2175</fpage>&#x2013;<lpage>2196</lpage>. <pub-id pub-id-type="doi">10.1016/j.cpc.2009.06.022</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Broqvist</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Alkauskas</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Pasquarello</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>Hybrid-functional calculations with plane-wave basis sets: Effect of singularity correction on total energies, energy eigenvalues, and defect energy levels</article-title>. <source>Phys. Rev. B</source> <volume>80</volume>, <fpage>085114</fpage>. <pub-id pub-id-type="doi">10.1103/PhysRevB.80.085114</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Burant</surname>
<given-names>J. C.</given-names>
</name>
<name>
<surname>Scuseria</surname>
<given-names>G. E.</given-names>
</name>
<name>
<surname>Frisch</surname>
<given-names>M. J.</given-names>
</name>
</person-group> (<year>1996</year>). <article-title>A linear scaling method for Hartree&#x2013;Fock exchange calculations of large molecules</article-title>. <source>J. Chem. Phys.</source> <volume>105</volume>, <fpage>8969</fpage>&#x2013;<lpage>8972</lpage>. <pub-id pub-id-type="doi">10.1063/1.472627</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chen</surname>
<given-names>Y.-C.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>J.-Z.</given-names>
</name>
<name>
<surname>Michaud-Rioux</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Shi</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Guo</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Efficient evaluation of nonlocal operators in density functional theory</article-title>. <source>Phys. Rev. B</source> <volume>97</volume>, <fpage>075139</fpage>. <pub-id pub-id-type="doi">10.1103/PhysRevB.97.075139</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>De Lile</surname>
<given-names>J. R.</given-names>
</name>
<name>
<surname>Bahadoran</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Polaron in TiO<sub>2</sub> from first-principles: A review</article-title>. <source>Adv. Theory Simul.</source> <volume>5</volume>, <fpage>2100244</fpage>. <pub-id pub-id-type="doi">10.1002/adts.202100244</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dovesi</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Pascale</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Civalleri</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Doll</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Harrison</surname>
<given-names>N. M.</given-names>
</name>
<name>
<surname>Bush</surname>
<given-names>I.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>The CRYSTAL code, 1976&#x2013;2020 and beyond, a long story</article-title>. <source>J. Chem. Phys.</source> <volume>152</volume>, <fpage>204111</fpage>. <pub-id pub-id-type="doi">10.1063/5.0004892</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Elmaslmane</surname>
<given-names>A. R.</given-names>
</name>
<name>
<surname>Watkins</surname>
<given-names>M. B.</given-names>
</name>
<name>
<surname>McKenna</surname>
<given-names>K. P.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>First-principles modeling of polaron formation in TiO<sub>2</sub> polymorphs</article-title>. <source>J. Chem. Theory Comput.</source> <volume>14</volume>, <fpage>3740</fpage>&#x2013;<lpage>3751</lpage>. <pub-id pub-id-type="doi">10.1021/acs.jctc.8b00199</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ernzerhof</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Scuseria</surname>
<given-names>G. E.</given-names>
</name>
</person-group> (<year>1999</year>). <article-title>Assessment of the Perdew-Burke-Ernzerhof exchange-correlation functional</article-title>. <source>J. Chem. Phys.</source> <volume>110</volume>, <fpage>5029</fpage>&#x2013;<lpage>5036</lpage>. <pub-id pub-id-type="doi">10.1063/1.478401</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Feynman</surname>
<given-names>R. P.</given-names>
</name>
</person-group> (<year>1939</year>). <article-title>Forces in molecules</article-title>. <source>Phys. Rev.</source> <volume>56</volume>, <fpage>340</fpage>&#x2013;<lpage>343</lpage>. <pub-id pub-id-type="doi">10.1103/PhysRev.56.340</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Guidon</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Hutter</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>VandeVondele</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>Robust periodic Hartree-Fock exchange for large-scale simulations using Gaussian basis sets</article-title>. <source>J. Chem. Theory Comput.</source> <volume>5</volume>, <fpage>3010</fpage>&#x2013;<lpage>3021</lpage>. <pub-id pub-id-type="doi">10.1021/ct900494g</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Guidon</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Schiffmann</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Hutter</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>VandeVondele</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2008</year>). <article-title>
<italic>Ab initio</italic> molecular dynamics using hybrid density functionals</article-title>. <source>J. Chem. Phys.</source> <volume>128</volume>, <fpage>214104</fpage>. <pub-id pub-id-type="doi">10.1063/1.2931945</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hamilton</surname>
<given-names>T. P.</given-names>
</name>
<name>
<surname>Schaefer</surname>
<given-names>H. F.</given-names>
</name>
</person-group> (<year>1991</year>). <article-title>New variations in two-electron integral evaluation in the context of direct SCF procedures</article-title>. <source>Chem. Phys.</source> <volume>150</volume>, <fpage>163</fpage>&#x2013;<lpage>171</lpage>. <pub-id pub-id-type="doi">10.1016/0301-0104(91)80126-3</pub-id>
</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>H&#xe4;ser</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Ahlrichs</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>1989</year>). <article-title>Improvements on the direct SCF method</article-title>. <source>J. Comput. Chem.</source> <volume>10</volume>, <fpage>104</fpage>&#x2013;<lpage>111</lpage>. <pub-id pub-id-type="doi">10.1002/jcc.540100111</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Head-Gordon</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Pople</surname>
<given-names>J. A.</given-names>
</name>
</person-group> (<year>1988</year>). <article-title>A method for two-electron Gaussian integral and integral derivative evaluation using recurrence relations</article-title>. <source>J. Chem. Phys.</source> <volume>89</volume>, <fpage>5777</fpage>&#x2013;<lpage>5786</lpage>. <pub-id pub-id-type="doi">10.1063/1.455553</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Henderson</surname>
<given-names>T. M.</given-names>
</name>
<name>
<surname>Paier</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Scuseria</surname>
<given-names>G. E.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Accurate treatment of solids with the HSE screened hybrid</article-title>. <source>Phys. Status Solidi B</source> <volume>248</volume>, <fpage>767</fpage>&#x2013;<lpage>774</lpage>. <pub-id pub-id-type="doi">10.1002/pssb.201046303</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Heyd</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Scuseria</surname>
<given-names>G. E.</given-names>
</name>
</person-group> (<year>2004</year>). <article-title>Efficient hybrid density functional calculations in solids: Assessment of the Heyd&#x2013;Scuseria&#x2013;Ernzerhof screened Coulomb hybrid functional</article-title>. <source>J. Chem. Phys.</source> <volume>121</volume>, <fpage>1187</fpage>&#x2013;<lpage>1192</lpage>. <pub-id pub-id-type="doi">10.1063/1.1760074</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Heyd</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Scuseria</surname>
<given-names>G. E.</given-names>
</name>
<name>
<surname>Ernzerhof</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2006</year>). <article-title>Erratum: &#x201c;Hybrid functionals based on a screened Coulomb potential&#x201d; [J chem phys 118, 8207 (2003)]</article-title>. <source>J. Chem. Phys.</source> <volume>124</volume>, <fpage>219906</fpage>. <pub-id pub-id-type="doi">10.1063/1.2204597</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Heyd</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Scuseria</surname>
<given-names>G. E.</given-names>
</name>
<name>
<surname>Ernzerhof</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2003</year>). <article-title>Hybrid functionals based on a screened Coulomb potential</article-title>. <source>J. Chem. Phys.</source> <volume>118</volume>, <fpage>8207</fpage>&#x2013;<lpage>8215</lpage>. <pub-id pub-id-type="doi">10.1063/1.1564060</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hohenberg</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Kohn</surname>
<given-names>W.</given-names>
</name>
</person-group> (<year>1964</year>). <article-title>Inhomogeneous electron gas</article-title>. <source>Phys. Rev.</source> <volume>136</volume>, <fpage>B864</fpage>&#x2013;<lpage>B871</lpage>. <pub-id pub-id-type="doi">10.1103/physrev.136.b864</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Horn</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Wei&#xdf;</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>H&#xe1;ser</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Ehrig</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Ahlrichs</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>1991</year>). <article-title>Prescreening of two-electron integral derivatives in SCF gradient and Hessian calculations</article-title>. <source>J. Comput. Chem.</source> <volume>12</volume>, <fpage>1058</fpage>&#x2013;<lpage>1064</lpage>. <pub-id pub-id-type="doi">10.1002/jcc.540120903</pub-id>
</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Banerjee</surname>
<given-names>A. S.</given-names>
</name>
<name>
<surname>Vecharynski</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2017a</year>). <article-title>Adaptively compressed exchange operator for large-scale hybrid density functional calculations with applications to the adsorption of water on silicene</article-title>. <source>J. Chem. Theory Comput.</source> <volume>13</volume>, <fpage>1188</fpage>&#x2013;<lpage>1198</lpage>. <pub-id pub-id-type="doi">10.1021/acs.jctc.6b01184</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2017b</year>). <article-title>Interpolative separable density fitting decomposition for accelerating hybrid density functional calculations with applications to defects in silicon</article-title>. <source>J. Chem. Theory Comput.</source> <volume>13</volume>, <fpage>5420</fpage>&#x2013;<lpage>5431</lpage>. <pub-id pub-id-type="doi">10.1021/acs.jctc.7b00807</pub-id>
</citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Izmaylov</surname>
<given-names>A. F.</given-names>
</name>
<name>
<surname>Scuseria</surname>
<given-names>G. E.</given-names>
</name>
<name>
<surname>Frisch</surname>
<given-names>M. J.</given-names>
</name>
</person-group> (<year>2006</year>). <article-title>Efficient evaluation of short-range Hartree-Fock exchange in large molecules and periodic systems</article-title>. <source>J. Chem. Phys.</source> <volume>125</volume>, <fpage>104103</fpage>. <pub-id pub-id-type="doi">10.1063/1.2347713</pub-id>
</citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Janesko</surname>
<given-names>B. G.</given-names>
</name>
<name>
<surname>Henderson</surname>
<given-names>T. M.</given-names>
</name>
<name>
<surname>Scuseria</surname>
<given-names>G. E.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>Screened hybrid density functionals for solid-state chemistry and physics</article-title>. <source>Phys. Chem. Chem. Phys.</source> <volume>11</volume>, <fpage>443</fpage>&#x2013;<lpage>454</lpage>. <pub-id pub-id-type="doi">10.1039/B812838C</pub-id>
</citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Janotti</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Franchini</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Varley</surname>
<given-names>J. B.</given-names>
</name>
<name>
<surname>Kresse</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Van de Walle</surname>
<given-names>C. G.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Dual behavior of excess electrons in rutile TiO<sub>2</sub>
</article-title>. <source>Phys. Status Solidi RRL</source> <volume>7</volume>, <fpage>199</fpage>&#x2013;<lpage>203</lpage>. <pub-id pub-id-type="doi">10.1002/pssr.201206464</pub-id>
</citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Junquera</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Paz</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>S&#xe1;nchez-Portal</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Artacho</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2001</year>). <article-title>Numerical atomic orbitals for linear-scaling calculations</article-title>. <source>Phys. Rev. B</source> <volume>64</volume>, <fpage>235111</fpage>. <pub-id pub-id-type="doi">10.1103/PhysRevB.64.235111</pub-id>
</citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ko</surname>
<given-names>H.-Y.</given-names>
</name>
<name>
<surname>Jia</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Santra</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Car</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>DiStasio</surname>
<given-names>R. A.</given-names>
<suffix>Jr.</suffix>
</name>
</person-group> (<year>2020</year>). <article-title>Enabling large-scale condensed-phase hybrid density functional theory based <italic>ab initio</italic> molecular dynamics. 1. theory, algorithm, and performance</article-title>. <source>J. Chem. Theory Comput.</source> <volume>16</volume>, <fpage>3757</fpage>&#x2013;<lpage>3785</lpage>. <pub-id pub-id-type="doi">10.1021/acs.jctc.9b01167</pub-id>
</citation>
</ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kohn</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Sham</surname>
<given-names>L. J.</given-names>
</name>
</person-group> (<year>1965</year>). <article-title>Self-consistent equations including exchange and correlation effects</article-title>. <source>Phys. Rev.</source> <volume>140</volume>, <fpage>A1133</fpage>&#x2013;<lpage>A1138</lpage>. <pub-id pub-id-type="doi">10.1103/physrev.140.a1133</pub-id>
</citation>
</ref>
<ref id="B34">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Krukau</surname>
<given-names>A. V.</given-names>
</name>
<name>
<surname>Vydrov</surname>
<given-names>O. A.</given-names>
</name>
<name>
<surname>Izmaylov</surname>
<given-names>A. F.</given-names>
</name>
<name>
<surname>Scuseria</surname>
<given-names>G. E.</given-names>
</name>
</person-group> (<year>2006</year>). <article-title>Influence of the exchange screening parameter on the performance of screened hybrid functionals</article-title>. <source>J. Chem. Phys.</source> <volume>125</volume>, <fpage>224106</fpage>. <pub-id pub-id-type="doi">10.1063/1.2404663</pub-id>
</citation>
</ref>
<ref id="B35">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>K&#xfc;hne</surname>
<given-names>T. D.</given-names>
</name>
<name>
<surname>Iannuzzi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Del Ben</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Rybkin</surname>
<given-names>V. V.</given-names>
</name>
<name>
<surname>Seewald</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Stein</surname>
<given-names>F.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>CP2K: An electronic structure and molecular dynamics software package-Quickstep: Efficient and accurate electronic structure calculations</article-title>. <source>J. Chem. Phys.</source> <volume>152</volume>, <fpage>194103</fpage>. <pub-id pub-id-type="doi">10.1063/5.0007045</pub-id>
</citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Landmann</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Rauls</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Schmidt</surname>
<given-names>W. G.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>The electronic structure and optical response of rutile, anatase and brookite tio2</article-title>. <source>J. Phys. Condens. Matter</source> <volume>24</volume>, <fpage>195503</fpage>. <pub-id pub-id-type="doi">10.1088/0953-8984/24/19/195503</pub-id>
</citation>
</ref>
<ref id="B37">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lee</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Rettig</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Feng</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Epifanovsky</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Head-Gordon</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Faster exact exchange for solids via occ-ri-k: Application to combinatorially optimized range-separated hybrid functionals for simple solids with pseudopotentials near the basis set limit</article-title>. <source>J. Chem. Theory Comput.</source> <volume>18</volume>, <fpage>7336</fpage>&#x2013;<lpage>7349</lpage>. <pub-id pub-id-type="doi">10.1021/acs.jctc.2c00742</pub-id>
</citation>
</ref>
<ref id="B38">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Levchenko</surname>
<given-names>S. V.</given-names>
</name>
<name>
<surname>Ren</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Wieferink</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Johanni</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Rinke</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Blum</surname>
<given-names>V.</given-names>
</name>
<etal/>
</person-group> (<year>2015</year>). <article-title>Hybrid functionals for large periodic systems in an all-electron, numeric atom-centered basis framework</article-title>. <source>Comput. Phys. Commun.</source> <volume>192</volume>, <fpage>60</fpage>&#x2013;<lpage>69</lpage>. <pub-id pub-id-type="doi">10.1016/j.cpc.2015.02.021</pub-id>
</citation>
</ref>
<ref id="B39">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Ren</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>L.</given-names>
</name>
<etal/>
</person-group> (<year>2016</year>). <article-title>Large-scale <italic>ab initio</italic> simulations based on systematically improvable atomic basis</article-title>. <source>Comput. Mat. Sci.</source> <volume>112</volume>, <fpage>503</fpage>&#x2013;<lpage>517</lpage>. <pub-id pub-id-type="doi">10.1016/j.commatsci.2015.07.004</pub-id>
</citation>
</ref>
<ref id="B40">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lin</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Adaptively compressed exchange operator</article-title>. <source>J. Chem. Theory Comput.</source> <volume>12</volume>, <fpage>2242</fpage>&#x2013;<lpage>2249</lpage>. <pub-id pub-id-type="doi">10.1021/acs.jctc.6b00092</pub-id>
</citation>
</ref>
<ref id="B41">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lin</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Ren</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Accuracy of localized resolution of the identity in periodic hybrid functional calculations with numerical atomic orbitals</article-title>. <source>J. Phys. Chem. Lett.</source> <volume>11</volume>, <fpage>3082</fpage>&#x2013;<lpage>3088</lpage>. <pub-id pub-id-type="doi">10.1021/acs.jpclett.0c00481</pub-id>
</citation>
</ref>
<ref id="B42">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lin</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Ren</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Efficient hybrid density functional calculations for large periodic systems using numerical atomic orbitals</article-title>. <source>J. Chem. Theory Comput.</source> <volume>17</volume>, <fpage>222</fpage>&#x2013;<lpage>239</lpage>. <pub-id pub-id-type="doi">10.1021/acs.jctc.0c00960</pub-id>
</citation>
</ref>
<ref id="B43">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lindh</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Ryu</surname>
<given-names>U.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>1991</year>). <article-title>The reduced multiplication scheme of the rys quadrature and new recurrence relations for auxiliary function based two-electron integral evaluation</article-title>. <source>J. Chem. Phys.</source> <volume>95</volume>, <fpage>5889</fpage>&#x2013;<lpage>5897</lpage>. <pub-id pub-id-type="doi">10.1063/1.461610</pub-id>
</citation>
</ref>
<ref id="B44">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ying</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Compression of the electron repulsion integral tensor in tensor hypercontraction format with cubic scaling cost</article-title>. <source>J. Comput. Phys.</source> <volume>302</volume>, <fpage>329</fpage>&#x2013;<lpage>335</lpage>. <pub-id pub-id-type="doi">10.1016/j.jcp.2015.09.014</pub-id>
</citation>
</ref>
<ref id="B45">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Marsman</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Paier</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Stroppa</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Kresse</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2008</year>). <article-title>Hybrid functionals applied to extended systems</article-title>. <source>J. Phys. Condens. Matter</source> <volume>20</volume>, <fpage>064201</fpage>. <pub-id pub-id-type="doi">10.1088/0953-8984/20/6/064201</pub-id>
</citation>
</ref>
<ref id="B46">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mori-S&#xe1;nchez</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Cohen</surname>
<given-names>A. J.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>W.</given-names>
</name>
</person-group> (<year>2008</year>). <article-title>Localization and delocalization errors in density functional theory and implications for band-gap prediction</article-title>. <source>Phys. Rev. Lett.</source> <volume>100</volume>, <fpage>146401</fpage>. <pub-id pub-id-type="doi">10.1103/PhysRevLett.100.146401</pub-id>
</citation>
</ref>
<ref id="B47">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Obara</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Saika</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>1986</year>). <article-title>Efficient recursive computation of molecular integrals over Cartesian Gaussian functions</article-title>. <source>J. Chem. Phys.</source> <volume>84</volume>, <fpage>3963</fpage>&#x2013;<lpage>3974</lpage>. <pub-id pub-id-type="doi">10.1063/1.450106</pub-id>
</citation>
</ref>
<ref id="B48">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ochsenfeld</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>White</surname>
<given-names>C. A.</given-names>
</name>
<name>
<surname>Head-Gordon</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>1998</year>). <article-title>Linear and sublinear scaling formation of Hartree-Fock-type exchange matrices</article-title>. <source>J. Chem. Phys.</source> <volume>109</volume>, <fpage>1663</fpage>&#x2013;<lpage>1669</lpage>. <pub-id pub-id-type="doi">10.1063/1.476741</pub-id>
</citation>
</ref>
<ref id="B49">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ozaki</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Kino</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2005</year>). <article-title>Efficient projector expansion for the <italic>ab initio</italic> LCAO method</article-title>. <source>Phys. Rev. B</source> <volume>72</volume>, <fpage>045121</fpage>. <pub-id pub-id-type="doi">10.1103/PhysRevB.72.045121</pub-id>
</citation>
</ref>
<ref id="B50">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Paier</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Marsman</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Hummer</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Kresse</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Gerber</surname>
<given-names>I. C.</given-names>
</name>
<name>
<surname>&#xc1;ngy&#xe1;n</surname>
<given-names>J. G.</given-names>
</name>
</person-group> (<year>2006a</year>). <article-title>Erratum: &#x201c;Screened hybrid density functionals applied to solids&#x201d; [J chem phys 124, 154709 (2006)]</article-title>. <source>J. Chem. Phys.</source> <volume>125</volume>. <pub-id pub-id-type="doi">10.1063/1.2187006</pub-id>
</citation>
</ref>
<ref id="B51">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Paier</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Marsman</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Hummer</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Kresse</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Gerber</surname>
<given-names>I. C.</given-names>
</name>
<name>
<surname>&#xc1;ngy&#xe1;n</surname>
<given-names>J. G.</given-names>
</name>
</person-group> (<year>2006b</year>). <article-title>Screened hybrid density functionals applied to solids</article-title>. <source>J. Chem. Phys.</source> <volume>124</volume>, <fpage>154709</fpage>. <pub-id pub-id-type="doi">10.1063/1.2187006</pub-id>
</citation>
</ref>
<ref id="B52">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Perdew</surname>
<given-names>J. P.</given-names>
</name>
</person-group> (<year>1985</year>). <article-title>Accurate density functional for the energy: Real-space cutoff of the gradient expansion for the exchange hole</article-title>. <source>Phys. Rev. Lett.</source> <volume>55</volume>, <fpage>1665</fpage>&#x2013;<lpage>1668</lpage>. <pub-id pub-id-type="doi">10.1103/physrevlett.55.1665</pub-id>
</citation>
</ref>
<ref id="B53">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Perdew</surname>
<given-names>J. P.</given-names>
</name>
<name>
<surname>Burke</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Ernzerhof</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>1996</year>). <article-title>Generalized gradient approximation made simple</article-title>. <source>Phys. Rev. Lett.</source> <volume>77</volume>, <fpage>3865</fpage>&#x2013;<lpage>3868</lpage>. <pub-id pub-id-type="doi">10.1103/physrevlett.77.3865</pub-id>
</citation>
</ref>
<ref id="B54">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pulay</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>1969</year>). <article-title>
<italic>Ab initio</italic> calculation of force constants and equilibrium geometries in polyatomic molecules</article-title>. <source>Mol. Phys.</source> <volume>17</volume>, <fpage>197</fpage>&#x2013;<lpage>204</lpage>. <pub-id pub-id-type="doi">10.1080/00268976900100941</pub-id>
</citation>
</ref>
<ref id="B55">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Qin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Shang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Xiang</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2020a</year>). <source>The HONPAS software webpage</source>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://honpas.ustc.edu.cn.Version.1.0">http://honpas.ustc.edu.cn.Version.1.0</ext-link>
</comment>.</citation>
</ref>
<ref id="B56">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Qin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2020b</year>). <article-title>Machine learning K-Means clustering algorithm for interpolative separable density fitting to accelerate hybrid functional calculations with numerical atomic orbitals</article-title>. <source>J. Phys. Chem. A</source> <volume>124</volume>, <fpage>10066</fpage>&#x2013;<lpage>10074</lpage>. <pub-id pub-id-type="doi">10.1021/acs.jpca.0c06019</pub-id>
</citation>
</ref>
<ref id="B57">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Qin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2020c</year>). <article-title>Interpolative separable density fitting decomposition for accelerating Hartree&#x2013;Fock exchange calculations within numerical atomic orbitals</article-title>. <source>J. Phys. Chem. A</source> <volume>124</volume>, <fpage>5664</fpage>&#x2013;<lpage>5674</lpage>. <pub-id pub-id-type="doi">10.1021/acs.jpca.0c02826</pub-id>
</citation>
</ref>
<ref id="B58">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Qin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Shang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Xiang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>HONPAS: A linear scaling open-source solution for large system simulations</article-title>. <source>Int. J. Quantum Chem.</source> <volume>115</volume>, <fpage>647</fpage>&#x2013;<lpage>655</lpage>. <pub-id pub-id-type="doi">10.1002/qua.24837</pub-id>
</citation>
</ref>
<ref id="B59">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Reine</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Helgaker</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Lindh</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>Multi-electron integrals</article-title>. <source>WIREs Comput. Mol. Sci.</source> <volume>2</volume>, <fpage>290</fpage>&#x2013;<lpage>303</lpage>. <pub-id pub-id-type="doi">10.1002/wcms.78</pub-id>
</citation>
</ref>
<ref id="B60">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ren</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Rinke</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Blum</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Wieferink</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Tkatchenko</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Sanfilippo</surname>
<given-names>A.</given-names>
</name>
<etal/>
</person-group> (<year>2012</year>). <article-title>Resolution-of-identity approach to Hartree-Fock, hybrid density functionals, RPA, MP2 and GW with numeric atom-centered orbital basis functions</article-title>. <source>New J. Phys.</source> <volume>14</volume>, <fpage>053020</fpage>. <pub-id pub-id-type="doi">10.1088/1367-2630/14/5/053020</pub-id>
</citation>
</ref>
<ref id="B61">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Schlegel</surname>
<given-names>H. B.</given-names>
</name>
<name>
<surname>Frisch</surname>
<given-names>M. J.</given-names>
</name>
</person-group> (<year>1995</year>). <article-title>Transformation between Cartesian and pure spherical harmonic Gaussians</article-title>. <source>Int. J. Quantum Chem.</source> <volume>54</volume>, <fpage>83</fpage>&#x2013;<lpage>87</lpage>. <pub-id pub-id-type="doi">10.1002/qua.560540202</pub-id>
</citation>
</ref>
<ref id="B62">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Schwegler</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Challacombe</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Head-Gordon</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>1997</year>). <article-title>Linear scaling computation of the Fock matrix. II. rigorous bounds on exchange integrals and incremental Fock build</article-title>. <source>J. Chem. Phys.</source> <volume>106</volume>, <fpage>9708</fpage>&#x2013;<lpage>9717</lpage>. <pub-id pub-id-type="doi">10.1063/1.473833</pub-id>
</citation>
</ref>
<ref id="B63">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Schwegler</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Challacombe</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>1996</year>). <article-title>Linear scaling computation of the Hartree-Fock exchange matrix</article-title>. <source>J. Chem. Phys.</source> <volume>105</volume>, <fpage>2726</fpage>&#x2013;<lpage>2734</lpage>. <pub-id pub-id-type="doi">10.1063/1.472135</pub-id>
</citation>
</ref>
<ref id="B64">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Setvin</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Franchini</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Hao</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Schmid</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Janotti</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Kaltak</surname>
<given-names>M.</given-names>
</name>
<etal/>
</person-group> (<year>2014</year>). <article-title>Direct view at excess electrons in TiO<sub>2</sub> rutile and anatase</article-title>. <source>Phys. Rev. Lett.</source> <volume>113</volume>, <fpage>086402</fpage>. <pub-id pub-id-type="doi">10.1103/PhysRevLett.113.086402</pub-id>
</citation>
</ref>
<ref id="B65">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Implementation of exact exchange with numerical atomic orbitals</article-title>. <source>J. Phys. Chem. A</source> <volume>114</volume>, <fpage>1039</fpage>&#x2013;<lpage>1043</lpage>. <pub-id pub-id-type="doi">10.1021/jp908836z</pub-id>
</citation>
</ref>
<ref id="B66">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Implementation of screened hybrid density functional for periodic systems with numerical atomic orbitals: Basis function fitting and integral screening</article-title>. <source>J. Chem. Phys.</source> <volume>135</volume>, <fpage>034110</fpage>. <pub-id pub-id-type="doi">10.1063/1.3610379</pub-id>
</citation>
</ref>
<ref id="B67">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Qin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>The dynamic parallel distribution algorithm for hybrid density-functional calculations in HONPAS package</article-title>. <source>Comput. Phys. Commun.</source> <volume>254</volume>, <fpage>107204</fpage>. <pub-id pub-id-type="doi">10.1016/j.cpc.2020.107204</pub-id>
</citation>
</ref>
<ref id="B68">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Soler</surname>
<given-names>J. M.</given-names>
</name>
<name>
<surname>Artacho</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Gale</surname>
<given-names>J. D.</given-names>
</name>
<name>
<surname>Garc&#xed;a</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Junquera</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ordej&#xf3;n</surname>
<given-names>P.</given-names>
</name>
<etal/>
</person-group> (<year>2002</year>). <article-title>The SIESTA method for <italic>ab initio</italic> order-N materials simulation</article-title>. <source>J. Phys. Condens. Matter</source> <volume>14</volume>, <fpage>2745</fpage>&#x2013;<lpage>2779</lpage>. <pub-id pub-id-type="doi">10.1088/0953-8984/14/11/302</pub-id>
</citation>
</ref>
<ref id="B69">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Spencer</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Alavi</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2008</year>). <article-title>Efficient calculation of the exact exchange energy in periodic systems using a truncated Coulomb potential</article-title>. <source>Phys. Rev. B</source> <volume>77</volume>, <fpage>193110</fpage>. <pub-id pub-id-type="doi">10.1103/PhysRevB.77.193110</pub-id>
</citation>
</ref>
<ref id="B70">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Stephens</surname>
<given-names>P. J.</given-names>
</name>
<name>
<surname>Devlin</surname>
<given-names>F. J.</given-names>
</name>
<name>
<surname>Chabalowski</surname>
<given-names>C. F.</given-names>
</name>
<name>
<surname>Frisch</surname>
<given-names>M. J.</given-names>
</name>
</person-group> (<year>1994</year>). <article-title>
<italic>Ab initio</italic> calculation of vibrational absorption and circular dichroism spectra using density functional force fields</article-title>. <source>J. Phys. Chem.</source> <volume>98</volume>, <fpage>11623</fpage>&#x2013;<lpage>11627</lpage>. <pub-id pub-id-type="doi">10.1021/j100096a001</pub-id>
</citation>
</ref>
<ref id="B71">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sun</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Banerjee</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Bao</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Barbry</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Blunt</surname>
<given-names>N. S.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>Recent developments in the PySCF program package</article-title>. <source>J. Chem. Phys.</source> <volume>153</volume>, <fpage>024109</fpage>. <pub-id pub-id-type="doi">10.1063/5.0006074</pub-id>
</citation>
</ref>
<ref id="B72">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Torralba</surname>
<given-names>A. S.</given-names>
</name>
<name>
<surname>Todorovi&#x107;</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Br&#xe1;zdov&#xe1;</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Choudhury</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Miyazaki</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Gillan</surname>
<given-names>M. J.</given-names>
</name>
<etal/>
</person-group> (<year>2008</year>). <article-title>Pseudo-atomic orbitals as basis sets for the O(N) DFT code CONQUEST</article-title>. <source>J. Phys. Condens. Matter</source> <volume>20</volume>, <fpage>294206</fpage>. <pub-id pub-id-type="doi">10.1088/0953-8984/20/29/294206</pub-id>
</citation>
</ref>
<ref id="B73">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Troullier</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Martins</surname>
<given-names>J. L.</given-names>
</name>
</person-group> (<year>1991</year>). <article-title>Efficient pseudopotentials for plane-wave calculations</article-title>. <source>Phys. Rev. B</source> <volume>43</volume>, <fpage>1993</fpage>&#x2013;<lpage>2006</lpage>. <pub-id pub-id-type="doi">10.1103/PhysRevB.43.1993</pub-id>
</citation>
</ref>
<ref id="B74">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ufimtsev</surname>
<given-names>I. S.</given-names>
</name>
<name>
<surname>Martinez</surname>
<given-names>T. J.</given-names>
</name>
</person-group> (<year>2008</year>). <article-title>Quantum chemistry on graphical processing units. 1. strategies for two-electron integral evaluation</article-title>. <source>J. Chem. Theory Comput.</source> <volume>4</volume>, <fpage>222</fpage>&#x2013;<lpage>231</lpage>. <pub-id pub-id-type="doi">10.1021/ct700268q</pub-id>
</citation>
</ref>
<ref id="B75">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ufimtsev</surname>
<given-names>I. S.</given-names>
</name>
<name>
<surname>Martinez</surname>
<given-names>T. J.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>Quantum chemistry on graphical processing units. 2. direct self-consistent-field implementation</article-title>. <source>J. Chem. Theory Comput.</source> <volume>5</volume>, <fpage>1004</fpage>&#x2013;<lpage>1015</lpage>. <pub-id pub-id-type="doi">10.1021/ct800526s</pub-id>
</citation>
</ref>
<ref id="B76">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Valeev</surname>
<given-names>E. F.</given-names>
</name>
<name>
<surname>Fermann</surname>
<given-names>J. T.</given-names>
</name>
</person-group> (<year>2014</year>). <source>Libint: A library for the evaluation of molecular integrals of many-body operators over Gaussian functions</source>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://libint.valeyev.net.Version.1.1.5">http://libint.valeyev.net.Version.1.1.5</ext-link>
</comment>.</citation>
</ref>
<ref id="B77">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Selloni</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Car</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>Order-N implementation of exact exchange in extended insulating systems</article-title>. <source>Phys. Rev. B</source> <volume>79</volume>, <fpage>085102</fpage>. <pub-id pub-id-type="doi">10.1103/PhysRevB.79.085102</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>