~nickpapior/siesta/trunk-buds-format0.92

434.1.1 by Alberto Garcia
Implementation of the interface between Siesta and Wannier90
1
____________________________________________________________
2
** CHANGES ALONG Javier Junquera's Wannier branch
3
------------------------------------------------------------
4
5
------------------------------------------------------------
434.1.5 by Javier Junquera
Final implementation of the parallel version of the SIESTA-WANNIER90 interface
6
2013-12-04   Javier Junquera trunk-438--radfunc-5--wannier-4
7
8
The parallelization of the interface with Wannier90 has finished.
9
10
This version runs the test ranging from number 1 to number 12 distributed
11
with the Wannier90 suite, and the results are perfectly compatible with
12
those obtained using QuantumEspresso
13
14
added:
15
  Src/reordpsi.F
16
modified:
17
  Src/Makefile
18
  Src/alloc.F90
19
  Src/amn.F90
20
  Src/compute_pw_matrix.F90
21
  Src/m_digest_nnkp.F90
22
  Src/m_noccbands.f
23
  Src/m_overkkneig.F90
24
  Src/m_trialorbitalclass.f90
25
  Src/mmn.F90
26
  Src/mneighb.f
27
  Src/siesta2wannier90.F90
28
  Src/siesta_analysis.F
29
  Src/siesta_options.F90
30
  Src/write_inp_wannier.F90
31
32
------------------------------------------------------------
434.1.4 by Alberto Garcia
Move wannier analysis to 'siesta_analysis'. Reinstate call to siesta_end
33
2013-08-02   Alberto Garcia  trunk-438--radfunc-5--wannier-3
34
Move wannier analysis to 'siesta_analysis'. Reinstate call to siesta_end
35
36
A previous patch had removed the call to siesta_end in the main program.
37
It has been re-instated. 
38
39
The call to siesta2wannier90 has been moved to 'siesta_analysis'. In
40
case the user requests a local_DOS calculation (which destroys the scf
41
DM), the new call is placed just before that section.
42
43
modified:
44
  Src/Makefile
45
  Src/siesta.F
46
  Src/siesta_analysis.F
47
48
------------------------------------------------------------
49
2013-08-01   Javier Junquera  trunk-438--radfunc-5--wannier-2
50
Complete the SIESTA-WANNIER90 interface
51
52
* Use the new function registry.
53
* Added a new test
54
  
55
  removed:
56
    Src/initswan.F90
57
    Src/parallelsubswan.F90
58
    Src/trialOrbitalClass.f90
59
  added:
60
    Src/m_overkkneig.F90
61
    Src/write_inp_wannier.F90
62
    Tests/wannier/
63
    Tests/wannier/kremik.fdf
64
    Tests/wannier/kremik.nnkp
65
  modified:
66
    Src/Makefile
67
    Src/alloc.F90
68
    Src/amn.F90
69
    Src/compute_pw_matrix.F90
70
    Src/m_trialorbitalclass.f90
71
    Src/matel_registry.F90
72
    Src/mmn.F90
73
    Src/register_rfs.F90
74
    Src/siesta2wannier90.F90
75
76
------------------------------------------------------------
434.1.2 by Alberto Garcia
Merge with trunk-register-5 to pull in registry for new matel
77
2013-07-09 14:30 GMT Alberto Garcia trunk-438--radfunc-5--wannier-1
78
Merge with trunk-register-5 to pull in registry for new matel
79
80
(A. Garcia)
81
82
This merge pulled in also the trunk changes up to 438 (see CHANGES).
83
84
See Docs/radfunc.CHANGES for details about the registry.
85
86
NOTE: the functionality of the module "trialorbitalClass" is duplicated, but
87
the two versions are not really compatible. One of them should be chosen once
88
and for all.
89
90
------------------------------------------------------------
434.1.1 by Alberto Garcia
Implementation of the interface between Siesta and Wannier90
91
2013-07-09 14:10 GMT Javier Junquera    trunk-434--wannier-1
92
Implementation of the interface between Siesta and Wannier90
93
(Javier Junquera)
94
95
Commited by A. Garcia (See description below)
96
97
added:
98
  Src/amn.F90
99
  Src/broadcast_projections.F
100
  Src/compute_pw_matrix.F90
101
  Src/delk.F
102
  Src/initswan.F90
103
  Src/m_digest_nnkp.F90
104
  Src/m_noccbands.f
105
  Src/m_planewavematrix.F90
106
  Src/m_planewavematrixvar.F90
107
  Src/m_trialorbitalclass.f90
108
  Src/m_writedelk.F
109
  Src/mmn.F90
110
  Src/parallelsubswan.F90
111
  Src/siesta2wannier90.F90
112
modified:
113
  Src/Makefile
114
  Src/atom.F
115
  Src/dhscf.F
116
  Src/diagpol.f
117
  Src/grdsam.F
118
  Src/ksv.f
119
  Src/local_DOS.F
120
  Src/m_mpi_utils.F
121
  Src/mesh.F
122
  Src/meshdscf.F
123
  Src/meshsubs.F
124
  Src/savepsi.F
125
  Src/setup_hamiltonian.F
126
  Src/siesta.F
127
  Src/siesta_analysis.F
128
  Src/siesta_options.F90
