\section{Advanced topics}\label{start2.sec}
 
\subsection{Managing external packages}\label{extlib.sec}

\begin{table}[h]
\begin{center}
\begin{tabular*}{\textwidth}{llll}\hline
\bfseries Name&\bfseries Category&\bfseries Environment variables&\bfseries cmake file\\
\hline
\hline
\cmake& utility & & \\
\hline
\href{http://www.netlib.org}{blas/\-lapack}&Numerical library & {\tt MKL\_HOME} & FindLapack.cmake\\
& &{\tt LAPACK}& \\
& &{\tt ATLAS} & \\
\hline
\href{http://www.cmake.org}{hdf5} & I/O & {\tt HDF5\_HOME} & FindHDF5.cmake\\
& & {\tt HDF\_HOME} &\\
\hline
\href{http://xmlsoft.org/}{libxml2}& I/O & {\tt LIBXML2\_HOME}& FindLibxml2.cmake\\
\hline
\boost& C++ standard libraries & {\tt BOOST\_HOME}& FindBoost.cmake\\
\hline
\end{tabular*}
\end{center}
\caption{Required packages. For each package, a cmake file is provided in {\tt CMake} directory. }
\label{req.packages}
\end{table}

The cmake files distributed with QMCPACK are tailored for IA32/64 (linux and
Mac OS X) and Power (AIX) systems. Once the CXX and CC are set properly, no
extra action is required.  The build system will try to use the
vendor-{}provided libraries, such as essl and mkl, for optimal performance.
One can easily correct the problems which occur during cmake step by using
ccmake or editing build/CMakeCache.txt file in the build directory.

\subsection{Units} \label{units.sec}
The default units of QMCPACK are Bohr, Hartree and Q$_{\text{e}}$=-{}1
(electron charge). For the current release, the capability of unit conversions
is \emph{NOT IMPLEMENTED}. 

\subsection{QMCPACK schema/DTD} \label{schema.sec}

The design of the schema/DTD for QMCPACK reflects the design of the code.  Some
aspects may be at odd with the XML standard and its common practices in other
areas. The guiding principle for the schema/DTD design is to make the xml
structure facilitate the design of the code for the developers for better
performance and memory use.  Although the applications are mainly dealing with
atoms, molecules and solids, we choose rather general name conventions to
represent the physical systems and problems for future applications. 

%Documentations of the QMCPACK schema can be found
%\href{/qmc/schema/docs/qmcplusplus.schema.html}{here }.

Current implementation of QMCPACK does not validate the input file against the
DTD or schema. However, the xml parser library
\href{http://xmlsoft.org}{libxml2} used by QMCPACK implements a number of
existing standards and the strict validation of the input xml files can be
enabled at any moment. The parser works sequentially similarly to SAX and
xpath/xref is utilized for few special cases. The application can only refer to
the objects created by preceding elements. Therefore, the order of elements is
important.  This is always true with valid xml documents and validating
parsers.

