K-point()

Background

This lesson deals with the basic k-point convergence study that is needed in any DFT calculation in periodic systems. In such systems, indeed, the first Brillouin zone (BZ) needs to be discretized when performing the integration of several important quantities e.g. the electronic density or the electronic energy. Integrals over the BZ are therefore turned into sums over discrete k-points and the k-mesh should be dense enough, but at the same time as coarse as possible to make for an efficient calculation. Your first investigation into a new compound will often be a k-point convergence study.

It is worth stressing that the density of the k-mesh needed to reach converged results is system-dependent. Note that metals need much denser k-meshes than semiconductors. The presence of the Fermi surface, indeed, introduces discontinuities in the integrand functions and a fictitious broadening of the occupation factors (tsmear) should be introduced in order to accelerate the convergence of the integrals.

The related Abinit variables

The variables used to specify the k-point sampling are:

    •   ngkpt

    •   shiftk

    •   kptopt (see exercises)

The variables used to specify the occupation scheme in metals are:

    •   occopt (see exercises)

    •   tsmear (see exercises)

For a more detailed description of the variables, you are invited to consult the abinit documentation. The full description, directly from the official abinit docs, is available via the shell command:

        abidoc.py man inputvariable

that prints the official description of inputvariable.

Description of the lesson

In the generation of this lesson by the python script all the input files have been generated automatically. The input files have been organized in a workdir "flow_lesson_Si_kpoint_convergence". Inside this directory, you'll find a single work, w0, with four tasks, t0-t1-t2-t3. Have a look at the input files, run.abi, of the four tasks to see what is different.

You'll see that also the files file and the jobs submission script have been generated. In the job scripts you'll see that the jobs are prepared to run just on the front end.

You'll also see that the files file has been created as well.

To perform the k-point convergence study execute, abinit with the four input sets.

Once the calculations are ready, you'll see three important output files.

    •   run.out

    •   run.log

    •   run.err

The main summary of the calculation can be found in the .out file, we'll go there soon :-). The .err file should be empty. If it's not something went wrong. If something went wrong read the .err. file. The .log file contains extensive information on you calculation that could help to find out what went wrong in the case of errors. Especially there are three types of messages that could help

    •   COMMENT

    •   WARNING

    •   ERROR

In case of an error message abinit stopped the execution by itself, because of that error.

Now the .out file. Some interesting keywords to look for:

    •   Symmetries

    •   Citation for XC functional:

    •   ETOT (the total energies during the electronic structure convergence)

    •   Eigenvalues

    •   Etotal (the total energy of an ionic step)

Obviously there is much more.

Collect the total energies of the four calculations and plot them as a function of the number of k-points in the calculation.

Alternative to execution of the manual execution the calculations can also be executed using the abipy scheduler.

        abirun.py flow_lesson_Si_kpoint_convergence scheduler