Commit ba1b604e authored by Nick R. Papior's avatar Nick R. Papior
Browse files

Updated documentation and explained more on TS.Analyze

parent 47a48484
......@@ -1568,149 +1568,190 @@ set to their problem under consideration.
\subsubsection{Type of basis sets}
\begin{description}
\begin{fdfentry}{PAO!BasisType}[string]<split>
\index{basis!PAO}
The kind of basis to be generated is chosen. All are based on
finite-range pseudo-atomic orbitals\index{finite-range pseudo-atomic
orbitals} [PAO's of Sankey and Niklewsky, PRB 40, 3979
(1989)]. The original PAO's were described only for minimal
bases. \siesta\ generates extended bases
(multiple-$\zeta$,\index{multiple-$\zeta$}
polarization,\index{polarization orbitals} and diffuse
orbitals\index{diffuse orbitals}) applying different schemes of
choice:
\item[\textbf{PAO.BasisType}] (\textit{string}):
\index{PAO.BasisType@\textbf{PAO.BasisType}}
\index{basis!PAO}
\begin{itemize}
The kind of basis to be generated is chosen. All are based on
finite-range pseudo-atomic orbitals\index{finite-range pseudo-atomic
orbitals} [PAO's of Sankey and Niklewsky, PRB 40, 3979 (1989)]. The
original PAO's were described only for minimal bases. \siesta\
generates extended bases (multiple-$\zeta$,\index{multiple-$\zeta$}
polarization,\index{polarization orbitals} and diffuse
orbitals\index{diffuse orbitals}) applying different schemes of choice:
\item[-] Generalization of the PAO's: uses the excited orbitals of
the finite-range pseudo-atomic problem, both for multiple-$\zeta$
and for polarization [see S\'anchez-Portal, Artacho, and Soler,
JPCM \textbf{8}, 3859 (1996)]. Adequate for short-range orbitals.
\begin{itemize}
\item[-] Multiple-$\zeta$ in the spirit of split
valence,\index{split valence} decomposing the original PAO in
several pieces of different range, either defining more (and
smaller) confining radii, or introducing
Gaussians\index{Gaussians} from known bases (Huzinaga's book).
\item[-] Generalization of the PAO's: uses the excited orbitals of the
finite-range pseudo-atomic problem, both for multiple-$\zeta$ and for
polarization [see S\'anchez-Portal, Artacho, and Soler, JPCM \textbf{8},
3859 (1996)]. Adequate for short-range orbitals.
\end{itemize}
\item[-] Multiple-$\zeta$ in the spirit of split valence,\index{split
valence} decomposing the original PAO in several pieces of different
range, either defining more (and smaller) confining radii, or
introducing Gaussians\index{Gaussians} from known bases (Huzinaga's
book).
\end{itemize}
\noindent
All the remaining options give the same minimal basis\index{minimal
basis}. The different options and their \fdflib\ descriptors are
the following:
\noindent
All the remaining options
give the same minimal basis\index{minimal basis}.
The different options and their \fdflib\ descriptors are the following:
\begin{fdfoptions}
\begin{itemize}
\option[split]%
\fdfindex*{PAO!BasisType!split}
\item \texttt{split:} Split-valence scheme for multiple-zeta.
The split is based on different radii.
Split-valence scheme for multiple-zeta.
The split is based on different radii.
\item \texttt{splitgauss:}\index{splitgauss@\texttt{splitgauss}}
Same as \texttt{split} but using gaussian functions
$e^{-(x/\alpha_i)^2}$. The gaussian widths $\alpha_i$ are read instead
of the scale factors (see below). There is no cutting algorithm, so that
a large enough $r_c$ should be defined for the gaussian to have decayed
sufficiently.
\item \texttt{nodes:}\index{nodes@\texttt{nodes}} Generalized PAO's.
\option[splitgauss]%
\fdfindex*{PAO!BasisType!splitgauss}
Same as \texttt{split} but using gaussian functions
$e^{-(x/\alpha_i)^2}$. The gaussian widths $\alpha_i$ are read
instead of the scale factors (see below). There is no cutting
algorithm, so that a large enough $r_c$ should be defined for the
gaussian to have decayed sufficiently.
\item \texttt{nonodes:}\index{nonodes@\texttt{nonodes}}
The original PAO's are used, multiple-zeta is generated
by changing the scale-factors, instead of using the excited orbitals.
\option[nodes]%
\fdfindex*{PAO!BasisType!nodes}
Generalized PAO's.
\item \texttt{filteret:} Use the filterets as a systematic basis set.
The size of the basis set is controlled by the filter cut-off for
the orbitals.
\end{itemize}
\option[nodes]%
\fdfindex*{PAO!BasisType!nonodes}
\noindent
Note that, for the \texttt{split} and \texttt{nodes} cases
the whole basis can be generated by \siesta\ with no further information
required. \siesta\ will use default values as defined in the following
(\textbf{PAO.BasisSize},
\textbf{PAO.EnergyShift}, and \textbf{PAO.SplitNorm}, see below).
The original PAO's are used, multiple-zeta is generated by
changing the scale-factors, instead of using the excited orbitals.
\textit{Default value:} \texttt{split}
\option[filteret]
\fdfindex*{PAO!BasisType!filteret}
Use the filterets as a systematic basis set. The size of the
basis set is controlled by the filter cut-off for the orbitals.
\end{fdfoptions}
\noindent
Note that, for the \fdf*{split} and \fdf*{nodes} cases the whole
basis can be generated by \siesta\ with no further information
required. \siesta\ will use default values as defined in the
following (\fdf{PAO!BasisSize}, \fdf{PAO!EnergyShift}, and
\fdf{PAO!SplitNorm}, see below).
\end{fdfentry}
\end{description}
\subsubsection{Size of the basis set}
\begin{description}
\item[\textbf{PAO.BasisSize}] (\textit{string}):
\index{PAO.BasisSize@\textbf{PAO.BasisSize}}\index{basis!PAO}
It defines usual basis sizes. It has effect only if there is no
block \textbf{PAO.Basis} present.
\begin{fdfentry}{PAO!BasisSize}[string]<DZP>
\index{basis!PAO}
\begin{itemize}
It defines usual basis sizes. It has effect only if there is no
block \fdf{PAO!Basis} present.
\item \texttt{SZ}\index{SZ@\texttt{SZ}} or
\texttt{MINIMAL}:\index{MINIMAL@\texttt{MINIMAL}} minimal or
single-$\zeta$ basis.\index{basis!minimal}\index{single-$\zeta$}
\begin{fdfoptions}
\item \texttt{DZ}:\index{DZ@\texttt{DZ}} Double zeta basis, in the scheme
defined by \textbf{PAO.BasisType}.
\option[SZ|minimal]%
\fdfindex*{PAO!BasisSize!SZ}
\fdfindex*{PAO!BasisSize!minimal}
\index{basis!minimal}
\index{single-$\zeta$}
\item \texttt{SZP}:\index{SZP@\texttt{SZP}} Single-zeta basis plus polarization
orbitals.
Use single-$\zeta$ basis.
\item \texttt{DZP}\index{DZP@\texttt{DZP}} or \texttt{STANDARD}:\index{STANDARD@\texttt{STANDARD}} Like \texttt{DZ} plus
polarization orbitals. Polarization orbitals are constructed from
perturbation theory,\index{perturbative polarization} and they are
defined so they have\index{basis!polarization} the minimum angular
momentum $l$ such that there are not occupied orbitals with the same
$l$ in the valence shell of the ground-state atomic
configuration. They polarize the corresponding $l-1$ shell.
\textbf{Note}: The ground-state atomic configuration used internally
by \siesta\ is defined in the source file \texttt{Src/periodic\_table.f}.
For some elements (e.g., Pd), the configuration might not be the
standard one\index{Ground-state atomic configuration}.
\option[DZ]%
\fdfindex*{PAO!BasisSize!DZ}
\index{double-$\zeta$}
\end{itemize}
Double zeta basis, in the scheme defined by \fdf{PAO!BasisType}.
\textit{Default value:} \texttt{DZP}
\item[\textbf{PAO.BasisSizes}](\textit{data block}):
\index{PAO.BasisSizes@\textbf{PAO.BasisSizes}}\index{basis!PAO}
Block which allows to specify a different value of the variable
PAO.BasisSize for each species. For example,
\begin{verbatim}
%block PAO.BasisSizes
Si DZ
H DZP
O SZP
%endblock PAO.BasisSizes
\end{verbatim}
\option[SZP]%
\fdfindex*{PAO!BasisSize!SZP}
Single-zeta basis plus polarization orbitals.
\option[DZP|standard]%
\fdfindex*{PAO!BasisSize!DZP}
Like \fdf*{DZ} plus polarization orbitals. Polarization orbitals
are constructed from perturbation theory,\index{perturbative
polarization} and they are defined so they
have\index{basis!polarization} the minimum angular momentum $l$
such that there are not occupied orbitals with the same $l$ in the
valence shell of the ground-state atomic configuration. They
polarize the corresponding $l-1$ shell.
\note the ground-state atomic configuration used internally by
\siesta\ is defined in the source file
\shell{Src/periodic\_table.f}. For some elements (e.g., Pd), the
configuration might not be the standard one\index{Ground-state
atomic configuration}.
\end{fdfoptions}
\end{fdfentry}
\begin{fdfentry}{PAO!BasisSizes}[block]
\index{basis!PAO}
Block which allows to specify a different value of the variable
\fdf{PAO!BasisSize} for each species. For example,
\begin{fdfexample}
%block PAO.BasisSizes
Si DZ
H DZP
O SZP
%endblock PAO.BasisSizes
\end{fdfexample}
\end{fdfentry}
\end{description}
\subsubsection{Range of the orbitals}
\begin{description}
\item[\textbf{PAO.EnergyShift}] (\textit{real energy}): A standard for
orbital-confining cutoff radii. It is the excitation energy
of the PAO's due to the confinement to a finite-range. It offers a
general procedure for defining the confining radii of the original
(first-zeta) PAO's for all the species guaranteeing the compensation
of the basis. It only has an effect when the block
\textbf{PAO.Basis} is not present or when the radii
specified in that block are zero for the first zeta.
\begin{fdfentry}{PAO!EnergyShift}[energy]<$0.02\,\mathrm{Ry}$>
\textit{Use:} It has to be positive.
A standard for orbital-confining cutoff radii. It is the excitation
energy of the PAO's due to the confinement to a finite-range. It
offers a general procedure for defining the confining radii of the
original (first-zeta) PAO's for all the species guaranteeing the
compensation of the basis. It only has an effect when the block
\fdf{PAO!Basis} is not present or when the radii specified in
that block are zero for the first zeta.
\textit{Default value:} \texttt{0.02 Ry}
\end{fdfentry}
\item[\textbf{Write.Graphviz}] (\textit{string}): %
May be \emph{atom}, \emph{orbital} or \emph{atom+orbital} to write
out a Graphviz file which contains the sparsity pattern in the requested
layout.
\textit{Default value:} \texttt{none}
\begin{fdfentry}{Write!Graphviz}[string]<none|atom|orbital|atom+orbital>
Write out the sparsity pattern after having determined the basis
size overlaps. This will generate \sysfile{ATOM.gv} or
\sysfile{ORB.gv} which both may be converted to a graph using
Graphviz's program \program{neato}:
\begin{shellexample}
neato -x -Tpng siesta.ATOM.gv -o siesta_ATOM.png
\end{shellexample}
The resulting graph will list each atom as $i (j)$ where $i$ is the
atomic index and $j$ is the number of other atoms it is connected
to.
\end{fdfentry}
\end{description}
\subsubsection{Generation of multiple-zeta orbitals}
\begin{description}
......@@ -2001,16 +2042,16 @@ normalization).
the atomic basis. There is no need to enter information for all the
species present in the calculation. The basis\index{basis!PAO} for
the species not mentioned in this block will be generated
automatically using the parameters \fdf{PAO.BasisSize},
\textbf{PAO.BasisType}, \textbf{PAO.EnergyShift},
\fdf{PAO.SplitNorm} (or \textbf{PAO.SplitNormH}), and the
soft-confinement defaults, if used (See \textbf{PAO.SoftDefault}).
automatically using the parameters \fdf{PAO!BasisSize},
\fdf{PAO!BasisType}, \fdf{PAO!EnergyShift},
\fdf{PAO!SplitNorm} (or \fdf{PAO!SplitNormH}), and the
soft-confinement defaults, if used (see \fdf{PAO!SoftDefault}).
Some parameters can be set to zero, or left out completely. In
these cases the values will be generated from the magnitudes defined
above, or from the appropriate default values. For example, the
radii\index{cutoff radius} will be obtained from
\fdf{PAO.EnergyShift} or from \textbf{PAO.SplitNorm} if they are
\fdf{PAO!EnergyShift} or from \fdf{PAO!SplitNorm} if they are
zero; the scale factors will be put to 1 if they are zero or not
given in the input. An example block for a two-species calculation
(H and O) is the following (\texttt{opt} means optional):
......@@ -9939,6 +9980,15 @@ where the first call creates an input fdf for 2 electrode setups, the
second for a 3 electrode setup, and so on. See the help (\program{-h})
for the program for additional options.
Before endeavoring on large scale calculations you are advised to run
an analyzation of the system at hand, you may run your system as
\begin{shellexample}
transiesta -fdf TS.Analyze RUN.fdf > analyze.out
\end{shellexample}
which will analyze the sparsity pattern and print out several
different pivoting schemes. Please see \fdf{TS!Analyze} for additional
information.
\subsubsection{General options}
......@@ -10232,8 +10282,33 @@ for the program for additional options.
This yields information regarding the \fdf{TS!BTD!Pivot} flag.
\note we advice users to \emph{always} run an analyzation step and
select the \emph{best} BTD format. Choosing the best one may be
difficult. Generally one should choose the pivoting scheme that uses
the least amount of memory. However, one should also choose the
method with largest block-size being as small as possible. As an
example:
\begin{shellexample}
TS.BTD.Pivot atom+GPS
...
BTD partitions (7):
[ 2984, 2776, 192, 192, 1639, 4050, 105 ]
Matrix elements in tri / % of full: 68246662 / 47.88707
TS.BTD.Pivot atom+GGPS
...
BTD partitions (6):
[ 2880, 2916, 174, 174, 2884, 2910 ]
Matrix elements in tri / % of full: 69303556 / 48.62867
\end{shellexample}
Although the GPS method uses the least amount of memory, the GGPS
will likely perform better as the largest block in GPS is $4050$
vs. $2916$ for the GGPS method.
\end{fdflogicalF}
\subsubsection{Algorithm specific options}
These options adhere to the specific solution methods available for
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment