Elk is updated regularly with new features and bug fixes. Features not listed as
may be used for production but, as with
any code, please check the consistency of your results carefully. The latest
releases can be
elk2.3.16
DFT+U now works with multiple entries per atom; every mention of LDA+U has
now changed to DFT+U to reflect the generality of the method, and to give it
an air of respectibility; for example, the block 'lda+u' is now 'dft+u'; old
input files will still work fine
greatly improved the magnetic anisotropy energy (MAE) calculations, thanks
to suggestions by various users; the crystal is now rotated instead of the
magnetisation direction
fractional atomic species can now be generated on the fly using the 'fspecies'
block; see the example 'fractionalspecies'; note that the atomic mass is
only an estimate in these species files; this is useful for the virtual
crystal approximation (VCA)
spinorbit coupling can now be used with strictly collinear calculations by
using 'cmagz=.true.'; this will speed up the calculation considerably; use
only when the system is genuinely collinear
unstable noncollinear GGA calculations can now be stabilised by setting
'ncgga=.true.'
improved the speed and stability of the lattice vector optimisation; thanks
to
forum discussions regarding BaTiO3
added the lattice optimisation of BaTiO3 to the examples directory; thanks to
David Tompsett
geometry optimisation should now work fine with MPI
added highly converged osmium example 'Osconvergence' thanks to a
lengthy discussion on the forum started by Marcin Dulak; also increased
the value of 'lmaxmat' for the 'highq' option thanks to Marcin's careful testing

Important: greatly improved the code setup and compilation thanks to suggestions by
Marcin Dulak; all compiler options are now in the file 'elk/make.inc'; the
Makefile in 'elk/src' no longer requires modification
new variable 'rotavec' available in elk.in; this is a rotation specified in
axisangle convention which allows the rotation of the crystal axes
thanks go to Rich Martin and collaborator Wen for useful testing and suggestions
improved the DFPT phonon calculations and added the example 'NbphononDFPT'
decreased the chance of accidentally triggering the convergence indicator in
the selfconsistent loop thanks to a suggestion from Markus Meinert
fixed problem with the routine 'nonlinopt',
pointed out by user Sabrina and Koichi Kitahara
improved the OpenMP efficiency in parts by using '$OMP ATOMIC' instead of
'$OMP CRITICAL'
changed the names of various internal subroutines; for example 'seceqnfv' is
now 'eveqnfv'
thanks go to Igor Mazin, Konrad Bussmann and James Glasbrenner for some very
useful improvments
fixed problem with species generation and MPI pointed out by Marcin Dulak
fixed problem with use of Fortran 'APPEND' flag
thanks to user Alaska
updated the fundamental constants and conversion factors to CODATA 2008
recommended values

Important: updated code for compatibility with Libxc version 2.2.0;
see the manual and note the change in compilation instructions
fixed problem with the routine 'energyfdu' which affected DFT+U calculations
with 'inpdftu=4' (input of Yukawa screening length)

Important: temporarily switched of the conversion of the Hamiltonian
to a real symmetric problem because of possible bug; the only effect of this
is that the code is slower for systems with inversion symmetry; this will be
fixed in the next release
minor bug fixes and optimisations
elk2.2.10
fixed problem reported by Sonu Sharma and Michael Fechner with calculation of
expectation values L, S and J
slightly improved the magnetic anisotropy energy (MAE) calculation
added new variable 'socscf' which scales the spinorbit interaction term in
the Hamiltonian; this allows calculation by interpolation of the MAE for
cases where the MAE is small
added new variables to VARIABLES.OUT
elk2.2.9
fixed problem with fixed spin moment (FSM) calculations
pointed out by Jagdish Kumar
added new output file VARIABLES.OUT; this is for developers wanting to
interface their codes to Elk; it contains most of the useful variables
required for reading the Elk binary files; if you would like a variable added
then just send me a mail; enabled when 'wrtvars' is set to .true.
minor cosmetic changes
elk2.2.8

