3.1 Usability (convenience)

This section is only intended for functionality that fits none of the other categories (which are all scientifically / technically motivated). These files and keywords affect the general user convenience / experience for FHI-aims.

As an exception, this section also lists any files which may be used to interact with a running instance of FHI-aims. Currently, only two such files exist, but in principle, more could be envisioned.

Files that interacting with the running code:

 

Tag: abort_scf(file)

Usage: At the command line, use the Unix command touch abort_scf in the current working directory of a running instance of FHI-aims to trigger a controlled stop of the run later.
Purpose: If the file abort_scf is found in the current working directory of FHI-aims, the present run will be aborted after the next s.c.f. iteration is complete (but importantly without achieving self-consistency).

This functionality allows FHI-aims to stop in a controlled fashion, but not instantly. If you are interested in an instant stop, the Unix ’kill’ command (or its equivalent in the queueing system of a production machine) is the best way to proceed. See Sec. 2.5 for some further remarks.

 

Tag: abort_opt(file)

Usage: At the command line, use the Unix command touch abort_opt in the current working directory of a running instance of FHI-aims to trigger a controlled stop of the run later.
Purpose: If the file abort_opt is found during a geometry relaxation in the current working directory of FHI-aims, the present run will be aborted after the next s.c.f. cycle is complete (i.e., afer achieving self-consistency for the present geometry, but without fully optimizing the structure).

This functionality allows FHI-aims to stop in a controlled fashion, but not instantly. If you are interested in an instant stop, the Unix ’kill’ command (or its equivalent in the queueing system of a production machine) is the best way to proceed. See Sec. 2.5 for some further remarks.

 

Tag: control.update.in(file)

Usage: Allowed content of this file is a fairly limited subset of what is allowed and parsed in control.in. Details below.
Purpose: FHI-aims checks for presence of this file in the current working directory at the end of each individual iteration of the SCF cycle. If the file is found, it is parsed, and found settings are updated. Note that if you do not remove the file manually, it will be parsed after each iteration. But with the current limited functionality, this should not pose any problems.

This file allows to modify some of the parameters of a calculation during runtime of FHI-aims. At present, this is limited to the settings of the convergence of the SCF cycle, namely: sc_accuracy_rho, sc_accuracy_eev, sc_accuracy_etot, sc_accuracy_potjump, sc_accuracy_forces, sc_accuracy_stress.

Tags for general section of control.in:

 

Tag: check_cpu_consistency(control.in)

Usage: check_cpu_consistency flag
Purpose: In parallel runs, determines whether the consistency of geometry-related arrays is verified explicitly between different MPI tasks.
flag is a logical string, either .false. or .true. Default: .true.

This flag is introduced as default purely to monitor and possibly undo errors that should not happen. Theoretically, all MPI tasks of a given FHI-aims run should have the same atomic coordinates and lattice vectors. In practice, it appears that certain hardware and/or compilers/libraries introduce bit flips between different instances of what is formally the same variable on different CPUs.

If check_cpu_consistency is .true., the code checks for deviations.

