FHI-aims CHANGELOG
How to understand
this CHANGELOG (and FHI-aims):
Here, we list a rough overview of recent changes in FHI-aims. A
complete record is available directly through the FHI-aims GitLab. Every
user is welcome and encouraged to gain access to the FHI-aims GitLab.
The GitLab repository is also the location where bug fixes, improvements
etc. will be made available.
A final general note: Please have a look at the growing Wiki in the
FHI-aims GitLab. You’ll find helpful information about compiling and
running FHI-aims: https://aims-git.rz-berlin.mpg.de/aims/FHIaims/-/wikis/home
Changes since release
version 240920_1
- Bugfix for sign of D3 forces (James Green).
- Removal of optional (unit testing) dependencies of s-dftd3 library
(toml-f, mstore and test-drive), due to issues with Intel 2020 compilers
(James Green).
- Bugfix for generalized_regular_k_grid for geometry optimizations
(Sebastian Kokott)
- Add DFPT related infrastructure checks to
check_use_local_index_conflicts (Konstantin Lion)
Changes since release
version 240920
- Add documentation for
fock_matrix_nodes_per_instance
,
fock_matrix_instances_per_node
, and
fock_matrix_blocking
keywords (Sebastian Kokott).
- Bugfix for band mulliken filenames (Sebastian Kokott).
Changes since release
version 240507
XDMrv4 and
B86bPBE0 Implementation (Kyle Bryenton)
XDM implementation now also stores optimal damping parameters for
different basis sets (before, only stored for lightdense). A detailed
description is added to the FHI-aims manual.
Usage: Specify your basis beside the xdm keyword, e.g.
xdm tight
or xdm lightdense
. XDM detects your
functional and hybrid_coeff automatically Then, XDM uses the optimal
damping parameters for this basis / functional / hybrid_coeff
combination.
Additional Features:
- Added warnings when appropriate
- Implemented cubic fits so damping parameters may be obtained
for
- any value of hybrid_coeff when used with PBE0 or B86bPBE0
- Support for 6 different basis function defaults (previously: 1)
- Support for 10 different functionals (previously: 7)
- Updated default damping parameters
Warning: This change lost some backwards compatibility.
Before, if XDM was used without specifying optional parameters, it set
the damping parameters to the lightdense defaults. Now, XDM will default
to using tight damping parameters.
Initial
D3 implementation via s-dftd3 library (James A. Green)
- Compute Grimme's D3 dispersion correction via s-dftd3 library
- Usage: To use D3 with its stored default parameters, just put
d3
into control.in
. The advanced syntax for
the d3
is described in the manual.
- Compilation of D3 and its dependencies is optional, default OFF for
NVHPC compilers due to bugs in this compiler suite, and default ON for
all other compilers
- Add an interface to fhi-aims via dftd3_interface.f90 as well as
stubs for when the s-dftd3 library+dependencies are not compiled
Warning: This functionality has not yet undergone extensive
testing, and should be regarded as experimental. Please be aware that
some keywords/defaults may be subject to change as this is further
developed.
Band
unfolding implementation (Jingkai Quan, Christian Carbogno)
- Implementation of an efficient band unfolding for numeric
atomic-centered orbital basis with both Lapack and Scalapack version.
Related files are
bz_unfolding.f90
,
bz_unfolding_scalapack.f90
and
bz_unfolding_base.f90
. Documentation and tutorial will be
added in the future.
Generalized
Regular k-grids via autoGR (Sebastian Kokott and Andrei Sobolev)
- autoGR
is an implementation for the generation of generalized regular k-point
grids. The feature can be used by specifying in control.in (instead of
k_grid
or k_grid_density
)
generalized_regular_k_grid [FLOAT]
, where
[FLOAT]
is number of k_points per inverse cubic Angstrom
(1/\AA^{-3}).
- Hybrid Functionals: the grids can be either automatically
constructed with the autoGR library, or read from the files
k_list.in
and T_bvk.in
. The file
T_bvk.in
contains the transformation matrix that creates
the BvK cell that was used to generate the k-grid in
k_list.in
.
COOP with chembond (Izumi
Takahara)
aims_chembond is a post-processing tool to perform crystal
orbital overlap population (COOP) analysis. To compile the executable
specify set(USE_COOP ON CACHE STRING "")
in your cmake
cache file. The following projections are available:
- atom-projected DOS
- atom pair COOP
- orbital pair COOP
- atom-orbital pair COOP
Usage: In control.in
, specify
output coop_set
. This creates the two files
eigenvec.out
and coop_set.out
. Create another
input file control_chembond.in
with, e.g., the following
content:
output pdos -20 20 401 0.3
atom 1
atom 2
output coop -20 20 401 0.3
atom_pair 1 2
orbital_pair 3 18
atom_orb_pair 1 3s 2 3p
Bond partitioning (Lukas
Hoermann)
- Added a script for bond partitioning and updated the makefile in the
MODOS directory.
- Added a new section "Projections of the DOS" to the documentation
which covers the MODOS, COOP/MOOP, and bond partitioning functionalities
found in the MODOS directory.
Update ELSI to v2.11.0
- For a list of all changes, see CHANGELOG
- Changes in ELSI that are relevant for the current release of
FHI-aims:
- Removed internal ELPA 2023 and ELPA 2024 versions and defaulted to
version 2020. We have not been able to create a fully
platform-independant version of the source code of the 2023+ versions.
For versions above 2023 an external compilation of ELPA ON THE EXACT
NODE USED FOR COMPUTATION will be required for now.
- Adjusted chemical potential determination in ELSI's determination of
occupation numbers. k-point weights for very dense k-space grids are now
handled with higher numerical precision by re-weighting ahead of charge
norm determination. In the case of a sufficiently large energy band gap,
ELSI now places the chemical potential value halfway between HOMO (VBM)
and LUMO (CBM) if possible.
- Added variables to elsi_handle that specify the definition of
fractional occupation numbers (vs. integer) and that communicate the
method of chemical potential determination (specified by fractional
occupation numbers, mid-point between HOMO/LUMO, or no midpoint
placement possible while keeping the exact charge norm) back to the user
code.
- Added subroutine find_homo_lumo_gap to calculate the HOMO, LUMO
levels and the gap.
- Fixed stalling during density matrix calculation by setting
n_states_solve to be used across all tasks.
- Implemented a more flexible scheme for using GPU strings in ELPA.
This also resolves the silent failing of GPU offloading inside ELPA
introduced in a previous commit. (Thanks to Alberto Garcia!)
Further developments:
- Fixed one leak and one potential leak for MPI shared memory windows
(Florian Merz)
- Added a new option with
elsi_restart write/read_and_write scf_converged
(Konstantin
Lion)
- Bugfix for uneven core distribution hybrid/HF (James A. Green)
- Updated CD-WAC defaults: Update the broadening for reference
frequency in CD-WAC to improve numerical stability and changed CD-WAC
fit from quadratic to linear (Jannis Kockläuner)
- Replace the lightdense species defaults in
defaults_2020
with those used in the Chem. Sci., 2023, 14,
1252-1262 XDM paper (Kyle Bryenton, James A. Green)
- Update LibRPA interface to support band structure calculation (Minye
Zhang)
- Use packed storage for export of hermitian hamiltonian matrix via
ASI (Pavel Stishenko)
- Updates and fixes to dos_kgrid_factors for symmetry_reduced_k_grid.
Enable dos_kgrid_factors for hybrid functionals. (James A. Green)
- Consistency checks of the k-grids for slabs and 1D system
(Konstantin Lion)
- Do not sort the product basis by default (James A. Green)
- A new output option: output k_eigenvalue_decompose to dump kinetic,
hartree, xc and exx-hf contributions to KS eigenvalue in
eigen_decomposed.dat file. (Minye Zhang)
- Set gap to 0 if fractional occupation has been detected (Volker
Blum, Sebastian Kokott)
- If a system has gap, the chemical potential is now placed at the
mid-point between HOMO and LUMO. (Uthpala Herath)
- Add revpbe0 hybrid functional (Sebastian Kokott)
- Massively parallel implementation of RPA force using scalapack
(Muhammad Tahir)
- Print out the basis functions in cube files via
cube basis_function n
where n
is the number of
the basis function. (Nicholas Boyer)
- Support for Fractional occupations for Electric field response of
non-periodic systems (Connor Box)
- Implement Kubo-Greenwood formula to calculate charge
conductivity/mobility with Fourier interpolation. (Jingkai Quan,
Christian Carbogno)
- Implementation of
dos_kgrid_factors
for
species_proj_dos
and atom_proj_dos
(James A.
Green)
- Set
adjust_scf
default to
adjust_scf always 2
: The new default will check the system
character for every geometry step. (Volker Blum)
- Fix break of periodic GW band calculation with only Gamma point
(Minye Zhang)
- Refactoring the projected DOS routines; collating the band and DOS
routines together in the
out_plot_band_dos
folder (James A.
Green)
- Two-component G0W0 with Hedin shift, eigenvalue self-consistent GW0
(ev scGW0) as well as ev scGW for molecules has been added. (Qing-Long
Liu)
Changes since release
version 231212_1
DFPT (Connor Box)
- A "unified interface" for DFPT has been created, affecting
calculations employing the keywords:
DFPT vibration
,
DFPT vibration_reduce_memory
, DFPT phonon
,
DFPT phonon_reduce_memory
, DFPT polarizability
and DFPT dielectric
.
- These calculations now are called using the keywords
electric_field_response DFPT
,
atomic_pert_response DFPT
and
calculate_friction DFPT
.
- By default, these calculations now use a common DFPT module rather
than separate implementations.
- There may be some performance changes. These changes should make the
code more readable and future proof.
- The previous behaviour should be recoverable by employing
dfpt_centralised .false.
- Legacy capabilities provide warning messages to indicate that they
will soon be retired, and are no longer supported.
- Some DFPT keywords have changed case to be more consistent, these
include:
DFPT_sc_accuracy_dm
-->
dfpt_sc_accuracy_dm
, DFPT_mixing
--->
dfpt_mixing
- The manual has been updated to reflect these changes. Please report
any issues you come across.
Periodic GW (Minye Zhang)
- Implemented
periodic_gw_self_energy_restart
keyword to
allow read/write correlation self-energy to redo analytic continuation
and solving quasi-particle equation for periodic G0W0. Added relevant
regression testcase NaCl_G0W0_read_selfe
.
- Implemented
periodic_gw_full_matrix
keyword to switch
on the calculation of full self-energy matrices for periodic G0W0 and
self_energy_matrix output
keyword to export them in ELSI
CSC format. Added relevant regression testcase
C_G0W0_full_sematrix
.
- Ensure that periodic GW calculation runs only when requested with
band
and/or gw_regular_kgrid
output keywords
switched on.
- Implemented spectral function calculation in periodic G0W0 based on
diagonal approximation of self-energy matrix.
Hybrid
DFT band structure calculations (Andrei Sobolev)
- Enable band structure calculations for hybrid functionals with small
s.c.f. k-grids, down to Gamma point only.
- Implemented check for safe lower bounds of the s.c.f. k-grid in the
hybrid band structure calculation.
- Bug fixes in the Fourier interpolation of Fock matrix elements.
exx_band_structure_version 1
is now the default for
hybrid band structure calculations.
Further developments:
- Performance enhancements for RPA forces for solids (Muhammad
Tahir).
use_local_index
is set to .true.
by
default if a large-scale calculation is requested, with a large-scale
calculation defined as one with 100 or more atoms (Konstantin
Lion).
- Added check and warning for charge integration error. Stop the code
if deviation to total charge exceeds 1E-5. Check can be disabled by
setting override_error_charge_integration .true.
in control
file (Konstantin Lion).
- Scalapack functionality has been added for the
dos_kgrid_factors
keyword. Existing code has been
refactored to utilise many of the same routines as band structure
calculations. Bug fix for hybrid functionals when combined with
symmetry_reduced_k_grid = .true.
(James Green).
- Restructuring of external libraries to all appear in the
external_libraries
folder (Sebastian Kokott).
- Added periodic PBE0 test case
MgO_pbe0
(Sebastian
Kokott).
- Bug fixes for emptium 2020 species defaults (Sebastian Kokott).
- Bug fixes for
load_balancing
(Sebastian Kokott).
- Bug fix for nonlocal core correction forces (Gabriel Bramley).
- Implemented
hf_exchange_mat
output keyword to export
k-space EXX matrices in ELSI CSC format. Implemented ELSI CSC matrix
comparison in testsuite backend (Minye Zhang).
- Internal ELSI updated to commit 2d8fdec1.