Important: fixed serious bug discovered by Jan Balluff and Markus Meinert which
produced erroneous magnetic moments with GGA; this only affects version 2.2.5;
sorry about that
even more substantial speedups for most parts of the code
fixed MPI problem with the magnetic anisotropy energy (MAE) routine reported by
Konrad Bussmann and José A. FloresLivas
minor bug fixes and improvements
elk2.2.5
dramatic speedup for most parts of the code thanks to some (fairly obvious)
optimisations
greatly improved lattice vector optimisation
automatic determination of the magnetic anisotropy energy (MAE) with 'task=28'
(
experimental); see the example 'FeCoMAE'
the variable 'nempty' is now a real number; see manual entry
magnitude of total magnetisation vector written to MOMENTM.OUT
improved the species files
made the linearisation energy search more reliable
reduced the annoying 'linearisation energy not found' warning
elk2.2.1
added full structural optimisation; setting 'latvopt=1' performs unconstrained
optimisation of the lattice vectors; 'latvopt=2' performs isovolumetric
optimisation; see the examples 'Gelatticeopt' and 'MgB2latticeopt'
minor bug fixes and optimisations
all tests should now report 'Passed'
elk2.1.25
fixed several problems with the previous (beta) release; thanks to Markus
Meinert for the exhaustive checking
magnetic hyperfine fields are now correctly calculated thanks to MM
added missing items to the manual
added the example 'SiphononDFPT'
thanks to Kari Ruotsalainen, Aleksay Golovchan and Vladimir Nazarov for pointing
out bugs in 2.1.22  now fixed
added estimation of direct gap to INFO.OUT; thanks to user Sean for
suggesting this
this is the version that will be used for the Elk Tutorial
see you in Lausanne!
elk2.1.22 (beta)

Important: this is a
beta version and should not be used for
production work; a production release will be made in a few weeks

Important: this version is
not backwards compatible; calculations
will have to be converged from scratch
density functional perturbation theory (DFPT) phonons now available; only for
spinunpolarised calculations at the moment; spinpolarisation will be added
for the next release; use with task=205; still
experimental and generates incorrect results
for certain symmetries  we're still working on this; see the
example 'AlphononDFPT'
full frequencydependent magnetic response function now available; works with
noncollinear magnetism, etc.; use task=330; see example 'Nimagneticresponse'
iterative diagonalisation greatly improved; now uses the method of
P. Blaha, et al., J. Comp. Phys. 229, p453 (2010)
upgraded code to handle
libxc version 2
hybrid functionals should now work with libxc (
experimental)
upgraded LAPACK to version 3.4.2
block name
dos changed to
wplot; changed variable 'nwdos' to
'nwplot'
variable 'gmaxrpa' changed to 'gmaxrf'; this is the response function
Gvector cutoff
BSE and TDDFT now faster, more accurate and memory efficient; thanks to
M. Meinert for discussions
task 188 changed to 320
reintroduced the variables 'lmaxinr' and 'fracinr'; this improves stability
lots of optimisations
added more MPI parallelism
various minor bug fixes
conduction state localorbitals can now be switched on; use 'lorbcnd=.true.';
this can improve both groundstate and response function calculations; this
is switched on automatically when 'highq=.true.'
most species files have been changed; mostly larger muffintin radii

Important: Markus Meinert suggested a change to 'nempty'; this variable
now represents the number of states per atom and spin; this scales automatically
as the number of atoms is increased
default 'nempty' is now 4
M. Meinert changed the default Broyden parameters after extensive testing
LN fixed bug in XCrysDen Fermi surface plotting
LN also reduced the number of states which contribution to the Fermi surface
plot to the minimum
supercell phonon calculations can now be restarted with 'task=202'
Frank Wagner discovered a bug which affects certain types of symmetries in
rare instances; this has now been fixed

Important: default smearing function is now FermiDirac (stype=3)
entropy contribution now added to the total energy
default smearing width reduced to 0.001 Ha, corresponding to room temperature
M. Meinert added a blockstocolumns script; this is in the 'utilities'
directory
Oscar Grånäs added to list of main authors
elk1.4.22
Important: fixed bug in BSE calculations owing to incorrect rotation
of dielectric function matrix elements; thanks to Arkardy Davydov for pointing
this out
BSE is now three separate tasks: 185 writes the BSE Hamiltonian to file,
186 diagonalises the Hamiltonian and 187 produces the BSE dielectric function;
thanks to Markus Meinert for suggesting this
adiabatic local density approximation (ALDA) for linearresponse TDDFT now
available; see example 'diamondTDDFTALDA'
added Markus' suggestion that the TranBlaha constant can now be read in with
the variable 'c_tb09'
added new variable 'highq'; set this to .true. and the most important
parameters are set for a highquality, wellconverged calculation; see the
settings in the file 'readinput.f90'; thanks to Igor Mazin for all the testing
removed the variables 'lmaxinr' and 'fracinr' as they were unnecessary
simplified TDDFT routines

