1
Changes with respect to the development snapshot 'siesta-trunk-462':
5
* Changes in the analysis of the electronic structure
6
* Merge code for interoperation with Wannier90
7
* Merge code for 'server' operation via sockets and i-PI interface
8
* Replacement of license-encumbered routines by new ones
9
* Fix shortcomings in reading of empirical potential block
10
* Added restart file for smooth continuation of annealing runs
11
* Updated gnubands and grid2cube programs.
13
-------------------------
15
*** Changes in the geometry used for the analysis of the electronic
16
structure, as well as in the handling of the density matrix (DM) and
20
NOTE: This patch will _slightly_ change the output
21
of most calculations and the detailed results of any
22
post-processing. Keep this in mind if you need to maintain coherency
23
within a project. See the rest of the text for ways to restore
24
backward compatibility.
27
This is the initial patch in a long-overdue clarification work related
28
to the "outer geometry loop" in Siesta and its interaction with the
29
analysis of the electronic structure.
31
The most important changes, following the actual refactoring logic, are:
33
* Superfluous calls to 'superx' to propagate the new coordinates to
34
the auxiliary supercell in 'siesta_move' have been removed, as they
35
are already issued by 'state_init'.
37
* The above change has the side effect of leaving inconsistent sets of
38
unit cell and supercell coordinates in 'siesta_analysis' if the unit
39
cell coordinates used in the latter are those 'moved' by the
40
geometry-update routines. To avoid this, and to do the analysis
41
using the actual coordinates used in the computation of the
42
electronic structure, the coordinates are reset to those values
43
(using the *_last arrays) in 'siesta_analysis'. The old behavior
44
can be recovered by using by setting the backward compatibility
45
switch 'compat-pre-v4-dynamics' to 'true'.
47
* To guarantee that the DM and H used in the analysis correspond to
48
the latest electronic structure computed, there should be no mixing
49
at the end of the scf loop. This behavior, which was optional until
50
now (controlled by the value of scf-mix-after-convergence) is now
51
the default. The use of DM_out instead of DM_mixed provides also a
52
truly variational total-energy and more consistent forces. If the
53
scf cycle is carried out mixing H, H(DM_in) is recovered by
54
re-setting H to Hold in siesta_forces at the end of the cycle.
56
Also, to preserve the original H for analysis it is necessary to
57
avoid overwriting it in post_scf_work. This is now done by default,
58
except if the option 'scf-recompute-h-after-scf' is 'true'.
60
There is another switch for pre-v4.0 compatibility in this context:
61
If 'compat-pre-v4-dm-h' is 'true', the 'scf-mix-after-convergence'
62
and 'scf-recompute-h-after-scf' options are activated too.
64
Some comments have been added to siesta_forces to document possible
65
further clarifications.
67
* For clarity, each MD or geometry-optimization flavor has now its own
68
self-contained logic block in 'siesta_move'. This has uncovered a
69
few issues that have been corrected:
71
- The quenched forms of the Verlet and Parrinello-Rahman (PR)
72
schemes, which are actually relaxations, did not check for
73
convergence before moving the atoms (PR did not check at any
74
point). Now the 'constrained' forces and stress are checked
75
before invoking the routines. In the case of PR, a 'target stress'
76
can optionally be subtracted from the constrained stress (a
77
further form of constraint that was previously only available
78
(internally) in the standard relaxation routines). A future update
79
might put all these constraint conditions in 'fixed', but care
80
should be taken to study their interaction with the MD
81
variable-cell routines. A future revision might look into the
82
effectiveness of the variable-cell routines.
83
There is a new example in Tests for quenched MD relaxation.
85
- The geometry output in 'siesta_move' is now exclusively done for
86
checkpointing purposes, and typically involves the 'moved'
87
geometries. The current geometry output is done in 'state_init',
88
and any final output in 'siesta_analysis'.
90
- Some output calls have been removed where they did not make much
91
sense (as in the FC or server blocks).
93
- The deprecated 'phonon' support has been removed.
95
* Siesta_analysis outputs the 'current' final geometry, and not the
96
'moved' one. The old behavior can be recovered by using the
97
'compat-pre-v4-dynamics' switch.
99
* The default 'dynamics' option has been changed from 'verlet' to 'CG'.
100
There should really be a new 'single-point' default which completely
101
avoids 'siesta_move'. The old behavior can be recovered by using the
102
'compat-pre-v4-dynamics' switch.
104
* Single-point calculations do not write .STRUCT_NEXT_ITER files, and
105
the coordinates in the XV file are the current ones, unmoved.
106
Extra output in siesta_options is avoided for this case.
108
* The headings for the beginning of the dynamics blocks are now
111
*** Merge code for interoperation with Wannier90
113
(Javier Junquera, after work by Richard Korytar, and Alberto Garcia)
115
Siesta can now read the .nnkp file produced by Wannier90 and output
116
the *.amn, *.mmn, *.eig (see below), and UNK* files needed by
117
post-processing with that program, which generates maximally-localized
120
The most relevant changes in the code needed to support this
121
functionality are detailed below. For practical guidance, see the
122
manual, the simple test in Tests/wannier, and the suite of Wannier90
123
examples adapted for Siesta in
125
http://personales.unican.es/junqueraj/Wannier-examples.tar.gz
128
* To implement support for "projection functions", which might not be
129
pure radial functions, but hybrids with mixed angular momentum and
130
varying spatial orientation, as well as to provide support of
131
arbitrary kinds of radial functions for future developments, the
132
'matel' framework has been extended:
134
Matel (actually renamed to 'new_matel') now accepts two generalized
135
indexes instead of the two pairs of indexes previously used. The
136
generalized indexes can represent either a normal "radial function",
137
as in previous Siesta usage, or a "projection function". The indexes
138
are obtained via a "check-in" into a registry of functions, which
139
keeps track of the nature of the functions and provides the needed
140
evaluators and accessors for 'new_matel'.
142
The relevant code is in 'matel_registry', 'new_matel', and
143
'register_rfs'. The latter shows how to "register" the usual radial
144
functions for PAOs, KB projectors, etc.
146
* Bloch states are computed and saved, instead of being recomputed as
147
needed, to avoid problems with irreproducible random phases and
148
linear combinations within degenerate subspaces.
150
* At this point the parallelization of the new code is only "over
151
orbitals". It is not yet possible to parallelize the operations over
152
the k-points on the grid. The production of the UNK* files can be
153
slow if there are many k-points and bands.
155
* There is not yet support for "spinor wavefunctions". In the case of
156
spin-polarized calculations, separate spin-up and spin-down
157
processings are needed.
159
* There is not yet support for interaction with Wannier90 in "library
160
mode", due to licensing issues.
162
* The "eigenvalue file" for Wannier90 has extension .eigW to avoid
163
clashes with the standard Siesta eigenvalue file in case-insensitive
166
*** Merge code for 'server' operation via sockets and i-PI interface
168
(Michele Ceriotti, Jose Soler)
170
* A new infrastructure for socket handling in f90 has been
171
implemented by Michele Ceriotti (EPFL), who is also the author
172
of the i-PI framework. From its web-page:
174
i-PI is a Path Integral Molecular Dynamics (PIMD) wrapper code
175
designed to be used together with ab initio evaluation of the
176
interactions between the atoms. i-PI should be run as a separate
177
program, and communicates with one or more instances of an
178
electronic structure code using internet (or UNIX) sockets. The
179
communication is regulated by a simple protocol, and requires
180
patching the client code to handle the exchange of data with i-PI.
182
This revision implements the interface to the i-PI protocol. In
183
Siesta, the new socket functionality can also be used as a new form of
186
See Util/Sockets for examples of the f90 socket interface,
187
Util/SiestaSubroutine for examples of the server operation (including
188
via sockets) and Tests/i-pi-test for a simple test of interoperability
191
*** Replacement of license-encumbered routines by new ones
193
*** Fix shortcomings in reading of empirical potential block
195
* The number of potential lines is now arbitrary.
196
* Units handling has been improved, to allow arbitrary
197
length and energy units.
201
*** Added restart file for smooth continuation of annealing runs
203
* Added the writing and reading of an .ANNEAL_RESTART file, along the
204
same lines of the .VERLET_RESTART file. This fixes a small problem
205
for restarting annealing calculations when a continuous smooth run
210
*** Updated gnubands (new.gnubands) and grid2cube (g2c_ng) programs
213
(Nick R. Papior and Alberto Garcia)