3.17 QM/MM Embedding
Please continue to consider this functionality experimental and contact the maintainers before using it.
When simulating nanostructured surfaces, it may be favorable to avoid the standard supercell approach and rather make use of a QM/MM embedding approach. E.g. with clusters or molecules adsorbed, extensive supercells are required to avoid spurious interaction between the nanostructure and its periodic copies. This makes computations tedious.
In the QM/MM approach, one embeds a quantum mechanical (QM) region in an extended monopole field. To avoid spurious charge leakage out of the QM region positively charged monopoles in the vicinity are replaced by norm-conserving pseudopotentials [169]. Those pseudopotential files can be either generated manually with the open source program package FHI98PP [101] or downloaded from http://www.abinit.org/downloads/psp-links/lda_fhi or http://www.abinit.org/downloads/psp-links/gga_fhi.
The QM/MM approach has the huge advantage ultimately also being capable to efficiently deal with charged systems, which will be a fundamental asset for the description of surface electrochemistry or photo-induced catalysis.
When simulating surfaces, it is desirable to include a dispersion correction into the evaluation of forces. This is possible with embedded cluster methods, using the native TS-vdw [295] or any of the dispersion corrections included in the libMBD [138]. Please see the relevant sections of the manual for the keywords required for input. When using either the TS or MBD-rsSCS [8] methods from libMBD, one must set the keyword old_hirshfeld to false.
QM/MM embedding is not applicable for metal substrates for physical reasons.
Tags for geometry.in:
Tag: pseudocore(geometry.in)
Usage: pseudocore x y z
species
Purpose: Places the center of a pseudopotential at a
specified location.
x : coordinate of the pseudocore.
y : coordinate of the pseudocore.
z : coordinate of the pseudocore.
species : string defining the name of the pseudoized species; this needs to correspond to name specified in control.in .
The keyword pseudocore should be used for those particles replaced by pseudopotentials, so cations. Anions are to be treated simply as monopoles, employing the multipole infrastructure.
Tags for general section of control.in:
Only species data concerning the pseudoized species mentioned in geometry.in need to be appended in the control.in. Except for some mandatory changes (listed below) those species data are essentially the same as you can find them in the species_default folder. E.g. if you want to pseudoize for example titanium, take the default file as a template. However, the pseudoized species must not have any basis functions except for the minimal basis. The minimal basis is needed to construct the integration weights, however in order to exclude the minimal basis from the actual quantum chemical calculation, the flag include_min_basis needs to be set to .false..
Although nomenclature is misleading as it is chosen at the moment, you do NOT need the qmmm in order to make QM/MM embedding work.
[...]
species Ti_pseudo
# global species definitions
nucleus 22
mass 47.867
pseudo Ti.cpi
pp_charge 4.
pp_local_component 1
nonlinear_core .false.
include_min_basis .false.
[...]
Similar to all-electron atom, FHI-aims expects all atom specifications like mass, nucleus, information for the integration grid etc. Some additional flags need to be set so that FHI-aims is able to recognize them as pseudoized species.
species sub-tag: pseudo(control.in)
Usage: pseudo string
Purpose: Parses the name of file the Kleinman-Bylander pseudopotential
is written in
string name of file
FHI-aims expects the pseudopotential file to be in a specific formatting, namely the output format *.cpi of the generator program FHI98PP [101]. FHI98PP expects this file to be in the same folder as control.in and geometry.in.
species sub-tag: pp_charge(control.in)
Usage: pp_charge value
Purpose: Specifies the charge of the pseudoized ion.
value: any real value is allowed
pp_charge must be the charge which has been set in the generation of the pseudopotential and equals the number of pseudoized valence electrons. This parameter is needed for the far field extrapolation of the pseudopotential.
species sub-tag: pp_local_component(control.in)
Usage: pp_local_component value
Purpose: Specifies which l-channel of the pseudopotential should act as the local component.
Find a detailed theoretical background in [101].
value: integer value
The choice which l-channel should be the local component is essential for the performance of the pseudopotentials. Again, read [101] for further help.
species sub-tag: nonlinear_core(control.in)
Usage: nonlinear_core flag
Purpose: when .true. FHI-aims expects and reads in a partial core density (and partial core density gradient)
from the pseudopotential input file to take account of nonlocal core correction [205].
flag is a logical expression, either .true. or .false. Default: .false.