Important: the variable 'radkpt' has been redefined and should be made
larger by 2π ; (sorry about this, the original scale for this variable
was correct!)
fixed problem with MPI that caused some LDA+U runs to crash; thanks to
Alaska Subedi for pointing this out
added documentation
several minor bug fixes and optimisations
elk1.4.18
Important:fixed severe bug affecting spinunpolarised native GGA functionals,
thanks to Jiji Pulikkotil for pointing out a
problem with Mg3Sb2 which led to its discovery; this now makes structural
optimisation truly variational for PBE

Important:fixed severe bug affecting spinpolarised 'libxc' GGA functionals
thanks to Miguel Marques and Silvana Botti for the weeklong collaboration
at Université Lyon where, amongst other things, we rewrote the metaGGA
interface to 'libxc'
thanks to Markus Meinert for careful testing of metaGGA with various systems
MM also added questions and answers to the FAQ
metaGGA now works for collinear magnetism only: it is inconsistent with
noncollinearity
Henning Glawe pointed out a bug affecting the generation of the kpoint set
when 'autokpt=.true.'

Important: the variable 'radkpt' has been redefined and should be made
smaller by a factor of 2π
SS fixed a bug in the plotting of spinpolarised Fermi surfaces
electron momentum density now available with 'task=170'; thanks to
S. Dugdale and D. Ernsting for discussions
lattice vectors, atomic positions and muffintin magnetic fields can now be
randomised by setting the random amplitudes 'rndavec', 'rndatposc' and
'rndbfcmt' to positive values; this is useful for checking stability of a
calculation
the kpoints corresponding to the indirect bandgap are now reported to 'INFO.OUT'
lots of optimisations and simplifications
elk1.4.5
potentialonly metaGGA now available in conjunction with Libxc as an
experimental feature; see the example 'SimetaGGA';
thanks to Miguel Marques for discussions
finite qvector linear response TDDFT now available thanks to SS