If the discrepancy is numerically negligible (below the value set by the tolerance parameter cpu_consistency_threshold, the code will work based on the assumption that the observed discrepancy is a platform-dependent artifact, will set all instances of the geometry to that stored on MPI task myid=0, and continue the run. Nonetheless, a warning will be printed in the output file and near the end of the output.

If the discrepancy is larger than the tolerance parameter cpu_consistency_threshold, the code will stop and inform the user.

 

Tag: cpu_consistency_threshold(control.in)

Usage: cpu_consistency_threshold tolerance
Purpose: In parallel runs, determines the degree to which inconsistencies of geometry-related arrays will be tolerated between different MPI tasks.
tolerance : A small real numerical value, positive or zero. Default: 10-11.

See keyword check_cpu_consistency. If check_cpu_consistency is .true., then keyword cpu_consistency_threshold determines the maximum value to which discrepancies of geometry-related quantities between different MPI tasks will be tolerated (they will, however, be set to identical values even if the run continues).

 

Tag: check_stacksize(control.in)

Usage: check_stacksize flag
Purpose: Determines whether a check of stack size is performed.
flag is a logical string, either .false. or .true. Default: .true.

By default, FHI-aims checks that unlimited allocation on stack are allowed by the operating system. This option allows to disable this check.

 

Tag: codata(control.in)

Usage: codata VERSION
Purpose: If set in control.in, FHI-aims will use the corresponding CODATA definition of the physical constants, such as Hartree or the Bohr radius.
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. Default: FHIaims_pre2024.

Currently, two CODATA sets are implemented:

The selection of a specific CODATA set will slightly change numerical values written in the main output file, e.g., all output values that are given in eV and Bohr radii. This keyword is especially helpful when combining FHI-aims with other frameworks that use different CODATA sets.

 

Tag: dry_run(control.in)

Usage: dry_run
Purpose: If set in control.in, the FHI-aims run will only pass through all preparatory work to ensure the basic consistency of all input files, but will stop before any real work is done.

This keyword is useful to check the consistency of input files with the same exact binary that may later be used in a series of (perhaps queued) production runs. If there are trivial errors in the input files, no need to wait for the queue. The same effect can be achieved by building a ’parser’ binary, but this version saves the recompilation. The price is that one must not forget to comment out the dry_run option in the actual, queued input files.

 

Tag: override_cpu_checks(control.in)

Usage: override_cpu_checks flag
Purpose: Bypass automatic CPU compatibility and heterogeneous hardware detection checks that may terminate execution when potentially problematic hardware configurations are detected at runtime.
flag is a logical string, either .false. or .true. Default: .false.

This flag allows users to bypass CPU compatibility checks that are performed automatically at runtime to ensure consistent and reliable calculations across different hardware configurations.

By default (override_cpu_checks .false.), FHI-aims performs the following CPU compatibility verifications:

  • Comparison between build-time CPU and runtime execution CPU

  • Detection of heterogeneous CPU configurations within compute nodes

  • Verification of identical CPU architectures across multiple nodes

When CPU mismatches between build-time and runtime are detected, FHI-aims issues warnings but continues execution.

However, when heterogeneous hardware configurations are detected (different CPU types within a node or across nodes), FHI-aims will terminate execution by default. Such configurations can lead to unpredictable numerical behavior and incorrect results due to differences in floating-point implementations, instruction set capabilities, and architecture-specific compiler optimizations.

Setting override_cpu_checks to .true. disables these protective measures and allows execution to continue regardless of detected hardware incompatibilities.

Caution: Use this override only if you fully understand the implications and are confident that your specific hardware configuration will not affect calculation accuracy. Running on heterogeneous hardware may produce numerical errors that are difficult to detect. For production calculations, we strongly recommend using homogeneous hardware configurations rather than relying on this override.

Subtags for species tag in control.in:

 

species sub-tag: cite_reference(control.in)

Usage: cite_reference string
Purpose: Triggers the addition of a specific citation to the end of the FHI-aims standard output for a given run.
string is a string that identifies the reference in question.

This feature is useful, e.g., to make sure that the literature reference for a given basis set (encoded in the species_defaults input file) is available at the end of an FHI-aims run.

Each citation must, however, be coded into the FHI-aims source code in module applicable_citations.f90 to ensure that the requested output is actually available. Note that the practical format for such references can vary widely – from a simple string (explanation who did the work) all the way to the more usual case of a journal reference.

At the time of writing, species-related legitimate values of string are:

  • NAO-VCC-2013 for reference [327], describing the NAO-VCC-nZ basis sets for valence-correlated calculations of elements H-Ar (useful for basis set extrapolation for many-body perturbation methods, e.g., MP2, RPA, RPT2, or GW).