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 250822
ScaLAPACK Polarization (Elia Stocco)
- The
output polarizationkeyword has been extended to be able to be used in combination withKS_method parallel. (!2103) - This permits the calculation of the polarization for periodic calculations with up to thousands of atoms.
LibRPA Interface (Minye Zhang)
- The LibRPA
library implementing low-scaling algorithms for many-body perturbation
theory is included in the
external_librariesfolder. It is capable of performing periodic RPA and GW calculations with either a file based or API based interface (!2108 !2031 !2111) librpa_apimodule provides subroutines which compute necessary input dataset and wraps LibRPA data parsing APIs.interface_librpa_apisubroutine to perform MBPT calculation with LibRPA as backend. Currently, RPA correlation energy and quasi-particle energies on regular k-grid is supported. Please note that band structure output is currently disabled for the API interface, however it is possible in the file based interface.- FHI-aims manual section added about running RPA/GW with LibRPA as backend with either the file based or API based interface, as well as including installation instructions. The LibRPA manual is also available online.
- Additional output and matrix export for LibRPA (!2036 !1990 !1975 !1959)
- Additional control tags for file-based interface to LibRPA (Subtags
for suppressing output with
output librpa:noC,noV,novxc,novexx,nodielfunc.) (!2011)
Fully analytical G0W0 Self-Energy For Molecules (Jannis Kockläuner)
- Implements the fully analytical version of the G0W0 self-energy for
closed-shell molecules at N^6 cost in the
gw_exactmodule. (!1961) - Method can be activated with the
fully_analytical_gwkeyword. - Regression test for its usage
CO.gw_exactadded.
Constrained NEO Implementation (Songrui Liu)
- Implementation of the cNEO-DFT method for periodic DFT (!1994 !1997)
- The nuclear–electronic orbital (NEO) method incorporates nuclear quantum effects (NQE) in DFT calculations beyond the Born–Oppenheimer approximation. By incorporating additional constraints to the position operator on quantum particles like protons, the cNEO method facilitates NEO calculations with controlled nuclear localization.
- Description of the method available in Songrui Liu, Jianhang Xu, Yosuke Kanai, J. Chem. Phys., 163, (2025), 084110.
Global RI (Moritz Leucke)
- Experimental implementation of Global RI with local metric and new integration for 3-center integrals (!1968)
- global RI: all auxiliary basis functions are used to fit the codensities
- local metric: the coulomb potential can be attenuated with various functions to get linear scaling 3-center integrals
- new integration scheme of 3-center 2-electron integrals: The global RI integration is carried out with domain decomposition just like the 1-electron integrals during the SCF cycle
- GPU acceleration of the 3-center integrals in the new algorithm
Inclusion of GreenX Library (Francisco Delesma and James Green)
- The GreenX library is now built by default with FHI-aims, and additional CMake infrastructure has been added to facilitate this. (!2027 !2041)
- Only the time-frequency grids component is switched on by default,
other components (e.g.
AC_COMPONENT,LBASIS_COMPONENT,PAW_COMPONENT) can be switched on by setting these CMake variables toONin the initial CMake cache. The build of GreenX can be switched off withUSE_GREENX OFF. - Added regression tests
greenx_H2O_RPA_minimaxandgreenx_Si_RPA_minimaxfor molecular and periodic testcases, respectively. - Bumped the
cmake_minimum_versionfor the FHI-aims build to 3.15 from 3.13.
Frozen Density Embedding (Danjo De Chavez)
- Initial implementation of FDET with new keywords
qm_embedding_type,xc_nakp, andxc_naxcp(!1969 !2105) - FDET embedding potential then extended to libxc GGA functional (!2055)
- RI decomposed embedding densities and potential (!2074). This allows the decomposition of the embedding potential and densities. These objects are then expressed as linear combination of auxiliary basis which allows faster allocation of embedding potential and densities.
RT-TDDFT Improvements (Hannah Bertschi)
- Added D3 and TS dispersion corrections for Ehrenfest dynamics (!1952 !1983)
- Added Hirshfeld analysis to non-periodic RT-TDDFT (!1970)
Auto-stop if SCF Not Converging (Konstantin Lion)
- If the SCF is detected as likely to not converge, FHI-aims will stop to avoid wasting computational time. (!2016)
- Utilises SCF analysis infrastructure introduced in version 250822.
- Decision logic on whether to stop the SCF starting from 100
iterations (check can be overridden by
sc_iter_limit):- Decision point automatically set to 100 or never (free single atom, SCF iterations below 1 s)
- If the predicted steps to convergence are more than 25, we stop the SCF.
- If the predicted steps are below/equal 25: if not stalled, we continue to try and converge, if stalled, we stop the SCF
- Restart logic again after 125, 150, and 175 steps
- Stop at 175 if not converged
- Deafults can be modified with the keywords:
scf_analysis_start,scf_analysis_decision_point,scf_max_allowed_steps_at_decision,scf_max_decisions_allowed
ELSI Updated to v2.12 (James Green and Andrei Sobolev)
- Upgraded ELSI to v2.12 to benefit from upstream updates (!2015)
- Included into FHI-aims the ELSI CMake
find_package(ExternalELPA)tool, which automatically sets useful CMake variables for an externally compiled version of ELPA, such asELPA_API_VERSIONfor version specific features, and GPU kernels to allow better GPU support. - Introduced the
elsi_build_dm_methodkeyword which uses the new infrastructure in ELSI to select a particular method to build the density matrix. By default, ELSI will try to use the optimal version, depending on runtime conditions (e.g. ELPA version, CPU vs GPU) - Bugfixes for the
elsi_restartinfrastructure and regression tests to check functionality (!1998) - Upgrade of ELSI CMake minimal version to 3.5, to be compatible with CMake > 4.0 (!1964)
Initial Density Guess Improvements (James Green)
- A new algorithm to compute the occupation numbers of the free atom minimal basis used to construct the initial density matrix has been implemented. (!2077)
- It can be used with the keyword
init_atom_occs_version 2(the old version, still the default for now, isinit_atom_occs_version 1). - Initial testing of this algorithm has proved promising for reducing the number of SCF steps, and leading to a better SCF solution, by providing a better initial density guess.
- The algorithm is only relevant for
spin collinearcalculations, andspin nonecalculations whereinitial_chargevalues are specified ingeometry.in. It will also likely offer most benefit for calculations involving transition metals, lanthanides or actinides.
Implementation of ionic_solver_xc keyword (James Green)
- The
ionic_solver_xckeyword is analogous toatomic_solver_xcexcept that it applies to ionic basis functions generated in get_free_ion.f90 from a call to sratom, rather than the atomic/minimal basis functions that are generated in get_free_atoms.f90 (!2048) - Allows consistent XC choice to be used for basis functions in a calculation, if an alteration from the default is needed, such as in embASI embedding, where QM/QM calculations require consistent basis functions throughout the separate calculations.
- Previously, setting just
atomic_solver_xcmeant that only the atomic/minimal basis functions would be generated from sratom with that XC, and this could be inconsistent with the XC used to generate the ionic basis functions.
Explicit GGA XC Potential Calculation (Andrei Sobolev)
- Enabled explicit calculation of GGA exchange correlation potential in FHI-aims, as opposed to calculating the matrix element of it using the integration by parts, as shown in Eq. 30 of Blum et al, Computer Physics Communications 180 (2009) 2175–2196. (!2065 !2087)
- This improves the lowest eigenvalues for the heavy atoms (Pb, Bi) calculated on light grids (thus, also slightly improves analytical stress on the sparse grids; see issue #444 for details).
- Currently, the explicit XC potential only works for libxc functionals.
- The explicit XC is only calculated in a post-SCF step to not increase the runtime (Hessian of the density required). Tests showed that using the explicit XC potential during the SCF cycle does not change the final state and energy.
Friction and Superconductivity Improvements (Connor Box)
- Temperature scan for friction and superconductivity. Allow users to
set multiple
friction_temperaturevalues for friction and superconductivity (!2018) - Additional convenience keywords and bugfixes (!2009)
- Acoustic sum rule and symmetrise options for
friction/superconductivity Hessian (
friction_apply_asr,friction_symmetrise_hessian) - Large tensor printout can be turned off
(
friction_print_tensors) alpha2f_broadening_widthnow correctly in eV and default is now 0.01 eV correctly- The translation shift fix for the finite difference bug where an
atom crosses into a periodic image is now more elaborate. It checks if
the shift actually worked and has support for a manual shift
(
friction_translation_vec).
- Acoustic sum rule and symmetrise options for
friction/superconductivity Hessian (
- Bugfix for assignment of occupied states (!1951) and other friction bugfixes (!2082 !2035)
HTML Version of FHI-aims Manual (Konstantin Lion)
- An HTML version of the FHI-aims manual can now be generated from the TeX files, via LaTXML. (!2033 !2067)
- A single-page or multi-page version of the manual can be generated, with instructions on its use available in the FHI-aims repo Wiki page
- The multi-page version is now also available on the FHI-aims website: https://fhi-aims.org/uploads/manual/index.html
Improvements to exx_lr_approximation (Sebastian Kokott)
- Use the cut-Coulomb potential for PBE0’ functional by default, to better align with PBE0 and permit better calculations for sparse k-grids. (BREAKING CHANGE !2084)
- To restore the old behaviour, set
cut_coulomb_short_range .false. - Bugfix for
exx_lr_approximationfor range-separated hybrids (BREAKING CHANGE). The short-range component of the screened Coulomb potential for k to 0 was not treated correctly (k2/k2 term). This required an evaluation by a Tayler series. !2086
Additional New Features
- Implementation of explicit symmetrization of coordinates and lattice
vectors for
use_symmetric_forces(Sebastian Kokott !2092) - Bugfixes for constrained relaxation (Konstantin Lion !2098 !2096 !2091)
- Added keyword
cumulant_relative_outputto output the GW+C spectral function relative to the QP peak (Jannis Kockläuner !2034) - Added autodamping support for revPBE50 for XDM(BJ) and XDM(Z)
dispersion corrections. Called via
xc revpbe0andhybrid_xc_coeff 0.50, and XDM is called as normal. (Kyle Bryenton !2032) - Enable CMake variables to be accessed within the FHI-aims code via
the template routine
cmake_build_info.f90.in(Minye Zhang !2029) - Enabled
vdw_correction_hirshfeldfor relativistic q4c calculations (Wentao Zhang !1995) - Fast exact exchange energy for RPA (Moritz Leucke !1984)
- Enable export and import of BLACS distributed arrays with
use_local_index/load_balancingin ASI (Gabriel Bramley !1980) - Implemented
fixed_volumeoption torelax_unit_cellfor constant-volume relaxations (Alberto Otero de la Roza !1966 !1979 !1981) - Add GPU support and real-space grid generation to separable RI using the COSMA library (Francisco Delesma !1963)
- Implementation of PBEsol for the sratom atomic solver (Andrei Sobolev !1958)
Additional Feature Updates
- Updates to RPA forces (Muhammad Tahir !2110 !2109 !2106 !2104 !2100 !2089 !2088 !2085 !2081 !2079 !2076 !2073 !2072 !2071 !2069 !2068 !2064 !2063 !2062 !2061 !2059 !2056 !2054 !2053 !2049 !2047 !2043 !2028 !2021 !2014 !2013 !2012 !2006 !2004 !2003 !2002 !2001 !2000 !1996 !1993 !1992 !1989 !1986 !1985 !1977)
- Updates to DFPT (Muhammad Tahir !2107 !2102 !2101 !2099 !2097 !2050 !2023 !2017 !2010 !2008 !2007)
- Refactoring and simplification of the routine
evaluate_H_psi_p2(Sebastian Kokott !2095) - Increased band structure and band mulliken calculation precision from 5 to 7 decimal places (Xioquan Liu !2083 !2005)
- Change of the output level for XDM moments, volumes and polarizabilities (Kyle Bryenton !2080)
- Removal of automatic MPI alltoall setting when n_tasks>1024
(James Green !2046)
Testing by Ville Havu and Oscar Van Vuren showed no performance benefit
for this (indeed, a possible performance decrease). The setting can
still be switched on manually with
use_alltoall .true. - Better memory handling for projected density of states calculations (James Green !2025)
- Update to RT fields (Chris Shepard !1999)
- Documentation and regression test for
calculate_plasma_frequency(Mariia Pogodaeva and James Green !1967) - Increase flexibility of
sc_init_iterflag by allowing multiple restarts within a single run. Seen to be advantageous on test systems, especially involving lanthanides and “cousins”. (Mariana Rossi !1956) - Update of
lightdenseandlightdenserinspecies_defaults/defaults_nextwith the basis functions being based ondefaults_2020/light, rather thandefaults_2010/light. (Sebastian Kokott !2044) - Add regression test for
output band+dos_kgrid_factors+include_spin_orbit+use_local_index(GaAs_SOC_Gamma_band_local_index) and +load_balancing(GaAs_SOC_Gamma_band_load_balancing) (James Green !2105)
Additional Bugfixes
- Bug fixed in deltascf_projector for periodic calculations (Matthias Kahk !1897)
- Environ bugfix (Jakob Filser !1955)
- Bugfix when
output basisis requested whilefor_auxbasis exists (Minye Zhang !1954) - Bugfix for parallel calculation of exchange energy density (Nicholas Boyer !1953)
- Correction to RI renormalisation (Alan Lewis !1950)
- Correct rotational free energy for diatomics in the hessian diagonalization routine for the post-processing calculation of numerical vibrations (Gabriel Graf and Tommy Lin !1971)
- Bugfix for
turbomole_state_to_aims_format.pyutility (Qing-Long Liu !1978) - Bugfix finite nuclear models for Q4C (Thanush Patlolla !1974)
- Whitespace bugfix for ifx 25.3 compiler (Andrei Sobolev !2024)
- Stop for transport calculations with
use_local_indexas it is not supported (Konstantin Lion !2026) - Bugfix for PBEsol for spin-polarized calculations (Andrei Sobolev !2042)
- Bugfix for PZLATRA ScaLAPACK complex trace with intel toolchain (James Green !2027)
- Bugfix for
task_node_mapin MPI SHM routine (James Green !2027) - Bugfixes for improperly allocated arrays (James Green !2027)
- Bugfix for NEO RT propagation (James Green !2027)
- Bugfix for improperly set variable in RPA (James Green !2027)
- Bugfix for ASI serial import of Hamiltonians (Gabriel Bramley !2060)
- Bugfix for NEO DIIS propagation (James Green !2058)
- Improvements and bugfixes for
transportcalculations (Xingtao He !2075) - Bugfix for TREXIO with GNU compilers (James Green !2078)
- Stop for
rlsy_symmetrywith analytical stress computations for meta GGAs, as it is currently not working (James Green !2112)