Important: variable 'autormt' has been removed and automatic
scaling of the muffintin radii is now
always on;
a new simpler algorithm for computing the radii was implemented; nonoverlapping
muffintins will
not be rescaled; calculations may need to be reconverged
changed parameter for estimation of the nuclear radius from Z to A; thanks to
Giorgio Concas for pointing this out
KohnSham band gap written to 'GAP.OUT' after each iteration
3D nesting function plot now available; use 'task=105'
fixed problem with a constant in the BSE exchange term
fixed problem of TDDFT freezing with MPI
lots of optimisations and simplifications
elk1.3.31
fixed problem with OpenMP 'reduction' clause in calculation of dielectric
function
no other changes
elk1.3.30
removed factor of 2 from the BSE exchange term, this has little effect on
spectra in the optical range; spotted by Markus Meinert after careful
investigation of corestate BSE spectra
M. Meinert also improved the 'CaOBSEcore' and 'FeXMCD' examples
fixed problem with symmetry discovered by Alexey Baranov
calculation of the partial DOS is now parallel, thanks to suggestions from
Anton Filanovich
various optimisations; including some ideas from Anton Kozhevnikov
iterative diagonalisation is now much faster
improved the adaptive mixing scheme
improved the initial stability of the selfconsistent loop, thanks to
discussions with Lars Nordstrom
Notes for developers
inverse indices from 'idxis', 'idxia', 'idxil' and 'idxim' for species, atoms
and angular momenta are now available, thanks to A. Kozhevnikov
the arguments to hmlaa, hmlalo, hmllolo, olpaa, olpalo, olplolo have changed
elk1.3.24
Antonio Sanna fixed a problem with the Pade approximant used in the Eliashberg code
SS fixed a problem in Fermi surface plotting with OpenDX
no other changes
elk1.3.22
fixed a problem which occurs with version 10 of the Intel compiler
simplified the 'setup' script and added OpenMP compiler options by default
no other changes
elk1.3.20
added directionality to the TDDFT code; thanks also to Vladimir Nazarov for
discussions
a preprint is now available for the new TDDFT 'bootstrap' kernel:
arXiv:1107.0199v1 [condmat.mtrlsci]
added the scissor correction to the RPA inverse dielectric function in EPSINV_RPA.OUT
fixed a problem with running geometry optimisation with MPI; thanks to
Arkady Davydov and Antonio Sanna for discussions
geometry optmimisation has changed: now the geometry, interatomic distances,
final total energies and forces are stored for each optimisation step in
GEOMETRY_OPT.OUT, IADIST_OPT.OUT, TOTENERGY_OPT.OUT and FORCES_OPT.OUT
removed geometry optmisation from the groundstate calculation and put it in
a separate subroutine
reduced pseudocharge density constant (lnpsd) because the spherical bessel
function order could be
too large; may change total energies slightly
qpoints and weights written to QPOINTS.OUT
minor changes and optimisations
elk1.3.15
fixed serious bug introduced in the last version affecting some tasks
(for example DOS plots) for crystals with nonsymorphic symmetries; thanks
to Vladimir Nazarov and Daniel Rohr for pointing this out
VM also fixed the graphene example, in which the atomic coordinates were
(embarrassingly) incorrect; also included a highprecision DOS plot to
demonstrate the Diraclike band structure
SS, JKD, Antonio Sanna and Hardy Gross added a new TDDFT functional, called
the 'bootstrap' kernel, which produces remarkably good linear optical
response functions (article currently in preparation); see the example
'LiFTDDFT'
Antonio Sanna added the Eliashberg equations for finding the superconducting
gap as a function of temperature; see the example 'AlEliashberg'
improved the electronphonon coupling calculation (task=240); this is
faster, more accurate and now works for spinspirals; now also parallelised
with MPI
removed packed matrix format everwhere in the code, along with the variable
'tpmat'; the firstvariational matrices are now stored in upper triangular
format; this takes more memory, but is faster
Anton Kozhevnikov fixed a small problem with calculating the nuclearnuclear
energy
various optimisations, simplifications and minor bug fixes
this version of the code with be used in the CECAM Tutorial
Notes for developers
the order of indices for the q and wdependent inverse dielectric function,
epsinv, have changed from (w,G,G') to (G,G',w)
elk1.3.2
linear response timedependent density functional theory (TDDFT) now available
for calculating the q>0 dielectric response; see the example 'LiFTDDFT'
(
experimental)
fixed a problem with the BSE calculation which made the response function too
large
added the possibility of using arbitrary states in the BSE kernel thanks to
discussions with Markus Meinert; this enables the calulation of core state
BSE spectra; see the example 'CaOBSEcore'
(
experimental)
MM also added an xray magnetic circular dichroism (XMCD) example: 'FeXMCD'
BSE calculations are now faster, thanks to discussions with MM
Alexey Baranov made several changes to the structure factor code, including
adding an energy window, 'wsfac', for the calculations; see the example
'MnOstrfactors'
Tyrel McQueen suggested a way to speed up the HartreeFock calculation; this
has been implemented and also considerably speeds up OEP and RDMFT
TMcQ also made some ongoing changes to the hybrid functional code
made the radial Dirac and Schrodinger integrators yet more stable; thanks to
AB and Frank Wagner for discussions
fixed a problem with the ordinary RPA dielectric function; only affects
calculations which have a scissor shift which made epsilon slightly too
small
real symmetric diagonalisation now used for the firstvariational eigenvalue
problem for crystals with inversion symmetry; this can speed up the
calculation by a factor of three; this is thanks to discussions with Lars
Nordstrom;
Important: the atomic basis may
be shifted to a different position and old output files may need to be
reconverged
fixed a stability problem which occurs when using GGA functionals by removing
Gvector truncation of the effective potential introduced in version 1.0.16;
thanks to
Greg Walker for discovering this
LDA+U calculations are now faster thanks to fast evaluation of the atomic
density matrix
Broyden mixing scheme now available: this seems to be both fast and stable
(use 'mixtype=3')
removed Anderson mixing
improved starting guess for the density in groundstate calculations
upgraded to LAPACK 3.3.1
various optimisations and simplifications
Notes for developers
the arrays haa, halo, hlolo, oalo, ololo are now smaller and the indexing
has been rearranged
elk1.2.20
the BetheSalpeter equation (BSE) for linear optics now works beyond the
TammDankoff approximation (use 'bsefull=.true.')
RPA and BSE calculations now use full wavefunctions instead of plane waves
removed the Coulomb regulator from the calculation of RPA dielectric function,
instead used the analytic results for the head and the wings of the matrix
(thanks to Vladimir Nazarov for discussions)
improved the stability of radial Dirac and Schrodinger integrators (thanks to
Alexei Baranov, Frank Wagner and Ondrej Certik for discussions)
added more block descriptions to the manual (thanks to various people for pointing
out omissions)
various optimisations
elk1.2.15
SS and JKD added the BetheSalpeter equation (BSE) for linear optics
calculations. This feature works with LDA+U, magnetism and spinorbit
coupling. It is also parallelised with MPI and can be run across a cluster.
See the 'LiFBSE' and 'SiBSE' examples. Currently an
experimental feature
Alexey Baranov added density and magnetic structure factors: see the
'MnOstrfactors' example
AB also fixed a problem with output of the spacegroup code
full frequency and G vector dependent RPA inverse dielectric function now
available with 'task=180'. Works with metals, insulators, magnetism and SOC,
and can be calculated for arbitrary complex frequencies. Also parallelised
with OpenMP and MPI. Thanks to Anton Kozhevnikov for discussions
added lots more MPI parallelism and made the code more MPIfriendly
many optimisations across the whole code
Simone Chiesa, Anton Kozhevnikov and Adolfo Eguiluz found a problem in the
plotting of the partial DOS which has now been fixed
the firstvariational eigenvalue matrices can now be stored and diagonalised
in nonpacked storage mode: use 'tpmat=.false.'. This can speed up calculations
at the expense of memory
Tyrel McQueen found a bug in the 'findprim' routine, now fixed
TMcQ also suggested a change to how the code connects the points of
the 'plot1d' vertices
Martin Stankovski suggested that 'ecvcut' be made into an input variable, allowing
the corevalence cutoff to be adjusted
added the phonon calculation of Ni to the examples
Jerzy Goraus contributed a script for calculating VBXPS spectra from PDOS* files;
and also one for converting the Wien2K struct file to spacegroup.in
modified some species files thanks to tests done by J. Goraus
Henning Glawe suggested including the version number in the release directory
upgraded to LAPACK 3.3.0
made tolerance for finding the linearisation energies (epsband) much smaller:
this improves the overall stability of the selfconsistent loop
Notes for developers
arguments to 'genppts' have changed; also the nonreduced kpoints are now
stored in the remaining part of the reduced kpoint arrays
elk1.1.4
message passing interface (MPI) parallel runs now available; scalable to
hundreds of cores across a cluster; can also be used as hybrid OpenMP+MPI
parallelism for maximum efficiency; with thanks to Bhagawan Sahu for help
with testing; see manual for compilation and running instructions
S. Sharma added susceptibility tensor for nonlinear optical secondharmonic
generation (SHG); see example 'GaAsNLO' for details
added spinorbit correction to momentum matrix elements; affects linear and
nonlinear optics
optical calculations now work in combination with spinspirals
updated interface to version 1.0 of the ETSF exchangecorrelation library,
libxc; thanks to M. Marques and T. McQueen for assistance
fixed bug spotted by T. McQueen involving using multiple tasks in conjunction
with 'primcell=.true.'
A. Kozhevnikov fixed bug in 'xc_pwca.f90'
A. Kozhevnikov also fixed serious bug in 'getevecfv.f90'
F. Cricchio changed the order of lattice vector angles in 'spacegroup'
utility to 'bc, ac, ab' which corresponds to the convention alpha, beta, gamma
removed scissor correction from eigenvalue solver; now it is used, as
before, only in optics calculations
T. McQueen suggested an improvement to the routine which generates the path
in reciprocal space for bandstructure plots, 'connect.f90', which has been
implemented
fixed problem with XCrysDen Fermi surface plots, spotted by FC
various optimisations and simplifications
Notes for developers
arguments to 'zpotcoul' have changed in anticipation of linearresponse phonons;
should now be called in conjunction with 'genzvclmt'
elk1.0.17
fixed problem with Fermi surface generation introduced in the last version
E. K. U. Gross added to list of main developers
no other changes
elk1.0.16
fixed problem in linear optics calculations for metals  thanks to Antonio
Sanna, Fabio Bernardini and Sandro Massida for pointing this out
FC and LN added option for automatic determination of APW linearisation
energies (use 'autolinengy=.true.')
Marty Blaber made a script which allows for semiautomatic labeling of the
vertex locations with gnuplot (found in the 'elk/utilities' directory)
FC and LN fixed problem with some compilers when writing FERMISURF.OUT
FC and LN fixed problem with writing XCrysDen Fermi surface plots
Anton Kozhevnikov found and fixed a problem with the generation of the
irreducible representation file 'ELMIREP.OUT'
Torbjörn Björkman added a new routine which automatically determines the
smearing width from the kpoint density. See 'autoswidth' in the manual and
the example 'Nbautoswidth' for details
added a constant electric field
E in the form of a sawtooth potential: set the
vector 'efieldc' (
experimental)
added a constant vector potential
A to the Hamiltonian to generate constant
currents: set the variable 'afieldc' (
experimental)
FC and LN fixed problem with a spinpolarised GGA routine
FC and LN pointed out that the energy term associated with the
excess charge compensating background should be zero. This term has now been
removed
code now more memory efficient thanks to smarter array allocation
the variable 'rgkmax' can now be made arbitrarily large without risk of
instability
removed variable 'cfdamp'
Anton Kozhevnikov pointed out that the radial functions were being redundantly
calculated for equivalent atoms  now fixed
Anton Filanovich added several questions to the
FAQ
scissors correction (given by the variable 'scissor') now applied consistently
immediately after the generation of the eigenvalues
FC and LN removed the spherical harmonic transform matrices with rank lmmaxapw
added dielectric function calculation for arbitrary
qvector, see 'LiFYambo'
example (
experimental)
by setting 'gmaxvr=0', the
Gvector cutoff for the potential and density is
automatically determined from 'gmaxvr=2*gkmax+epslat'
various bug fixes, simplifications and optimisations
elk1.0.115
internal releases only
elk1.0.0
Tyrel McQueen and JKD incorporated the ETSF exchangecorrelation functional library
Libxc into Elk
 see the manual for installation instructions. This is still an
