The Elk Code
An all-electron full-potential linearised augmented-plane wave (LAPW) code with many advanced features. Written originally at Karl-Franzens-Universität Graz as a milestone of the EXCITING EU Research and Training Network, the code is designed to be as simple as possible so that new developments in electronic structure theory can be added quickly and reliably. Elk is freely available under the GNU General Public License.

Latest version: 10.1.15

News Features Download Documentation Forums Mailing list Contributions Links
Features
General
• High precision all-electron DFT code
• LAPW basis with local-orbitals
• APW radial derivative matching to arbitrary orders at muffin-tin surface (super-LAPW, etc.)
• Arbitrary number of local-orbitals allowed (all core states can be made valence for example)
• Every element in the periodic table available
• Total energies resolved into components
• LSDA and GGA functionals available
• Variational meta-GGA (in the generalised Kohn-Sham sense) available with Libxc
• Core states treated with the radial Dirac equation
• Simple to use: just one input file required with all input parameters optional
• Multiple tasks can be run consecutively

Structure and symmetry
• Determination of lattice and crystal symmetry groups from input lattice and atomic coordinates
• Determination of atomic coordinates from space group data (with the Spacegroup utility)
• XCrysDen and V_Sim file output
• Automatic reduction from conventional to primitive unit cell
• Automatic determination of muffin-tin radii
• Full symmetrisation of density and magnetisation and their conjugate fields
• Automatic determination and reduction of the k-point set

Magnetism
• Spin polarised calculations performed in the most general way: only (n(r); m(r)) and (vs(r); Bs(r)) are referred to in the code
• Spin symmetry broken by infinitesimal external fields
• Spin-orbit coupling (SOC) included in second-variational scheme
• Non-collinear magnetism (NCM) with arbitrary on-site magnetic fields
• Fixed spin-moment calculations (with SOC and NCM)
• Fixed tensor moment calculations (experimental)
• Spin-spirals for any q-vector
• Spin polarised cores
• Automatic determination of the magnetic anisotropy energy (MAE)
• Classical contribution of the spin and orbital dipole interaction can be added to the Kohn-Sham magnetic field

Plotting
• Band structure plotting with angular momentum character
• Total and partial density of states with irreducible representation projection
• Charge density plotting (1/2/3D)
• Plotting of exchange-correlation and Coulomb potentials (1/2/3D)
• Electron localisation function (ELF) plotting (1/2/3D)
• Fermi surface plotting (3D)
• Magnetisation plots (2/3D)
• Plotting of exchange-correlation magnetic field, Bxc (2/3D)
• Plotting of ∇⋅Bxc (1/2/3D)
• Wavefunction plotting (1/2/3D)
• Electric field (E=-∇V) plotting (1/2/3D)
• Simple scanning tunnelling microscopy (STM) imaging based on the local density of states (LDOS) (experimental)
• Current density plots (2/3D)

Forces and phonons
• Forces - including incomplete basis set (IBS) and core corrections
• Forces work with spin-orbit coupling, non-collinear magnetism and LDA+U
• Structural optimisation of both atomic positions and lattice vectors
• Iso-volumetric optimisation of unit cell
• Phonons for arbitrary q-vectors computed with density functional perturbation theory (DFPT)
• Phonons computed with the supercell method
• Phonon dispersion and density of states
• Non-analytic LO-TO splitting included for polar semiconductors using the dielectric function and Born effective charges
• Thermodynamic quantities calculated from the phonon DOS: free energy, entropy, heat capacity
• Phonon calculations can be distributed across networked computers
• Electron-phonon coupling matrices
• Phonon linewidths
• Eliashberg function, α2F(ω)
• Electron-phonon coupling constant, λ
• McMillan-Allen-Dynes critical temperature, Tc
• Eliashberg equations solved self-consistently
• Molecular dynamics within the Born-Oppenheimer approximation

Advanced
• Exact exchange (EXX) optimised effective potential (OEP) method (with SOC and NCM)
• EXX energies (with SOC and NCM)
• Hartree-Fock for solids (with SOC and NCM)
• LDA+U: fully localised limit (FLL), around mean field (AFM) and interpolation between the two; works with SOC, NCM and spin-spirals
• Reduced density matrix functional theory (RDMFT) for solids
• Bethe-Salpeter equation (BSE), including beyond the Tamm-Dankoff approximation; works with SOC and NCM
• Time-dependent density functional theory (TDDFT) for linear optical response calculations
• Time evolution of the electronic state on femtosecond time-scales with TDDFT
• Ehrenfest dynamics via TDDFT molecular dynamics for small amplitude displacements
• GW approximation spectral functions; works with SOC and NCM (experimental)
• GW spectral function band-structures (experimental)
• Ultra long-range calculations using a generalisation of the Bloch ansatz (experimental)
• Static and dynamical Born effective charges (experimental)

