 |
Removing basis functions
You should remove one or more basis functions and maybe
modify some of the (other) STO basis functions. The program prints
information
that helps you determine which basis functions should be
modified/removed.
Another way to modify your basis set, is to use the confinement
keyword. This
has the effect of making the diffuse basis functions more localized,
thus
reducing problematically large overlap with similar functions on
neighboring
atoms.
In the standard output file, after the error message,
you will find a list of eigenvalues of the overlap matrix. If only the
first is smaller than the threshold, you should remove one basis
function. If
more eigenvalues are very small, it is likely that you have to remove
more than
one function, although you can of course try how far you can get by
eliminating
just one.
Next the program prints the so-called Dependency Coefficients:
a list of numbers, one for each basis function. Those
with a large value are the suspicious ones. If you find two
coefficients that
are significantly larger than the others, you should replace the two
corresponding
functions by one. Easiest is to remove one of them (take the one with
the
bigger coefficient). If one of them is a numerical orbital from Dirac
and the
other an STO, remove the STO. If both are STOs, remove one and replace
the
other by some kind of average (regarding the radial characteristic:
exponential
factor and power of radial coordinate).
To identify how the functions in your input correspond to the list
the underlies the series of Dependency Coefficients, you
have to set up the list of basis functions as follows:
- Consider an outer loop over all atom TYPES. These correspond, in
order as well as in
number,
to the sequence of AtomType keys in your
input file.
- For each type, consider a loop over all atoms of that type, i.e.
the atoms in the ATOM
block corresponding
to the AtomType key at hand.
- For each atom (each AtomType key),
first write down all DIRAC basis functions, then all STOs.
When writing down the functions, be aware that each entry in your input
file specifies a
function set,
by the quantum number L and hence corresponds to 2L+1 actual basis
functions.
- Regarding the DIRAC basis functions: they belong to the list of
basis functions only if
the key Valence
occurs in the pertaining DIRAC input block.
If not, no DIRAC
functions of that type are included in the basis.
If the Dirac functions are included, you must omit the Core
functions and include only the Valence functions
from that DIRAC block.
The first record in your DIRAC block with two numbers defines (by the
first number)
the total number of function sets in the DIRAC block (which you can
verify by
simple counting)
and (by the second number) the number of Core function sets
among them.
The Core function sets, if any, are always the first so many in the
list in the DIRAC block.
The program stops as soon as it encounters a dependency problem.
This may happen for the first k-point. After you have
adjusted the basis set following the above guidelines, you will have
solved it.
However, it may easily happen that the problem shows up again, but now
for
another (later) k-point, where other entries in the basis set may cause
trouble. Do not think you have repaired the first problem incorrectly.
Just
repeat the procedure until you pass all k-points in the basis set
construction
without errors. Typically (as a last remark), although not necessarily,
the
first k-point may have a dependency problem from too many s-type
functions,
while other k-points may be more sensitive to the
series of p-functions in your basis.
|