experimental feature
Fixed problem with noncollinear GGA: this feature should still be considered as
experimental
GGA now faster and more accurate
FC and LN included an estimation of the band gap at each iteration
FC and LN parallelised the DOS routine
SS updated the RDMFT code and added spectral output
SS made the RDMFT code more memory efficient
fixed problem with the Mössbauer hyperfine fields and in doing so also
allowed the core states to be spinpolarised (use
spincore=.true.)
added a Mössbauer hyperfine field example (FeMossbauer)
removed
evalmin and replaced it with a check if the lowest eigenvalue
is less than the lowest linearisation energy
Marty Blaber parallelised part of the dielectric routine and JKD also parallelised
the generation of momentum matrix elements
FC and LN fixed a symmetry problem when using
reducebf
FC and LN included the possibility of summing the partial DOS over m: just set
dossum=.true. and the PDOS files will only contain the lresolved DOS
fixed linearisation energies can now be determined automatically thanks to FC:
just set
autolinengy=.true.
Important:
gkmax is now determined from
rgkmax using the
average muffintin radius, rather than the smallest
completely removed the
species program and incorporated the code
directly into Elk. See the
species directory and the ununhexium example
improved and regenerated all the species files (thanks to discussions with
S. Massidda) and set all atomic masses to best known values
improved the spherical covering used for the spherical harmonic transforms (SHT):
replaced the "Saff and Kuilaars" spiral with the "golden section" spiral. This
results in faster convergence with respect to lmax
removed the input variable
vacuum: the box containing the molecule
now has to be set up by the user when
molecule=.true.. See the
NaClmonomer example

bfcmt read in after the atomic positions in the
atoms block
is now optional
alphabetised the list of subroutines in the Elk manual and added hyperlinks
various optimisations and simplifications
enabled the Elk Wiki pages: Anton Kozhevnikov is the Wiki administrator
upgraded license to GPL version 3
Elk now officially out of beta