FHI-aims 2021 Release – CHANGELOG
FHI-aims, version 210226
How to understand this CHANGELOG (and FHI-aims):
Here, we list is rough overview of recent changes in FHI-aims. A complete record of 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.
To understand what this CHANGELOG promises and what it does not promise, it is important to understand how FHI-aims is developed - that is, by a community of scientists in academia, working on individual projects. There is no separation between “developers” and “users”.
Thus, please understand the functionality listed below in this context. We try to make things work. However, if any particular functionality does not work exactly as you would expect, please be gentle on its original developer(s). Also research how the functionality might perhaps work in an alternative way, or consider contributing a limited fix to a particular issue back to FHI-aims. This will help the entire community. Thanks!
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 the release version 200112_2
Introduction of MPI-3 shared memory module
(Florian Merz)
- High-level routines for allocating intra-node shared memory arrays can be found in the
./src/mpi_shm.f90
file.
- When to use: Imagine every task among a node needs access to the same array. Instead of allocating the same array on each task, MPI-3 shared memory allows you to allocate a single array on the node, where all tasks of the same node have access to this array.
- Reduces the memory for target arrays by the number of tasks per node.
- Example: Take a look at the new Fock routines (version 1 or later; see below).
(Florian Merz)
- Introduction of MPI-3 intra-node shared-memory arrays
- Refactoring of the Fock code base: All routines have been moved to
./src/fock_routines
- Currently, different code improvement levels available through
calculate_fock_matrix_version <version>
in control.in
file:
- version
0
: Old (previous 2020) Fock routines
- version
1
: Current DEFAULT. New version with improved performance and reduced memory consumption.
- version
2
: Introduces blocking of the main loop in the fock routines (loop over basis functions). Again, a significant performance improvements. This version is still under testing, but will become the new default version, soon.
- version
3
: Equals version 2
with improved initialization.
- General note: The scaling of the implemented algorithm is still limited: It is still favorable to use as less as possible nodes to run most efficient.
Restructuring of SCF-Loop and Introduction of Force Correction
(Herzain Rivera, Mariana Rossi)
- The SCF-loop has been restructured. The current structure of the SCF-loop can be found at the beginning of the
scf_solver.f90
- Making use of this new structure, a new force correction has been introduced, which provides more accurate forces. The correction is rooted in “Chan, Bohnen, and Ho. PRB 47 (1993).” and “Ho, Fu, and Harmon. PRB 28 (1983)”.
- Force correction can be switched on with:
force_correction .true.
in the control.in
.
- In principle, this allows to loosen the SCF-convergence criteria, when forces are evaluated. However, the current defaults have not been changed so far (#TODO).
Real-space Symmetry for periodic systems
(Yi Yao, Olle Hellman)
- This reduces the grid size based on the symmetry of the system. Subsequently, integration and grid updates will be faster roughly by the number of symmetry operations.
- How to activate: write
rlsy_symmetry all
to the control.in
file
Libxc LDA and GGA for standard atom solver (sratom
)
(Sebastian Kokott)
- Libxc LDA and GGA functionals can now be used by the
sratom
solver to generate the corresponding basis functions.
- Still, the
override_warning_libxc
flag has to be set in the control.in
file as the functionality is still under testing.
- Note: This implementation changes slightly the results of calculations with libxc functionals. Before, all calcutaltions with libxc functionals with pw-lda basis functions. However, this implementation should now guarantee that FHI-aims internal and the corresponding libxc functional should give the same result.
Clean-up of XC functional infrastructure
(Andrew Logsdail)
- Housekeeping of the internal FHIaims xc functionals through
xc_library
- Better integration of LIBXC into FHIaims:
- Enabling LIBXC in post-processing
- Extending the functionalities of the
xc_pre
keyword
- Post-processing with hybrids
BEEF-vdW, vdw-DF2
(Andrew Logsdail)
- Completed infrastructure for vdW-DF2
- Implementation of BEEF-vdW, building on successful benchmarking of vdW-DF2.
Updates to MBD and TS methods
(Jan Hermann)
- Libmbd updated from 0.7.1 to 0.12.1 (Includes implementation of TS, available under the
vdw_ts
keyword. Full changelog at https://github.com/libmbd/libmbd/blob/master/CHANGELOG.md)
- Added vdW self-consistency for Libmbd MBD and TS (with
self_consistent=.true.
)
Enhancement Friction
(Connor Box)
- Refactoring of the friction (friction.f90) code - efficiency gain
- Added friction keywords (friction.f90, read_control.f90, dimensions.f90)
- Bugfix friction numeric disp - previous default used 0.000069 angstrom instead of the stated and intended 0.00025 angstrom.
- Updated friction documentation (section_friction.tex)
Real-Time TDDFT
(Joscha Hekele)
- Implementation details and Documentation of the whole module can be found in
./src/rt-tddft/README
- Details how to run a TDDFT calculation can be found in the manual, section “Real-Time TDDFT”.
Update frozen core valence Hamiltonian
(Victor Yu)
- More core states can be frozen now.
- Keywords for
control.in
: frozen_core_scf .true. frozen_core_scf_cutoff -200
… will treat all atomic core orbitals below -200 eV as frozen and speed up eigensolver (“solution of K.S. equations”) by a factor, without accuracy loss. Not recommended to go much above -200 eV, however.
Further Implementations/Fixes/Changes:
- Check number of basis functions in elsi_restart. Code will stop in case of inconsistent number of basis in restart file(s). (Victor Yu)
- Add atomic ZORA support for NMR shieldings (Raul Laasner)
- Update ELSI to 2.6.3 (Victor Yu)
- Implementation of the forces for the RPA method (molecules only) (Muhammad Naeem Tahir, Xinguo Ren)
- Output of Spin texture (Rundong Zhao)
- fix in memory requirement and slight improvement in performance of dielectric responses in DFPT (Mariana Rossi)
Interfaces to FHI-aims
FHI-vibes
(Florian Knoop, Thomas Purcell, Christian Carbogno)
- FHI-vibes is a python package for calculating, analyzing, and understanding the vibrational properties of solids from first principles. Please check this for more details: https://vibes-developers.gitlab.io/vibes/
- Interface allows the following tasks:
- Geometry optimization via ASE
- harmonic phonon calculations via Phonopy
- molecular dynamics simulations in NVE, NVT, and NPT ensembles
- harmonic sampling
- anharmonicity quantification
- Most of the functionality is high-throughput ready via fireworks.
GIMS: Graphical Interface for Materials Simulations
(Iker Hurtado, Sebastian Kokott)
- GIMS is a browser-based toolbox for electronic structure codes
- It supports the generation of input files, as well as the analysis and visualization of the resulting data extracted from the output files.
- Please try it here: https://gims.ms1p.org