Miscellaneous
• Mössbauer hyperfine parameters: isomer shift, EFG and hyperfine contact fields
• First-order optical response
• Kerr angle and Magneto-Optic Kerr Effect (MOKE) output (experimental)
• Energy loss near edge structure (ELNES)
• Non-linear optical (NLO) second harmonic generation
L, S, and J expectation values
• Effective mass tensor for any state
• Equation of state fitting (with the EOS utility)
• Iterative diagonalisation with fine-grained parallelisation
• Interface to the Libxc exchange-correlation functional library

Programming
• Clean, simple code structure - ideal for development
• OpenMP parallelisation
• Message passing interface (MPI) parallelisation
• Efficient OpenMP+MPI hybrid parallelism
• Strict Fortran 2003 compliance
• Only one language used
• Free-form style input file
• Full LaTeX documentation included with every subroutine
Download
Elk is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Elk is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Elk. If not, see https://www.gnu.org/licenses/.

Elk is updated regularly with new features and bug fixes. Features not listed as experimental may be used for production but, as with any code, please check the consistency of your results carefully. The latest releases can be downloaded from SourceForge.net.

Computer memory issues
The latest versions of Elk use stack space more aggressively which can result in segmentation faults as threads exceed their stack space. To avoid this, use the following script file (elk.sh) to run elk:

#!/bin/bash
export OMP_NUM_THREADS=32
export OMP_PROC_BIND=false
export OMP_STACKSIZE=512M
ulimit -Ss 524288
~/elk/src/elk

Change the number of threads (OMP_NUM_THREADS) to be equal to the number of cores per node on your machine.

This script can be then used with MPI and ensures each process has the same environment variables. Make sure mpirun has only one MPI process per node, for example:

mpirun --mca btl openib,self,vader -bind-to none -pernode -np $NODES elk.sh

Elk can use a substantial amount of computer memory and occasionally exhaust the available RAM. To reduce the memory requirement but still keep all the threads occupied you can use:

maxthd1
 -4

This restricts the number of threads at the first nesting level to maxthd/4. Deeper nesting levels, which generally require less memory, will still utilise the full compliment of available threads.

Intel Fortran compiler bug
There appears to be a bug in versions 19.1.0 to 19.1.4 of the Intel Fortran compiler which causes Elk to crash during multithreaded reads and writes of direct-access files. See here and here.

Release notes
elk-10.1.15
-updated Elk to work with the Libxc Fortran 2003 interface and allow use of both versions 6 and 7, following this and this discussion on the forum
-minor updates and optimisations

elk-10.1.12
-new tasks for plotting the Fermi surface: task=103 writes a single smooth delta function at the Fermi energy; task=104 writes separate smooth delta functions at the Fermi energy for each eigenvalue; thanks to Wenhan Chen for adding this
-added the ultra long-range spin dipole-dipole interaction; this is enabled by setting 'tbdipu' to .true.; this is an experimental feature
-the spin dipole magnetic field can now be scaled with the variable 'bdipscf' (default 1); this applies to both the microscopic and ultra long-range fields
-Eddie Harris-Lee found a symmetry problem with the static spin-dependent vector potential; this is now fixed
-added a restart option: just create an empty file RESTART in the running directory and Elk will re-read elk.in and start again; this is useful when running on a shared computer system and you want to change an input parameter without losing your slot
-added 'tpdos' flag; set this to .false. and the partial DOS will not be calculated; this can speed up TDDFT calculations when the PDOS is not required
-fixed the Magneto-optical Kerr effect (MOKE) example in elk/examples/TDDFT-optics/Ni-MOKE
-added code documentation
-many small improvements and optimisations
-fixed a problem with the time- and k-point dependent excited charge and magnetisation written when 'tdxrmk' is set to .true.

