3.54 Deprecated keywords
The following section lists a number of keywords in FHI-aims which exist, but which may go away in future versions of FHI-aims. In some cases, this is because the relevant modifications proved successful, and there is no sense in maintaining some old, obsolete extra functionality without any use in production settings. In other cases, the relevant keywords were experiments that did not yield the anticipated success, and / or functionality that may be superseded in a different, more comprehensive way in the future.
Tags for general section of control.in:
Tag: Adams_Moulton_integrator(control.in)
Usage: Adams_Moulton_integrator flag
Purpose: Allows to switch between a simple integrator and the
higher-order Adams-Moulton integration scheme to determine the
Hartree potential components from classical
electrostatics.
flag is a logical string, either .false. or
.true. Default: .true.
Tag: batch_distribution_method(control.in)
Usage: batch_distribution_method method
Purpose: Parallel distribution of integration grid batches
only in the case that the external qhull and METIS
libraries are configured.
method is a string, the only possible value being
qhull+metis at this point.
Outsources the distribution of integration grid batches to the external qhull and METIS libraries. Only relevant if these libraries are compiled into the code. However, the associated grid_partitioning_methods are less useful than the default maxmin algorithm, and the internal work distribution method of FHI-aims usually performs rather well. Therefore, this option is deprecated and kept only for experimental purposes, for now.
Tag: communication_type(control.in)
Usage: communication_type type
Purpose: Determines the type of calculation / storage of
per-atom spline arrays of the Hartree potential for a parallel
run.
type is a string, see below. Default: calc_hartree .
In a parallel run of FHI-aims, each processor holds a certain part of the real-space integration grid, which in turn are each touched by all atom-centered multipole components (splined) of the real-space Hartree potential. So, to construct the electrostatic (Hartree) potential on each grid point, an array of splined atom-centered multipole components must be available on every MPI sub-process (see Sec. 3.7 for details regarding the electrostatic potential). The memory use to store these components grows rapidly and with a large prefactor with system size. Thus, keeping a local copy of all the splined multipole components of the Hartree potential on each CPU is not advisable.
The actual handling of these components is instead controlled
by keyword communication_type. The following choices for
option are possible:
calc_hartree : The default, and usually very efficient. Hartree
potential components for each atom are integrated on the fly on each CPU when
needed (usually less CPU time than communication time).
shmem : If compiled with shared memory support (see Section
I.2), each compute node of a parallel run keeps the
components of the Hartree potential in a separate shared memory segment,
only internode communication is needed. Performance test show hardly any
benefet over calc_hartree.
Note that the (legacy) keyword distributed_spline_storage should
be false for shmem, at least.
This keyword is superseded by the compensate_multipole_errors keyword which solves the problem of small residual charge integration errors in slab calculations much better than distribute_leftover_charge .
Keyword distribute_leftover_charge could introduce noticeable total energy inaccuracies especially for “light” integration grid settings.
Tag: force_new_functional(control.in)
Usage: force_new_functional flag
Purpose: For test purposes, allows to switch to an energy functional
form that treats the electronic and nuclear electrostatic energy
terms separately.
flag is a logical string, either .false. or
.true. Default: .true.
See Ref. [36] regarding the correct shape of the energy functional that treats the nuclear and electronic parts of the electrostatic energy together on a per-atom basis.
Tag: force_smooth_cutoff(control.in)
Usage: force_smooth_cutoff tolerance
Purpose: Optionally, enforces smoothness of all basis functions near
the cutoff radius.
tolerance is a small positive real number. Default: No
check.
If requested, keyword force_smooth_cutoff ensures that the radial function and its first and second derivatives remain below tolerance at the outermost point of the logarithmic grid where any of them is non-zero at all. The code stops if the onset of the radial function is too abrupt.
It would be a good idea to switch this option on if reducing the width parameter of keyword cut_pot to a very low value (say, below 1 Å).
Tag: grouping_factor(control.in)
Usage: grouping_factor factor
Purpose: Grouping factor for the (experimental, and not recommended!)
group grid_partitioning_method.
factor is an integer number, describing how close-by grid
points are grouped together. Default: 2.
This keyword is retained for experimental purposes only, for the moment. Since the related grid_partitioning_method group was a proof-of-concept to show that the default maxmin performs better, this keyword is now deprecated. See Ref. [128] for more details if interested.
Tag: hartree_worksize(control.in)
Usage: hartree_worksize megabytes
Purpose: Limits the size of workspace arrays used to construct the
Hartree potential on each CPU.
megabytes : The maximum allowed work space size to
construct the Hartree potential, in megabytes. Default: 200
MB.
Several large work space arrays across the integration grid are used in the construction of the Hartree potential. Their size can grow quite large, especially when forces are computed for large structures (then, three arrays per atom are required for all atoms).
FHI-aims can circumvent this by computing the final output (integrated energies and forces) in “chunks” of the whole integration grid, limiting the work space used for each chunk. This modification is especially important on low-memory-per-processor architectures such as the BlueGene.
Tag: KH_post_correction(control.in)
Usage: KH_post_correction flag
Purpose: Under construction – do not use A way to replace
the scaled ZORA post-processing correction for scalar relativity
by a Koelling-Harmon type scalar-relativistic
correction.
flag is a logical string, either .false. or
.true. Default: .false.
This keyword is no longer supported, do not use it. It will be superseded by an improved handling of scalar relativity during the s.c.f. cycle in the future.
Tag: mixer_swap_boundary(control.in)
Usage: mixer_swap_boundary bytes
Purpose: Ignored; never swap.
Used to allow to swap the stored density components
for Pulay mixing to disk if they exceed a certain memory boundary.
On few-CPU systems and for mid-sized systems (several hundred atoms), the stored electron density components from past iterations are a large part of the memory used. If this becomes a bottleneck, the stored Pulay arrays can in principle be swapped to disk, instead, to be read only during Pulay mixing.
If anyone has a strong need for this currently unsupported feature, please contact us.
Tag: multiplicity(control.in)
Usage: multiplicity value
Purpose: If set, specifies the multiplicity of the system.
Restriction: Currently available for non-periodic geometries
only. Use fixed_spin_moment instead.
value : integer number, sets the overall multiplicity as
.
Meaningful only in the spin-polarized case (spin collinear in control.in). On a technical level, this is a special case of the more general, locally spin-constrained DFT formalism available within FHI-aims (see Sec. 3.14). Note that the underlying constraint_electrons keyword can be used to enforce a non-integer fixed spin moment, in addition to allowing to fix electron or spin numbers in given subsystems
Also, be sure to check what the Kohn-Sham eigenvalues mean if you need them, do not use them blindly. multiplicity shifts the eigenvalues!
Tag: occupation_thr(control.in)
Usage: occupation_thr value
Purpose: Any occupation numbers below value will be treated
as zero.
value is a small positive real number. Default: 0.d0 .
Tag: recompute_batches_in_relaxation(control.in)
Usage: recompute_batches_in_relaxation flag
Purpose: Allows to switch off the redistribution of atom-centered
grid points into new integration batches after a relaxaton
step.
flag is a logical string, either .false. or
.true. Default: .true.
For practical purposes, the integration grid should always be repartitioned after a relaxation step; the associated overhead is low, and the shape of the batches will remain optimal in the face of individual points that “move” with different atoms.
Tag: squeeze_memory(control.in)
Usage: squeeze_memory flag
Purpose: Used to allow one combined workspace for three different
purposes.
This option is no longer necessary due to optimizations by Rainer
Johanni.
flag is a logical string, either .false. or
.true. Default: .false.
Tag: use_angular_division(control.in)
Usage: use_angular_division flag
Purpose: If radial grid shells are used as integration batches,
allows to switch off their subdivision into “octant”
batches.
flag is a logical string, either .false. or
.true. Default: .true.
This flag currently only applies to the initialization iteration, in case that self-adapting angular grids are used (not recommended; see keyword angular_acc if interested). Even then, switching off the subdivision of radial shells can only decrease the performance.
Subtags for species tag in control.in:
species sub-tag: cut_core(control.in)
Usage: cut_core type [radius]
Purpose: Can be used to define a separate (tighter) onset of the
cutoff potential for all core radial functions.
type : A string, either finite or
infinite. Default: finite .
radius : A real number, in Å: Onset radius for the
cutoff potential, as defined in the cut_pot
tag. Default: same as onset in cut_pot.
Deprecated flag because basis_dep_cutoff should supersede this functionality in a more organized way. Having a separate, tighter cutoff for core radial functions sounds like a good idea, but core radial functions are already rather localized anyway. Our experience is that the separate core setting either does not matter for CPU time, or already introduces noticeable total energy changes when it matters.