qmcpack/manual/input_overview.tex

93 lines
3.0 KiB
TeX

\chapter{Input file overview}
\label{chap:input_overview}
This chapter introduces XML as it is used in QMCPACK's input file. The focus is on the XML file format itself and the general structure of the input file rather than an exhaustive discussion of all keywords and structure elements.
QMCPACK uses XML to represent structured data in its input file. Instead of text blocks like
\begin{shade}
begin project
id = vmc
series = 0
end project
begin vmc
move = pbyp
blocks = 200
steps = 10
timestep = 0.4
end vmc
\end{shade}
QMCPACK input looks like
\begin{shade}
<project id="vmc" series="0">
</project>
<qmc method="vmc" move="pbyp">
<parameter name="blocks" > 200 </parameter>
<parameter name="steps" > 10 </parameter>
<parameter name="timestep"> 0.4 </parameter>
</qmc>
\end{shade}
XML elements start with \texttt{<element\_name>}, end with \texttt{</element\_name>}, and can be nested within each other to denote substructure (the trial wavefunction is composed of a Slater determinant and a Jastrow factor, which are each further composed of \ldots). \texttt{id} and \texttt{series} are attributes of the \texttt{<project/>} element. XML attributes are generally used to represent simple values, like names, integers, or real values. Similar functionality is also commonly provided by \texttt{<parameter/>} elements like those shown above.
The overall structure of the input file reflects different aspects of the QMC simulation: the simulation cell, particles, trial wavefunction, Hamiltonian, and QMC run parameters. A condensed version of the actual input file is shown below:
\begin{shade}
<?xml version="1.0"?>
<simulation>
<project id="vmc" series="0">
...
</project>
<qmcsystem>
<simulationcell>
...
</simulationcell>
<particleset name="e">
...
</particleset>
<particleset name="ion0">
...
</particleset>
<wavefunction name="psi0" ... >
...
<determinantset>
<slaterdeterminant>
..
</slaterdeterminant>
</determinantset>
<jastrow type="One-Body" ... >
...
</jastrow>
<jastrow type="Two-Body" ... >
...
</jastrow>
</wavefunction>
<hamiltonian name="h0" ... >
<pairpot type="coulomb" name="ElecElec" ... />
<pairpot type="coulomb" name="IonIon" ... />
<pairpot type="pseudo" name="PseudoPot" ... >
...
</pairpot>
</hamiltonian>
</qmcsystem>
<qmc method="vmc" move="pbyp">
<parameter name="warmupSteps"> 20 </parameter>
<parameter name="blocks" > 200 </parameter>
<parameter name="steps" > 10 </parameter>
<parameter name="timestep" > 0.4 </parameter>
</qmc>
</simulation>
\end{shade}
The omitted portions (\texttt{...}) are more fine-grained inputs such as the axes of the simulation cell, the number of up and down electrons, positions of atomic species, external orbital files, starting Jastrow parameters, and external pseudopotential files.