elk-10.0.15
-considerable speed-up of most of the code thanks to improved use of the fast Fourier transform; real-time evolution is now over twice as fast
-improved DFPT phonon calculations for heavier atoms by changing how the Hellmann-Feynman derivative is evaluated
-improved symmetrisation of the phonon dispersions by enforcing time reversal symmetry
-non-analytic term for the LO-TO splitting in polar semiconductors can now be included by setting 'tphnat' to .true.; this requires that the dielectric function tensor and Born effective charges are calculated first
-new and updated phonon examples for hBC and GaAs in the elk/examples/phonons-superconductivity directory; thanks to Felix Kahlert for testing the GaAs example
-Eddie Harris-Lee added to the spin-current code
-Wenhan Chen added to the ultra long-range code
-the time- and k-point dependent excited charge and magnetisation can now be written every ntswrite steps by setting tdxrmk to .true.
-the calculated linear and non-linear optical components can now be specified with the number 'noptcomp' rather than having to list them individually with 'optcomp'
-fixed an issue with the Wannier90 spin-polarised matrix elements written to wannier.spn; the y-component had been negated
-the FFT prime factors can now be chosen with 'npfftg', 'npfftgc', 'npfftq' and 'npfftw' for the G-vector, coarse G-vector, Q-vector (for ultra long-range) and Matsubara frequency FFTs, respectively
-Mössbauer hyperfine field calculations are now more accurate

elk-9.6.8
-fixed an issue with Fermi surface plotting for the collinear spin-polarised case; the k-point set is not reduced for the collinear spin-polarised case; thanks to Wenhan Chen for discovering this
-many simplifications and optimisations in the code
-changed smallest allowed perturbation theory denominator (epsdev) from 0.005 to 0.0025 for DFPT phonon calculations
-added more examples, including the DFPT phonon dispersion of NiTe2 thanks to Jerry Li and the altermagnet CrSb thanks to Wenhan Chen
-added two more Wannier90 examples: graphene thanks to Jyoti Krishna and the spin Hall conductivity of Pt thanks to Markus Meinert
-time-dependent and k-point dependent excited density and magnetisation can now be written out by setting tdxrmk to .true.
-further optimised OpenMP parallelism
-documented all the tasks in the manual

elk-9.5.14
-Wannier90 UNK files are now written; thanks to Andrew Shyichuk for the suggestion
-made a work-around for an Intel compiler bug which occurs when extra Wannier90 data is read from elk.in; this problem was discovered by Jerry Li here
-added Wannier90 copper example thanks to Jerry Li
-improved the application of a constant electric field across the unit cell; the maximum distance over which it is applied can now be set with 'dmaxefc'
-included an example and test case for a constant electric field across the cell; the example can be found in elk/examples/electric-field/WSe2-bilayer and demonstrates band gap closure under applied high field strengths
-the average electric field in each muffin-tin is written to INFO.OUT when an electric field is applied
-added a high harmonic generation (HHG) example; see elk/examples/TDDFT-time-evolution/GaAs-HHG
-further improved OpenMP parallelism
-minor optimisations

elk-9.5.1
-fixed an issue with the scissor operator applied to TDDFT
-fixed a problem with FFTW called by several threads simultaneously; thanks to Andreas Fischer for discovering this
-task=485 (writeejw) has been removed; the frequency-dependent electric field (EFIELDW.OUT) and total current (JTOTW.OUT) are now written with task=480/481
-the Wannier90 initial projections file wannier.amn is now always written; however, the projections are set to random complex numbers; this appears to have improved the Wannierisation step
-the number of Wannier wavefunctions (num_wann) can now be less than number of bands; if num_wann ≤ 0 then num_wann → num_bands+num_wann
-updated the Wannier90 examples
-fixed an issue with the time-dependent total energy
-several OpenMP optimisations

elk-9.4.2
-further improvements to the GW code, including changing some parts to single-precision arithmetic
-fixed a problem with thread allocation discovered by Andreas Fischer and colleagues here
-replaced complex-complex FFTs to real-complex where possible
-task 485 now also outputs the frequency-dependent electric field as EFIELDW.OUT
-minor changes and optimisations

elk-9.2.12
-fixed intialisation issue with writing tensor moments via task=400 with DFT+U and inpdftu=5; thanks to Marjana Lezaic for pointing this out
-added a new feature for averaging the muffin-tin radii in order to stabilise some calculations with large variation in radii; set the variable 'mrmtav' to the order of averaging of the radii; see the manual and also the calculation of PbTiO3 here
-made improvements to the GW code
-adjusted the parameter settings used for 'stable' and 'metagga' options
-added documentation to code

elk-9.2.5
-further improved meta-GGA partial deorbitalisation; re-enabled the 'metagga' option; set this to .true. when running meta-GGA calculations and the code sets several input variables to improve convergence; see examples for details
-setting 'trimvg' to .true. (which is the default) causes only the exchange-correlation potential to be trimmed for |G| > 2 gkmax instead of the full Kohn-Sham potential; this improves the smoothness of energy-volume curves
-calculation of the BSE dielectric function (task=187) is now considerably faster and runs in parallel
-added the constant term associated with a static A-field to the total energy
-modified the findsymcrys routine so that all symmetries are found even when tshift=.false.

