Merge lp:~nickpapior/siesta/4.1-ncdf-md into lp:siesta/4.1
- 4.1-ncdf-md
- Merge into rel-4.1
Status: | Merged |
---|---|
Merged at revision: | 939 |
Proposed branch: | lp:~nickpapior/siesta/4.1-ncdf-md |
Merge into: | lp:siesta/4.1 |
Diff against target: |
1187 lines (+425/-261) (has conflicts) 20 files modified
Docs/siesta.tex (+13/-5) Src/Makefile (+8/-8) Src/final_H_f_stress.F (+18/-5) Src/m_ncdf_siesta.F90 (+205/-114) Src/read_options.F90 (+16/-2) Src/save_density_matrix.F (+13/-9) Src/siesta_forces.F (+7/-27) Src/state_init.F (+53/-3) Util/COOP/Makefile (+8/-8) Util/Denchar/Src/Makefile (+8/-8) Util/Gen-basis/Makefile (+8/-8) Util/Grimme/Makefile (+8/-8) Util/Helpers/Makefile (+8/-8) Util/STM/ol-stm/Src/Makefile (+8/-8) Util/SpPivot/Makefile (+8/-8) Util/TS/TBtrans/Makefile (+8/-8) Util/TS/ts2ts/Makefile (+8/-8) Util/TS/tshs2tshs/Makefile (+8/-8) Util/VCA/Makefile (+8/-8) version.info (+4/-0) Text conflict in version.info |
To merge this branch: | bzr merge lp:~nickpapior/siesta/4.1-ncdf-md |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Alberto Garcia | Approve | ||
Review via email: mp+348933@code.launchpad.net |
Commit message
Fixed NCDF write-out for MD and FC calculations
Previously the NCDF file-write-out would crash when performing
MD/FC calculations because the sparse arrays does not really make sense
to store.
Now the file content is based on the type of run, single/MD/FC.
A relaxation is equivalent to an MD (currently).
One non-CDF related change is the change of MD.NumCGSteps to
MD.Steps keyword. The NumCGSteps is deprecated since many more
options have entered and CG was not necessarily the correct instance.
Same applies to MD.MaxCGDispl -> MD.MaxDispl.
Secondly, the MD.Steps keyword is now also the default for
MD.FinalTimeStep which means that a single keyword determines the number
of steps runned.
The old flags are still used as the default values.
Description of the change
Basically this is one big fix for the NCDF routines in Siesta.
However, there is one change that "affects" siesta.
MD.NumCGSteps is renamed to MD.Steps (please suggest if another keyword is better).
The procedure is this:
i = fdf_get(
i = fdf_get('MD.Steps', i)
I think the NumCGsteps is far too confusing in 4.1 (even in 4.0) and it should have been updated previously.
The same changes have been applied to MD.MaxCGDispl (now MD.MaxDispl).
Secondly, since MD.Steps is more generic it is now also the default in MD.FinalTimeStep
j = fdf_get(
Hence one single keyword may be used generically throughout.
- 939. By Nick Papior
-
Fixed FinalTimeStep option reads and indentation
Thanks Alberto
- 940. By Nick Papior
-
Added pjnl_j to the ncdf basis
Nick Papior (nickpapior) wrote : | # |
Ok, I will insert an fdf_defined before FinalTimestep.
Add 0's to the output of the KB projectors.
Preview Diff
1 | === modified file 'Docs/siesta.tex' |
2 | --- Docs/siesta.tex 2018-06-26 08:27:41 +0000 |
3 | +++ Docs/siesta.tex 2018-07-09 07:59:46 +0000 |
4 | @@ -5796,7 +5796,7 @@ |
5 | if the lattice changes are moderate). |
6 | |
7 | By default this will be \fdffalse\ when performing single-point calculations |
8 | - (\fdf{MD.TypeOfRun:CG} with \fdf{MD.NumCGsteps:1} or below). Otherwise |
9 | + (\fdf{MD.TypeOfRun:CG} with \fdf{MD.Steps:1} or below). Otherwise |
10 | this will default to \fdftrue. |
11 | |
12 | \note one may try to set this to \fdffalse\ for better performance, |
13 | @@ -9364,15 +9364,20 @@ |
14 | |
15 | \end{fdfentry} |
16 | |
17 | -\begin{fdfentry}{MD.NumCGsteps}[integer]<0> |
18 | +\begin{fdfentry}{MD.Steps}[integer]<0> |
19 | + \fdfdepend{MD.NumCGsteps} |
20 | |
21 | - Maximum number of conjugate gradient (or Broyden) minimization moves |
22 | + Maximum number of steps in a minimization routine |
23 | (the minimization will stop if tolerance is reached before; see |
24 | \fdf{MD.MaxForceTol} below). |
25 | |
26 | + \note The old flag \fdf*{MD.NumCGsteps} will remain for historical |
27 | + reasons. |
28 | + |
29 | \end{fdfentry} |
30 | |
31 | -\begin{fdfentry}{MD.MaxCGDispl}[length]<$0.2\,\mathrm{Bohr}$> |
32 | +\begin{fdfentry}{MD.MaxDispl}[length]<$0.2\,\mathrm{Bohr}$> |
33 | + \fdfdepend{MD.MaxCGDispl} |
34 | |
35 | Maximum atomic displacements in an optimization move. |
36 | |
37 | @@ -9383,6 +9388,9 @@ |
38 | |
39 | Note that there are Zmatrix-specific options that override this option. |
40 | |
41 | + \note The old flag \fdf*{MD.MaxCGDispl} will remain for historical |
42 | + reasons. |
43 | + |
44 | \end{fdfentry} |
45 | |
46 | \begin{fdfentry}{MD.PreconditionVariableCell}[length]<$5\,\mathrm{Ang}$> |
47 | @@ -9659,7 +9667,7 @@ |
48 | |
49 | \end{fdfentry} |
50 | |
51 | -\begin{fdfentry}{MD.FinalTimeStep}[integer]<$1$> |
52 | +\begin{fdfentry}{MD.FinalTimeStep}[integer]<\fdfvalue{MD.Steps}> |
53 | |
54 | Final time step of the MD simulation. |
55 | |
56 | |
57 | === modified file 'Src/Makefile' |
58 | --- Src/Makefile 2018-06-28 13:53:17 +0000 |
59 | +++ Src/Makefile 2018-07-09 07:59:46 +0000 |
60 | @@ -1293,14 +1293,14 @@ |
61 | state_init.o: class_SpData2D.o class_Sparsity.o create_Sparsity_SC.o |
62 | state_init.o: domain_decom.o files.o hsparse.o iodm_netcdf.o iodmhs_netcdf.o |
63 | state_init.o: ioxv.o kpoint_grid.o ldau_specs.o m_energies.o m_eo.o m_mixing.o |
64 | -state_init.o: m_mixing_scf.o m_mpi_utils.o m_new_dm.o m_os.o m_pivot_methods.o |
65 | -state_init.o: m_rmaxh.o m_sparse.o m_sparsity_handling.o m_spin.o m_steps.o |
66 | -state_init.o: m_supercell.o m_test_io.o m_ts_charge.o m_ts_electype.o |
67 | -state_init.o: m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o m_ts_options.o |
68 | -state_init.o: m_ts_sparse.o m_ts_tri_init.o normalize_dm.o overlap.o parallel.o |
69 | -state_init.o: proximity_check.o siesta_cml.o siesta_dicts.o siesta_geom.o |
70 | -state_init.o: siesta_options.o sparse_matrices.o sys.o units.o write_subs.o |
71 | -state_init.o: zmatrix.o |
72 | +state_init.o: m_mixing_scf.o m_mpi_utils.o m_ncdf_siesta.o m_new_dm.o m_os.o |
73 | +state_init.o: m_pivot_methods.o m_rmaxh.o m_sparse.o m_sparsity_handling.o |
74 | +state_init.o: m_spin.o m_steps.o m_supercell.o m_test_io.o m_ts_charge.o |
75 | +state_init.o: m_ts_electype.o m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o |
76 | +state_init.o: m_ts_options.o m_ts_sparse.o m_ts_tri_init.o normalize_dm.o |
77 | +state_init.o: overlap.o parallel.o proximity_check.o siesta_cml.o |
78 | +state_init.o: siesta_dicts.o siesta_geom.o siesta_options.o sparse_matrices.o |
79 | +state_init.o: sys.o units.o write_subs.o zmatrix.o |
80 | struct_init.o: alloc.o atmfuncs.o atomlist.o files.o ioxv.o m_exp_coord.o |
81 | struct_init.o: m_iostruct.o m_mpi_utils.o m_steps.o parallel.o periodic_table.o |
82 | struct_init.o: siesta_cml.o siesta_geom.o siesta_master.o siesta_options.o |
83 | |
84 | === modified file 'Src/final_H_f_stress.F' |
85 | --- Src/final_H_f_stress.F 2018-06-20 10:34:33 +0000 |
86 | +++ Src/final_H_f_stress.F 2018-07-09 07:59:46 +0000 |
87 | @@ -17,7 +17,7 @@ |
88 | #ifdef NCDF_4 |
89 | use siesta_options, only: write_cdf |
90 | #endif |
91 | - use siesta_options, only: g2cut, savehs, temp |
92 | + use siesta_options, only: g2cut, savehs, temp, nmove |
93 | use siesta_options, only: recompute_H_after_scf |
94 | use sparse_matrices, only: numh, listh, listhptr |
95 | use sparse_matrices, only: H, S, Dscf, Escf, maxnh, xijo |
96 | @@ -297,10 +297,23 @@ |
97 | #ifdef CDF |
98 | #ifdef NCDF_4 |
99 | if ( write_cdf ) then |
100 | - dic_save = ('fa'.kv.1)//('stress'.kv.1) |
101 | - if ( savehs .or. TS_HS_save ) dic_save = dic_save //('H'.kv.1) |
102 | - call cdf_save_state(trim(slabel)//'.nc',dic_save) |
103 | - call delete(dic_save) |
104 | + if ( idyn == 6 ) then |
105 | + call cdf_save_fc(trim(slabel)//'.nc', istep) |
106 | + if ( istep == 0 ) then |
107 | + dic_save = ('fa'.kv.1)//('stress'.kv.1) |
108 | + if ( savehs .or. TS_HS_save ) |
109 | + & dic_save = dic_save//('H'.kv.1) |
110 | + call cdf_save_state(trim(slabel)//'.nc',dic_save) |
111 | + call delete(dic_save) |
112 | + end if |
113 | + else if ( idyn /=0 .or. nmove /= 0 ) then |
114 | + call cdf_save_md(trim(slabel)//'.nc') |
115 | + else |
116 | + dic_save = ('fa'.kv.1)//('stress'.kv.1) |
117 | + if ( savehs .or. TS_HS_save ) dic_save = dic_save //('H'.kv.1) |
118 | + call cdf_save_state(trim(slabel)//'.nc',dic_save) |
119 | + call delete(dic_save) |
120 | + end if |
121 | end if |
122 | #endif |
123 | #endif |
124 | |
125 | === modified file 'Src/m_ncdf_siesta.F90' |
126 | --- Src/m_ncdf_siesta.F90 2018-06-12 22:59:08 +0000 |
127 | +++ Src/m_ncdf_siesta.F90 2018-07-09 07:59:46 +0000 |
128 | @@ -29,6 +29,7 @@ |
129 | public :: cdf_save_settings |
130 | public :: cdf_save_basis |
131 | public :: cdf_save_md |
132 | + public :: cdf_save_fc |
133 | public :: cdf_save_state |
134 | public :: cdf_save_grid |
135 | |
136 | @@ -38,7 +39,7 @@ |
137 | |
138 | #ifdef NCDF_4 |
139 | |
140 | - subroutine cdf_init_file(fname,is_md) |
141 | + subroutine cdf_init_file(fname, is_md, is_fc) |
142 | use fdf, only : fdf_get, leqi |
143 | use class_Sparsity |
144 | use files, only : slabel |
145 | @@ -57,13 +58,15 @@ |
146 | use siesta_options, only: savebader |
147 | use siesta_options, only: save_initial_charge_density |
148 | use siesta_options, only: fixspin, total_spin |
149 | + use siesta_options, only: ia1, ia2, dx ! FC information |
150 | use m_timestamp, only: datestring |
151 | use m_ts_electype, elec_name => name |
152 | use m_ts_options, only : Volt, N_Elec, Elecs |
153 | use m_ts_options, only : TS_HS_Save |
154 | |
155 | character(len=*), intent(in) :: fname |
156 | - logical, intent(in) :: is_md |
157 | + logical, intent(in), optional :: is_md |
158 | + logical, intent(in), optional :: is_fc |
159 | |
160 | ! Local variables |
161 | type(hNCDF) :: ncdf, grp, grp2 |
162 | @@ -72,10 +75,16 @@ |
163 | integer :: n_nzs, tmp, i, chks(3), iEl |
164 | integer, allocatable :: ibuf(:) |
165 | logical :: exists |
166 | + logical :: lis_md, lis_fc |
167 | #ifdef MPI |
168 | integer :: MPIerror |
169 | #endif |
170 | |
171 | + lis_md = .false. |
172 | + if ( present(is_md) ) lis_md = is_md |
173 | + lis_fc = .false. |
174 | + if ( present(is_fc) ) lis_fc = is_fc |
175 | + |
176 | ! We always re-write the file... |
177 | call ncdf_create(ncdf,fname, & |
178 | mode=ior(NF90_WRITE,NF90_NETCDF4), overwrite=.true.) |
179 | @@ -96,112 +105,120 @@ |
180 | d = d// ('DIMone'.kv. 1) |
181 | call ncdf_crt(ncdf,d) |
182 | call delete(d) |
183 | - |
184 | - ! Create all necessary containers... |
185 | - dic = ('info'.kv.'Number of supercells in each unit-cell direction') |
186 | - call ncdf_def_var(ncdf,'nsc',NF90_INT,(/'xyz'/), & |
187 | - compress_lvl=0, atts=dic) |
188 | |
189 | dic = dic//('info'.kv.'Last orbital of equivalent atom') |
190 | call ncdf_def_var(ncdf,'lasto',NF90_INT,(/'na_u'/), & |
191 | - compress_lvl=0, atts=dic) |
192 | + compress_lvl=0, atts=dic) |
193 | + call ncdf_put_var(ncdf,'lasto',lasto(1:na_u)) |
194 | |
195 | dic = dic//('info'.kv.'Total charge') |
196 | call ncdf_def_var(ncdf,'Qtot',NF90_DOUBLE,(/'one'/), & |
197 | compress_lvl=0, atts=dic) |
198 | + call ncdf_put_var(ncdf,'Qtot',Qtot) |
199 | |
200 | - dic = dic//('info'.kv.'Fermi level')//('unit'.kv.'Ry') |
201 | if ( fixspin ) then |
202 | - call ncdf_def_var(ncdf,'Ef',NF90_DOUBLE,(/'spin'/), & |
203 | - compress_lvl=0, atts=dic) |
204 | - |
205 | - call delete(dic) |
206 | dic = dic//('info'.kv.'Total spin') |
207 | call ncdf_def_var(ncdf,'Qspin',NF90_DOUBLE,(/'one'/), & |
208 | compress_lvl=0, atts=dic) |
209 | - else |
210 | - call ncdf_def_var(ncdf,'Ef',NF90_DOUBLE,(/'one'/), & |
211 | - compress_lvl=0, atts=dic) |
212 | - end if |
213 | - |
214 | - dic = dic//('info'.kv.'Atomic coordinates')//('unit'.kv.'Bohr') |
215 | - call ncdf_def_var(ncdf,'xa',NF90_DOUBLE,(/'xyz ','na_u'/), & |
216 | - compress_lvl=0, atts=dic) |
217 | - |
218 | - dic = dic//('info'.kv.'Unit cell') |
219 | - call ncdf_def_var(ncdf,'cell',NF90_DOUBLE,(/'xyz','xyz'/), & |
220 | - compress_lvl=0, atts=dic) |
221 | - |
222 | - dic = dic//('info'.kv.'Atomic forces')//('unit'.kv.'Ry/Bohr') |
223 | - call ncdf_def_var(ncdf,'fa',NF90_DOUBLE,(/'xyz ','na_u'/), & |
224 | - compress_lvl=0, atts=dic) |
225 | - |
226 | - dic = dic//('info'.kv.'Cell stress')//('unit'.kv.'Ry/Bohr**3') |
227 | - call ncdf_def_var(ncdf,'stress',NF90_DOUBLE,(/'xyz','xyz'/), & |
228 | - compress_lvl=0, atts=dic) |
229 | + call ncdf_put_var(ncdf,'Qspin',total_spin) |
230 | + end if |
231 | + |
232 | + if ( .not. lis_MD ) then |
233 | + |
234 | + ! Create all necessary containers... |
235 | + dic = dic//('info'.kv.'Number of supercells in each unit-cell direction') |
236 | + call ncdf_def_var(ncdf,'nsc',NF90_INT,(/'xyz'/), & |
237 | + compress_lvl=0, atts=dic) |
238 | + |
239 | + dic = dic//('info'.kv.'Fermi level')//('unit'.kv.'Ry') |
240 | + if ( fixspin ) then |
241 | + call ncdf_def_var(ncdf,'Ef',NF90_DOUBLE,(/'spin'/), & |
242 | + compress_lvl=0, atts=dic) |
243 | + else |
244 | + call ncdf_def_var(ncdf,'Ef',NF90_DOUBLE,(/'one'/), & |
245 | + compress_lvl=0, atts=dic) |
246 | + end if |
247 | + |
248 | + dic = dic//('info'.kv.'Atomic coordinates')//('unit'.kv.'Bohr') |
249 | + call ncdf_def_var(ncdf,'xa',NF90_DOUBLE,(/'xyz ','na_u'/), & |
250 | + compress_lvl=0, atts=dic) |
251 | + |
252 | + dic = dic//('info'.kv.'Unit cell') |
253 | + call ncdf_def_var(ncdf,'cell',NF90_DOUBLE,(/'xyz','xyz'/), & |
254 | + compress_lvl=0, atts=dic) |
255 | + |
256 | + dic = dic//('info'.kv.'Atomic forces')//('unit'.kv.'Ry/Bohr') |
257 | + call ncdf_def_var(ncdf,'fa',NF90_DOUBLE,(/'xyz ','na_u'/), & |
258 | + compress_lvl=0, atts=dic) |
259 | + |
260 | + dic = dic//('info'.kv.'Cell stress')//('unit'.kv.'Ry/Bohr**3') |
261 | + call ncdf_def_var(ncdf,'stress',NF90_DOUBLE,(/'xyz','xyz'/), & |
262 | + compress_lvl=0, atts=dic) |
263 | + end if |
264 | |
265 | call delete(dic) |
266 | |
267 | - |
268 | - ! Create matrix group |
269 | - call ncdf_def_grp(ncdf,'SPARSE',grp) |
270 | - |
271 | - call ncdf_def_dim(grp,'nnzs',n_nzs) |
272 | - |
273 | - ! EDM is required to have its own spin (because of spin-orbit coupling |
274 | - ! where the spin == 4, and not 8) |
275 | - call ncdf_def_dim(grp,'spin_EDM',spin%EDM) |
276 | - |
277 | - |
278 | - dic = dic//('info'.kv.'Index of supercell coordinates') |
279 | - call ncdf_def_var(grp,'isc_off',NF90_INT,(/'xyz','n_s'/), & |
280 | - compress_lvl=0, atts=dic) |
281 | - |
282 | - dic = dic//('info'.kv.'Number of non-zero elements per row') |
283 | - call ncdf_def_var(grp,'n_col',NF90_INT,(/'no_u'/), & |
284 | - compress_lvl=0, atts=dic) |
285 | - |
286 | - chks = (/n_nzs,1,1/) |
287 | - |
288 | - dic = dic//('info'.kv. & |
289 | - 'Supercell column indices in the sparse format ') |
290 | - call ncdf_def_var(grp,'list_col',NF90_INT,(/'nnzs'/), & |
291 | - compress_lvl=cdf_comp_lvl,atts=dic,chunks=chks) |
292 | - |
293 | - ! Create the overlap matrix (we know it will not change) |
294 | - dic = ('info'.kv.'Overlap matrix') |
295 | - call ncdf_def_var(grp,'S',NF90_DOUBLE,(/'nnzs'/), & |
296 | - compress_lvl=cdf_comp_lvl,atts=dic,chunks=chks) |
297 | - |
298 | - dic = dic//('info'.kv.'Density matrix') |
299 | - call ncdf_def_var(grp,'DM',NF90_DOUBLE,(/'nnzs','spin'/), & |
300 | - compress_lvl=cdf_comp_lvl,atts=dic,chunks=chks) |
301 | - |
302 | - dic = dic//('info'.kv.'Energy density matrix') |
303 | - dic = dic//('unit'.kv.'Ry') |
304 | - call ncdf_def_var(grp,'EDM',NF90_DOUBLE,(/'nnzs ','spin_EDM'/), & |
305 | - compress_lvl=cdf_comp_lvl,atts=dic,chunks=chks) |
306 | - |
307 | - if ( savehs .or. TS_HS_save ) then |
308 | - ! Unit is already present in dictionary |
309 | - dic = dic//('info'.kv.'Hamiltonian') |
310 | - call ncdf_def_var(grp,'H',NF90_DOUBLE,(/'nnzs','spin'/), & |
311 | + if ( .not. lis_MD ) then |
312 | + |
313 | + ! Create matrix group |
314 | + call ncdf_def_grp(ncdf,'SPARSE',grp) |
315 | + |
316 | + call ncdf_def_dim(grp,'nnzs',n_nzs) |
317 | + |
318 | + ! EDM is required to have its own spin (because of spin-orbit coupling |
319 | + ! where the spin == 4, and not 8) |
320 | + call ncdf_def_dim(grp,'spin_EDM',spin%EDM) |
321 | + |
322 | + |
323 | + dic = dic//('info'.kv.'Index of supercell coordinates') |
324 | + call ncdf_def_var(grp,'isc_off',NF90_INT,(/'xyz','n_s'/), & |
325 | + compress_lvl=0, atts=dic) |
326 | + |
327 | + dic = dic//('info'.kv.'Number of non-zero elements per row') |
328 | + call ncdf_def_var(grp,'n_col',NF90_INT,(/'no_u'/), & |
329 | + compress_lvl=0, atts=dic) |
330 | + |
331 | + chks = (/n_nzs,1,1/) |
332 | + |
333 | + dic = dic//('info'.kv. & |
334 | + 'Supercell column indices in the sparse format ') |
335 | + call ncdf_def_var(grp,'list_col',NF90_INT,(/'nnzs'/), & |
336 | + compress_lvl=cdf_comp_lvl,atts=dic,chunks=chks) |
337 | + |
338 | + ! Create the overlap matrix (we know it will not change) |
339 | + dic = ('info'.kv.'Overlap matrix') |
340 | + call ncdf_def_var(grp,'S',NF90_DOUBLE,(/'nnzs'/), & |
341 | + compress_lvl=cdf_comp_lvl,atts=dic,chunks=chks) |
342 | + |
343 | + dic = dic//('info'.kv.'Density matrix') |
344 | + call ncdf_def_var(grp,'DM',NF90_DOUBLE,(/'nnzs','spin'/), & |
345 | + compress_lvl=cdf_comp_lvl,atts=dic,chunks=chks) |
346 | + |
347 | + dic = dic//('info'.kv.'Energy density matrix') |
348 | + dic = dic//('unit'.kv.'Ry') |
349 | + call ncdf_def_var(grp,'EDM',NF90_DOUBLE,(/'nnzs ','spin_EDM'/), & |
350 | + compress_lvl=cdf_comp_lvl,atts=dic,chunks=chks) |
351 | + |
352 | + if ( savehs .or. TS_HS_save ) then |
353 | + ! Unit is already present in dictionary |
354 | + dic = dic//('info'.kv.'Hamiltonian') |
355 | + call ncdf_def_var(grp,'H',NF90_DOUBLE,(/'nnzs','spin'/), & |
356 | compress_lvl=cdf_comp_lvl,atts=dic,chunks=chks) |
357 | + end if |
358 | + |
359 | + ! Even though I think we could do without, I add the |
360 | + ! xij array to the file |
361 | + ! Note that xij can be re-created using |
362 | + ! nsc, isc_off and xa |
363 | + ! if ( .not. Gamma ) then |
364 | + ! dic = dic//('info'.kv. & |
365 | + ! 'Distance between orbital i and j') |
366 | + ! dic = dic//('unit'.kv.'Bohr') |
367 | + ! call ncdf_def_var(grp,'xij',NF90_DOUBLE,(/'xyz ','nnzs'/), & |
368 | + ! compress_lvl=cdf_comp_lvl,atts=dic) |
369 | + ! end if |
370 | end if |
371 | |
372 | - ! Even though I think we could do without, I add the |
373 | - ! xij array to the file |
374 | - ! Note that xij can be re-created using |
375 | - ! nsc, isc_off and xa |
376 | -! if ( .not. Gamma ) then |
377 | -! dic = dic//('info'.kv. & |
378 | -! 'Distance between orbital i and j') |
379 | -! dic = dic//('unit'.kv.'Bohr') |
380 | -! call ncdf_def_var(grp,'xij',NF90_DOUBLE,(/'xyz ','nnzs'/), & |
381 | -! compress_lvl=cdf_comp_lvl,atts=dic) |
382 | -! end if |
383 | - |
384 | - |
385 | ! Delete the dictionary |
386 | call delete(dic) |
387 | |
388 | @@ -336,21 +353,21 @@ |
389 | call ncdf_def_var(grp,'MeshCutoff',NF90_DOUBLE,(/'one'/), & |
390 | compress_lvl=0, atts=dic) |
391 | |
392 | - ! Create matrix group |
393 | - if ( is_MD ) then |
394 | + ! Create MD group |
395 | + if ( lis_MD ) then |
396 | |
397 | call ncdf_def_grp(ncdf,'MD',grp) |
398 | |
399 | ! Create arrays for containers |
400 | call ncdf_def_dim(grp,'MD',NF90_UNLIMITED) |
401 | |
402 | - dic = ('info'.kv.'Temperature')//('unit'.kv.'K') |
403 | + dic = ('info'.kv.'Ionic temperature')//('unit'.kv.'K') |
404 | call ncdf_def_var(grp,'T',NF90_DOUBLE,(/'MD'/), & |
405 | compress_lvl=0, atts=dic) ! do not compress unlimited D |
406 | |
407 | - dic = dic//('info'.kv.'Kohn-Sham energy')//('unit'.kv.'Ry') |
408 | - call ncdf_def_var(grp,'E_KS',NF90_DOUBLE,(/'MD'/), & |
409 | - compress_lvl=0, atts=dic) ! do not compress unlimited D |
410 | + !dic = dic//('info'.kv.'Kohn-Sham energy')//('unit'.kv.'Ry') |
411 | + !call ncdf_def_var(grp,'E_KS',NF90_DOUBLE,(/'MD'/), & |
412 | + ! compress_lvl=0, atts=dic) ! do not compress unlimited D |
413 | |
414 | dic = dic//('info'.kv.'Total energy') |
415 | call ncdf_def_var(grp,'E_tot',NF90_DOUBLE,(/'MD'/), & |
416 | @@ -360,6 +377,10 @@ |
417 | call ncdf_def_var(grp,'E_kin',NF90_DOUBLE,(/'MD'/), & |
418 | compress_lvl=0, atts=dic) ! do not compress unlimited D |
419 | |
420 | + dic = dic//('info'.kv.'XC energy') |
421 | + call ncdf_def_var(grp,'E_xc',NF90_DOUBLE,(/'MD'/), & |
422 | + compress_lvl=0, atts=dic) ! do not compress unlimited D |
423 | + |
424 | dic = dic//('info'.kv.'Fermi level') |
425 | call ncdf_def_var(grp,'Ef',NF90_DOUBLE,(/'MD'/), & |
426 | compress_lvl=0, atts=dic) ! do not compress unlimited D |
427 | @@ -367,6 +388,10 @@ |
428 | dic = dic//('info'.kv.'Atomic coordinates')//('unit'.kv.'Bohr') |
429 | call ncdf_def_var(grp,'xa',NF90_DOUBLE,(/'xyz ','na_u','MD '/), & |
430 | compress_lvl=0, atts=dic) ! do not compress unlimited D |
431 | + |
432 | + dic = dic//('info'.kv.'Cell stress')//('unit'.kv.'Ry/Bohr**3') |
433 | + call ncdf_def_var(grp,'stress',NF90_DOUBLE,(/'xyz','xyz','MD '/), & |
434 | + compress_lvl=0, atts=dic) ! do not compress unlimited D |
435 | |
436 | dic = dic//('info'.kv.'Atomic forces')//('unit'.kv.'Ry/Bohr') |
437 | call ncdf_def_var(grp,'fa',NF90_DOUBLE,(/'xyz ','na_u','MD '/), & |
438 | @@ -378,6 +403,32 @@ |
439 | |
440 | end if |
441 | |
442 | + ! Create FC group |
443 | + if ( lis_FC ) then |
444 | + |
445 | + call ncdf_def_grp(ncdf,'FC',grp) |
446 | + |
447 | + ! Create dimension arrays |
448 | + ! Create arrays for containers |
449 | + call ncdf_def_dim(grp,'ia',ia2-ia1+1) |
450 | + call ncdf_def_dim(grp,'m_p',2) |
451 | + |
452 | + dic = dic//('info'.kv.'Displacement length')//('unit'.kv.'Bohr') |
453 | + call ncdf_def_var(grp,'disp',NF90_DOUBLE,(/'one'/), & |
454 | + compress_lvl=0, atts=dic) ! do not compress unlimited D |
455 | + call ncdf_put_var(grp,'disp',dx) |
456 | + |
457 | + dic = dic//('info'.kv.'Undisplaced atomic forces ')//('unit'.kv.'Ry/Bohr') |
458 | + call ncdf_def_var(grp,'fa0',NF90_DOUBLE,(/'xyz ','na_u'/), & |
459 | + compress_lvl=0, atts=dic) ! do not compress unlimited D |
460 | + |
461 | + dic = dic//('info'.kv.'Displaced atomic forces')//('unit'.kv.'Ry/Bohr') |
462 | + call ncdf_def_var(grp,'fa',NF90_DOUBLE,(/'xyz ','na_u','m_p ','xyz ', 'ia '/), & |
463 | + compress_lvl=0, atts=dic) ! do not compress unlimited D |
464 | + |
465 | + end if |
466 | + |
467 | + |
468 | call delete(dic) |
469 | |
470 | if ( isolve == SOLVE_TRANSI ) then |
471 | @@ -447,12 +498,6 @@ |
472 | |
473 | call delete(dic) |
474 | |
475 | - ! Save the total charge and lasto |
476 | - call ncdf_put_var(ncdf,'Qtot',Qtot) |
477 | - if ( fixspin ) then |
478 | - call ncdf_put_var(ncdf,'Qspin',total_spin) |
479 | - end if |
480 | - |
481 | call ncdf_put_var(ncdf,'lasto',lasto(1:na_u)) |
482 | |
483 | if ( isolve == SOLVE_TRANSI ) then |
484 | @@ -541,7 +586,8 @@ |
485 | use siesta_geom, only: na_u, ucell, xa, va |
486 | use siesta_geom, only: nsc, isc_off |
487 | use sparse_matrices, only: sparse_pattern, block_dist |
488 | - use sparse_matrices, only: S_1D, DM_2D, EDM_2D, H_2D |
489 | + use sparse_matrices, only: S_1D |
490 | + use sparse_matrices, only: DM_2D, EDM_2D, H_2D |
491 | ! use sparse_matrices, only: xij_2D |
492 | use m_stress, only : stress |
493 | use m_forces, only: fa |
494 | @@ -603,7 +649,7 @@ |
495 | ! if ( .not. Gamma .and. ('xij' .in. dic_save) ) then |
496 | ! Write the xij array, it will not change during SCF |
497 | ! call cdf_w_d2D(grp,'xij',xij_2D) |
498 | -! end if |
499 | + ! end if |
500 | if ( 'H' .in. dic_save ) & |
501 | call cdf_w_d2D(grp,'H',H_2D) |
502 | if ( 'DM' .in. dic_save ) & |
503 | @@ -679,7 +725,9 @@ |
504 | |
505 | ! Used for saving variables |
506 | integer :: no, nk |
507 | - integer, allocatable :: aux(:) |
508 | + integer, allocatable :: iaux(:) |
509 | + real(dp), allocatable :: raux(:) |
510 | + |
511 | |
512 | ! Unluckily the new basis saves only |
513 | ! saved on the IO node. |
514 | @@ -751,8 +799,8 @@ |
515 | |
516 | ! Create all projector variables... |
517 | if ( nk > 0 ) then |
518 | - dic = ('pjnl_l'.kv.NF90_INT)//('pjnl_n'.kv.NF90_INT) |
519 | - dic = dic//('pjnl_ekb'.kv.NF90_DOUBLE) |
520 | + dic = ('pjnl_l'.kv.NF90_INT)//('pjnl_j'.kv.NF90_DOUBLE) |
521 | + dic = dic//('pjnl_n'.kv.NF90_INT)//('pjnl_ekb'.kv.NF90_DOUBLE) |
522 | dic = dic//('kbcutoff'.kv.NF90_DOUBLE)//('kbdelta'.kv.NF90_DOUBLE) |
523 | d = .first. dic |
524 | do while ( .not. (.empty. d) ) |
525 | @@ -817,21 +865,27 @@ |
526 | call ncdf_put_var(grp,'orbnl_n',spp%orbnl_n(1:no)) |
527 | call ncdf_put_var(grp,'orbnl_z',spp%orbnl_z(1:no)) |
528 | |
529 | - allocate(aux(no)) |
530 | + allocate(iaux(no)) |
531 | do i = 1, no |
532 | if ( spp%orbnl_ispol(i) ) then |
533 | - aux(i) = 1 |
534 | + iaux(i) = 1 |
535 | else |
536 | - aux(i) = 0 |
537 | + iaux(i) = 0 |
538 | end if |
539 | end do |
540 | - call ncdf_put_var(grp,'orbnl_ispol',aux(1:no)) |
541 | - deallocate(aux) |
542 | + call ncdf_put_var(grp,'orbnl_ispol',iaux(1:no)) |
543 | + deallocate(iaux) |
544 | call ncdf_put_var(grp,'orbnl_pop',spp%orbnl_pop(1:no)) |
545 | |
546 | ! Save projector |
547 | if ( nk > 0 ) then |
548 | call ncdf_put_var(grp,'pjnl_l',spp%pjnl_l(1:nk)) |
549 | + allocate(raux(nk)) |
550 | + do i = 1, nk |
551 | + raux(i) = 0._dp |
552 | + end do |
553 | + call ncdf_put_var(grp,'pjnl_j',raux) |
554 | + deallocate(raux) |
555 | call ncdf_put_var(grp,'pjnl_n',spp%pjnl_n(1:nk)) |
556 | call ncdf_put_var(grp,'pjnl_ekb',spp%pjnl_ekb(1:nk)) |
557 | end if |
558 | @@ -874,9 +928,11 @@ |
559 | |
560 | subroutine cdf_save_md(fname) |
561 | use siesta_geom, only: na_u, xa, va |
562 | + use m_stress, only: stress |
563 | use m_forces, only: fa |
564 | - use m_energies, only: Etot, Ef, Ekinion |
565 | + use m_energies, only: Etot, Ekinion, Exc |
566 | use m_kinetic, only : Tempion |
567 | + use m_energies, only: Ef |
568 | |
569 | character(len=*), intent(in) :: fname |
570 | |
571 | @@ -894,19 +950,54 @@ |
572 | if ( Node == 0 ) then |
573 | ! Save current state |
574 | call ncdf_put_var(ncdf,'T',Tempion,start=(/MD/)) |
575 | - call ncdf_put_var(ncdf,'Ef',Ef,start=(/MD/)) |
576 | !call ncdf_put_var(ncdf,'E_KS',EKS,start=(/MD/)) |
577 | call ncdf_put_var(ncdf,'E_tot',Etot,start=(/MD/)) |
578 | call ncdf_put_var(ncdf,'E_kin',Ekinion,start=(/MD/)) |
579 | + call ncdf_put_var(ncdf,'E_xc',Exc,start=(/MD/)) |
580 | + call ncdf_put_var(ncdf,'Ef',Ef,start=(/MD/)) |
581 | |
582 | call ncdf_put_var(ncdf,'xa',xa,count=(/3,na_u/),start=(/1,1,MD/)) |
583 | call ncdf_put_var(ncdf,'fa',fa,count=(/3,na_u/),start=(/1,1,MD/)) |
584 | + call ncdf_put_var(ncdf,'stress',stress,count=(/3,3/),start=(/1,1,MD/)) |
585 | call ncdf_put_var(ncdf,'va',va,count=(/3,na_u/),start=(/1,1,MD/)) |
586 | end if |
587 | |
588 | call ncdf_close(ncdf) |
589 | |
590 | end subroutine cdf_save_md |
591 | + |
592 | + subroutine cdf_save_fc(fname,istep) |
593 | + use siesta_geom, only: na_u |
594 | + use siesta_options, only: ia1 |
595 | + use m_forces, only: fa |
596 | + |
597 | + character(len=*), intent(in) :: fname |
598 | + integer, intent(in) :: istep |
599 | + |
600 | + type(hNCDF) :: ncdf |
601 | + integer :: ia, dir, pm |
602 | + |
603 | + if ( Node /= 0 ) return |
604 | + |
605 | + ! open the file... |
606 | + call ncdf_open(ncdf,fname,mode=ior(NF90_WRITE,NF90_NETCDF4),group='FC') |
607 | + |
608 | + if ( istep == 0 ) then |
609 | + call ncdf_put_var(ncdf,'fa0',fa) |
610 | + |
611 | + else |
612 | + ! Atomic index (with respect to ia1) |
613 | + ia = mod(istep - 1, 6) + 1 |
614 | + dir = (ia - 1) / 2 + 1 |
615 | + pm = mod(ia-1, 2) + 1 |
616 | + ia = (istep - 1) / 6 + 1 |
617 | + |
618 | + call ncdf_put_var(ncdf,'fa',fa,count=(/3,na_u/),start=(/1,1,pm,dir,ia/)) |
619 | + end if |
620 | + |
621 | + call ncdf_close(ncdf) |
622 | + |
623 | + end subroutine cdf_save_fc |
624 | |
625 | #else |
626 | subroutine dummy() |
627 | |
628 | === modified file 'Src/read_options.F90' |
629 | --- Src/read_options.F90 2018-06-26 08:27:41 +0000 |
630 | +++ Src/read_options.F90 2018-07-09 07:59:46 +0000 |
631 | @@ -994,9 +994,11 @@ |
632 | |
633 | ! Maximum number of steps in CG/Broyden coordinate optimization |
634 | nmove = fdf_get('MD.NumCGsteps',0) |
635 | + nmove = fdf_get('MD.Steps',nmove) |
636 | |
637 | ! Maximum atomic displacement in one CG step |
638 | dxmax = fdf_get('MD.MaxCGDispl',0.2_dp,'Bohr') |
639 | + dxmax = fdf_get('MD.MaxDispl',dxmax,'Bohr') |
640 | |
641 | ! Tolerance in the maximum atomic force [0.04 eV/Ang] |
642 | ftol = fdf_get('MD.MaxForceTol', 0.00155574_dp, 'Ry/Bohr') |
643 | @@ -1052,11 +1054,19 @@ |
644 | name = 'MD.NumCGSteps', & |
645 | value = nmove, & |
646 | units = "cmlUnits:countable" ) |
647 | + call cmlAddParameter( xf = mainXML, & |
648 | + name = 'MD.Steps', & |
649 | + value = nmove, & |
650 | + units = "cmlUnits:countable" ) |
651 | |
652 | call cmlAddParameter( xf = mainXML, & |
653 | name = 'MD.MaxCGDispl', & |
654 | value = dxmax, & |
655 | units = 'siestaUnits:Bohr' ) |
656 | + call cmlAddParameter( xf = mainXML, & |
657 | + name = 'MD.MaxDispl', & |
658 | + value = dxmax, & |
659 | + units = 'siestaUnits:Bohr' ) |
660 | |
661 | call cmlAddParameter( xf=mainXML, & |
662 | name='MD.MaxForceTol', & |
663 | @@ -1156,7 +1166,11 @@ |
664 | |
665 | ! Initial and final time steps for MD |
666 | istart = fdf_get('MD.InitialTimeStep',1) |
667 | - ifinal = fdf_get('MD.FinalTimeStep',1) |
668 | + if ( fdf_defined('MD.Steps') ) then |
669 | + ifinal = fdf_get('MD.FinalTimeStep',max(1,nmove - istart + 1)) |
670 | + else |
671 | + ifinal = fdf_get('MD.FinalTimeStep',1) |
672 | + end if |
673 | |
674 | ! Length of time step for MD |
675 | dt = fdf_get('MD.LengthTimeStep',1._dp,'fs') |
676 | @@ -1583,7 +1597,7 @@ |
677 | |
678 | |
679 | ! Default variable depending on the action required |
680 | - if ( idyn == 0 .and. nmove <= 1 ) then |
681 | + if ( idyn == 0 .and. nmove <= 0 ) then |
682 | ! Single-point calculation: use the tight auxiliary supercell by default |
683 | naive_aux_cell = fdf_get( 'NaiveAuxiliaryCell', .false. ) |
684 | else |
685 | |
686 | === modified file 'Src/save_density_matrix.F' |
687 | --- Src/save_density_matrix.F 2017-11-23 14:17:27 +0000 |
688 | +++ Src/save_density_matrix.F 2018-07-09 07:59:46 +0000 |
689 | @@ -28,7 +28,7 @@ |
690 | use atomlist, only: no_l |
691 | use siesta_options, only: writedm, writedm_cdf |
692 | use siesta_options, only: writedm_cdf_history |
693 | - use siesta_options, only: idyn |
694 | + use siesta_options, only: idyn, nmove |
695 | use m_steps, only: istp |
696 | use sparse_matrices, only: Dscf, DM_2D |
697 | use fdf, only: fdf_get |
698 | @@ -51,7 +51,7 @@ |
699 | logical, intent(in), optional :: when |
700 | character(len=*), intent(in), optional :: file |
701 | |
702 | - logical :: do_it |
703 | + logical :: do_it, is_MD |
704 | |
705 | #ifdef CDF |
706 | #ifdef NCDF_4 |
707 | @@ -83,13 +83,17 @@ |
708 | & overwrite=.true. ) |
709 | endif |
710 | #ifdef NCDF_4 |
711 | - if ( write_cdf ) then |
712 | - |
713 | - dic_save = ('Ef'.kv.1) |
714 | - dic_save = dic_save//('DM'.kv.1)//('EDM'.kv.1) |
715 | - call cdf_save_state(trim(slabel)//'.nc',dic_save) |
716 | - |
717 | - call delete(dic_save) |
718 | + if ( write_cdf .and. do_it ) then |
719 | + |
720 | + if ( (idyn == 0 .and. nmove == 0) .or. |
721 | + & (idyn == 6 .and. istp == 1 ) ) then |
722 | + |
723 | + dic_save = ('Ef'.kv.1) |
724 | + dic_save = dic_save//('DM'.kv.1)//('EDM'.kv.1) |
725 | + call cdf_save_state(trim(slabel)//'.nc',dic_save) |
726 | + |
727 | + call delete(dic_save) |
728 | + end if |
729 | |
730 | end if |
731 | #endif |
732 | |
733 | === modified file 'Src/siesta_forces.F' |
734 | --- Src/siesta_forces.F 2018-06-19 11:00:00 +0000 |
735 | +++ Src/siesta_forces.F 2018-07-09 07:59:46 +0000 |
736 | @@ -72,9 +72,7 @@ |
737 | use write_subs, only: siesta_write_forces |
738 | use write_subs, only: siesta_write_stress_pressure |
739 | #ifdef NCDF_4 |
740 | - use dictionary |
741 | - use m_ncdf_siesta, only : cdf_init_file, cdf_save_settings |
742 | - use m_ncdf_siesta, only : cdf_save_state, cdf_save_basis |
743 | + use m_ncdf_siesta, only : cdf_save_settings |
744 | #endif |
745 | use m_compute_energies, only: compute_energies |
746 | use m_mpi_utils, only: broadcast |
747 | @@ -121,9 +119,6 @@ |
748 | external :: die, message |
749 | |
750 | real(dp) :: Qcur |
751 | -#ifdef NCDF_4 |
752 | - type(dict) :: d_sav |
753 | -#endif |
754 | #ifdef SIESTA__FLOOK |
755 | ! len=24 from m_mixing.F90 |
756 | character(len=1), target :: next_mixer(24) |
757 | @@ -230,27 +225,12 @@ |
758 | ! Initialize the NC file |
759 | if ( write_cdf ) then |
760 | |
761 | - ! Initialize the file... |
762 | - call cdf_init_file(trim(slabel)//'.nc',is_MD = .false.) |
763 | -#ifdef MPI |
764 | - call MPI_Barrier(MPI_Comm_World,MPIerror) |
765 | -#endif |
766 | - |
767 | - ! Save the settings |
768 | - call cdf_save_settings(trim(slabel)//'.nc') |
769 | -#ifdef MPI |
770 | - call MPI_Barrier(MPI_Comm_World,MPIerror) |
771 | -#endif |
772 | - |
773 | - d_sav = ('sp'.kv.1)//('S'.kv.1) |
774 | - d_sav = d_sav//('nsc'.kv.1)//('xij'.kv.1) |
775 | - d_sav = d_sav//('xa'.kv.1)//('cell'.kv.1) |
776 | - d_sav = d_sav//('isc_off'.kv.1) |
777 | - call cdf_save_state(trim(slabel)//'.nc',d_sav) |
778 | - call delete(d_sav) |
779 | - |
780 | - ! Save the basis set |
781 | - call cdf_save_basis(trim(slabel)//'.nc') |
782 | +! Save the settings (important to do here since mesh-cutoff may |
783 | +! have changed). |
784 | + call cdf_save_settings(trim(slabel)//'.nc') |
785 | +#ifdef MPI |
786 | + call MPI_Barrier(MPI_Comm_World,MPIerror) |
787 | +#endif |
788 | |
789 | end if |
790 | #endif |
791 | |
792 | === modified file 'Src/state_init.F' |
793 | --- Src/state_init.F 2018-06-26 08:27:41 +0000 |
794 | +++ Src/state_init.F 2018-07-09 07:59:46 +0000 |
795 | @@ -22,9 +22,9 @@ |
796 | use sparse_matrices, only: maxnh, numh, listh, listhptr |
797 | use sparse_matrices, only: Dold, Dscf, DM_2D |
798 | use sparse_matrices, only: Eold, Escf, EDM_2D |
799 | - use sparse_matrices, only: Hold, H , H_2D |
800 | + use sparse_matrices, only: Hold, H, H_2D |
801 | use sparse_matrices, only: xijo, xij_2D |
802 | - use sparse_matrices, only: S , S_1D |
803 | + use sparse_matrices, only: S, S_1D |
804 | |
805 | use sparse_matrices, only: H_kin_1D, H_vkb_1D |
806 | use sparse_matrices, only: H_ldau_2D, H_so_2D |
807 | @@ -91,6 +91,15 @@ |
808 | use iodm_netcdf, only: setup_dm_netcdf_file |
809 | use iodmhs_netcdf, only: setup_dmhs_netcdf_file |
810 | #endif |
811 | +#ifdef NCDF_4 |
812 | + use dictionary |
813 | + use m_ncdf_siesta, only : cdf_init_file, cdf_save_settings |
814 | + use m_ncdf_siesta, only : cdf_save_state, cdf_save_basis |
815 | +#ifdef MPI |
816 | + use mpi_siesta |
817 | +#endif |
818 | +#endif |
819 | + |
820 | use class_Sparsity |
821 | use class_dSpData1D |
822 | use class_dSpData2D |
823 | @@ -123,6 +132,13 @@ |
824 | character(len=label_length+6) :: fname |
825 | real(dp) :: dummyef=0.0, dummyqtot=0.0 |
826 | type(Sparsity) :: g_Sp |
827 | +#ifdef NCDF_4 |
828 | + type(dict) :: d_sav |
829 | +#ifdef MPI |
830 | + integer :: MPIerror |
831 | +#endif |
832 | + logical :: is_MD, is_FC |
833 | +#endif |
834 | |
835 | character(len=256) :: oname |
836 | |
837 | @@ -555,8 +571,42 @@ |
838 | call overlap( na_u, na_s, no_s, scell, xa, indxua, rmaxo, maxnh, |
839 | & lasto, iphorb, isa, numh, listhptr, listh, S ) |
840 | |
841 | - |
842 | +#ifdef NCDF_4 |
843 | +! At this point the sparsity pattern, overlap matrix and some |
844 | +! other details. |
845 | +! Before continuing we will create the CDF file output |
846 | ! |
847 | +! Initialize the NC file |
848 | + if ( write_cdf ) then |
849 | + if ( inicoor == istep ) then |
850 | + is_MD = .true. |
851 | + if ( idyn == 0 .and. nmove == 0 ) is_MD = .false. |
852 | + is_FC = (idyn == 6) |
853 | + if ( is_FC ) is_MD = .false. |
854 | + call cdf_init_file(trim(slabel)//'.nc', |
855 | + & is_MD=is_MD, is_FC=is_FC) |
856 | +#ifdef MPI |
857 | + call MPI_Barrier(MPI_Comm_World,MPIerror) |
858 | +#endif |
859 | + |
860 | +! Save the basis set (only once) |
861 | + call cdf_save_basis(trim(slabel)//'.nc') |
862 | +#ifdef MPI |
863 | + call MPI_Barrier(MPI_Comm_World,MPIerror) |
864 | +#endif |
865 | + |
866 | + if ( .not. is_MD ) then |
867 | + d_sav = d_sav//('xa'.kv.1)//('cell'.kv.1) |
868 | + d_sav = d_sav//('sp'.kv.1)//('S'.kv.1)//('xij'.kv.1) |
869 | + d_sav = d_sav//('isc_off'.kv.1)//('nsc'.kv.1) |
870 | + call cdf_save_state(trim(slabel)//'.nc',d_sav) |
871 | + call delete(d_sav) |
872 | + end if |
873 | + end if |
874 | + end if |
875 | +#endif |
876 | + |
877 | +! |
878 | ! Here we could also read a Hamiltonian, either to proceed to |
879 | ! the analysis section (with nscf=0) or to start a mix-H scf cycle. |
880 | ! |
881 | |
882 | === modified file 'Util/COOP/Makefile' |
883 | --- Util/COOP/Makefile 2018-06-28 13:53:17 +0000 |
884 | +++ Util/COOP/Makefile 2018-07-09 07:59:46 +0000 |
885 | @@ -814,14 +814,14 @@ |
886 | state_init.o: class_SpData2D.o class_Sparsity.o create_Sparsity_SC.o |
887 | state_init.o: domain_decom.o files.o hsparse.o iodm_netcdf.o iodmhs_netcdf.o |
888 | state_init.o: ioxv.o kpoint_grid.o ldau_specs.o local_sys.o m_energies.o m_eo.o |
889 | -state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_new_dm.o m_os.o |
890 | -state_init.o: m_pivot_methods.o m_rmaxh.o m_sparse.o m_sparsity_handling.o |
891 | -state_init.o: m_spin.o m_steps.o m_supercell.o m_test_io.o m_ts_charge.o |
892 | -state_init.o: m_ts_electype.o m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o |
893 | -state_init.o: m_ts_options.o m_ts_sparse.o m_ts_tri_init.o normalize_dm.o |
894 | -state_init.o: overlap.o parallel.o proximity_check.o siesta_cml.o |
895 | -state_init.o: siesta_dicts.o siesta_geom.o siesta_options.o sparse_matrices.o |
896 | -state_init.o: units.o write_subs.o zmatrix.o |
897 | +state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_ncdf_siesta.o |
898 | +state_init.o: m_new_dm.o m_os.o m_pivot_methods.o m_rmaxh.o m_sparse.o |
899 | +state_init.o: m_sparsity_handling.o m_spin.o m_steps.o m_supercell.o |
900 | +state_init.o: m_test_io.o m_ts_charge.o m_ts_electype.o m_ts_global_vars.o |
901 | +state_init.o: m_ts_io.o m_ts_kpoints.o m_ts_options.o m_ts_sparse.o |
902 | +state_init.o: m_ts_tri_init.o normalize_dm.o overlap.o parallel.o |
903 | +state_init.o: proximity_check.o siesta_cml.o siesta_dicts.o siesta_geom.o |
904 | +state_init.o: siesta_options.o sparse_matrices.o units.o write_subs.o zmatrix.o |
905 | struct_init.o: alloc.o atmfuncs.o atomlist.o files.o ioxv.o m_exp_coord.o |
906 | struct_init.o: m_iostruct.o m_mpi_utils.o m_steps.o parallel.o periodic_table.o |
907 | struct_init.o: siesta_cml.o siesta_geom.o siesta_master.o siesta_options.o |
908 | |
909 | === modified file 'Util/Denchar/Src/Makefile' |
910 | --- Util/Denchar/Src/Makefile 2018-06-28 13:53:17 +0000 |
911 | +++ Util/Denchar/Src/Makefile 2018-07-09 07:59:46 +0000 |
912 | @@ -888,14 +888,14 @@ |
913 | state_init.o: class_SpData2D.o class_Sparsity.o create_Sparsity_SC.o |
914 | state_init.o: domain_decom.o files.o hsparse.o iodm_netcdf.o iodmhs_netcdf.o |
915 | state_init.o: ioxv.o kpoint_grid.o ldau_specs.o local_sys.o m_energies.o m_eo.o |
916 | -state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_new_dm.o m_os.o |
917 | -state_init.o: m_pivot_methods.o m_rmaxh.o m_sparse.o m_sparsity_handling.o |
918 | -state_init.o: m_spin.o m_steps.o m_supercell.o m_test_io.o m_ts_charge.o |
919 | -state_init.o: m_ts_electype.o m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o |
920 | -state_init.o: m_ts_options.o m_ts_sparse.o m_ts_tri_init.o normalize_dm.o |
921 | -state_init.o: overlap.o parallel.o proximity_check.o siesta_cml.o |
922 | -state_init.o: siesta_dicts.o siesta_geom.o siesta_options.o sparse_matrices.o |
923 | -state_init.o: units.o write_subs.o zmatrix.o |
924 | +state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_ncdf_siesta.o |
925 | +state_init.o: m_new_dm.o m_os.o m_pivot_methods.o m_rmaxh.o m_sparse.o |
926 | +state_init.o: m_sparsity_handling.o m_spin.o m_steps.o m_supercell.o |
927 | +state_init.o: m_test_io.o m_ts_charge.o m_ts_electype.o m_ts_global_vars.o |
928 | +state_init.o: m_ts_io.o m_ts_kpoints.o m_ts_options.o m_ts_sparse.o |
929 | +state_init.o: m_ts_tri_init.o normalize_dm.o overlap.o parallel.o |
930 | +state_init.o: proximity_check.o siesta_cml.o siesta_dicts.o siesta_geom.o |
931 | +state_init.o: siesta_options.o sparse_matrices.o units.o write_subs.o zmatrix.o |
932 | struct_init.o: alloc.o atmfuncs.o atomlist.o files.o ioxv.o m_exp_coord.o |
933 | struct_init.o: m_iostruct.o m_mpi_utils.o m_steps.o parallel.o periodic_table.o |
934 | struct_init.o: siesta_cml.o siesta_geom.o siesta_master.o siesta_options.o |
935 | |
936 | === modified file 'Util/Gen-basis/Makefile' |
937 | --- Util/Gen-basis/Makefile 2018-06-28 13:53:17 +0000 |
938 | +++ Util/Gen-basis/Makefile 2018-07-09 07:59:46 +0000 |
939 | @@ -878,14 +878,14 @@ |
940 | state_init.o: class_SpData2D.o class_Sparsity.o create_Sparsity_SC.o |
941 | state_init.o: domain_decom.o files.o hsparse.o iodm_netcdf.o iodmhs_netcdf.o |
942 | state_init.o: ioxv.o kpoint_grid.o ldau_specs.o local_sys.o m_energies.o m_eo.o |
943 | -state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_new_dm.o m_os.o |
944 | -state_init.o: m_pivot_methods.o m_rmaxh.o m_sparse.o m_sparsity_handling.o |
945 | -state_init.o: m_spin.o m_steps.o m_supercell.o m_test_io.o m_ts_charge.o |
946 | -state_init.o: m_ts_electype.o m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o |
947 | -state_init.o: m_ts_options.o m_ts_sparse.o m_ts_tri_init.o normalize_dm.o |
948 | -state_init.o: overlap.o parallel.o proximity_check.o siesta_cml.o |
949 | -state_init.o: siesta_dicts.o siesta_geom.o siesta_options.o sparse_matrices.o |
950 | -state_init.o: units.o write_subs.o zmatrix.o |
951 | +state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_ncdf_siesta.o |
952 | +state_init.o: m_new_dm.o m_os.o m_pivot_methods.o m_rmaxh.o m_sparse.o |
953 | +state_init.o: m_sparsity_handling.o m_spin.o m_steps.o m_supercell.o |
954 | +state_init.o: m_test_io.o m_ts_charge.o m_ts_electype.o m_ts_global_vars.o |
955 | +state_init.o: m_ts_io.o m_ts_kpoints.o m_ts_options.o m_ts_sparse.o |
956 | +state_init.o: m_ts_tri_init.o normalize_dm.o overlap.o parallel.o |
957 | +state_init.o: proximity_check.o siesta_cml.o siesta_dicts.o siesta_geom.o |
958 | +state_init.o: siesta_options.o sparse_matrices.o units.o write_subs.o zmatrix.o |
959 | struct_init.o: alloc.o atmfuncs.o atomlist.o files.o ioxv.o m_exp_coord.o |
960 | struct_init.o: m_iostruct.o m_mpi_utils.o m_steps.o parallel.o periodic_table.o |
961 | struct_init.o: siesta_cml.o siesta_geom.o siesta_master.o siesta_options.o |
962 | |
963 | === modified file 'Util/Grimme/Makefile' |
964 | --- Util/Grimme/Makefile 2018-06-28 13:53:17 +0000 |
965 | +++ Util/Grimme/Makefile 2018-07-09 07:59:46 +0000 |
966 | @@ -816,14 +816,14 @@ |
967 | state_init.o: class_SpData2D.o class_Sparsity.o create_Sparsity_SC.o |
968 | state_init.o: domain_decom.o files.o hsparse.o iodm_netcdf.o iodmhs_netcdf.o |
969 | state_init.o: ioxv.o kpoint_grid.o ldau_specs.o local_sys.o m_energies.o m_eo.o |
970 | -state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_new_dm.o m_os.o |
971 | -state_init.o: m_pivot_methods.o m_rmaxh.o m_sparse.o m_sparsity_handling.o |
972 | -state_init.o: m_spin.o m_steps.o m_supercell.o m_test_io.o m_ts_charge.o |
973 | -state_init.o: m_ts_electype.o m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o |
974 | -state_init.o: m_ts_options.o m_ts_sparse.o m_ts_tri_init.o normalize_dm.o |
975 | -state_init.o: overlap.o parallel.o proximity_check.o siesta_cml.o |
976 | -state_init.o: siesta_dicts.o siesta_geom.o siesta_options.o sparse_matrices.o |
977 | -state_init.o: units.o write_subs.o zmatrix.o |
978 | +state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_ncdf_siesta.o |
979 | +state_init.o: m_new_dm.o m_os.o m_pivot_methods.o m_rmaxh.o m_sparse.o |
980 | +state_init.o: m_sparsity_handling.o m_spin.o m_steps.o m_supercell.o |
981 | +state_init.o: m_test_io.o m_ts_charge.o m_ts_electype.o m_ts_global_vars.o |
982 | +state_init.o: m_ts_io.o m_ts_kpoints.o m_ts_options.o m_ts_sparse.o |
983 | +state_init.o: m_ts_tri_init.o normalize_dm.o overlap.o parallel.o |
984 | +state_init.o: proximity_check.o siesta_cml.o siesta_dicts.o siesta_geom.o |
985 | +state_init.o: siesta_options.o sparse_matrices.o units.o write_subs.o zmatrix.o |
986 | struct_init.o: alloc.o atmfuncs.o atomlist.o files.o ioxv.o m_exp_coord.o |
987 | struct_init.o: m_iostruct.o m_mpi_utils.o m_steps.o parallel.o periodic_table.o |
988 | struct_init.o: siesta_cml.o siesta_geom.o siesta_master.o siesta_options.o |
989 | |
990 | === modified file 'Util/Helpers/Makefile' |
991 | --- Util/Helpers/Makefile 2018-06-28 13:53:17 +0000 |
992 | +++ Util/Helpers/Makefile 2018-07-09 07:59:46 +0000 |
993 | @@ -819,14 +819,14 @@ |
994 | state_init.o: class_SpData2D.o class_Sparsity.o create_Sparsity_SC.o |
995 | state_init.o: domain_decom.o files.o hsparse.o iodm_netcdf.o iodmhs_netcdf.o |
996 | state_init.o: ioxv.o kpoint_grid.o ldau_specs.o local_sys.o m_energies.o m_eo.o |
997 | -state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_new_dm.o m_os.o |
998 | -state_init.o: m_pivot_methods.o m_rmaxh.o m_sparse.o m_sparsity_handling.o |
999 | -state_init.o: m_spin.o m_steps.o m_supercell.o m_test_io.o m_ts_charge.o |
1000 | -state_init.o: m_ts_electype.o m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o |
1001 | -state_init.o: m_ts_options.o m_ts_sparse.o m_ts_tri_init.o normalize_dm.o |
1002 | -state_init.o: overlap.o parallel.o proximity_check.o siesta_cml.o |
1003 | -state_init.o: siesta_dicts.o siesta_geom.o siesta_options.o sparse_matrices.o |
1004 | -state_init.o: units.o write_subs.o zmatrix.o |
1005 | +state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_ncdf_siesta.o |
1006 | +state_init.o: m_new_dm.o m_os.o m_pivot_methods.o m_rmaxh.o m_sparse.o |
1007 | +state_init.o: m_sparsity_handling.o m_spin.o m_steps.o m_supercell.o |
1008 | +state_init.o: m_test_io.o m_ts_charge.o m_ts_electype.o m_ts_global_vars.o |
1009 | +state_init.o: m_ts_io.o m_ts_kpoints.o m_ts_options.o m_ts_sparse.o |
1010 | +state_init.o: m_ts_tri_init.o normalize_dm.o overlap.o parallel.o |
1011 | +state_init.o: proximity_check.o siesta_cml.o siesta_dicts.o siesta_geom.o |
1012 | +state_init.o: siesta_options.o sparse_matrices.o units.o write_subs.o zmatrix.o |
1013 | struct_init.o: alloc.o atmfuncs.o atomlist.o files.o ioxv.o m_exp_coord.o |
1014 | struct_init.o: m_iostruct.o m_mpi_utils.o m_steps.o parallel.o periodic_table.o |
1015 | struct_init.o: siesta_cml.o siesta_geom.o siesta_master.o siesta_options.o |
1016 | |
1017 | === modified file 'Util/STM/ol-stm/Src/Makefile' |
1018 | --- Util/STM/ol-stm/Src/Makefile 2018-06-28 13:53:17 +0000 |
1019 | +++ Util/STM/ol-stm/Src/Makefile 2018-07-09 07:59:46 +0000 |
1020 | @@ -901,14 +901,14 @@ |
1021 | state_init.o: class_SpData2D.o class_Sparsity.o create_Sparsity_SC.o |
1022 | state_init.o: domain_decom.o files.o hsparse.o iodm_netcdf.o iodmhs_netcdf.o |
1023 | state_init.o: ioxv.o kpoint_grid.o ldau_specs.o local_sys.o m_energies.o m_eo.o |
1024 | -state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_new_dm.o m_os.o |
1025 | -state_init.o: m_pivot_methods.o m_rmaxh.o m_sparse.o m_sparsity_handling.o |
1026 | -state_init.o: m_spin.o m_steps.o m_supercell.o m_test_io.o m_ts_charge.o |
1027 | -state_init.o: m_ts_electype.o m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o |
1028 | -state_init.o: m_ts_options.o m_ts_sparse.o m_ts_tri_init.o normalize_dm.o |
1029 | -state_init.o: overlap.o parallel.o proximity_check.o siesta_cml.o |
1030 | -state_init.o: siesta_dicts.o siesta_geom.o siesta_options.o sparse_matrices.o |
1031 | -state_init.o: units.o write_subs.o zmatrix.o |
1032 | +state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_ncdf_siesta.o |
1033 | +state_init.o: m_new_dm.o m_os.o m_pivot_methods.o m_rmaxh.o m_sparse.o |
1034 | +state_init.o: m_sparsity_handling.o m_spin.o m_steps.o m_supercell.o |
1035 | +state_init.o: m_test_io.o m_ts_charge.o m_ts_electype.o m_ts_global_vars.o |
1036 | +state_init.o: m_ts_io.o m_ts_kpoints.o m_ts_options.o m_ts_sparse.o |
1037 | +state_init.o: m_ts_tri_init.o normalize_dm.o overlap.o parallel.o |
1038 | +state_init.o: proximity_check.o siesta_cml.o siesta_dicts.o siesta_geom.o |
1039 | +state_init.o: siesta_options.o sparse_matrices.o units.o write_subs.o zmatrix.o |
1040 | struct_init.o: alloc.o atmfuncs.o atomlist.o files.o ioxv.o m_exp_coord.o |
1041 | struct_init.o: m_iostruct.o m_mpi_utils.o m_steps.o parallel.o periodic_table.o |
1042 | struct_init.o: siesta_cml.o siesta_geom.o siesta_master.o siesta_options.o |
1043 | |
1044 | === modified file 'Util/SpPivot/Makefile' |
1045 | --- Util/SpPivot/Makefile 2018-06-28 13:53:17 +0000 |
1046 | +++ Util/SpPivot/Makefile 2018-07-09 07:59:46 +0000 |
1047 | @@ -830,14 +830,14 @@ |
1048 | state_init.o: class_SpData2D.o class_Sparsity.o create_Sparsity_SC.o |
1049 | state_init.o: domain_decom.o files.o hsparse.o iodm_netcdf.o iodmhs_netcdf.o |
1050 | state_init.o: ioxv.o kpoint_grid.o ldau_specs.o local_sys.o m_energies.o m_eo.o |
1051 | -state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_new_dm.o m_os.o |
1052 | -state_init.o: m_pivot_methods.o m_rmaxh.o m_sparse.o m_sparsity_handling.o |
1053 | -state_init.o: m_spin.o m_steps.o m_supercell.o m_test_io.o m_ts_charge.o |
1054 | -state_init.o: m_ts_electype.o m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o |
1055 | -state_init.o: m_ts_options.o m_ts_sparse.o m_ts_tri_init.o normalize_dm.o |
1056 | -state_init.o: overlap.o parallel.o proximity_check.o siesta_cml.o |
1057 | -state_init.o: siesta_dicts.o siesta_geom.o siesta_options.o sparse_matrices.o |
1058 | -state_init.o: units.o write_subs.o zmatrix.o |
1059 | +state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_ncdf_siesta.o |
1060 | +state_init.o: m_new_dm.o m_os.o m_pivot_methods.o m_rmaxh.o m_sparse.o |
1061 | +state_init.o: m_sparsity_handling.o m_spin.o m_steps.o m_supercell.o |
1062 | +state_init.o: m_test_io.o m_ts_charge.o m_ts_electype.o m_ts_global_vars.o |
1063 | +state_init.o: m_ts_io.o m_ts_kpoints.o m_ts_options.o m_ts_sparse.o |
1064 | +state_init.o: m_ts_tri_init.o normalize_dm.o overlap.o parallel.o |
1065 | +state_init.o: proximity_check.o siesta_cml.o siesta_dicts.o siesta_geom.o |
1066 | +state_init.o: siesta_options.o sparse_matrices.o units.o write_subs.o zmatrix.o |
1067 | struct_init.o: alloc.o atmfuncs.o atomlist.o files.o ioxv.o m_exp_coord.o |
1068 | struct_init.o: m_iostruct.o m_mpi_utils.o m_steps.o parallel.o periodic_table.o |
1069 | struct_init.o: siesta_cml.o siesta_geom.o siesta_master.o siesta_options.o |
1070 | |
1071 | === modified file 'Util/TS/TBtrans/Makefile' |
1072 | --- Util/TS/TBtrans/Makefile 2018-06-28 13:53:17 +0000 |
1073 | +++ Util/TS/TBtrans/Makefile 2018-07-09 07:59:46 +0000 |
1074 | @@ -1086,14 +1086,14 @@ |
1075 | state_init.o: class_SpData2D.o class_Sparsity.o create_Sparsity_SC.o |
1076 | state_init.o: domain_decom.o files.o hsparse.o iodm_netcdf.o iodmhs_netcdf.o |
1077 | state_init.o: ioxv.o kpoint_grid.o ldau_specs.o local_sys.o m_energies.o m_eo.o |
1078 | -state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_new_dm.o m_os.o |
1079 | -state_init.o: m_pivot_methods.o m_rmaxh.o m_sparse.o m_sparsity_handling.o |
1080 | -state_init.o: m_spin.o m_steps.o m_supercell.o m_test_io.o m_ts_charge.o |
1081 | -state_init.o: m_ts_electype.o m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o |
1082 | -state_init.o: m_ts_options.o m_ts_sparse.o m_ts_tri_init.o normalize_dm.o |
1083 | -state_init.o: overlap.o parallel.o proximity_check.o siesta_cml.o |
1084 | -state_init.o: siesta_dicts.o siesta_geom.o siesta_options.o sparse_matrices.o |
1085 | -state_init.o: units.o write_subs.o zmatrix.o |
1086 | +state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_ncdf_siesta.o |
1087 | +state_init.o: m_new_dm.o m_os.o m_pivot_methods.o m_rmaxh.o m_sparse.o |
1088 | +state_init.o: m_sparsity_handling.o m_spin.o m_steps.o m_supercell.o |
1089 | +state_init.o: m_test_io.o m_ts_charge.o m_ts_electype.o m_ts_global_vars.o |
1090 | +state_init.o: m_ts_io.o m_ts_kpoints.o m_ts_options.o m_ts_sparse.o |
1091 | +state_init.o: m_ts_tri_init.o normalize_dm.o overlap.o parallel.o |
1092 | +state_init.o: proximity_check.o siesta_cml.o siesta_dicts.o siesta_geom.o |
1093 | +state_init.o: siesta_options.o sparse_matrices.o units.o write_subs.o zmatrix.o |
1094 | struct_init.o: alloc.o atmfuncs.o atomlist.o files.o ioxv.o m_exp_coord.o |
1095 | struct_init.o: m_iostruct.o m_mpi_utils.o m_steps.o parallel.o periodic_table.o |
1096 | struct_init.o: siesta_cml.o siesta_geom.o siesta_master.o siesta_options.o |
1097 | |
1098 | === modified file 'Util/TS/ts2ts/Makefile' |
1099 | --- Util/TS/ts2ts/Makefile 2018-06-28 13:53:17 +0000 |
1100 | +++ Util/TS/ts2ts/Makefile 2018-07-09 07:59:46 +0000 |
1101 | @@ -823,14 +823,14 @@ |
1102 | state_init.o: class_SpData2D.o class_Sparsity.o create_Sparsity_SC.o |
1103 | state_init.o: domain_decom.o files.o hsparse.o iodm_netcdf.o iodmhs_netcdf.o |
1104 | state_init.o: ioxv.o kpoint_grid.o ldau_specs.o local_sys.o m_energies.o m_eo.o |
1105 | -state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_new_dm.o m_os.o |
1106 | -state_init.o: m_pivot_methods.o m_rmaxh.o m_sparse.o m_sparsity_handling.o |
1107 | -state_init.o: m_spin.o m_steps.o m_supercell.o m_test_io.o m_ts_charge.o |
1108 | -state_init.o: m_ts_electype.o m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o |
1109 | -state_init.o: m_ts_options.o m_ts_sparse.o m_ts_tri_init.o normalize_dm.o |
1110 | -state_init.o: overlap.o parallel.o proximity_check.o siesta_cml.o |
1111 | -state_init.o: siesta_dicts.o siesta_geom.o siesta_options.o sparse_matrices.o |
1112 | -state_init.o: units.o write_subs.o zmatrix.o |
1113 | +state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_ncdf_siesta.o |
1114 | +state_init.o: m_new_dm.o m_os.o m_pivot_methods.o m_rmaxh.o m_sparse.o |
1115 | +state_init.o: m_sparsity_handling.o m_spin.o m_steps.o m_supercell.o |
1116 | +state_init.o: m_test_io.o m_ts_charge.o m_ts_electype.o m_ts_global_vars.o |
1117 | +state_init.o: m_ts_io.o m_ts_kpoints.o m_ts_options.o m_ts_sparse.o |
1118 | +state_init.o: m_ts_tri_init.o normalize_dm.o overlap.o parallel.o |
1119 | +state_init.o: proximity_check.o siesta_cml.o siesta_dicts.o siesta_geom.o |
1120 | +state_init.o: siesta_options.o sparse_matrices.o units.o write_subs.o zmatrix.o |
1121 | struct_init.o: alloc.o atmfuncs.o atomlist.o files.o ioxv.o m_exp_coord.o |
1122 | struct_init.o: m_iostruct.o m_mpi_utils.o m_steps.o parallel.o periodic_table.o |
1123 | struct_init.o: siesta_cml.o siesta_geom.o siesta_master.o siesta_options.o |
1124 | |
1125 | === modified file 'Util/TS/tshs2tshs/Makefile' |
1126 | --- Util/TS/tshs2tshs/Makefile 2018-06-28 13:53:17 +0000 |
1127 | +++ Util/TS/tshs2tshs/Makefile 2018-07-09 07:59:46 +0000 |
1128 | @@ -889,14 +889,14 @@ |
1129 | state_init.o: class_SpData2D.o class_Sparsity.o create_Sparsity_SC.o |
1130 | state_init.o: domain_decom.o files.o hsparse.o iodm_netcdf.o iodmhs_netcdf.o |
1131 | state_init.o: ioxv.o kpoint_grid.o ldau_specs.o local_sys.o m_energies.o m_eo.o |
1132 | -state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_new_dm.o m_os.o |
1133 | -state_init.o: m_pivot_methods.o m_rmaxh.o m_sparse.o m_sparsity_handling.o |
1134 | -state_init.o: m_spin.o m_steps.o m_supercell.o m_test_io.o m_ts_charge.o |
1135 | -state_init.o: m_ts_electype.o m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o |
1136 | -state_init.o: m_ts_options.o m_ts_sparse.o m_ts_tri_init.o normalize_dm.o |
1137 | -state_init.o: overlap.o parallel.o proximity_check.o siesta_cml.o |
1138 | -state_init.o: siesta_dicts.o siesta_geom.o siesta_options.o sparse_matrices.o |
1139 | -state_init.o: units.o write_subs.o zmatrix.o |
1140 | +state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_ncdf_siesta.o |
1141 | +state_init.o: m_new_dm.o m_os.o m_pivot_methods.o m_rmaxh.o m_sparse.o |
1142 | +state_init.o: m_sparsity_handling.o m_spin.o m_steps.o m_supercell.o |
1143 | +state_init.o: m_test_io.o m_ts_charge.o m_ts_electype.o m_ts_global_vars.o |
1144 | +state_init.o: m_ts_io.o m_ts_kpoints.o m_ts_options.o m_ts_sparse.o |
1145 | +state_init.o: m_ts_tri_init.o normalize_dm.o overlap.o parallel.o |
1146 | +state_init.o: proximity_check.o siesta_cml.o siesta_dicts.o siesta_geom.o |
1147 | +state_init.o: siesta_options.o sparse_matrices.o units.o write_subs.o zmatrix.o |
1148 | struct_init.o: alloc.o atmfuncs.o atomlist.o files.o ioxv.o m_exp_coord.o |
1149 | struct_init.o: m_iostruct.o m_mpi_utils.o m_steps.o parallel.o periodic_table.o |
1150 | struct_init.o: siesta_cml.o siesta_geom.o siesta_master.o siesta_options.o |
1151 | |
1152 | === modified file 'Util/VCA/Makefile' |
1153 | --- Util/VCA/Makefile 2018-06-28 13:53:17 +0000 |
1154 | +++ Util/VCA/Makefile 2018-07-09 07:59:46 +0000 |
1155 | @@ -849,14 +849,14 @@ |
1156 | state_init.o: class_SpData2D.o class_Sparsity.o create_Sparsity_SC.o |
1157 | state_init.o: domain_decom.o files.o hsparse.o iodm_netcdf.o iodmhs_netcdf.o |
1158 | state_init.o: ioxv.o kpoint_grid.o ldau_specs.o local_sys.o m_energies.o m_eo.o |
1159 | -state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_new_dm.o m_os.o |
1160 | -state_init.o: m_pivot_methods.o m_rmaxh.o m_sparse.o m_sparsity_handling.o |
1161 | -state_init.o: m_spin.o m_steps.o m_supercell.o m_test_io.o m_ts_charge.o |
1162 | -state_init.o: m_ts_electype.o m_ts_global_vars.o m_ts_io.o m_ts_kpoints.o |
1163 | -state_init.o: m_ts_options.o m_ts_sparse.o m_ts_tri_init.o normalize_dm.o |
1164 | -state_init.o: overlap.o parallel.o proximity_check.o siesta_cml.o |
1165 | -state_init.o: siesta_dicts.o siesta_geom.o siesta_options.o sparse_matrices.o |
1166 | -state_init.o: units.o write_subs.o zmatrix.o |
1167 | +state_init.o: m_mixing.o m_mixing_scf.o m_mpi_utils.o m_ncdf_siesta.o |
1168 | +state_init.o: m_new_dm.o m_os.o m_pivot_methods.o m_rmaxh.o m_sparse.o |
1169 | +state_init.o: m_sparsity_handling.o m_spin.o m_steps.o m_supercell.o |
1170 | +state_init.o: m_test_io.o m_ts_charge.o m_ts_electype.o m_ts_global_vars.o |
1171 | +state_init.o: m_ts_io.o m_ts_kpoints.o m_ts_options.o m_ts_sparse.o |
1172 | +state_init.o: m_ts_tri_init.o normalize_dm.o overlap.o parallel.o |
1173 | +state_init.o: proximity_check.o siesta_cml.o siesta_dicts.o siesta_geom.o |
1174 | +state_init.o: siesta_options.o sparse_matrices.o units.o write_subs.o zmatrix.o |
1175 | struct_init.o: alloc.o atmfuncs.o atomlist.o files.o ioxv.o m_exp_coord.o |
1176 | struct_init.o: m_iostruct.o m_mpi_utils.o m_steps.o parallel.o periodic_table.o |
1177 | struct_init.o: siesta_cml.o siesta_geom.o siesta_master.o siesta_options.o |
1178 | |
1179 | === modified file 'version.info' |
1180 | --- version.info 2018-07-06 20:00:09 +0000 |
1181 | +++ version.info 2018-07-09 07:59:46 +0000 |
1182 | @@ -1,1 +1,5 @@ |
1183 | +<<<<<<< TREE |
1184 | siesta-4.1--938 |
1185 | +======= |
1186 | +siesta-4.1--937--cdf-md-3 |
1187 | +>>>>>>> MERGE-SOURCE |
OK to the introduction of MD.Steps et al.
This is a minor point:
If someone uses MD.TypeOfRun <some MD option> but forgets to set MD.FinalTimeStep, a fossil MD.NumCGSteps might set it silently. I would put in code to complain if MD.Steps is not set either.
Also:
* In the ncdf module, the KB projectors might (in the trunk) now have an extra "j" index (when offsite SO is used). I put them in the .ion file, but I forgot to put them in the vanilla cdf files. Please take this into account when you port this patch into the trunk.
* Correct the indentation of
! 5 = -z
in final_H_f_stress.