**2. Calculation methods**

In this chapter, we present a real-space implementation of the PAW method in the open-source software package GPAW [9]. Note that there are several software packages that currently implement the PAW method using a plane-wave basis [10–12]. The PAW method [13, 14] is formally an all-electron method that provides an exact transformation between smooth pseudo wave functions and all-electron wave functions. While in practice the PAW method resembles pseudo potential methods, it remedies several shortcomings of conservative norm or ultra-smooth pseudopotentials.

The GPAW code is built on top of the ASE [3], which is a set of Python modules designed to facilitate the setup, execution, and analysis of atomistic/ electronic calculations. This tight integration of ASE and GPAW should be maintained in the future. Interest in ASE has grown considerably over the past few years, to the point where ASE now supports about 12 different force and energy calculators.

There are of course several other open-source projects focused on DFT and timedependent (TDDFT), such as abinit, quantum espresso and KKR [15], and Octopus. How does GPAW fit into this code market? The main feature that distinguishes GPAW from its competitors is the combination of a real-space description with the PAW method. The PAW method allows an accurate description of essentially all electrons in the frozen core, leading to smooth pseudo wave functions even for transition metals. The real-space description allows for easy and highly scalable parallelization due to the real-space decomposition, which allows for accurate calculations even for large systems.

Among the features currently implemented in GPAW, we can mention the calculation of static response functions using density-functional perturbation theory and the more general calculations of dynamic response functions in TDDFT. Force calculations as well as adiabatic and Ehrenfest dynamics are also implemented in TDDFT. In addition, work is underway to expand the number of atomic configurations to include all elements up to atomic number 86 [16].

In this work, we present density of states and band structure calculations of diamond using the PAW method as implemented in the GPAW package (https://wiki. fysik.dtu.dk/gpaw).

Traditionally [17], software packages for this type of simulation have been implemented in compiled languages, where Fortran in its various iterations has been the most popular choice. Although interpreted dynamic languages, such as Python, can increase the efficiency of the programmer, they cannot directly compete with the raw performance of compiled languages.

However, by using an interpreted language along with a compiled language, it is possible to benefit from most of the productivity-enhancing features while still achieving good numerical performance. This approach has been implemented in the GPAW electronic structure simulation software, using a combination of Python and C programming languages.
