q-dependent TDDFT

for lithium version of Exciting

Purpose: In this tutorial, you will learn how to set up and execute calculations to determine optical spectra within time-dependent density-functional theory (TDDFT) for the case of non-zero momentum transfer. As example, the evolution of the electron-energy loss function of silver for increasing momentum transfer in (001) direction is studied.

0. Define relevant shell variables

Read the following paragraphs before starting with the rest of this tutorial!

Before starting, be sure that relevant shell variables are already defined and that the excitingscripts directory has already been downloaded, as specified in Tutorial scripts and environment variables. Here is a list of the scripts which are relevant for this tutorial with a short description.

  • PLOT-loss-function.py: Python script for generating plots of the loss function.
  • PLOT-q-study-lossfunction.py: Python script for generating plots of a set of loss functions for different momentum transfer.

From now on the symbol $ will indicate the shell prompt.

Requirements: Bash shell. Python numpy, lxml, matplotlib.pyplot, and sys libraries.

Important note: In the following, all input parameters are given in atomic units!

1. Groundstate calculation

First of all, create a directory with the name silver_qtddft, in which the calculation will be performed later on and move into it.

$ mkdir silver_qtddft
$ cd silver_qtddft

Now, either create a new input file with the name input.xml or copy it from a previous calculation and change it accordingly.

The input file could look like the following.

  <title>Loss function of Ag</title>
  <structure speciespath="$EXCITINGROOT/species">
    <crystal scale="7.72">
      <basevect> 0.5     0.5     0.0 </basevect>
      <basevect> 0.5     0.0     0.5 </basevect>
      <basevect> 0.0     0.5     0.5 </basevect>
    <species speciesfile="Ag.xml">
      <atom coord="0.00 0.00 0.00" />
  <groundstate ngridk="10 10 10" />

Please, remember that the input file for an exciting calculation must always be called input.xml. For further details see Input Reference and How to start an exciting calculation.

Be sure to set the correct path for the exciting root directory (indicated in this example by $EXCITINGROOT) to the one pointing to the place where the exciting directory is placed. This can be done by using the following line command.

$ SETUP-excitingroot.sh

Now, start the groundstate calculation in background by typing

$ excitingser >& output.txt &

Please notice: To obtain reliable results it is necessary to perform careful convergence tests with respect to the k-point mesh (parameter ngridk), the smearing width (parameter swidth), and the size of the basis set (parameter rgkmax). For details see Simple Convergence Tests.

Make sure that your groundstate calculation is converged before you continue with the TDDFT calculation!

2. TDDFT calculation for non-zero momentum transfer

A well-converged groundstate is the starting point for every TDDFT calculation. Among the numerous files created during the groundstate calculation only two are essential for the TDDFT part. These are EFERMI.OUT (contains the Fermi level) and STATE.OUT (contains the groundstate density and potential).

Information about the symmetry properties of the dielectric tensor are found in SYMT2.OUT. In case of silver, it looks like the following.

(structure of a rank 2 tensor, e.g. the dielectric tensor, from symmetry considerations
with respect to Cartesian coordinates)

Upper limit for number of independent components :      1

( e_33   0     0   )
(  0    e_33   0   )
(  0     0    e_33 )

Note: For lower-dimensional systems, the number of independent components is higher.

To perform a TDDFT calculation, the xs element must be included in input.xml. It is placed right after the groundstate element. Within the xs element one or more q points can be specified with the help of the qpointset element. They are listed one after the other by using the qpoint element. For a TDDFT calculation at non-zero momentum transfer, the q vector in the input file above should have at least one non-zero component. It could look like this.

     <xs xstype="TDDFT"
         ngridk="8 8 8" vkloff="0.05 0.15 0.25"
         lmaxapwwf="5" lmaxemat="5"
         <energywindow intv="0.0 2.0" points="1500" />
         <tddft fxctype="RPA"
             <qpoint> 0.0 0.0 0.01 </qpoint>

This xs block of the input file corresponds to a calculation which includes local-field effects. To neglect local-field effects in the calculation, set the gqmax attribute to zero. Intraband contributions are included by setting the intraband attribute within the tddft element to the value true. For further information see Input Reference and Excited States from TDDFT.

Note: The q points are given in reciprocal space coordinates.

Please notice: If the EFERMI.OUT and the STATE.OUT files are already available from a previous calculation, it is not necessary to repeat the groundstate calculation. It can be skipped by adding the do attribute in the groundstate element and setting it to the value skip.

    <groundstate do="skip" 
                 ngridk="10  10  10" />

Now, start the TDDFT calculation in the background by typing

$ excitingser >& output.txt &

Information about the progress of the calculation can be found in the file INFOXS.OUT. Check also the output.txt file for warnings and error messages.

3. Output files

After the TDDFT calculation finished successfully, optical spectra for finite momentum transfer are available from the output files listed below.

File name Content
EPSILON_xxx dielectric function
LOSS_xxx electron-energy loss function and dynamical structure factor
SIGMA_xxx optical conductivity

Note: xxx stands for further lables present in the output file.

An example for an output file is EPSILON_NLF_FXCRPA_QMT001.OUT.

Label Meaning
NLF no local field effects: local-field effects were neglected in the calculation
FXCRPA xc-kernel type: the xc-kernel used in the calculation is RPA
QMT001 q momentum transfer: the first q point as listed in the QPOINTS.OUT file was used

