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 bandread_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.f90get_pairwise_coeff_3fn with more memory
efficient get_pairwise_coeff_3fn_tuned2 to generate
3-center RI-LVL coefficientsoutput librpa csthres:<float>codata VERSIONcontrol.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_etastate_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_indexcontrol.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-4NAO-J-n basis sets for H to Ar in
FHIaims/species_defaults/defaults_next/nmr/NAO-J-ndftd3_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.inoverride_initial_charge_check
that disables this stop, e.g. if the initial_charge values
are not obvious to set in geometry.in.get_vibrations.pyDFPT 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):