elk-9.1.15
-added piezoelectric and magnetoelectric tensors as tasks 380 and 390, respectively; see the examples for details; these are currently experimental features
-exchange-correlation functionals with Laplacian terms now working; this includes the deorbitalised functionals of Mejia-Rodriguez and Trickey, Phys. Rev. B 98, 115161 (2018)
-improved the meta-GGA partial deorbitalisation: it now works with the complete range of kinetic energy density functionals in Libxc (see arXiv:2304.02363)
-improved the interface to Libxc
-removed potential-only meta-GGA functionals
-time-dependent Kohn-Sham states are now orthogonlised using a singular value decomposition every 'ntsorth' time-steps in order to improve stability; the default is 1000 time-steps
-new task 485 outputs the Fourier transform of the time-dependent total current J(ω)
-new input variable 'jtconst0' will, when set to .true., zero the constant part of J(t) before the dielectric function is calculated with tasks 480 and 481
-changed large parts of the code to single-precision arithmetic including Hartree-Fock, RDMFT, OEP, GW and the linear-response functions; as a consequence the code is considerably faster
-changed relational operator symbols such as .le., .gt., etc. to '<=', '>', etc. in line with modern Fortran style
-increased maximum allowed number of files on the RAM disk to 32
-many optimisations and minor bug fixes
-added more and improved existing OpenMP parallelism
-Elk has been recognized with a Community Leader Award by SourceForge; thanks to all the users and contributors for making the code as useful as it is, as well as for making the forums a congenial place for everyone

elk-8.8.26
-molecular dynamics now available with task=420/421; see the examples in the elk/examples/molecular-dynamics directory
-simulated annealing calculations for crystal structure discovery are now possible; see the example in elk/examples/molecular-dynamics/annealing; note that this is an experimental feature
-removed the 'msmooth' option
-restored the 'trimvg' option and enabled it by default; this makes calculations more stable
-changed the 'stable' options
-structural optimisation is now more reliable
-muffin-tin radii can now increase as well as decrease during structural optimisation or molecular dynamics runs
-added examples of the coupled electron-phonon Bogoliubov equations; see elk/examples/Bogoliubov
-added a 'step' type A-field; this corresponds to a vector potential which is switched on and off at given times
-improved the iterative eigenvalue method for the first-variational step
-minor optimisations and improvements

elk-8.7.10
-fixed a problem with calculating the current density for spin-spirals; thanks to Zhiwei Li for finding this
-minor optimisations

elk-8.7.6
-fixed an issue which affects thread creation in OpenMP nested loops with libgomp, see here; this should give a considerable increase in speed for Elk compiled with GFortran
-minor optimisations and bug fixes

elk-8.7.2
-fixed problem of writing TDDFT density of states with wrtdsk=.false., discovered by Eddie Harris-Lee
-fixed problem of restarting from TDDFT backup files, found by Mila Adamska
-removed an OpenMP regression which caused substantial slow-down of TDDFT
-added more documentation
-minor optimisations and bug fixes

elk-8.6.7
-added dynamical Born effective charges (dynBEC); see Phys. Rev. B 106, L180303 (2022)
-included a dynBEC example of hexagonal boron nitride; see the elk/examples/Born-effective-charge/hBN-dynBEC/ directory
-fixed a problem with spin-unpolarised DFT+U calculations; thanks to Mike Bruckhoff for discovering this
-updated to Libxc version 6
-changed to single-precision orbitals in many routines; this should reduce memory requirements and improve speed
-removed the bundled BLAS/LAPACK and FFTPACK libraries
-removed the 'setup' script and modified the 'make.inc' file

elk-8.5.10
-improved OpenMP parallelism
-added variables to VARIABLES.OUT which are written on completion of geometry optimisation, for example 'engytot (geomopt)'
-adjusted several default parameters

elk-8.5.2
-created an interface to the kinetic energy functionals of Libxc
-further optimisation of the code
-added magnetic anisotropy energy (MAE) test
-fixed a problem of using wrtdsk=.false. with TDDFT
-various minor bug fixes

elk-8.4.30
-included the Libxc interface (libxcf90.f90) again with Elk; thanks to Michael Banck for pointing out a problem with its omission
-fixed a minor problem with electron localisation function (ELF) plots
-several small changes and optimisations

