mirror of https://gitlab.com/QEF/q-e.git
410 lines
15 KiB
Modula-2
410 lines
15 KiB
Modula-2
# store a short description of ATOMIC_POSITIONS card, because it is used below three times
|
|
|
|
set card_ATOMIC_POSITIONS {
|
|
card ATOMIC_POSITIONS {
|
|
message {
|
|
For the description of ATOMIC_POSITIONS card see file: @link INPUT_PW.html or INPUT_PW.txt
|
|
}
|
|
flag atompos_unit -use optional {
|
|
enum { alat | bohr | angstrom | crystal | crystal_sg }
|
|
}
|
|
}
|
|
}
|
|
|
|
set card_TOTAL_CHARGE {
|
|
card TOTAL_CHARGE {
|
|
label {
|
|
Optional card, needed only if @ref lfcp == .TRUE.
|
|
}
|
|
syntax {
|
|
list tot_charge_list -type REAL {
|
|
format { tot_charge }
|
|
info {
|
|
tot_charge is the total charge of the system.
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# standard *.def description follows
|
|
|
|
input_description -distribution {Quantum ESPRESSO} -package NEB -program neb.x {
|
|
|
|
toc {}
|
|
|
|
intro {
|
|
@b {Input data format:} { } = optional, [ ] = it depends, | = or
|
|
|
|
All quantities whose dimensions are not explicitly specified are in
|
|
RYDBERG ATOMIC UNITS
|
|
|
|
@b BEWARE: TABS, DOS <CR><LF> CHARACTERS ARE POTENTIAL SOURCES OF TROUBLE
|
|
|
|
@b {neb.x DOES NOT READ FROM STANDARD INPUT !}
|
|
|
|
There are two ways for running a calculation with neb.x:
|
|
|
|
(1) specifying a file to parse with the @b {./neb.x -inp} or @b {./neb.x -input}
|
|
command line option.
|
|
|
|
(2) or specifying the number of copies of PWscf inputs with the @b {./neb.x -input_images}
|
|
|
|
@b {For case (1)} a file containing special KEYWORDS (aka SUPERCARDS) has to be
|
|
written (see below). These KEYWORDS tell the parser which part of the file
|
|
contains the neb specifics and which part contains the energy/force engine
|
|
input (at the moment only PW). After the parsing, different files are
|
|
generated: neb.dat, with the neb specific variables, and a set of pw_*.in
|
|
PWscf input files, i.e., one for each input position. All options for a
|
|
single SCF calculation apply.
|
|
|
|
The general structure of the file to be parsed is:
|
|
==================================================
|
|
|
|
@b BEGIN
|
|
@b BEGIN_PATH_INPUT
|
|
... neb specific namelists and cards
|
|
@b END_PATH_INPUT
|
|
|
|
@b BEGIN_ENGINE_INPUT
|
|
...pw specific namelists and cards
|
|
@b BEGIN_POSITIONS
|
|
@b FIRST_IMAGE
|
|
...pw ATOMIC_POSITIONS card
|
|
...pw TOTAL_CHARGE card (only for FCP)
|
|
@b INTERMEDIATE_IMAGE
|
|
...pw ATOMIC_POSITIONS card
|
|
...pw TOTAL_CHARGE card (only for FCP)
|
|
@b LAST_IMAGE
|
|
...pw ATOMIC_POSITIONS card
|
|
...pw TOTAL_CHARGE card (only for FCP)
|
|
@b END_POSITIONS
|
|
... other pw specific cards
|
|
@b END_ENGINE_INPUT
|
|
@b END
|
|
|
|
|
|
@b {For case (2)} neb.dat and all pw_1.in, pw_2.in ... should be already present.
|
|
|
|
Structure of the NEB-only input data (file neb.dat):
|
|
====================================================
|
|
|
|
@b &PATH
|
|
...
|
|
@b /
|
|
|
|
[ @b CLIMBING_IMAGES
|
|
list of images, separated by a comma ]
|
|
}
|
|
|
|
supercard BEGIN -endtag END {
|
|
|
|
supercard BEGIN_PATH_INPUT -endtag END_PATH_INPUT {
|
|
|
|
namelist PATH {
|
|
|
|
var string_method -type CHARACTER {
|
|
default { 'neb' }
|
|
options {
|
|
info {
|
|
A string describing the task to be performed. Options are:
|
|
}
|
|
opt -val 'neb' { nudget-elastic-band }
|
|
opt -val 'smd' { string-method-dynamics }
|
|
}
|
|
}
|
|
|
|
var restart_mode -type CHARACTER {
|
|
default { 'from_scratch' }
|
|
options {
|
|
info {Options are:}
|
|
opt -val 'from_scratch' { from scratch }
|
|
opt -val 'restart' { from previous interrupted run }
|
|
}
|
|
}
|
|
|
|
var nstep_path -type INTEGER {
|
|
info {
|
|
number of ionic + electronic steps
|
|
}
|
|
default {
|
|
1
|
|
}
|
|
}
|
|
|
|
var num_of_images -type INTEGER {
|
|
default { 0 }
|
|
info {
|
|
Number of points used to discretize the path
|
|
(it must be larger than 3).
|
|
}
|
|
}
|
|
|
|
var opt_scheme -type CHARACTER {
|
|
default { 'quick-min' }
|
|
options {
|
|
info {
|
|
Specify the type of optimization scheme:
|
|
}
|
|
opt -val 'sd' {
|
|
steepest descent
|
|
}
|
|
opt -val 'broyden' {
|
|
quasi-Newton Broyden's second method (suggested)
|
|
}
|
|
opt -val 'broyden2' {
|
|
another variant of the quasi-Newton Broyden's
|
|
second method to be tested and compared with the
|
|
previous one.
|
|
}
|
|
opt -val 'quick-min' {
|
|
an optimisation algorithm based on the
|
|
projected velocity Verlet scheme
|
|
}
|
|
opt -val 'langevin' {
|
|
finite temperature langevin dynamics of the
|
|
string (smd only). It is used to compute the
|
|
average path and the free-energy profile.
|
|
}
|
|
}
|
|
}
|
|
|
|
var CI_scheme -type CHARACTER {
|
|
default { 'no-CI' }
|
|
options {
|
|
info {
|
|
Specify the type of Climbing Image scheme:
|
|
}
|
|
opt -val 'no-CI' {
|
|
climbing image is not used
|
|
}
|
|
opt -val 'auto' {
|
|
original CI scheme. The image highest in energy
|
|
does not feel the effect of springs and is
|
|
allowed to climb along the path
|
|
}
|
|
opt -val 'manual' {
|
|
images that have to climb are manually selected.
|
|
See also @ref CLIMBING_IMAGES card
|
|
}
|
|
}
|
|
}
|
|
|
|
var first_last_opt -type LOGICAL {
|
|
default { .FALSE. }
|
|
info {
|
|
Also the first and the last configurations are optimized
|
|
"on the fly" (these images do not feel the effect of the springs).
|
|
}
|
|
}
|
|
|
|
var minimum_image -type LOGICAL {
|
|
default { .FALSE. }
|
|
info {
|
|
Assume a "minimum image criterion" to build the path. If an atom
|
|
moves by more than half the length of a crystal axis between one
|
|
image and the next in the input (before interpolation),
|
|
an appropriate periodic replica of that atom is chosen.
|
|
Useful to avoid jumps in the initial reaction path.
|
|
}
|
|
}
|
|
|
|
var temp_req -type REAL {
|
|
default { 0.D0 Kelvin }
|
|
info {
|
|
Temperature used for the langevin dynamics of the string.
|
|
}
|
|
}
|
|
|
|
var ds -type REAL {
|
|
default { 1.D0 }
|
|
info {
|
|
Optimisation step length ( Hartree atomic units ).
|
|
If @ref opt_scheme=="broyden", ds is used as a guess for the
|
|
diagonal part of the Jacobian matrix.
|
|
}
|
|
}
|
|
|
|
vargroup -type REAL {
|
|
var k_max
|
|
var k_min
|
|
default { 0.1D0 Hartree atomic units }
|
|
info {
|
|
Set them to use a Variable Elastic Constants scheme
|
|
elastic constants are in the range [ k_min, k_max ]
|
|
this is useful to rise the resolution around the saddle point.
|
|
}
|
|
}
|
|
|
|
var path_thr -type REAL {
|
|
default { 0.05D0 eV / Angstrom }
|
|
info {
|
|
The simulation stops when the error ( the norm of the force
|
|
orthogonal to the path in eV/A ) is less than path_thr.
|
|
}
|
|
}
|
|
|
|
var use_masses -type LOGICAL {
|
|
default { .FALSE. }
|
|
info {
|
|
If. TRUE. the optimisation of the path is performed using
|
|
mass-weighted coordinates. Useful together with quick-min
|
|
optimization scheme, if some bonds are much stiffer than
|
|
others. By assigning a larger (fictitious) mass to atoms
|
|
with stiff bonds, one may use a longer time step "ds"
|
|
}
|
|
}
|
|
|
|
var use_freezing -type LOGICAL {
|
|
default { .FALSE. }
|
|
info {
|
|
If. TRUE. the images are optimised according to their error:
|
|
only those images with an error larger than half of the largest
|
|
are optimised. The other images are kept frozen.
|
|
}
|
|
}
|
|
|
|
var lfcp -type LOGICAL {
|
|
see { fcp_mu }
|
|
default { .FALSE. }
|
|
info {
|
|
If .TRUE. perform a constant bias potential (constant-mu) calculation with
|
|
- ESM method (assume_isolated = 'esm' and esm_bc = 'bc2' or 'bc3' must be
|
|
set in SYSTEM namelist) or
|
|
- ESM-RISM method (assume_isolated = 'esm' and esm_bc = 'bc1' must be set
|
|
set in SYSTEM namelist, and trism = .TRUE. must be set
|
|
set in CONTROL namelist).
|
|
|
|
@ref fcp_mu gives the target Fermi energy.
|
|
See the header of PW/src/fcp_module.f90 for documentation
|
|
}
|
|
}
|
|
|
|
var fcp_mu -type REAL {
|
|
see { lfcp }
|
|
default { 0.d0 }
|
|
info {
|
|
If @ref lfcp == .TRUE., gives the target Fermi energy [eV].
|
|
One can specify the total charge of the system for the first
|
|
and last image by giving @ref TOTAL_CHARGE cards
|
|
so that the Fermi energy of these systems will be the target value,
|
|
otherwise @ref first_last_opt should be .TRUE.
|
|
For the initial charge of intermediate images, the @ref TOTAL_CHARGE
|
|
is linearly interpolated between the initial and the final ones
|
|
unless the @ref TOTAL_CHARGE is given in the input file.
|
|
}
|
|
}
|
|
|
|
var fcp_thr -type REAL {
|
|
see { lfcp }
|
|
default { 0.01D0 V }
|
|
info {
|
|
The simulation stops when the error ( the maximum of the force
|
|
acting on the FCP in V ) is less than fcp_thr.
|
|
}
|
|
}
|
|
|
|
var fcp_scheme -type CHARACTER {
|
|
see { lfcp }
|
|
default { 'lm' }
|
|
options {
|
|
info {
|
|
Specify the type of optimization scheme for FCP:
|
|
}
|
|
opt -val 'lm' {
|
|
Line-Minimization method.
|
|
}
|
|
opt -val 'newton' {
|
|
Newton-Raphson method with diagonal hessian matrix.
|
|
Also, coupling with DIIS.
|
|
}
|
|
opt -val 'coupled' {
|
|
Coupled method with ionic positions.
|
|
This is available only if @ref opt_scheme == 'broyden',
|
|
or 'broyden2'.
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
#
|
|
# CLIMBING_IMAGES
|
|
#
|
|
|
|
card CLIMBING_IMAGES {
|
|
label {
|
|
Optional card, needed only if @ref CI_scheme == 'manual', ignored otherwise !
|
|
}
|
|
|
|
syntax {
|
|
list climbing_images_list -type INTEGER {
|
|
format { index1, index2, ... indexN }
|
|
info {
|
|
index1, index2, ..., indexN are indices of the images to which the
|
|
Climbing-Image procedure apply. If more than one image is specified
|
|
they must be separated by a comma.
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
supercard BEGIN_ENGINE_INPUT -endtag END_ENGINE_INPUT {
|
|
message {
|
|
Here comes the pw.x specific namelists and cards (see file: @link INPUT_PW.html or INPUT_PW.txt)
|
|
with the exception of @ref ATOMIC_POSITIONS cards, which are specified separately within the
|
|
@ref BEGIN_POSITIONS/END_POSITIONS supercard as described below.
|
|
|
|
So the input that follows here is of the following structure:
|
|
|
|
@b &CONTROL
|
|
...
|
|
@b /
|
|
@b &SYSTEM
|
|
...
|
|
@b /
|
|
@b &ELECTRONS
|
|
...
|
|
@b /
|
|
...
|
|
}
|
|
|
|
supercard BEGIN_POSITIONS -endtag END_POSITIONS {
|
|
message {
|
|
NB:
|
|
Atomic positions for all the images are specified within the @ref BEGIN_POSITIONS / END_POSITIONS
|
|
supercard, where each instance of @ref ATOMIC_POSITIONS card is prefixed either by @ref FIRST_IMAGE,
|
|
@ref INTERMEDIATE_IMAGE, or @ref LAST_IMAGE keywords.
|
|
IF @ref lfcp == .TRUE., total charges for all images have to be specified with @ref TOTAL_CHARGE cards.
|
|
|
|
Note that intermediate images are optional, i.e., there can be none or any number of
|
|
@ref INTERMEDIATE_IMAGE images.
|
|
}
|
|
supercard FIRST_IMAGE {
|
|
eval $card_ATOMIC_POSITIONS
|
|
eval $card_TOTAL_CHARGE
|
|
}
|
|
|
|
optional {
|
|
supercard INTERMEDIATE_IMAGE -remark {
|
|
There can be any number (including zero) of INTERMEDIATE_IMAGE supercards.
|
|
} {
|
|
eval $card_ATOMIC_POSITIONS
|
|
eval $card_TOTAL_CHARGE
|
|
}
|
|
}
|
|
|
|
supercard LAST_IMAGE {
|
|
eval $card_ATOMIC_POSITIONS
|
|
eval $card_TOTAL_CHARGE
|
|
}
|
|
}
|
|
|
|
message {
|
|
Here can follow other @b pw specific @b cards ...
|
|
}
|
|
}
|
|
}
|
|
}
|