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 |