elk-8.4.21
-fixed problem with Ehrenfest TDDFT restarts (task 463); thanks to Peter Elliott for discovering this bug
-added option to avoid writing some direct access files to disk; this can be done by setting 'wrtdsk=.false.' and can speed the code up dramatically, particularly on networked filesystems; however, this can result in the code crashing for some tasks and should be used carefully!
-made some small changes (particularly to the RAM disk feature) to improve portability; tested the code with Intel, GNU, PGI, NAG and NVIDIA Fortran compilers
-parallelised the RPA dielectric function calculation (task 121) with MPI
-many optimisations and small bug fixes
-the coupled electron-phonon Bogoliubov equations method (task 270) has been published as Editors' Suggestion in Physical Review B: https://doi.org/10.1103/PhysRevB.105.174509

elk-8.4.6
-fixed problem with real-time TDDFT restarts (tasks 461 and 463); this problem occurred only very rarely for systems with particular symmetries; thanks to Antonio Sanna for finding this
-added batch calculations as a new feature; with this Elk can perform multiple runs while adjusting a particular parameter -- for example producing an energy vs volume plot; see the examples in elk/examples/batch-calculations
-input and output variables will be added to batch calculations upon request
-Yunfan Liang and Xavier Gonze discovered a problem in the non-linear optical response formalism of our work in Phys. Rev. B 67, 165332 (2003); consequently, the non-linear optics code has been completely re-written and throughly tested; see the example in /elk/examples/non-linear-optics
-the speed ultra long-range calculations has been greatly improved thanks to changes in the generation of the long-range density and magnetisation
-several minor bug fixes, optimisations and improvements
-Elk has been recognized with a Community Choice award by SourceForge; thanks to all the users and contributors for making the code as useful as it is, as well as for making the forums a congenial place for everyone
Elk

elk-8.3.22
-fixed a bug which occurred when using the OpenBLAS library with Elk's RAM disk feature; thanks to Marcin Dulak for finding this

elk-8.3.20
-included missing BLAS and LAPACK files in the package; thanks to Jagdish Kumar for pointing out the omissions

elk-8.3.15
-considerable speed-up and optimisations throughout the entire code; spin-polarised calculations in particular are substantially faster
-greatly improved the meta-GGA calculations; these no longer require a large number of empty states for good convergence and consequently run much faster; removed the 'metagga' flag; thanks to Pietro Bonfa for the careful testing
-checked and highly optimised the TDDFT+U calculations
-removed the DFT+U scheme which interpolated between FLL and AFM
-rearranged the order of phonon line width plots to match that of the phonon dispersion plots
-further improved the electron-phonon Bogoliubov method; thanks to Chung-Yu Wang for the careful testing
-rewrote much of the tensor moment code; the tensor moments are now real and exclusively of the 3-index type; the corresponding matrices Gamma_t^kpr are now Hermitian and orthonormal; see the documentation of the routines 'tm2todm' and 'tm3todm' and references therein; thanks to Leon Kerber for the extensive testing
-writing out the old convention of complex 3-index tensor moments can be enabled with 'tm3old=.true.'
-Leon Kerber also found and fixed a problem with the fixed tensor moment (FTM) code
-the input block 'tmomfix' has been removed; use 'tm3fix' instead
-included a FTM example in elk/examples/FeGd-fixed-tensor-moment
-the RAM disk is now enabled by default; if problems are encountered with this then set 'ramdisk=.false.'
-included an example for calculating the dielectric function using time evolution; see elk/examples/TDDFT-time-evolution/Si-dielectric
-added more LaTeX documentation to the code
-many small improvements and minor bug fixes

elk-7.2.42
-added new RAM disk feature which allows Elk to store direct-access files in memory and can dramatically speed up calculations; enable this by setting 'ramdisk' to .true. in elk.in
-many optimisations throughout the code
-fixed an issue with the scissors operator in optical response code (task=320, 330, 331) for materials which are nearly metallic; thanks to Peter Elliott for pointing this out
-further improved the electron-phonon mean-field code
-added variables 'scalex', 'scaley' and 'scalez' to the input file; these allow scaling of the unit cell in the Cartesian directions

