A First Encounter - Part 2: Choosing your level of theory¶
Choosing a Pseudopotential¶
An important thing that determines the quality of the calculation is the choice of the pseudopotential. As mentioned in A First Encounter - Part 1: Running SIESTA, pseudopotentials in SIESTA are provided as external input files, usually in psf or psml formats.
Generating a new pseudopotential from scratch is outside the scope of this tutorial, but more information can be seen in Pseudopotentials. For most cases, you can instead download pre-generated pseudopotentials at Pseudo-Dojo, which covers variants for scalar and fully relativistic pseudos for LDA, PBE and PBEsol functionals.
The pseudopotential should be tested. How to test it will depend on the type of system you are running, so diving in to the existing literature is strongly recommended.
DFT functional¶
Hint
Enter the directory CH4-XC-Functional
Up to now we have been implicitly using the local density approximation (LDA)
for our calculations, which is the default option in SIESTA. However, it is also
possible to use other functionals, such as those of GGA type. Edit the
ch4.fdf
file to include this block:
XC.functional GGA
XC.authors PBE
Notice that both XC.Authors
and XC.Functional
are needed, and they must
be consistent. For XC.Functional GGA
, the most used variants are BLYP, PBE
and PBEsol. For XC.Functional VDW
, frequently used functionals are DRSLL,
LMKLL and VV. See the manual for more options on XC functionals.
Run SIESTA and look for possible lines with WARNING
or ERROR
in them.
Even though the program ran successfully, you will find the following warning in
the output:
xc_check: WARNING: Pseudopotential generated with LDA CA functional
You are using a GGA functional with a pseudopotential generated using LDA, as this is not consistent!. Fortunately, we have produced also the pseudopotentials using GGA for you. They are in the files C.gga.psf and H.gga.psf. You can modify the input file again to use these files by simply changing the ‘species’ strings:
%block ChemicalSpeciesLabel
1 6 C.gga # Species index, atomic number, species label
2 1 H.gga # Species index, atomic number, species label
%endblock ChemicalSpeciesLabel
Run the program again and check whether the warning disappears from the output.
It is worth noting that, as with pseudopotentials, DFT functionals are not easy to compare between each other in a systematic way. Again, it is worth expending some time searching the literature for the type of simulations you are trying to run.
Simple basis-sets options¶
Note
As a general background for this topic, you can watch the 2021 talks by Emilio Artacho:
Note
This tutorial will only cover basic, general options for basis set generation. We encourage you to jump into the dedicated tutorial for basis set optimization afterwards.
SIESTA offers many options for the specification of the basis set. Two of the key concepts are the cardinality of the set and range of the orbitals, which can be specified, in most cases, simply with a couple of lines. For example:
PAO.BasisSize DZP
PAO.EnergyShift 0.01 Ry
The energy shift is a physical concept determining the increase in energy brought about by the confinement of the orbital; the lower the energy shift, the larger the cut-off radii of basis orbitals.
Other interesting options are:
PAO.SplitNorm 0.15
PAO.SoftDefault T
PAO.OldStylePolOrbs F
PAO.SplitNorm
esentially controls the matching radii for higher-zeta
orbitals. PAO.SoftDefault
enables the use of soft-confinement potentials
for basis set generation (ensuring the derivatives of the radial functions
become zero at the orbital cut-off radii), and PAO.OldStylePolOrbs
can be
used as a fallback to an older, different way of generating polarization
orbitals.
Note
The values for PAO.SoftDefault
and PAO.OldStylePolOrbs
are set to
true and false by default starting in SIESTA 5. These are the recommended
values; however, previous versions of SIESTA used other defaults.
Playing with CH4¶
Note
In this tutorial you will be doing a geometry optimization for CH4. This method is covered in Structural optimization using forces and stresses.
Hint
Enter the directory CH4-Basis
The input file ch4.fdf
is already set up to optimize the geometry of a
single methane molecule. At the bottom of the file, you will find two options
used to define the basis set:
PAO.BasisSize SZ
PAO.EnergyShift 250 meV
The idea of this tutorials is to see what happens with the total energy and the
bond lengths of the system when modifying these options. The total energy is
found in the standard output, look for siesta: Total =
near
the bottom of the file, under siesta: Final energy (eV):
. The bond lengths
can be found in the ch4.BONDS_FINAL file
.
See what happens when you increase the size of the basis set to SZP and DZP.
For DZP, try changing the energy shift to 100 meV, 50 meV and 10 meV.
Consider that the experimental bond-length for gas methane is 1.087 Å.
Which has the biggest effect in the energy, increasing the cardinality/size of the basis set, or changing the energy shift?
In which case would you consider the basis set is “good enough”?
Is it ok to compare the results to an experimental bond lenght? Or would it be better to check against an already converged basis set?
Optional¶
Here are a few extra things for you to explore:
For DZP at a given energy shift, try different values for
PAO.SplitNorm
(0.10, 0.15 and 0.20). See how that affects your results.See what happens when you disable
PAO.SoftDefault
. In particular, you could have a look at the cut-off radii for basis orbitals, which are present in the standard output (search forrc =
). Try again different values for the energy shift and see if your previous conclusions change.