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

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.**

- 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.**

- 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.

- 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/^{-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`

.

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`

- 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.

- 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!)

- 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)

- 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.

- 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.

- 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.

- 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.