qmcpack/manual/spo_gaussian.tex

224 lines
14 KiB
TeX

\subsection{Gaussian basis sets}
\label{sec:gaussianbasis}
In this section we describe the use of localized basis sets to expand the \texttt{sposet}. The general form of a single particle orbital in this case is given by:
\begin{equation}
\phi_i(\vec{r}) = \sum_k C_{i,k} \ \eta_k(\vec{r}),
\end{equation}
where $\{\eta_k(\vec{r})\}$ is a set of M atom-centered basis functions and $C_{i,k}$ is a coefficient matrix. This \texttt{sposet} should be used in calculations of finite systems employing an atom-centered
basis set and is typically generated by the \textit{convert4qmc} converter. (While it is possible to use this \texttt{sposet} on calculations of periodic systems, this feature is not currently implemented in QMCPACK.) Examples include calculations of molecules using gaussian basis sets or slater-type basis functions. Even though this section is called "Gaussian basis set" (by far the most common atom-centered basis set), QMCPACK works with any atom-centered basis set built based on either spherical harmonic angular functions or cartesian angular expansions. The radial functions in the basis set can be expanded in either gaussian functions, slater-type functions or numerical radial functions.
In this section we describe the input sections for the atom-centered basis set and the \texttt{sposet} for a single slater determinant trial wavefunction. The input sections for multideterminant trial wavefunctions are described in section \ref{sec:multideterminants}. The basic structure for the input block of a single slater determinant is given in Listing \ref{listing:lcaosposet}.
A list of options for \texttt{determinantset} associated with this \texttt{sposet} is given in Table \ref{table:determinantset}.
\begin{minipage}{\linewidth}
\begin{lstlisting}[caption=Basic input block for a single determinant trial wavefunction using a sposet expanded on an atom-centered basis set. \label{listing:lcaosposet}]
<wavefunction id="psi0" target="e">
<determinantset>
<basisset>
...
</basisset>
<slaterdeterminant>
...
</slaterdeterminant>
</determinantset>
</wavefunction>
\end{lstlisting}
\end{minipage}
\begin{table}[h]
\begin{center}
\begin{tabularx}{\textwidth}{l l l l l l }
\hline
\multicolumn{6}{l}{\texttt{determinantset} element} \\
\hline
\multicolumn{2}{l}{parent elements:} & \multicolumn{4}{l}{\texttt{wavefunction}}\\
\multicolumn{2}{l}{child elements:} & \multicolumn{4}{l}{\texttt{basisset,slaterdeterminant,sposet,multideterminant}}\\
\multicolumn{2}{l}{attribute :} & \multicolumn{4}{l}{}\\
& \bfseries name & \bfseries datatype & \bfseries values & \bfseries default & \bfseries description \\
& \texttt{name}/\texttt{id} & text & \textit{any} & "" & Name of determinant set. \\
& \texttt{type} & text & see below & "" & Type of \texttt{sposet}. \\
& \texttt{keyword} & text & NMO,GTO,STO & NMO & Type of orbital set generated. \\
& \texttt{transform} & text & yes/no & yes & Transform to numerical radial functions? \\
& \texttt{source} & text & \textit{any} & ion0 & Particle set with the position of atom centers. \\
& \texttt{cuspCorrection} & text & yes/no & no & Apply cusp correction scheme to \texttt{sposet}? \\
% & \texttt{cuspInfo} & text & \textit{any} & "" & File with saved cusp data. \\
\hline
\end{tabularx}
\end{center}
\caption{Options for the \texttt{determinantset} xml-block associated with atom-centered single particle orbital sets.}
\label{table:determinantset}
\end{table}
The definition of the set of atom-centered basis functions is given by the \texttt{basisset} block, while the sposet is defined within \texttt{slaterdeterminant}. The basisset input block is composed from a collection of \texttt{atomicBasisSet} input blocks, one for each atomic species in the simulation where basis functions are centered. The general structure for \texttt{basisset} and \texttt{atomicBasisSet} are given in Listing \ref{listing:basisset}, while the corresponding lists of options are given in Tables \ref{table:basisset} and \ref{table:atomicBasisSet}.
\begin{minipage}{\linewidth}
\begin{lstlisting}[caption=Basic input block for \texttt{basisset}.\label{listing:basisset}]
<basisset name="LCAOBSet">
<atomicBasisSet name="Gaussian-G2" angular="cartesian" elementType="C" normalized="no">
<grid type="log" ri="1.e-6" rf="1.e2" npts="1001"/>
<basisGroup rid="C00" n="0" l="0" type="Gaussian">
<radfunc exponent="5.134400000000e-02" contraction="1.399098787100e-02"/>
...
</basisGroup>
...
</atomicBasisSet>
<atomicBasisSet name="Gaussian-G2" angular="cartesian" type="Gaussian" elementType="C" normalized="no">
...
</atomicBasisSet>
...
</basisset>
\end{lstlisting}
\end{minipage}
\begin{table}[h]
\begin{center}
\begin{tabularx}{\textwidth}{l l l l l l }
\hline
\multicolumn{6}{l}{\texttt{basisset} element} \\
\hline
\multicolumn{2}{l}{parent elements:} & \multicolumn{4}{l}{\texttt{determinantset}}\\
\multicolumn{2}{l}{child elements:} & \multicolumn{4}{l}{\texttt{atomicBasisSet}}\\
\multicolumn{2}{l}{attribute :} & \multicolumn{4}{l}{}\\
& \bfseries name & \bfseries datatype & \bfseries values & \bfseries default & \bfseries description \\
& \texttt{name}/\texttt{id} & text & \textit{any} & "" & Name of atom-centered basis set. \\
\hline
\end{tabularx}
\end{center}
\caption{Options for the \texttt{basisset} xml-block associated with atom-centered single particle orbital sets.}
\label{table:basisset}
\end{table}
\begin{table}[h]
\begin{center}
\begin{tabularx}{\textwidth}{l l l l l l }
\hline
\multicolumn{6}{l}{\texttt{atomicBasisSet} element} \\
\hline
\multicolumn{2}{l}{parent elements:} & \multicolumn{4}{l}{\texttt{basisset}}\\
\multicolumn{2}{l}{child elements:} & \multicolumn{4}{l}{\texttt{grid,basisGroup}}\\
\multicolumn{2}{l}{attribute :} & \multicolumn{4}{l}{}\\
& \bfseries name & \bfseries datatype & \bfseries values & \bfseries default & \bfseries description \\
& \texttt{name}/\texttt{id} & text & \textit{any} & "" & Name of atomic basis set. \\
& \texttt{angular} & text & see below & default & Type of angular functions. \\
% & \texttt{type} & text & see below & "" & Type of input radial function. \\
& \texttt{expandYlm} & text & see below & yes & Expand Ylm shells? \\
& \texttt{expM} & text & see below & yes & Add sign for $(-1)^{m}$? \\
& \texttt{elementType/species} & text & \textit{any} & e & Atomic species where functions are centered. \\
& \texttt{normalized} & text & yes/no & yes & Are single particle functions normalized? \\
\hline
\end{tabularx}
\end{center}
\caption{Options for the \texttt{atomicBasisSet} xml-block.}
\label{table:atomicBasisSet}
\end{table}
\begin{table}[h]
\begin{center}
\begin{tabularx}{\textwidth}{l l l l l l }
\hline
\multicolumn{6}{l}{\texttt{basisGroup} element} \\
\hline
\multicolumn{2}{l}{parent elements:} & \multicolumn{4}{l}{\texttt{atomicBasisSet}}\\
\multicolumn{2}{l}{child elements:} & \multicolumn{4}{l}{\texttt{radfunc}}\\
\multicolumn{2}{l}{attribute :} & \multicolumn{4}{l}{}\\
& \bfseries name & \bfseries datatype & \bfseries values & \bfseries default & \bfseries description \\
& \texttt{rid}/\texttt{id} & text & \textit{any} & "" & Name of the basisGroup. \\
& \texttt{type} & text & \textit{any} & "" & Type of basisGroup. \\
& \texttt{n/l/m/s} & integer & \textit{any} & 0 & Quantum numbers of basisGroup. \\
\hline
\end{tabularx}
\end{center}
\caption{Options for the \texttt{basisGroup} xml-block.}
\label{table:basisGroup}
\end{table}
\begin{minipage}{\linewidth}
\begin{lstlisting}[caption=Basic input block for \texttt{slaterdeterminant} with an atom-centered \texttt{sposet}.\label{listing:slaterdeterminant}]
<slaterdeterminant>
</slaterdeterminant>
\end{lstlisting}
\end{minipage}
\begin{table}[h]
\begin{center}
\begin{tabularx}{\textwidth}{l l l l l l }
\hline
\multicolumn{6}{l}{\texttt{} element} \\
\hline
\multicolumn{2}{l}{parent elements:} & \multicolumn{4}{l}{\texttt{}}\\
\multicolumn{2}{l}{child elements:} & \multicolumn{4}{l}{\texttt{}}\\
\multicolumn{2}{l}{attribute :} & \multicolumn{4}{l}{}\\
& \bfseries name & \bfseries datatype & \bfseries values & \bfseries default & \bfseries description \\
& \texttt{name}/\texttt{id} & text & \textit{any} & "" & Name of determinant set \\
& \texttt{} & text & \textit{any} & "" & \\
\hline
\end{tabularx}
\end{center}
\end{table}
\subsubsection{Detailed description of attributes:}
In the following, we give a more detailed description of all the options presented in the various xml-blocks described in this section. Only non-trivial attributes are described below. Those with simple yes/no options and whose description above is enough to explain the intended behavior are not included.
\hspace{1mm} \\
\texttt{determinantset} attributes:
\begin{itemize}
\item \texttt{type} \\
Type of sposet. For atom-centered based sposets, use type="MolecularOrbital" or type="MO". Other options describe elsewhere in this manual are "spline", "composite", "pw", "heg", "linearopt", etc.
\item \texttt{keyword}/\texttt{key} \\
Type of basis set generated, which doesn't necessarily match the type of the basis set on the input block. The three possible options are: NMO (numerical molecular orbitals), GTO (gaussian-type orbitals), STO (slater-type orbitals). The default option is NMO. By default, QMCPACK will generate numerical orbitals from both GTO and STO types and use cubic or quintic spline interpolation to evaluate the radial functions. This is typically more efficient than evaluating the radial functions in the native basis (gaussians or exponents) and allows for arbitrarily large contractions without any additional cost. To force the use of the native expansion (not recommended), use GTO or STO for each type of input basis set.
\item \texttt{transform}\\
Request (or avoid) a transformation of the radial functions to NMO type. The default and recommended behavior is to transform to numerical radial functions. If \texttt{transform} is set to \textit{"yes"}, the option \texttt{keyword} is ignored.
\item \texttt{cuspCorrection}\\
Enable (disable) the use of the cusp correction algorithm (CASINO REFERENCE) for a \texttt{basisset} built with GTO functions. The algorithm is implemented as described in (CASINO REFERENCE) and only works with transform="yes" and an input GTO basis set. No further input is needed.
\end{itemize}
\texttt{atomicBasisSet} attributes:
\begin{itemize}
\item \texttt{name/id}\\
Name of the basis set. Names should be unique.
\item \texttt{angular}\\
Type of angular functions used in the expansion. In general, two angular basis functions are allowed: "spherical" (for spherical Ylm functions) and "cartesian" (for functions of the type $x^{n}y^{m}z^{l}$).
%\item \texttt{type}\\ Type of input radial functions. Options are: "Numerical" (for radial functions on a numerical radial grid), "Gaussian" (for an expansion in gaussian functions) and ""
\item \texttt{expandYlm}\\
Determines whether each basis group is expanded across the corresponding shell of m values (for spherical type) or consistent powers (for cartesian functions). Options:
\begin{itemize}
\item "No": Do not expand angular functions across corresponding angular shell.
\item "Gaussian": Expand according to Gaussian03 format. This function is only compatible with angular="spherical". For a given input (l,m), the resulting order of the angular functions becomes: (1,-1,0) for l=1 and (0,1,-1,2,-2,...,l,-l) for general l.
\item "Natural": Expand angular functions according to (-l,-l+1,...,l-1,l).
\item "Gamess": Expand according to Gamess' format for cartesian functions. Notice that this option is only compatible with angular="cartesian". If angular="cartesian" is used, this option is not necessary.
\end{itemize}
\item \texttt{expM}\\
Determines whether the sign of the spherical Ylm function associated with m ($-1^{m}$) is included in the coefficient matrix or not.
\item \texttt{elementType/species}\\
Name of the species where basis functions are centered. Only one atomicBasisSet block is allowed per species. Additional blocks are ignored. The corresponding species must exist in the \texttt{particleset} given as the \texttt{source} option to \texttt{determinantset}. Basis functions for all the atoms of the corresponding species are included in the basis set, based on the order of atoms in the \texttt{particleset}.
\end{itemize}
\texttt{basisGroup} attributes:
\begin{itemize}
\item \texttt{type}\\
Type of input basis radial function. Notice that this refers to the type of radial function in the input xml-block, which might not match the radial function generated internally and used in the calculation (if \texttt{transform} is set to "yes"). Also notice that different \texttt{basisGroup} blocks within a given \texttt{atomicBasisSet} can have different \texttt{type}.
\item \texttt{n/l/m/s}\\
Quantum numbers of the basis function. Notice that if \texttt{expandYlm} is set to \textit{"yes"} in \texttt{atomicBasisSet}, a full shell of basis functions with the appropriate values of \textit{"m"} will be defined for the corresponding value of \textit{"l"}. Otherwise a single basis function will be given for the specific combination of \textit{"(l,m)"}.
\end{itemize}
\texttt{radfunc} attributes for \texttt{type}=\textit{"Gaussian"}:
\begin{itemize}
\item \texttt{}\\
\end{itemize}
\texttt{slaterdeterminant} attributes:
\begin{itemize}
\item \texttt{}\\
\end{itemize}