diff --git a/Data/cucl.dat b/Data/cucl.dat new file mode 100644 index 0000000..ceda691 --- /dev/null +++ b/Data/cucl.dat @@ -0,0 +1,15 @@ +# R CCSD(T) Stochastic CCSD(T) +#--------------------------------------------------------- + 1.55 -2099.590506349950 -2099.58890791 1.3630E-03 + 1.65 -2099.671184187604 -2099.67175286 1.5710E-03 + 1.75 -2099.720045862965 -2099.71877319 1.3199E-03 + 1.85 -2099.747811193906 -2099.74897746 1.4668E-03 + 1.95 -2099.761752030920 -2099.76232971 1.6105E-03 + 2.05 -2099.766727898670 -2099.76565267 1.5202E-03 + 2.15 -2099.765956694308 -2099.76485609 1.7470E-03 + 2.25 -2099.761562105614 -2099.76237391 1.7474E-03 + 2.35 -2099.754944906474 -2099.75681975 1.9951E-03 + 2.45 -2099.747028328725 -2099.74813718 2.4288E-03 + 2.55 -2099.738443175793 -2099.74031232 2.4057E-03 + 2.65 -2099.729597826175 -2099.72866832 1.6894E-03 + diff --git a/Data/cucl.plt b/Data/cucl.plt new file mode 100644 index 0000000..26055d3 --- /dev/null +++ b/Data/cucl.plt @@ -0,0 +1,30 @@ +#!/usr/bin/env gnuplot + +reset +set grid +set xlabel "Cu-Cl distance (bohr)" +set ylabel "CCSD(T) energy (au)" +set format y "%.2f" + +a0 = 1.8897161646321 +E(r) = De * (1-exp(-a*(r-re)))**2 + E0 + +a = 0.84615 # +/- 0.03216 (3.8%) +re = 3.92539 # +/- 0.01058 (0.2696%) +De = 0.101589 # +/- 0.00932 (9.174%) +E0 = -2099.77 # +/- 0.0008014 (3.817e-05%) + +set xrange [2.7:5.2] +fit E(x) 'cucl.dat' using ($1*a0):3:4 via a, re, De, E0 + +set xrange [3:5.2] +set term pdfcairo enhanced font "Times,14" linewidth 2 rounded size 5.0in, 3.0in +set output 'cucl.pdf' +set pointsize 0.5 +plot \ +'cucl.dat' using ($1*a0):2 pointtype 7 lt 4 title "Full (T)", \ +E(x) title "" lt 3, \ +'cucl.dat' using ($1*a0):3:4 w err pt 0 lt 1 title "1% (T)" + + + diff --git a/Manuscript/cucl.pdf b/Manuscript/cucl.pdf new file mode 100644 index 0000000..66edd9e Binary files /dev/null and b/Manuscript/cucl.pdf differ diff --git a/Manuscript/stochastic_triples.bib b/Manuscript/stochastic_triples.bib index 86d7d53..d2819b4 100644 --- a/Manuscript/stochastic_triples.bib +++ b/Manuscript/stochastic_triples.bib @@ -132,7 +132,7 @@ i@article{watson_2016, month = sep, issn = {1870-249X}, publisher = {Sociedad Qu{\'{\i}}mica de M{\'{e}}xico A.C.}, - url = {https://www.scielo.org.mx/scielo.php?script=sci_arttext&pid=S1870-249X2012000300014} + url = {https://www.scielo.org.mx/scielo.php?script=sci_arttext\&pid=S1870-249X2012000300014} } @article{du_2020, @@ -170,7 +170,7 @@ volume = {118}, number = {24}, pages = {e1797915}, year = {2020}, -publisher = {Taylor & Francis}, +publisher = {Taylor and Francis}, doi = {10.1080/00268976.2020.1797915}, URL = {https://doi.org/10.1080/00268976.2020.1797915}, eprint = {https://doi.org/10.1080/00268976.2020.1797915} diff --git a/Manuscript/stochastic_triples.tex b/Manuscript/stochastic_triples.tex index b2c69bf..94981dc 100644 --- a/Manuscript/stochastic_triples.tex +++ b/Manuscript/stochastic_triples.tex @@ -1,5 +1,6 @@ \documentclass[aip,jcp,reprint,noshowkeys,superscriptaddress]{revtex4-1} -\usepackage{graphicx,dcolumn,bm,xcolor,microtype,multirow,amscd,amsmath,amssymb,amsfonts,physics,longtable,wrapfig,bbold,siunitx,xspace} +%\usepackage{graphicx,dcolumn,bm,xcolor,microtype,multirow,amscd,amsmath,amssymb,amsfonts,physics,longtable,wrapfig,bbold,siunitx,xspace} +\usepackage{graphicx,xcolor,physics,siunitx,xspace} \usepackage[version=4]{mhchem} \usepackage[utf8]{inputenc} @@ -13,6 +14,9 @@ urlcolor={red!80!black} } +\DeclareSIUnit{\bohr}{\text{\ensuremath{a_{0}}}} +\DeclareSIUnit{\hartree}{\text{\ensuremath{E_{\textup{h}}}}} + \newcommand{\mc}{\multicolumn} \newcommand{\fnm}{\footnotemark} \newcommand{\fnt}{\footnotetext} @@ -69,7 +73,7 @@ \begin{document} -\title{Stochastically accelerated perturbative triples in coupled cluster calculations} +\title{Stochastically accelerated perturbative triples correction in coupled cluster calculations} % Alphabetic order \author{Yann \surname{Damour}} @@ -104,10 +108,10 @@ This work opens up new avenues for efficient and accurate computations, enabling investigations of complex molecular systems that were previously computationally prohibitive. \bigskip -\begin{center} +%\begin{center} % \boxed{\includegraphics[width=0.5\linewidth]{TOC}} -\end{center} -\bigskip +%\end{center} +%\bigskip \end{abstract} \maketitle @@ -203,41 +207,44 @@ accelerators.\cite{ma_2011,haidar_2015,dinapoli_2014,springer_2018} % - Benzene TZ % - Streptocyanine QZ: Small molecule in a large basis set % - Caffeine def2-svp: Large molecule in a small basis set -% - Vibrational frequency of F2/cc-pvqz +% - Vibrational frequency of CuCl/cc-pvqz %b. Discussion of the obtained results, comparing against other methods % - Measure flops and compare to the peak %c. Analysis of the algorithm's accuracy, efficiency, and scalability %d. Discussion of any observed limitations or challenges -\subsection{Vibrational frequency of \ce{F2}} +\subsection{Vibrational frequency of copper chloride} -In this example, we compute the vibrational frequency of \ce{F2} by -computing the potential energy curve, and fitting it with a Morse -potential +Our methodology proves especially advantageous for scenarios requiring the aggregation of numerous CCSD(T) energies, such as neural network training or the exploration of potential energy surfaces. +In this section, we discuss the application of our novel algorithm within the context of computing vibrational frequencies, specifically through the example of copper chloride (\ce{CuCl}). +A demonstrative application presented here involves the determination of the equilibrium bond length and the computation of the vibrational frequency of \ce{CuCl} using the CCSD(T)/cc-pVQZ level of theory. +The procedure involves determining the CCSD(T) potential energy curve for \ce{CuCl}, followed by its analytical representation through a Morse potential fitting: \begin{equation} - E(r) = D_e \left( 1 - e^{-a (r - r_e)} \right)^2 + E(r_e) +E(r) = D_e \left( 1 - e^{-a (r - r_e)} \right)^2 + E_0 \end{equation} -where $E(r)$ is the energy at distance $r$, $D_e$ is the well depth, -$r_e$ is the equilibrium bond distance, and $a$ is a parameter -controlling the width of the potential well. -The vibrational frequency $\nu$ is calculated as +where $E(r)$ represents the energy at a bond length $r$, $D_e$ the depth of the potential well, $r_e$ the equilibrium bond length, $a$ the parameter defining the potential well's width, and $E_0$ the energy at the equilibrium bond length. The vibrational frequency, $\nu$, is derived as follows: \begin{equation} - \nu = \frac{1}{2 \pi c} \sqrt{\frac{2D_e a^2}{\mu} +\nu = \frac{1}{2 \pi c} \sqrt{\frac{2D_e a^2}{\mu}} \end{equation} -where $\mu$ is the mass of the Fluorine atom, and $c$ is the speed of -light in cm/s. +with $\mu$ denoting the reduced mass of the \ce{CuCl} molecule, and $c$ the speed of light. -% CCSD -%a = 2.2936 +/- 0.006318 (0.2755%) -%De = 0.125888 +/- 0.0005213 (0.4141%) -%re = 1.3893 +/- 0.0003428 (0.02468%) -%E0 = -199.338 +/- 6.422e-05 (3.222e-05%) +\begin{figure} +\includegraphics[width=\columnwidth]{cucl.pdf} +\caption{\label{fig:cucl} CCSD(T) energies of CuCl obtained with the exact CCSD(T) algorithm (dots), the stochastic algorithm using only 1\% of the contributions (error bars), and the Morse potential fitting the points obtained with the stochastic algorithm.} +\end{figure} + +The initial step involved the precise calculation of the CCSD(T) energy across various points along the potential curve. +We froze the six lowest molecular orbitals, specifically the $1s$ orbital of \ce{Cl} and the $1s$, $2s$, and $2p$ orbitals of \ce{Cu}, and correlated 34 electrons within 157 molecular orbitals. +The fitted Morse potential revealed a vibrational frequency of $\nu = \SI{414.7}{\per\centi\meter}$ and an equilibrium bond length of $r_e = \SI{3.92}{\bohr}$, aligning remarkably well with experimental values $\nu = \SI{414}{\per\centi\meter}$ and $r_e = \SI{3.88}{\bohr}$. + +Subsequently, we applied our semi-stochastic algorithm to estimate the perturbative triples correction, utilizing merely 1\% of the total contributions. +This approach yielded a hundredfold acceleration in computational efficiency, achieving statistical uncertainty within the range of \SI{1.3} to \SI{2.5}{\milli\hartree}. +The vibrational frequency and equilibrium distance estimated using this data, $\nu = \SI{415.0}{\per\centi\meter}$ and $r_e = \SI{3.92}{\bohr}$, demonstrated comparable precision to the full computational results. +Figure \ref{fig:cucl} illustrates the potential energy surface of \ce{CuCl}, displaying both the exact CCSD(T) energies and those estimated via the semi-stochastic method. + + +%%% -% CCSD(T) exact -%a = 2.65592 +/- 0.0403 (1.518%) -%De = 0.0718253 +/- 0.001879 (2.617%) -%re = 1.4105 +/- 0.00215 (0.1524%) -%E0 = -199.358 +/- 0.0003179 (0.0001595%) \section{Conclusion} \label{sec:conclusion} @@ -248,20 +255,20 @@ light in cm/s. %=================================================================% -%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%% \acknowledgements{ This work was supported by the European Centre of Excellence in Exascale Computing TREX --- Targeting Real Chemical Accuracy at the Exascale. This project has received funding from the European Union's Horizon 2020 — Research and Innovation program --- under grant agreement No.~952165. This work was performed using HPC resourced from CALMIP (Toulouse) under allocations p18005 and p22001.} -%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section*{Data availability statement} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The data that supports the findings of this study are available within the article and its supplementary material. -%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%% \bibliography{stochastic_triples} -%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%% \end{document} diff --git a/triples.org b/triples.org index 98f4dac..81a539e 100644 --- a/triples.org +++ b/triples.org @@ -2,7 +2,7 @@ * Stochastic formulation -The perturbative correction reads: + The perturbative correction reads:2te \[ E_{(T)} = \sum_{ijkabc} E_{ijk}^{abc} = \sum_{ijkabc} \frac{(4 W_{ijk}^{abc} + @@ -7697,7 +7697,7 @@ re = 3.9 De = 0.1 E0 = -2099.767 set xrange [2.7:5.2] -fit E(x) data using ($1*a0):2 via a, re, De, E0 +fit E(x) data using ($1*a0):2:3 via a, re, De, E0 plot E(x), data using ($1*a0):2:3 w err #+end_src @@ -7717,14 +7717,8 @@ E0 = -2099.77 +/- 0.0008014 (3.817e-05%) #+RESULTS: : 413.5302408975902 - #+CALL:freq(0.895573,0.0854261) - - #+RESULTS: - : 401.3588602143032 - ** CCSD(T) exact - #+name:cucl_ccsdt_ex | 1.50 | -2099.533616067071 | | 1.55 | -2099.590506349950 | | 1.60 | -2099.635662051331 | @@ -7750,6 +7744,20 @@ E0 = -2099.77 +/- 0.0008014 (3.817e-05%) | 2.60 | -2099.734033236772 | | 2.65 | -2099.729597826175 | + #+name:cucl_ccsdt_ex + | 1.55 | -2099.590506349950 | + | 1.65 | -2099.671184187604 | + | 1.75 | -2099.720045862965 | + | 1.85 | -2099.747811193906 | + | 1.95 | -2099.761752030920 | + | 2.05 | -2099.766727898670 | + | 2.15 | -2099.765956694308 | + | 2.25 | -2099.761562105614 | + | 2.35 | -2099.754944906474 | + | 2.45 | -2099.747028328725 | + | 2.55 | -2099.738443175793 | + | 2.65 | -2099.729597826175 | + #+begin_src gnuplot :var data=cucl_ccsdt_ex :results file :file cucl_ccsdt_ex.png reset a0 = 1.8897161646321 @@ -7767,16 +7775,16 @@ plot E(x), data using ($1*a0):2 [[file:cucl_ccsdt_ex.png]] #+begin_example -a = 0.853035 +/- 0.006204 (0.7273%) -re = 3.91994 +/- 0.002032 (0.05183%) -De = 0.100264 +/- 0.001906 (1.901%) -E0 = -2099.77 +/- 0.0001757 (8.367e-06%) +a = 0.840928 +/- 0.009924 (1.18%) +re = 3.92266 +/- 0.003278 (0.08358%) +De = 0.103446 +/- 0.002926 (2.829%) +E0 = -2099.77 +/- 0.0002473 (1.178e-05%) #+end_example - #+CALL:freq(0.853035,0.100264) + #+CALL:freq(0.840928,0.103446) #+RESULTS: - : 414.16742408686565 + : 414.7173810736408 #+begin_src gnuplot :var data=cucl_ccsdt :var data2=cucl_ccsdt_ex :results file :file cucl_ccsdt2.png