For further information about possible labels and their meaning see TDDFT Output Files.

Note: A calculation including local-field effects always gives, in addition, the spectra neglecting local-field effects.

4. Visualization

Use the python script PLOT-loss-function.py to visualize XML data files. In order to plot the data sets including and neglecting local-field effects, use the following command line (see Excited States from TDDFT for further information on the use of the script).

$ PLOT-loss-function.py LOSS_FXCRPA_QMT001.OUT.xml  LOSS_NLF_FXCRPA_QMT001.OUT.xml
The resulting plot is shown below.

As can be seen, the impact of local-field effects is negligible below 8 eV. In contrast, their inclusion is important especially for energies above 35 eV, where they lead to a drastical reduction in spectral weight.

The effect of intaband contributions

Create a new directory, copy the input.xml, EFERMI.OUT, and the STATE.OUT files into it and move into it. Then, calculate the loss function neglecting intraband contributions by setting

<tddft ... intraband="false" ... >
and compare it to the spectrum including them. The result should look like this:

As visible from the figure, the inclusion of intraband contributions increases the spectral weight and gives rise to a sharp plasmon peak around 3 eV.

5. Converging the results

Before starting a series of calculations to investigate the q-dependence of different optical quantities, it is necessary to find a proper set of parameters leading to reliable results. The choice of the parameters listed below is crucial for the accuracy of the calculation.

  • ngridk: The quality of the spectra depends on the size of the k-mesh. A denser k-mesh results in a better resolution of the spectrum. Thus, always check for convergence with respect to the number of k points.
  • swidth: In particular for metals, the convergence test with respect to the smearing width swidth must go hand in hand with that of ngridk.
  • rgkmax: It determines the size of the basis set and therefore influences the quality of the eigenvalues. Be careful when increasing it since the computational time rises rapidly.
  • nempty: It determines the number of empty states considered in the calculation and depends on the energy range of interest.
  • gqmax: Local-field effects G-cutoff. If set to zero, local-field effects are neglected.

6. Evolution of the electron energy-loss function for increasing momentum transfer

There are two possibilities to study the evolution of optical spectra with increasing momentum transfer in a certain direction within the BZ.

  1. The procedure discussed in Section 2 is repeated several times and the q point in input.xml is changed after every run. In this case it is necessary to save the output files with a new name, otherwise the results will be overwritten by the next calculation.
  2. The q points are listed inside the qpointset element. In this case, the calculation produces a set of output files for each q point. The output files can be related to the q points with the help of the QPOINTS.OUT file and the number following the QMT label.

Now, create a new directory with the name silver_qstudy, copy the input.xml, EFERMI.OUT, and the STATE.OUT files into it and move into it. In order to study the momentum dependence along the (001) direction, the second possibility is used in this tutorial, i.e., the qpointset element in input.xml is replaced by

                <qpoint> 0.0 0.0 0.02 </qpoint>
                <qpoint> 0.0 0.0 0.04 </qpoint>                       
                <qpoint> 0.0 0.0 0.06 </qpoint>

Neglect local field effects by setting the gqmax attribute to zero, set the nempty attribute to "10" and change the intv attribute to "0.0 0.3" in order to reduce the computing time. Include intraband contributions in the calculation.

Please notice: The parameters used in this test calculation are chosen for practical reasons to keep the computational time low. To obtain serious results, one has to find a proper parameter sets resulting from careful convergence tests.

Now, start the TDDFT calculation in the background by typing

$ excitingser >& output.txt &

and monitor its progress with the help of the files INFOXS.OUT.

7. Evaluation

Note: A realistic investigation of the evolution of the low-energy plasmon with increasing momentum transfer requires a denser k mesh than that used in this tutorial.

For further evaluation, download here a tar.gz file containing the results for a 30$\times$30$\times$30 k-point mesh with q increasing from 0.01 to 0.1 in the (001) direction and save it in a new folder. Use these data and visualize them with the help of the script PLOT-q-study-lossfunction.py. To generate the plot, execute the following command inside the folder where you unpacked the file.

$ PLOT-q-study-lossfunction.py 0.0 8.0 0.03
The first two arguments (0.0 and 8.0) define the energy range of your plot. The curves for each q are separated by an offset defined by the third argument (0.03). This will generate the files PLOT.ps and PLOT.png, that will look like in the figure below.

The plot reveals that the low-energy plasmon shifts to higer energies and gets broader with increasing momentum transfer.

  • Visualize the results of the previous calculation and compare with the corresponding converged spectra.
  • Perform a similar calculation for increasing momentum transfer in (011) or (111) direction and visualize the results.


  • Tutorial talk given by Stefan Sagmeister in the 2010 version of the tutorial at CECAM (PDF)
  • Further information on the momentum-dependent loss function of Ag: A. Alkauskas, S. Schneider, S. Sagmeister, C. Ambrosch-Draxl, and C. H├Ębert, Theoretical analysis of the momentum-dependent loss function of bulk Ag, Ultramicroscopy 110, 1081 (2010) (PDF)
  • More details on the implementation of the TDDFT formalism within the LAPW method: S. Sagmeister, PhD thesis, University of Graz, August 2009 (PDF)

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License