129
130
-----------------------------------------------------------------------
131
Description of the changes
132
-----------------------------------------------------------------------
133
134
--------------------------------
135
    In m_planewavematrix.F90
136
--------------------------------
137
138
New module that contains all the ingredients to compute the matrix elements
139
of a plane wave in the grid.
140
141
--------------------------------
142
    In dhscf.F:
143
--------------------------------
144
145
      New argument in the call to dhscf:
146
147
C integer isigneikr     : Switch which fixes whether the matrix elements
148
C                         of exp(i k r) are calculated or not.
149
C                          0 = not computed.
150
C                          1 = compute the matrix elements of exp(i k r).
151
C                         -1 = compute the matrix elements of exp(-i k r).
152
153
      
154
      New call to the subroutine delk, where the matrix elements
155
 of a plane wave are computed in real space.
156
157
--------------------------------
158
    In grdsam.F:
159
--------------------------------
160
161
     The calls to dhscf have been modified adding the
162
 new variable isigneikr in the list of arguments.
163
164
     Since the matrix elements of the plane wave are not required
165
 during the normal self-consistent-cicle, 
166
 isigneikr is always set up to zero in grdsam.F
167
168
--------------------------------
169
    In local_DOS.F:
170
--------------------------------
171
172
     The calls to dhscf have been modified adding the
173
 new variable isigneikr in the list of arguments.
174
175
     Since the matrix elements of the plane wave are not required
176
 to compute the local DOS, 
177
 isigneikr is set up to zero in local_DOS.F
178
179
--------------------------------
180
    In setup_hamiltonian.F
181
--------------------------------
182
183
     New variable:
184
185
     integer:: isigneikr ! Calculate matrix element of a plane wave exp(ikr)
186
                       !  0 => no,
187
                       !  1 => calculate exp(ikr)
188
                       ! -1 => calculate exp(-ikr)
189
190
     The calls to dhscf have been modified adding the
191
 new variable iexpikr in the list of arguments.
192
193
     Since the matrix elements of the plane wave are not required
194
 during the normal self-consistent-cicle, 
195
 isigneikr is set up to zero in setup_hamiltonian.F
196
197
--------------------------------
198
    In siesta_analysis.F
199
--------------------------------
200
201
     The call to dhscf have been modified adding the
202
 new variable isigneikr in the list of arguments.
203
204
     Since the matrix elements of the plane wave are not required
205
 for the analysis, 
206
 isigneikr is set up to zero in siesta_analysis.F
207
208
--------------------------------
209
    In mesh.F:
210
--------------------------------
211
212
    A new variable, iatfold, is defined in the module mesh.
213
 This is an integer variable of dimension 3 * number of atoms in the supercell.
214
 It is defined and computed in InitAtomMesh (subroutine meshsubs.F, see below) 
215
 independently of whether the finite field
216
 capability is used or not. The computational cost in CPU time and memory
217
 is negligeable, though.
218
219
    In the subroutine setupExtMesh, the variable nem is deleted
220
 from the list of internal variables and introduced as a module variable.
221
 It is defined in module mesh.
222
223
--------------------------------
224
    In meshsubs.F:
225
--------------------------------
226
227
    A new variable, iatfold, is defined in the module mesh.
228
 This is an integer variable of dimension 3 * number of atoms in the supercell.
229
 It is defined and computed independently of whether the finite field
230
 capability is used or not. The computational cost in CPU time and memory
231
 is negligeable, though.
232
233
    The variable is allocated and computed in the subroutine InitAtomMesh
234
 This variable stores the supercell vector required to fold the position
235
 of an atom back into the unit cell. 
236
237
--------------------------------
238
    In meshdscf.F
239
--------------------------------
240
241
    New subroutine matrixMtoOC.
242
 This is a copy of matrixMtoO, but modified to handle complex matrices.
243
 
244
--------------------------------
245
    In m_mpi_utils.F
246
--------------------------------
247
248
    New subruoutine broadcast_vvv_int added.
249
 This is required to broadcast the array nnfolding readed from the .nnkp file
250
251
--------------------------------
252
    In delk.f
253
--------------------------------
254
255
      New subroutine where the matrix elements of a plane wave are
256
 computed in real space.  
257
258
      The matrix elements of a plane wave in a basis of numerical
259
 atomic orbitals are computed in the grid, instead of in
260
 the former approach implemented by Daniel Sanchez-Portal,
261
 where a Taylor expansion of the plane wave was made assuming
262
 small values of the exponent:
263
264
      exp(i k r) \sim 1 + i k r
265
266
      The reason for this change is the fact that, within the new
267
 algorithm, there is no reason to assume that k (or more precisely
268
 the vector between consecutive k-points \Delta k)
269
 would be small enough to justify the cut of the Taylor expansion.
270
 Remember that, in the algorithm described by I. Souza et al.,
271
 the larger the number of k-points (that is, the smaller the
272
 interval between neighboring points) the smaller the value of the
273
 threshold energy for Zener tunneling
274
 [see the end of the first paragraph in the
275
 left column of the third page of the paper by
276
 I. Souza et al., Phys. Rev. Lett. 89, 117602 (2002)].
277
278
      Parallelization issues:
279
 If vmat is parallelized, delk should work as well, since the 
280
 basic loops are maintained without any change.
281
282
283