PWDFT.jl: A Julia package for electronic structure calculation using density functional theory and plane wave basis
We describe the implementation of PWDFT.jl, a package for electronic structure calculations written in Julia programming language using plane wave basis set and pseudopotentials. In this package, a typical Kohn–Sham density functional theory (KSDFT) is divided into three steps: initializing the molecular or crystalline structure, constructing the Kohn–Sham Hamiltonian, and solving the Kohn–Sham problem using self-consistent field (SCF) calculation. To facilitate various tasks involved in these steps, we provide several custom data types which are transparent and easy to be modified. Basic operations such as wave function orthogonalization, action of kinetic and potential operators to wave functions and iterative diagonalization of Hamiltonian have been implemented in pure Julia. Several algorithms to solve the Kohn–Sham problems such as self-consistent field and direct energy minimization have also been implemented in PWDFT.jl. To assess the validity of our implementation, we present the results of total energy calculations against the well-established ABINIT package. We also show how one can use PWDFT.jl to write a simple self-consistent field implementation.