elk-7.1.14
-optimised the second-variational procedure by changing the muffin-tin dot products to single-precision arithmetic; this speeds up this step by at least a factor of two for large systems without losing overall precision or stability
-removed 'mixpack', 'phmixpack' and 'mixpacku' routines; Kohn-Sham potentials and fields are now stored in a single array accessed by pointer arrays; this removes the need for packing before and unpacking after mixing
-increased speed of direct access reads by removing unnecessary 'close' statements
-added an example for the ultra long-range method; see the input file in elk/examples/ultra-long-range/Cr-SDW/
-changed the Wannier90 .win file to improve the wannierisation convergence rate
-fixed several bugs in the electron-phonon mean-field method
-updated BLAS and LAPACK to version 3.9.0
-minor improvements and bug fixes

elk-7.0.12
-Chung-Yu Wang added electron-phonon mean-field theory; this is a new method and still highly experimental
-Alyn James wrote an interface for Elk to the DMFT code TRIQS; this interface is maintained in a separate branch of the Elk code found here.
-fixed serious problem with DFT+U for dftu=3 (interpolation of FLL and AFM); this bug was introduced some time ago; we recommend that you check any previous calculations which use dftu=3
-lots of optimisations throughout the code
-further improved Ehrenfest dynamics
-added the calculation of Born effective charges using Ehrenfest dynamics (task=478); this is intended as a test for the method; Born effective charges are more accurately calculated with the King-Smith and Vanderbilt method (task=208)
-Pietro Bonfa found and fixed several problems with the calculation of Mössbauer hyperfine fields
-PB also added a new Mössbauer example: antiferromagnetic NiF2; see the examples/Mossbauer/NiF2 directory
-Ronald Cohen fixed a bug in iso-volumetric lattice optimisation
-RC also discovered a problem with the Wu-Cohen '06 GGA functional which has now been fixed
-RC also suggested an efficiency improvement to the non-linear optics code
-added tests for non-linear optics
-Antonio Sanna helped fix a bug with TD forces
-Karel Carva discovered that lmaxo should be at least 7 for phonopy calculations
-change the default ntswrite from 10 to 500 time steps in order to reduce I/O
-confirmed compatibility with Libxc version 5.1.0
-Further improved the ultra long-range code; the method has now been published:
PRL

elk-6.8.4
-Born effective charges using the method of R. D. King-Smith and David Vanderbilt, Phys. Rev. B 47, 1651(R) (1993) are now available; see the directory elk/examples/Born-effective-charge
-added Ehrenfest dynamics to the code; see the directory elk/examples/TDDFT-time-evolution/FeCo-Ehrenfest (highly experimental)
-upgraded code to be compatible with Libxc version 5; note changes to the make.inc file
-the Libxc SCAN functional no longer works with Elk, the regularised version of A. P. Bartók and J. R. Yates, J. Chem. Phys. 150, 161101 (2019) works and should be used instead; see the meta-GGA examples
-Aldo Romero and his group interfaced PyProcar to Elk and confirmed that it worked with non-collinear magnetism; PyProcar is a robust, open-source Python library used for pre- and post-processing of the electronic structure data from DFT calculations
-implemented a great many optimisations throughout the entire code; more aggressive use of the stack instead of the heap, this may require the user to increase the stack space
-added the incomplete basis set (IBS) correction to forces from time-dependent vector potential, A(t)
-fixed bug related to lattice optimisation with non-symmorphic symmetries thanks to Andrew Shyichuk and Jack Whaley-Baldwin; see here
-added several new tests, including one for the stress tensor
-updated physical constants to CODATA 2018
-fixed wavefunction and STM plotting thanks to Andrew Shyichuk
-fixed bug in GW band structure code thanks to Antik Sihi
-fixed problem with fixed tensor moment calculations
-fixed problem in TDDFT real-time restart thanks to Peter Elliott
-Peter Elliott and JKD also added Maxwell's equations for the macroscopic induced vector potential
-updated and improved the ultra long-range code
-forces are now written during a TDDFT run every 'ntsforce' time steps
-matrix sizes larger than those addressable with four byte integers can now be used with BSE and MPI
-Hartree-Fock information is now written to HF_INFO.OUT rather than INFO.OUT
-parallelised the Brillouin zone integration (brzint) which considerably speeds up DOS calculations
-modified how the potential of the optimised effective potential (OEP) iteration scheme is initialised
-removed obsolete command from ProTex Perl script
-added tests for Libxc and MPI; run 'make test-libxc' and 'make test-MPI' respectively, or 'make test-all' to test everything
-fixed problem with hybrid functionals introduced a few versions back; also added a test for hybrids

