by Dmitrii Nabok for exciting carbon
Purpose: In this tutorial you will learn how to perform a basic G$_{0}$W$_{0}$ calculation. As an example, the electronic bandstructure of bulk Si is calculated. Notice that selfconsistent GW is not yet implemented in exciting.
0. Define relevant environment variables
Read the following paragraphs before starting with the rest of this tutorial!
Before starting, be sure that relevant environment variables are already defined as specified in How to set environment variables for tutorials scripts. Here, you can find a list of the scripts which are relevant for this tutorial, with a short description.
 PLOTgwbands.py: Python visualization script for plotting and comparing energy bands.
 PLOTgwdos.py: Python visualization script for plotting and comparing density of states.
From now on the symbol $ will indicate the shell prompt.
Requirements: Bash shell. Python numpy, lxml, matplotlib.pyplot, and sys libraries.
Important note: All input parameters are in atomic units!
1. Theoretical background: G_{0}W_{0} approximation.
The quasiparticle energies in the G$_{0}$W$_{0}$ approximation are given as a solution of the linearized quasiparticle (QP) equation [Hybertsen1986] as
(1)where $\epsilon_{n\mathbf{k}}$ are the KohnSham (KS) eigenvalues, $\Sigma_{n\mathbf{k}}$ and $V_{n\mathbf{k}}^{xc}$ are, respectively, the diagonal matrix elements of the selfenergy and the exchangecorrelation (xc) potential that is employed in the singleparticle KS Hamiltonian. The QP renormalization factor $Z_{n\mathbf{k}}$ accounts for the energydependence of the selfenergy. The selfenergy $\Sigma(\mathbf{r},\mathbf{r}';\omega)$ is given by [Hedin1965]
(2)where $G_0$ is the noninteracting singleparticle Green function obtained from the KohnSham states and $W_0$ is the dynamically screened Coulomb potential
(3)Here, $v_{\rm C}(\mathbf{r},\mathbf{r}') = 1/\mathbf{r}\mathbf{r}'$ is the Coulomb potential and $\epsilon(\mathbf{r},\mathbf{r}';\omega)$ is the dielectric function calculated in the randomphase approximation (RPA).
2. Groundstate calculation + GW "singleshot" run
Create a working directory tutorialGW and move inside it.
$ mkdir tutorialgw
$ cd tutorialgw
The typical G$_{0}$W$_{0}$ run consists of two steps:
 First, one needs to perform a groundstate calculation to obtain the selfconsistent KohnSham KS orbitals and potential.
 Second, using this data as an input, one performs a G$_{0}$W$_{0}$ cycle to calculate quasiparticle QP energies.
Below is the input file (input.xml) for bulk Si, which we consider in this tutorial.
<input> <title>Silicon</title> <structure speciespath="$EXCITINGROOT/species"> <crystal> <basevect>5.13 5.13 0.00</basevect> <basevect>5.13 0.00 5.13</basevect> <basevect>0.00 5.13 5.13</basevect> </crystal> <species speciesfile="Si.xml" rmt="2.1"> <atom coord="0.00 0.00 0.00"></atom> <atom coord="0.25 0.25 0.25"></atom> </species> </structure> <groundstate do="fromscratch" rgkmax="7.0" ngridk="4 4 4" xctype="LDA_PW" > </groundstate> <gw taskname="g0w0" ngridq="2 2 2" nempty="22" ibgw="1" nbgw="10" > </gw> </input>
Let us look closer at this input file. Please note that in production calculation one should always check the convergence of results with respect to the groundstate parameters (such as rgkmax, ngridk, etc.). The new element gw initializes G$_{0}$W$_{0}$ calculations. Other specific attributes and elements used in this example are

For all available parameters and options and their description, one should check the GW Section of Input Reference.
To perform the actual calculation, copy and paste the text from above into a file called input.xml within a directory of your choice. Make sure to set $EXCITINGROOT to the correct exciting root directory in the speciespath attribute using the command
$ SETUPexcitingroot.sh
Now, you can start the calculation by invoking the exciting executable (serial version)
$ time excitingser
After the run, one can inspect the INFO.OUT file for checking the convergence behavior of the SCF cycle and for other information related to the groundstate calculation. The main output of G$_{0}$W$_{0}$ run is stored in GW_INFO.OUT and EVALQP.DAT. The former file contains information on the GW program workflow. In particular, energy bandgap values for KS and QP spectra can be found in the end of this file.
The text file EVALQP.DAT contains all important quantities that are calculated during G$_{0}$W$_{0}$ run. Below, we describe the structure of this file. The line "kpoint # 1:" starts the block of data and contains the lattice coordinates of the irreducible kpoint and the corresponding Brillouinzoneintegration weight. Then, for each electronic state (within the range determined by the ibgw and nbgw input attributes) one can find the following quantities:
 the starting KS eigenenergies (E_KS);
 the quasiparticle eneergies as obtained by considering the exchange part of the selfenergy only (E_HF);
 the G$_{0}$W$_{0}$ quasiparticle energies (E_GW);
 the diagonal matrix elements of the exchange selfenergy (Sx);
 the diagonal matrix elements of the correlation selfenergy (Sc);
 the diagonal matrix elements of the underlying exchangecorrelation potential (Vxc);
 the energy difference E_HF$$E_KS (DE_HF);
 the energy difference E_GW$$E_KS (DE_GW);
 the linearization prefactor $Z_{n\mathbf{k}}$ (Znk).
It is important to note that the zero of the E_HF and E_GW quasiparticle energies listed in EVALQP.DAT is the KS Fermi energy (that can be found, e.g., in GW_INFO.OUT). Therefore, in order to obtain absolute QP eigenenergies one has to add to the data listed in EVALQP.DAT the corresponding KS Fermi energy. An example of the content of the first lines of EVALQP.DAT is given in the following.
kpoint # 1: 0.000000 0.000000 0.000000 0.125000
state E_KS E_HF E_GW Sx Sc Vxc DE_HF DE_GW Znk
1 0.24974 0.48679 0.46467 0.69023 0.21961 0.45318 0.23704 0.21493 0.78986
2 0.19048 0.09502 0.00819 0.59347 0.09863 0.49801 0.09546 0.19867 0.78709
3 0.19048 0.09502 0.00856 0.59347 0.09817 0.49801 0.09546 0.19904 0.78439
4 0.19048 0.09502 0.00861 0.59347 0.09811 0.49801 0.09546 0.19909 0.78417
5 0.28272 0.48340 0.11444 0.23178 0.15909 0.43246 0.20068 0.16828 0.79071
6 0.28272 0.48340 0.11444 0.23178 0.15912 0.43246 0.20068 0.16828 0.79120
7 0.28272 0.48340 0.11493 0.23178 0.15857 0.43246 0.20068 0.16779 0.79254
8 0.30752 0.54184 0.14817 0.32549 0.18035 0.55982 0.23433 0.15934 0.77472
9 0.47138 0.68975 0.29754 0.12737 0.18501 0.34573 0.21836 0.17385 0.81888
10 0.47467 0.69897 0.31363 0.16335 0.17396 0.38765 0.22430 0.16104 0.79701
3. Quasiparticle band structure
i) Bandstructure plot
Now, we will visualize the results to compare the KohnSham (KS) and quasiparticle (QP) bandstructures. To calculate them, one should introduce the following changes into the input.xml file.
 In the groundstate element change do = "fromscratch" to do = "skip" to avoid running the groundstate calculations from scratch.
... <groundstate do="skip" ...> </groundstate> ...
 After the groundstate block, add the new element block properties as indicated below.
... <properties> <bandstructure> <plot1d> <path steps="100"> <point coord=" 0.750 0.500 0.250" label="W"/> <point coord=" 0.500 0.500 0.500" label="L"/> <point coord=" 0.000 0.000 0.000" label="GAMMA"/> <point coord=" 0.500 0.500 0.000" label="X"/> <point coord=" 0.750 0.500 0.250" label="W"/> <point coord=" 0.750 0.375 0.375" label="K"/> </path> </plot1d> </bandstructure> </properties> ...
 In the gw element replace taskname = "g0w0" by taskname = "band" to calculate the QP bandstructure on the basis of results obtained from the previous G$_{0}$W$_{0}$ run. In this case, Fourier interpolation is used to evaluate the band energies for the kpoint path specified in the properties element.
... <gw taskname="band" ... > </gw> ...
Finally, run exciting one more time.
$ time excitingser &
The output files BAND.OUT and BANDQP.OUT can now be used to plot the electronic bandstructure. This can be easily done using the script PLOTgwbands.py. To execute it, type
$ PLOTgwbands.py
ii) Density of states
Now, we will compute and compare the KohnSham (KS) and quasiparticle (QP) density of states. To calculate them, one should introduce the following changes into the input.xml file.
 Modify the properties block in order to include the dos subelement as indicated below.
... <properties> <!bandstructure> <plot1d> <path steps="100"> <point coord=" 0.750 0.500 0.250" label="W"/> <point coord=" 0.500 0.500 0.500" label="L"/> <point coord=" 0.000 0.000 0.000" label="GAMMA"/> <point coord=" 0.500 0.500 0.000" label="X"/> <point coord=" 0.750 0.500 0.250" label="W"/> <point coord=" 0.750 0.375 0.375" label="K"/> </path> </plot1d> </bandstructure> <dos winddos="0.5 0.5" nwdos="200"/> </properties> ...
 In the gw element replace taskname = "band" by taskname = "dos" to calculate the QP density of states on the basis of results obtained from the previous G$_{0}$W$_{0}$ run.
... <gw taskname="dos" ... > </gw> ...
Now, you can run exciting:
$ time excitingser &
The results for the KS and G$_{0}$W$_{0}$ density of states are stored in TDOS.OUT and TDOSQP.OUT correspondingly. To visualize them one can simply execute the script PLOTgwdos.py.
$ PLOTgwdos.py
Converging results
The quasiparticle energies obtained from G$_{0}$W$_{0}$ depend on many parameters (on some of them in a crucial way). The most important parameters are

In the general case, additional attention should be payed to the proper choice of the systemdependent parameters used in the mixbasis, freqgrid, etc., subelements of gw to obtain physically relevant results (see Input Reference).
Exercise
 Once you have successfully run the previous GW calculation, you can play around with computational parameters in order to achieve the desired convergence for the value of the electronic band gap.
 Try to perform a convergence test with respect to the size of the k and qmeshs that appear in the both the groundstate and the gw elements.
 Try to run a similar test for the number of empty states. Be careful when increasing this parameter, since the calculation might become quickly very timeconsuming.
 Repeat the complete GW calculation for a different system, e.g., diamond or boron nitride.
Literature
 Hybertsen1986: M. S. Hybertsen and S. G. Louie, Phys. Rev. B 34, 5390 (1986).
 Hedin1965: L. Hedin, Phys. Rev. 139, A796 (1965).
 Tutorial talk (PDF) at the HoW exciting! 2016 workshop in Berlin .
 More details on the implementation of the GW formalism within the LAPW method: H. Jiang, R. I. GomezAbal, X. Li, C. Meisenbichler, C. AmbroschDraxl, and M. Scheffler, "FHIgap: A GW code Based on Augmented Planewaves", Comp. Phys. Commun. 184, 348 (2013).
 The converged G$_{0}$W$_{0}$ results for Si and other materials, obtained with exciting, can be found in D. Nabok, A. Gulans, and C. Draxl, "Accurate allelectron G$_{0}$W$_{0}$ quasiparticle energies employing the fullpotential augmented planewave method", Phys. Rev. B 94, 035118 (2016).