This commit is contained in:
Anthony Scemama 2024-03-27 17:20:04 +01:00
parent 004a77fa0f
commit c2cb7d7a27
6 changed files with 110 additions and 50 deletions

15
Data/cucl.dat Normal file
View File

@ -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

30
Data/cucl.plt Normal file
View File

@ -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)"

BIN
Manuscript/cucl.pdf Normal file

Binary file not shown.

View File

@ -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}

View File

@ -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}

View File

@ -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