elk-6.3.2
-very large speedup of the first-variational Hamiltonian and overlap matrix setup; this is particularly apparent for large systems
-made all of the numerical radial integrals much more efficient by storing the spline integration weights; this speeds up most of the code
-switched radial integral infinitesimal from 1/3 d(r^3) to r^2dr; this improves numerical accuracy and returns to the convention of version 5.2.14
-added full (l,m) and spin characters for plotting the band structure with so-called 'fat bands'; these are performed with new tasks 22 and 23; thanks to Jagdish Kumar for the suggestion
-Jagdish Kumar also fixed a problem with the phonon thermodynamic quantities which had an unnecessary prefactor of the number of atoms; see here
-fixed a problem with occurs with constant electric fields (when efieldc is made finite) and crystals with non-symmorphic symmetries
-Michael Fechner improved the fixed spin moment code by removing the requirement that unspecified muffin-tin fixed moments are checked for symmetry compliance
-added 1D plotting of the magnetisation density, exchange-correlation magnetic field, electric field and m(r) x B_xc(r) with tasks 71, 81, 141 and 151, respectively
-added density, potential and magnetisation plotting for ultra long-range calculations with tasks 731, 732, 733, 741, 742, 743, 771, 772 and 773
-constant electric fields can now be included in ultra long-range calculations; this can be done by setting the vector efielduc
-an arbitrary external Coulomb potential can now be read in for use in the ultra long-range calculations; set trdvclr=.true. and the potential is read from the file VCLR.OUT

elk-6.2.8
-Wannier90 interface added thanks to Arsenii Gerasimov, Yaroslav Kvashnin and Lars Nordström; and based on the original work of Duc Le and Jon Lafuente Bartolomé
-the Wannier90 interface can be used to produce Hartree-Fock band structures (see example) and also works with non-collinear spin-polarised calculations
-ultra long-range (ULR) calculations now available thanks to Tristan Müller (experimental)
-self-consistent density GW calculations now available thanks to Arkardy Davydov and others; this is a new method still undergoing testing and is thus experimental
-GW density matrix can now be written to file with task=640; the natural orbitals and occupation numbers are written to EVECSV.OUT and OCCSV.OUT, respectively
-classical spin and orbital dipole magnetic fields can now be calculated and added to the Kohn-Sham field (set tbdip=.true. and tcden=.true.)
-extensive optimisations throughout the code: every task should be noticeably faster
-improved OpenMP parallelism
-improved accuracy of the Mössbauer hyperfine field calculations
-added spin and orbital dipole terms to the hyperfine field
-updated constants and conversion factors to CODATA 2018
-added Andrew Shyichuk's improved check for requirement of the Tran-Blaha constant
-variational meta-GGA functionals (like SCAN) now work with forces
-added Roger Mason's fix to make FFTW thread-safe
-René Wirnata has created the Elk Optics Analyzer that helps to visualize and post-process optics output data
-regenerated species files with lower order local-orbitals
-improved k-point convergence of the electron-phonon coupling constant for calculation of superconducting properties
-upgraded to LAPACK 3.8.0
-changed default 'radkpt' from 30 to 40
-many minor improvements and bug fixes

elk-5.2.14
-Youzhao Lan found a bug which prevented potential-only meta-GGA functionals (like Tran-Blaha) from being used; this has now been fixed
-fixed meta-GGA atomic forces; thanks to Michael Porer for pointing out the problem
-Eike Schwier discovered a conflicting MPI variable name and also reported that the code crashes when generating species files; both problems are now fixed
-linear-response TDDFT off-diagonal components for q=0 now available (experimental)

elk-5.2.10
-GW code is much improved and also faster; the Pade analytic continuation of the self-energy is more stable and reliable
-OpenMP parallelism greatly improved; nesting is now permanently switched on and the number of threads is controlled by Elk itself; this should improve scaling on hundreds of CPU cores; please report any problems you have with parallelism on the forum
-GW spectral function band-structures are now possible, such as this for silicon:

