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
Usage:
Instead of using call localorb_info(info_str)
use
Case a: One-line warning message
call write_warning_message(info_str)
Case b: Many-line warning message
call write_warning_message(info_str,'start')
call write_warning_message(info_str,'continue')
...
call write_warning_message(info_str,'continue')
call write_warning_message(info_str,'end')
use_spin_texture
, implementation of
use_spin_texture_scf
, and Spin Texture Code Refactoring
(James A. Green)use_spin_texture
with ScaLAPACKuse_spin_texture_scf
(LAPACK and
ScaLAPACK). This produces output files spin_texture_scf.dat
and spin_texture_scf.out
which are the spin textures on the
SCF k-grid, and are exactly analogous in format to
spin_texture.dat
and spin_texture.out
created
by the use_spin_texture
keywordspin_texture
module, moving some routines and variables
from band_dos_mulliken
for better encapsulation, and
reducing duplicate and uneccessary code in the module.use_spin_texture
.use_spin_texture
is requested with
output band
read_control
if
atomic_zora scalar
or include_spin_orbit
isn’t
selected, since use_spin_texture
requires these.use_spin_texture
is requested without
output band
or output band_mulliken
so that it
doesn’t silently do nothing. Error message includes suggestion of new
use_spin_texture_scf
keywordfold_C
sub-option to output librpa
to reduce generated file size while retaining precision in LibRPA
calculation.E27.18
) of double precision
numbers of plain text data files.src/interface_librpa_ext.f90
get_pairwise_coeff_3fn
with more memory
efficient get_pairwise_coeff_3fn_tuned2
to generate
3-center RI-LVL coefficientsoutput librpa csthres:<float>
codata VERSION
control.in
, FHI-aims will use the
corresponding CODATA definition of the physical constants, such as
Hartree, and Bohr.VERSION
is one of the following strings:
2002
, 2018
, FHIaims_pre2024
. The
version FHIaims_pre2024
refers to the internal definitions
prior enabling this feature in 2024.FHIaims_pre2024
.cumulant_expansion
,
use_decoupling
, cumulant_eta
state_upper_limit
manually set in
control.in
for G0W0 calculation (Min-Ye Zhang).control.in
flag
periodic_gw_skip_completed_bands
which allows to check if
GW band output files exist at present working directory, and skip the
re-evaluation of corresponding bands when they are found.evscgw0
routine in both 1c
and 2c to remove redundant calculation of W0 (Qing-Long Liu).Bugfixes:
condense_basis_pair
uses
n_basis_soc_coll
. If condense_basis_pair
is
called before SOC subroutine it will generate incorrect results because
n_basis_soc_coll
does not have a value. This bug will
affect initialize_prodbas
, then ovlp_3fn
.
While using PBE0
, SOC part will keep previously generated
incorrect ovlp_3fn
, and let it go into GW part.n_high_state
bug in 2c GW. It’s not necessary to
calculate all the virtual states (Qing-Long Liu).BSE_transiton_dipole.dat
,
which contains BSE eigenvalues and the corresponding
transition_dipole
.freq_grid_type
set to 99) for periodic BSE to ensure
exactly zero frequency is used throughout the current implementation,
which adapts the static approximation.energy_qp
file, according to state_lower_limit
and
state_upper_limit
. One may not need to calculate all the
bands in GW before BSE any more.xcdm
in the
control.in
in the same way that you call
xdm
.B86bPBE0
or PBE0
functionalsxdm_init
, which is used to force XDM to
initialize properly the first time it’s called.sqrt
to dsqrt
to avoid
precision lossri_density_from_occs
is used for this purpose,
along with the user specification of an input file “eigenstate_occs.in”
that contains the custom eigenstate occupations. Crucially, these
correspond to k-point-symmetrised set of eigenstates, the eigenvalues
for which can be printed with the next keyword:output eigenstate_info
. This differs
from what is offered by keyword output postscf_eigenvalues
:
1) it involves no change in the density of the k-grid, and no
re-computation of the eigenvalues, and 2) the printed eigenstates
correspond to the k-point symmetrised set of eigenstates (if
applicable), and 3) it works for both cluster and periodic systems.output ri_density
. This reads the file
“ri_restart_coeffs.out” and uses these to evaluate the corresponding
electronic density on a cube grid.ri_ovlp_write_triu
(Joseph Abbott).
ri_skip_scf
(Joseph Abbott).
elsi_restart
), performing an SCF
initialization step to obtained the density, and then directly fitting
to the converged scalar field without running any subsequent SCF
cycles.ri_ovlp_no_write
, defaulting to
.false.
, that controls the writing of the RI overlap matrix
to file. As the overlap matrix is large and its writing costly, in cases
where RI decomposition is being performed on multiple scalar fields with
a consistent RI basis definition it is useful to be able to turn writing
off.friction_output_vibrations
. Uses finite
differences to calculate the Hessian, normal modes, phonon frequencies,
linewidths and lifetimesload_balancing
and use_local_index
control.in
species’ defaults parameter:
finite_nucleus <model>
use_local_index
+
load_balancing
) in relativistic Q4C calculations (Wentao
Zhang)A complete new set of algorithms have been introduced to enable LAPACK support for the local dense format (use_local_index + load_balancing) in relativistic q4c calculations, thereby broadening the range of feasible calculations for the relativistic q4c method in FHI-aims, which save the memory usage for q4c large periodic system calculations.
Before this merged, for the keyword (relativistic q4c), the real-space matrix implementation has support for two matrix formats, which may be classified based on whether the real-space matrix is synchronized across all MPI tasks or not (“global” and “local”, respectively) and whether the matrix is stored in a dense or (nearly) Compressed Sparse Row (CSR) format.
In summary, the relativistic q4c now supports these three formats:
PM_none
), suitable for
non-periodic systems, with LAPACK.PM_index
), suitable for both
non-periodic and periodic systems, with LAPACK.(use_local_index + load_balancing)
,
suitable for periodic systems, with LAPACK.check_use_local_index
routine. Any
calculation with use_local_index
should never start with
packed_matrix_format /= PM_index
. The check was wrongly
skipped due to a misplaced if statement. (Konstantin Lion)bands_compare.py
script, providing an RMSE value for
band structure comparison, is added to utilities
folder
(Uthpala Herath)adjust_scf_param
that can change s.c.f
parameters modified by the adjust_scf
keyword. In this
first implementation, a user can modify the default values of
charge_mix_param
and the width of the
occupation_type
variable as specified by
adjust_scf
in the low-gap and large-gap cases. (James A.
Green)n_k_points_xyz(i) * length_of_lattice_vector(i)
and compare
the ratios between non-vacuum directions. If the ratio is larger than 2
(or smaller than 0.5), we stop unless an override is specified. The
check can be skipped with override_kgrid_checks .true.
ASI_is_scf_converged()
and
ASI_get_k_points()
functions to ASI APIset_nkp_parallel
).kg_out_put_all .true.
)pcJ-0
, pcJ-1
, pcJ-2
,
and pcJ-3
basis setspcJ-4
basis sets for H to Ar in
FHIaims/species_defaults/defaults_next/nmr/pcJ-n/pcJ-4
NAO-J-n
basis sets for H to Ar in
FHIaims/species_defaults/defaults_next/nmr/NAO-J-n
dftd3_interface
module.dftd3_interface
module including better usage of module variables.initial_charge
in
geometry.in
.generalized_regular_k_grid
or
k_points_external
are used with
many_body_dispersion
/many_body_dispersion_nl
and no k_grid
values are specified for MBDmulliken_decomp
is
zeroed only in the band_mulliken
code branch.dos_kgrid_factors
with only projected DOS.dos_kgrid_factors
+ an external k-grid
(generalized_regular_k_grid
or
k_points_external
) is requested.band_mulliken
.k-grid
was specified, the
code was stopping erroneously when output realspace_esp
or
output cube
was requested if the header of
k_list.in
contained the k-point directions (for reference
only) of 0 0 0
.output cube first_order_density
with DFPT
using the old interface (dfpt_centralised .false.
)dfpt_centralised .true.
as this is currently not
implemented.occupation_type cold
in FHI-aims and ELSI, and
changed how occupation_type
is stored in FHI-aims to match
ELSI.cube_type
is specified to be
eigenstate
or eigenstate_imag
, as these are
the only quantities to depend on the k-points.geometry.in
(specified by initial_charge
keyword) is not equal to the total charge on the system, specified by
the charge
keyword in control.in
override_initial_charge_check
that disables this stop, e.g. if the initial_charge
values
are not obvious to set in geometry.in
.get_vibrations.py
DFPT dielectric
to the manual, as it
got removed at some point (James A. Green)output_rs_matrices
(Zekun Lou)LH_B86bPBE0_erfs
, LH_B86bPBE0_erfcor
(Nicholas
Boyer):