...these calculations are very expensive; the above example took around 600 CPU days; but will work for insulators, metals, non-collinear magnetic systems and so on; this feature is still experimental
-Yaroslav Kvashnin and Lars Nordström found and fixed a bug in the fixed spin moment direction code
-fully variational meta-GGA (in the generalised Kohn-Sham sense) is now running in conjunction with Libxc (experimental)
-variational meta-GGA works only with collinear magnetism; let us know if you have an idea on how to extend it to the non-collinear case
-Elk now interfaces to Libxc version 4 -- please update your library from version 2
-gauge invariant current density plots in 2D and 3D now available (tasks 372 and 373)
-the entire code is much faster, particularly advanced methods like Hartree-Fock, RDMFT, BSE and GW; this is in part due to a 'coarse' Fourier grid for the wavefunctions
-the lmaxi has been changed from 3 to 1 and several optimisations based on this have been hard-coded into Elk
-Broyden mixing (mixtype=3) is now the default; magnetic calculations will now converge using a small bfieldc or bfcmt thanks to an improved magnetisation initialisation scheme
-real-time TDDFT calculations no longer require 'nosym=.true.' but rather 'tshift=.false.' and are much faster as a consequence
-2D and 3D current density plotting now available with tasks 272 and 273, respectively
-task 480 generates a linear-response dielectric function calculation from a time-evolution run
-lots of optimisations everywhere in the code, including additional OpenMP directives
-lots of minor improvements and bug fixes
-cleaned up and improved examples
-several direct access files are not closed after reading which speeds up file I/O; please report any problems with this on the forum
Documentation
The Elk Code Manual is available, as is a manual for the Spacegroup utility. You can ask and answer questions in the Elk forums on SourceForge.net. A mailing list is available for notification of new releases, features and bugs in the code. There is also a collection of useful links.

Citation of Elk
Citation of the code is not mandatory but would be appreciated by the contributors. A reference to the Elk website using this BibTeX entry will suffice.
Contributions
Main authors and contributors
Kay Dewhurst, Sangeeta Sharma, Lars Nordström, Francesco Cricchio, Oscar Grånäs, Hardy Gross, Claudia Ambrosch-Draxl, Clas Persson, Fredrik Bultmark, Christian Brouder, Rickard Armiento, Andrew Chizmeshya, Per Anderson, Igor Nekrasov, Frank Wagner, Fateh Kalarasse, Jürgen Spitaler, Stefano Pittalis, Nektarios Lathiotakis, Tobias Burnus, Stephan Sagmeister, Christian Meisenbichler, Sébastien Lebègue, Yigang Zhang, Fritz Körmann, Alexey Baranov, Anton Kozhevnikov, Shigeru Suehara, Frank Essenberger, Antonio Sanna, Tyrel McQueen, Tim Baldsiefen, Marty Blaber, Anton Filanovich, Torbjörn Björkman, Martin Stankovski, Jerzy Goraus, Markus Meinert, Daniel Rohr, Vladimir Nazarov, Kevin Krieger, Pink Floyd, Arkardy Davydov, Florian Eich, Aldo Romero Castro, Koichi Kitahara, James Glasbrenner, Konrad Bussmann, Igor Mazin, Matthieu Verstraete, David Ernsting, Stephen Dugdale, Peter Elliott, Marcin Dulak, José A. Flores Livas, Stefaan Cottenier, Yasushi Shinohara, Michael Fechner, Yaroslav Kvashnin, Tristan Müller, Arsenii Gerasimov, Manh Duc Le, Jon Lafuente Bartolomé, René Wirnata, Jagdish Kumar, Andrew Shyichuk, Nisha Singh, Pietro Bonfa, Ronald Cohen, Alyn James, Chung-Yu Wang, Leon Kerber, Yunfan Liang, Xavier Gonze, Mike Bruckhoff, Eddie Harris-Lee, Andreas Fischer, Wenhan Chen, Jyoti Krishna

Contributing to Elk
If you have made a modification to part of the code which makes it faster, simpler or produces additional results, then feel free to send it to one of the main authors, who may then incorporate it into the main branch. Groups and individuals are actively encouraged to develop and release their own specialised versions of the Elk code under the GPL. However, in order to avoid any confusion, please use a different name for your version of the code. We suggest you append the name of your location to Elk, for example: Elk-Uppsala.

Special versions of Elk/EXCITING
Elk-TRIQS - a version of Elk which interfaces to the DMFT code TRIQS
elk-w90-improved - a version of Elk with the full interface to Wannier90
The exciting Code

Codes which interact with Elk
PH-NODE - a Python 3 based code designed for finding topological phonon nodes (branch-degenerate points) in materials using first-principles. See Comput. Phys. Commun. 303, 109281 (2024)
PyProcar - a robust, open-source Python library used for pre- and post-processing of the electronic structure data
Elk Optics Analyzer - a tool to plot and analyze optics output generated by Elk
DGrid - a program for the generation and analysis of properties on equidistant grids
ASE - The Atomic Simulation Environment
Libxc - an extensive library of LDA and GGA exchange-correlation functionals
NOMAD - established to host, organize, and share materials data
Phonopy - an open source package for phonon calculations at harmonic and quasi-harmonic levels
Get Elk at SourceForge.net. Fast, secure and Free Open Source software downloads

Last modified October 2024