Line data Source code
1 : !--------------------------------------------------------------------------------
2 : ! Copyright (c) 2016 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
3 : ! This file is part of FLEUR and available as free software under the conditions
4 : ! of the MIT license as expressed in the LICENSE file in more detail.
5 : !--------------------------------------------------------------------------------
6 :
7 : MODULE m_wann_postproc
8 : CONTAINS
9 4 : SUBROUTINE wann_postproc(&
10 : stars,vacuum,atoms,sphhar,input,kpts,sym,fmpi,&
11 : lapw ,noco,nococonv,cell,vTot,enpara,sliceplot,eig_id,l_real,&
12 : wann, fullnkpts, l_proj,ef,l_sgwf,fullnqpts)
13 : ! < fermi_weights)
14 :
15 : !***********************************************
16 : ! Collection of those subroutines which may
17 : ! be called after the Wannier functions have
18 : ! been computed.
19 : ! Frank Freimuth
20 : !***********************************************
21 :
22 : USE m_types
23 : USE m_constants
24 : USE m_wann_dipole
25 : USE m_wann_dipole2
26 : USE m_wann_wannierize
27 : USE m_wann_hopping
28 : USE m_wann_plot_um_dat
29 : USE m_wannier_to_lapw
30 : USE m_wann_plot_from_lapw
31 : USE m_wann_nabla_rs
32 : USE m_wann_pauli_rs
33 : USE m_wann_pauliat_rs
34 : USE m_wann_nabla_pauli_rs
35 : USE m_wann_socmat_rs
36 : USE m_wann_perpmag_rs
37 : USE m_wann_wigner_seitz
38 : USE m_wann_get_mp
39 : USE m_wann_get_kpts
40 : USE m_wann_fft4
41 : USE m_wann_fft5
42 : USE m_wann_rmat
43 : use m_wann_socmatvec_rs
44 : USE m_wann_nocoplot
45 : USE m_wann_torque_rs
46 : #ifdef CPP_TOPO
47 : USE m_wann_offdiposop_rs
48 : USE m_wann_fft6
49 : USE m_wann_fft3
50 : USE m_wann_nedrho
51 : #endif
52 :
53 : #ifdef DCPP_WANN_EXT
54 : USE m_wannier_to_lapw_kpts
55 : USE m_wannier_lapw_gfleur
56 : #endif
57 : IMPLICIT NONE
58 :
59 :
60 : TYPE(t_stars),INTENT(IN) :: stars
61 : TYPE(t_vacuum),INTENT(IN) :: vacuum
62 : TYPE(t_atoms),INTENT(IN) :: atoms
63 : TYPE(t_sphhar),INTENT(IN) :: sphhar
64 : TYPE(t_input),INTENT(IN) :: input
65 : TYPE(t_kpts),INTENT(IN) :: kpts
66 : TYPE(t_sym),INTENT(IN) :: sym
67 : TYPE(t_mpi),INTENT(IN) :: fmpi
68 : TYPE(t_lapw),INTENT(IN) :: lapw
69 :
70 : TYPE(t_noco),INTENT(IN) :: noco
71 : TYPE(t_nococonv),INTENT(IN) :: nococonv
72 : TYPE(t_cell),INTENT(IN) :: cell
73 : TYPE(t_potden),INTENT(IN) :: vTot
74 : TYPE(t_enpara),INTENT(IN) :: enpara
75 : type(t_sliceplot),INTENT(IN) :: sliceplot
76 :
77 : TYPE(t_wann), INTENT(in) :: wann
78 : LOGICAL, INTENT(in) :: l_real
79 : INTEGER, INTENT(in) :: eig_id
80 : INTEGER, INTENT(in) :: fullnkpts,fullnqpts
81 : LOGICAL, INTENT(in) :: l_proj
82 : REAL, INTENT (in) :: ef
83 : LOGICAL, INTENT (in) :: l_sgwf
84 : ! real,intent(inout) :: fermi_weights(:,:,:) !(input%neig,nkptd,jspd)
85 :
86 : CHARACTER(len=12) :: fending
87 : INTEGER :: i,nkpts,ikpt,nkqpts,iqpt
88 : REAL :: delta3,time_lapw_expand,delta2,time_lapw_plot
89 : LOGICAL :: l_need_fft,l_file
90 : INTEGER :: hopmin_z,hopmax_z
91 : INTEGER :: hopmin_y,hopmax_y
92 : INTEGER :: hopmin_x,hopmax_x
93 : INTEGER :: ii
94 : INTEGER :: rvecnum,rvecind,num(3),int_dummy
95 4 : INTEGER,ALLOCATABLE :: rvec(:,:),ndegen(:)
96 : REAL :: scale
97 : REAL,ALLOCATABLE :: kpoints(:,:)!(3,fullnkpts)
98 : INTEGER :: r1,r2,r3,spinspin,num_angl
99 : LOGICAL :: l_nocosoc
100 :
101 12 : ALLOCATE(kpoints(3,fullnkpts))
102 4 : l_nocosoc=.FALSE.
103 4 : IF(noco%l_soc)l_nocosoc=.TRUE.
104 4 : IF(noco%l_noco)l_nocosoc=.TRUE.
105 :
106 : !***************************************************
107 : ! Read in the kpoints from w90kpts or kpts.
108 : !***************************************************
109 : CALL wann_get_kpts(input,kpts,&
110 : wann%l_bzsym,input%film ,.FALSE.,&
111 4 : nkpts,kpoints)
112 4 : IF (nkpts /= fullnkpts)&
113 : CALL juDFT_error ('mismatch in number of kpoints',&
114 0 : calledby="wann_postproc")
115 :
116 : CALL wann_get_kpts(input,kpts,&
117 : wann%l_bzsym,input%film ,.TRUE.,&
118 4 : nkpts,kpoints)
119 : !*********************************************************
120 : ! Find out the structure of k-point set.
121 : !*********************************************************
122 : CALL wann_get_mp(&
123 : fullnkpts,kpoints,&
124 4 : num)
125 :
126 4 : IF(wann%l_wannierize)THEN
127 : #ifndef CPP_WANN
128 : WRITE(*,*) 'At this point a wannierization has to be performed'
129 : WRITE(*,*) 'but the Wannier90 library is not linked!'
130 : CALL juDFT_error ('Wannierization without Wannier90 library',&
131 : calledby="wann_postproc")
132 : #else
133 : CALL wann_wannierize(&
134 : input%film,wann,fmpi,kpoints,fullnkpts,input%jspins,&
135 0 : atoms%nat,atoms%pos,cell%amat,cell%bmat,atoms%ntype,atoms%neq,atoms%zatom)
136 : #endif
137 : ENDIF
138 :
139 4 : IF(wann%l_dipole2.AND.fmpi%irank==0)THEN
140 : CALL wann_dipole2(&
141 : input%jspins,atoms%pos,cell%omtil,atoms%nat,&
142 0 : (noco%l_soc.OR.noco%l_noco))
143 : ENDIF
144 :
145 4 : IF(wann%l_dipole.AND.fmpi%irank==0)THEN
146 : CALL wann_dipole(&
147 : input%jspins,cell%omtil,atoms%nat,atoms%pos,cell%amat,&
148 0 : atoms%ntype,atoms%neq,atoms%zatom)
149 : ENDIF
150 :
151 : #ifdef CPP_TOPO
152 : IF(wann%l_nedrho.AND.fmpi%irank==0)THEN
153 : CALL wann_nedrho(&
154 : fullnkpts,cell%area,ef,&
155 : fermi_weights)
156 : ENDIF
157 : #endif
158 :
159 4 : IF(wann%l_byenergy) i=3
160 4 : IF(wann%l_bynumber) i=2
161 4 : IF(wann%l_byindex) i=1
162 :
163 4 : IF(wann%l_plotw90)THEN
164 : CALL juDFT_error("not in this version",&
165 0 : calledby ="wann_postproc")
166 :
167 : ! call wann_plotw90(i,wann%band_min,wann%band_max,numbands,nwfs,
168 : ! > atoms%l_dulo,noco%l_noco,noco%l_ss,atoms%lmaxd,atoms%ntype,
169 : ! > input%neig,atoms%nat,sym%nop,lapw%dim_nvd(),jspd,lapw%dim_nbasfcn(),atoms%llod,atoms%nlod,atoms%ntype,
170 : ! > nwdd,cell%omtil,atoms%nlo,atoms%llo,atoms%lapw_l,sym%invtab,sym%mrot,sym%ngopr,atoms%neq,atoms%lmax,
171 : ! > sym%invsat,sym%invsatnr,kpts%nkpt,atoms%taual,atoms%rmt,cell%amat,cell%bmat,cell%bbmat,nococonv%alph,
172 : ! > nococonv%beta,nococonv%qss,stars%sk2,stars%phi2 ,fmpi%irank,fmpi%isize,stars%ng3,vacuum%nmzxyd,vacuum%nmzd,
173 : ! > size(atoms%rmsh,1),sphhar%nlhd,stars%ng3,vacuum%nvac,sym%invs,sym%invs2,input%film,sphhar%nlh,atoms%jri,sphhar%ntypsd,
174 : ! > sym%ntypsy,input%jspins,kpts%nkpt,atoms%dx,stars%ng2,atoms%rmsh,sliceplot%e1s,sliceplot%e2s,atoms%ulo_der,
175 : ! > stars%ustep,stars%ig,stars%mx1,stars%mx2,stars%mx3,stars%rgphs,sliceplot%slice,sliceplot%kk,sliceplot%nnne,
176 : ! > cell%z1,lapw%dim_nv2d(),vacuum%nmzxy,vacuum%nmz,vacuum%delz,stars%ig2,cell%area,sym%tau,atoms%zatom,stars%ng2,sym%nop2,
177 : ! > cell%volint,sym%symor,atoms%pos,ef,wann%l_bzsym,irecl)
178 :
179 : ENDIF
180 :
181 4 : l_need_fft=.FALSE.
182 : IF(wann%l_hopping.OR.wann%l_nablars.OR.&
183 : wann%l_nablapaulirs.OR.wann%l_pauli.OR.&
184 : wann%l_perpmagrs.OR.wann%l_socmatrs.OR.&
185 : wann%l_socmatvecrs.OR.&
186 : wann%l_torquers.OR.wann%l_offdiposoprs.OR.&
187 : wann%l_socspicomrs.OR.wann%l_spindisprs.OR.&
188 : wann%l_anglmomrs .OR.wann%l_perturbrs.OR.&
189 4 : wann%l_orbcomprs.OR.wann%l_rmat.OR.&
190 : wann%l_pauliat)l_need_fft=.TRUE.
191 :
192 0 : IF(l_need_fft.AND.fmpi%irank==0)THEN
193 :
194 : IF(.FALSE.)THEN !specify r-mesh by its boundaries
195 : hopmin_z=-5;hopmax_z=5
196 : hopmin_x=0;hopmax_x=0
197 : hopmin_y=0;hopmax_y=0
198 : rvecnum=(hopmax_z-hopmin_z+1)
199 : IF(input%film)THEN
200 : hopmin_x=-5;hopmax_x=5
201 : hopmin_y=-5;hopmax_y=5
202 : hopmin_z=0; hopmax_z=0
203 : ELSE
204 : hopmin_x=-5;hopmax_x=5
205 : hopmin_y=-5;hopmax_y=5
206 : ENDIF
207 : rvecnum= (hopmax_z-hopmin_z+1)
208 : rvecnum=rvecnum*(hopmax_y-hopmin_y+1)
209 : rvecnum=rvecnum*(hopmax_x-hopmin_x+1)
210 :
211 : ALLOCATE(rvec(3,rvecnum))
212 : rvecind=0
213 : DO r3=hopmin_z,hopmax_z
214 : DO r2=hopmin_y,hopmax_y
215 : DO r1=hopmin_x,hopmax_x
216 : rvecind=rvecind+1
217 : IF (rvecind > rvecnum)&
218 : CALL juDFT_error ('mismatch in number of kpoints',&
219 : calledby="wann_postproc")
220 :
221 : rvec(1,rvecind)=r1
222 : rvec(2,rvecind)=r2
223 : rvec(3,rvecind)=r3
224 : ENDDO !r1
225 : ENDDO !r2
226 : ENDDO !r3
227 : ELSE !determine optimal r-mesh
228 : CALL wann_wigner_seitz(&
229 : .TRUE.,num,cell%amat,0,&
230 0 : rvecnum,rvec,ndegen)
231 0 : ALLOCATE(rvec(3,rvecnum))
232 0 : ALLOCATE(ndegen(rvecnum))
233 : CALL wann_wigner_seitz(&
234 : .FALSE.,num,cell%amat,rvecnum,&
235 0 : int_dummy,rvec,ndegen)
236 :
237 0 : OPEN(333,file='wig_vectors',recl=1000)
238 0 : DO ii=1,rvecnum
239 0 : WRITE(333,*)ii,rvec(1,ii),rvec(2,ii),rvec(3,ii),&
240 0 : ndegen(ii)
241 : ENDDO
242 0 : CLOSE(333)
243 :
244 : ENDIF
245 :
246 : ENDIF
247 :
248 4 : IF(wann%l_hopping.AND.fmpi%irank==0) THEN
249 : CALL wann_hopping(&
250 : rvecnum,rvec,kpoints,&
251 : input%jspins,fullnkpts,wann%l_bzsym,input%film ,&
252 : l_nocosoc,wann%band_min,wann%band_max,&
253 : input%neig,wann%l_socmmn0,wann%l_ndegen,ndegen,&
254 0 : wann%wan90version,wann%l_unformatted)
255 : ENDIF
256 :
257 4 : IF(wann%l_nablars.AND.fmpi%irank==0) THEN
258 : CALL wann_nabla_rs(&
259 : rvecnum,rvec,kpoints,&
260 : input%jspins,fullnkpts,wann%l_bzsym,input%film ,&
261 : noco%l_soc,wann%band_min,wann%band_max,&
262 : input%neig,.FALSE.,&
263 0 : wann%wan90version)
264 : ENDIF
265 :
266 4 : IF(wann%l_orbcomprs.AND.fmpi%irank==0)THEN
267 0 : num_angl=9
268 0 : IF(wann%l_oc_f)num_angl=16
269 : CALL wann_fft5(&
270 : .FALSE.,&
271 : num_angl,wann%oc_num_orbs,&
272 : 'WF1.orbcomp','orbcomp.1',&
273 : rvecnum,rvec,kpoints,&
274 : 1,fullnkpts,input%film,&
275 : noco%l_soc,wann%band_min,wann%band_max,input%neig,&
276 0 : wann%wan90version)
277 0 : IF( input%jspins.EQ.2 )THEN
278 0 : spinspin=2
279 0 : IF(noco%l_soc.OR.noco%l_noco)spinspin=1
280 : CALL wann_fft5(&
281 : .FALSE.,&
282 : num_angl,wann%oc_num_orbs,&
283 : 'WF2.orbcomp','orbcomp.2',&
284 : rvecnum,rvec,kpoints,&
285 : spinspin,fullnkpts,input%film,&
286 : noco%l_soc,wann%band_min,wann%band_max,input%neig,&
287 0 : wann%wan90version)
288 : ENDIF
289 : ENDIF
290 :
291 4 : IF(wann%l_rmat)THEN
292 : CALL wann_rmat(&
293 : cell%bmat,cell%amat,&
294 : rvecnum,rvec,kpoints,&
295 : input%jspins,fullnkpts,wann%l_bzsym,input%film ,&
296 : l_nocosoc,wann%band_min,wann%band_max,&
297 0 : input%neig,.FALSE.,wann%wan90version)
298 : ENDIF
299 :
300 :
301 4 : IF(wann%l_anglmomrs.AND.fmpi%irank==0)THEN
302 : CALL wann_fft4(&
303 : 'WF1.anglmom',&
304 : 'anglmomrs.1',.FALSE.,&
305 : rvecnum,rvec,kpoints,&
306 : 1,fullnkpts,wann%l_bzsym,input%film ,&
307 : noco%l_soc,wann%band_min,wann%band_max,input%neig,&
308 0 : .FALSE.,wann%wan90version)
309 :
310 0 : IF( input%jspins.EQ.2 )THEN
311 0 : IF(.not.(noco%l_soc.OR.noco%l_noco))&
312 : CALL wann_fft4(&
313 : 'WF2.anglmom',&
314 : 'anglmomrs.2',.FALSE.,&
315 : rvecnum,rvec,kpoints,&
316 : 2,fullnkpts,wann%l_bzsym,input%film ,&
317 : noco%l_soc,wann%band_min,wann%band_max,input%neig,&
318 0 : .FALSE.,wann%wan90version)
319 : ENDIF
320 :
321 :
322 : ENDIF
323 :
324 : #ifdef CPP_TOPO
325 : IF(wann%l_offdiposoprs.AND.fmpi%irank==0)THEN
326 : CALL wann_offdiposop_rs(&
327 : rvecnum,rvec,kpoints,&
328 : input%jspins,fullnkpts,wann%l_bzsym,input%film,&
329 : noco%l_soc,wann%band_min,wann%band_max,input%neig,&
330 : .FALSE.)
331 : ENDIF
332 :
333 : IF(wann%l_spindisprs.AND.fmpi%irank==0)THEN
334 : CALL wann_fft5(&
335 : rvecnum,rvec,kpoints,&
336 : input%jspins,fullnkpts,wann%l_bzsym,input%film ,&
337 : noco%l_soc,wann%band_min,wann%band_max,input%neig,&
338 : .FALSE.)
339 : ENDIF
340 :
341 : IF(wann%l_perturbrs.AND.fmpi%irank==0)THEN
342 : CALL wann_fft3(&
343 : 'WF1.perturb' ,'perturbrs.1' ,.FALSE.,&
344 : rvecnum,rvec,kpoints,&
345 : input%jspins,fullnkpts,wann%l_bzsym,input%film ,&
346 : noco%l_soc,wann%band_min,wann%band_max,input%neig,&
347 : .FALSE.)
348 : ENDIF
349 :
350 : IF(wann%l_socspicomrs.AND.fmpi%irank==0)THEN
351 : IF(noco%l_soc)THEN
352 : CALL wann_fft4(&
353 : 'WF1.socspicom','socspicomrs.1',.TRUE.,&
354 : rvecnum,rvec,kpoints,&
355 : input%jspins,fullnkpts,wann%l_bzsym,input%film,&
356 : noco%l_soc,wann%band_min,wann%band_max,input%neig,&
357 : .FALSE.)
358 : ELSE
359 : CALL wann_fft6(&
360 : rvecnum,rvec,kpoints,&
361 : input%jspins,fullnkpts,wann%l_bzsym,input%film,&
362 : noco%l_soc,wann%band_min,wann%band_max,input%neig,&
363 : .FALSE.)
364 : ENDIF
365 : ENDIF
366 :
367 : #endif
368 :
369 4 : IF(wann%l_torquers.AND.fmpi%irank==0) THEN
370 : CALL wann_torque_rs(&
371 : atoms%ntype,atoms%neq,rvecnum,rvec,kpoints,&
372 : input%jspins,fullnkpts,wann%l_bzsym,input%film ,&
373 : (noco%l_soc.or.noco%l_noco),wann%band_min,wann%band_max,&
374 : input%neig,wann%l_ndegen,ndegen, &
375 0 : wann%wan90version,wann%l_unformatted)
376 : ENDIF
377 :
378 4 : IF(wann%l_pauliat.AND.fmpi%irank==0) THEN
379 : call wann_pauliat_rs(&
380 : rvecnum,rvec,kpoints,&
381 : input%jspins,fullnkpts,wann%l_bzsym,input%film ,&
382 : (noco%l_soc.or.noco%l_noco),wann%band_min,wann%band_max,&
383 : input%neig,.false.,atoms%ntype,atoms%neq,wann%l_ndegen,ndegen,&
384 0 : wann%wan90version,wann%l_unformatted)
385 : ENDIF
386 :
387 4 : IF (wann%l_nablapaulirs.AND.fmpi%irank==0)THEN
388 : CALL wann_nabla_pauli_rs(&
389 : rvecnum,rvec,kpoints,&
390 : input%jspins,fullnkpts,wann%l_bzsym,input%film ,&
391 : noco%l_soc,wann%band_min,wann%band_max,&
392 0 : input%neig,.FALSE.,wann%wan90version)
393 : ENDIF
394 :
395 4 : IF (wann%l_pauli.AND.fmpi%irank==0)THEN
396 : CALL wann_pauli_rs(&
397 : rvecnum,rvec,kpoints,&
398 : input%jspins,fullnkpts,wann%l_bzsym,input%film ,&
399 : l_nocosoc,wann%band_min,wann%band_max,&
400 : input%neig,.FALSE.,wann%l_ndegen,ndegen,&
401 0 : wann%wan90version,wann%l_unformatted)
402 : ENDIF
403 :
404 4 : IF (wann%l_perpmagrs.AND.fmpi%irank==0)THEN
405 : CALL wann_perpmag_rs(&
406 : rvecnum,rvec,kpoints,&
407 : input%jspins,fullnkpts,wann%l_bzsym,input%film ,&
408 : noco%l_soc,wann%band_min,wann%band_max,&
409 : input%neig,.FALSE.,wann%l_ndegen,ndegen,wann%wan90version,&
410 0 : wann%l_unformatted)
411 : ENDIF
412 :
413 4 : IF (wann%l_socmatrs.AND.fmpi%irank==0)THEN
414 : CALL wann_socmat_rs(&
415 : rvecnum,rvec,kpoints,&
416 : input%jspins,fullnkpts,wann%l_bzsym,input%film ,&
417 : noco%l_soc,wann%band_min,wann%band_max,&
418 0 : input%neig,.FALSE.,wann%wan90version)
419 : ENDIF
420 :
421 4 : if (wann%l_socmatvecrs.and.fmpi%irank==0)then
422 : call wann_socmatvec_rs( &
423 : rvecnum,rvec,kpoints, &
424 : input%jspins,fullnkpts,wann%l_bzsym,input%film , &
425 : noco%l_soc,wann%band_min,wann%band_max, &
426 : input%neig,.false.,wann%l_ndegen,ndegen,&
427 0 : wann%wan90version,wann%l_unformatted)
428 : endif
429 :
430 :
431 4 : IF(wann%l_plot_umdat)THEN
432 : CALL wann_plot_um_dat(&
433 : kpts,stars,vacuum,atoms,sphhar,input,sym,fmpi,&
434 : noco,nococonv,cell,vTot,enpara,eig_id,l_real,&
435 : fmpi%mpi_comm,i,wann%band_min,wann%band_max,noco%l_soc,&
436 : atoms%l_dulo,noco%l_noco,noco%l_ss,atoms%lmaxd,atoms%ntype,&
437 : input%neig,atoms%nat,sym%nop,lapw%dim_nvd(),input%jspins,atoms%llod,atoms%nlod,atoms%ntype,&
438 : cell%omtil,atoms%nlo,atoms%llo,atoms%lapw_l,sym%invtab,sym%mrot,sym%ngopr,atoms%neq,atoms%lmax,&
439 : sym%invsat,sym%invsatnr,kpts%nkpt,atoms%taual,atoms%rmt,cell%amat,cell%bmat,cell%bbmat,nococonv%alph,&
440 : nococonv%beta,nococonv%qss,stars%sk2,stars%phi2 ,fmpi%irank,fmpi%isize,stars%ng3,vacuum%nmzxyd,vacuum%nmzd,&
441 : SIZE(atoms%rmsh,1),sphhar%nlhd,stars%ng3,vacuum%nvac,sym%invs,sym%invs2,input%film,sphhar%nlh,atoms%jri,sphhar%ntypsd,&
442 : sym%ntypsy,input%jspins,kpts%nkpt,atoms%dx,stars%ng2,atoms%rmsh,sliceplot%e1s,sliceplot%e2s,atoms%ulo_der,&
443 : stars%ustep,stars%ig,stars%mx1,stars%mx2,stars%mx3,stars%rgphs,sliceplot%slice,sliceplot%kk,sliceplot%nnne,&
444 : cell%z1,lapw%dim_nv2d(),vacuum%nmzxy,vacuum%nmz,vacuum%delz,stars%ig2,cell%area,sym%tau,atoms%zatom,stars%ng2,sym%nop2,&
445 : cell%volint,sym%symor,atoms%pos,ef,wann%l_bzsym,wann%l_proj_plot,&
446 0 : wann%wan90version)
447 : ENDIF
448 :
449 :
450 4 : CALL CPU_TIME(delta2)
451 4 : IF(wann%l_lapw.AND.fmpi%irank==0)THEN
452 : CALL wannier_to_lapw(&
453 : fmpi%mpi_comm,eig_id,l_real,&
454 : input,lapw ,noco,nococonv,sym,cell,atoms,stars,vacuum,sphhar,&
455 : vTot,&
456 : noco%l_soc,wann%unigrid,i,wann%band_min,wann%band_max,&
457 : atoms%l_dulo,noco%l_noco,noco%l_ss,atoms%lmaxd,atoms%ntype,&
458 : input%neig,atoms%nat,sym%nop,lapw%dim_nvd(),input%jspins,lapw%dim_nbasfcn(),atoms%llod,atoms%nlod,atoms%ntype,&
459 : cell%omtil,atoms%nlo,atoms%llo,atoms%lapw_l,sym%invtab,sym%mrot,sym%ngopr,atoms%neq,atoms%lmax,&
460 : sym%invsat,sym%invsatnr,kpts%nkpt,atoms%taual,atoms%rmt,cell%amat,cell%bmat,cell%bbmat,nococonv%alph,&
461 : nococonv%beta,nococonv%qss,stars%sk2,stars%phi2 ,fmpi%irank,fmpi%isize,stars%ng3,vacuum%nmzxyd,vacuum%nmzd,&
462 : SIZE(atoms%rmsh,1),sphhar%nlhd,stars%ng3,vacuum%nvac,sym%invs,sym%invs2,input%film,sphhar%nlh,atoms%jri,sphhar%ntypsd,&
463 : sym%ntypsy,input%jspins,kpts%nkpt,atoms%dx,stars%ng2,atoms%rmsh,sliceplot%e1s,sliceplot%e2s,atoms%ulo_der,&
464 : stars%ustep,stars%ig,stars%mx1,stars%mx2,stars%mx3,stars%rgphs,sliceplot%slice,sliceplot%kk,sliceplot%nnne,&
465 : cell%z1,lapw%dim_nv2d(),vacuum%nmzxy,vacuum%nmz,vacuum%delz,stars%ig2,cell%area,sym%tau,atoms%zatom,stars%ng2,sym%nop2,&
466 : cell%volint,sym%symor,atoms%pos,ef,wann%l_bzsym,wann%l_proj_plot,&
467 0 : wann%wan90version)
468 : ENDIF
469 :
470 4 : IF(wann%l_lapw_kpts)THEN
471 : #ifdef DCPP_WANN_EXT
472 : CALL wannier_to_lapw_kpts(&
473 : unigrid,i,wann%band_min,wann%band_max,&
474 : atoms%l_dulo,noco%l_noco,noco%l_ss,atoms%lmaxd,atoms%ntype,&
475 : input%neig,atoms%nat,sym%nop,lapw%dim_nvd(),input%jspins,lapw%dim_nbasfcn(),atoms%llod,atoms%nlod,atoms%ntype,&
476 : nwdd,cell%omtil,atoms%nlo,atoms%llo,atoms%lapw_l,sym%invtab,sym%mrot,sym%ngopr,atoms%neq,atoms%lmax,&
477 : sym%invsat,sym%invsatnr,kpts%nkpt,atoms%taual,atoms%rmt,cell%amat,cell%bmat,cell%bbmat,nococonv%alph,&
478 : nococonv%beta,nococonv%qss,stars%sk2,stars%phi2 ,fmpi%irank,fmpi%isize,stars%ng3,vacuum%nmzxyd,vacuum%nmzd,&
479 : SIZE(atoms%rmsh,1),sphhar%nlhd,stars%ng3,vacuum%nvac,sym%invs,sym%invs2,input%film,sphhar%nlh,atoms%jri,sphhar%ntypsd,&
480 : sym%ntypsy,input%jspins,kpts%nkpt,atoms%dx,stars%ng2,atoms%rmsh,sliceplot%e1s,sliceplot%e2s,atoms%ulo_der,&
481 : stars%ustep,stars%ig,stars%mx1,stars%mx2,stars%mx3,stars%rgphs,sliceplot%slice,sliceplot%kk,sliceplot%nnne,&
482 : cell%z1,lapw%dim_nv2d(),vacuum%nmzxy,vacuum%nmz,vacuum%delz,stars%ig2,cell%area,sym%tau,atoms%zatom,stars%ng2,sym%nop2,&
483 : cell%volint,sym%symor,atoms%pos,ef,wann%l_bzsym,wann%l_proj_plot,irecl)
484 : #else
485 : CALL juDFT_error("not yet tested in this release",calledby&
486 0 : ="wann_postproc")
487 : #endif
488 : ENDIF
489 4 : IF(wann%l_lapw_gfleur)THEN
490 : #ifdef DCPP_WANN_EXT
491 : CALL wannier_lapw_gfleur(&
492 : gfthick,gfcut,i,wann%band_min,wann%band_max,&
493 : atoms%l_dulo,noco%l_noco,noco%l_ss,atoms%lmaxd,atoms%ntype,&
494 : input%neig,atoms%nat,sym%nop,lapw%dim_nvd(),input%jspins,lapw%dim_nbasfcn(),atoms%llod,atoms%nlod,atoms%ntype,&
495 : nwdd,cell%omtil,atoms%nlo,atoms%llo,atoms%lapw_l,sym%invtab,sym%mrot,sym%ngopr,atoms%neq,atoms%lmax,&
496 : sym%invsat,sym%invsatnr,kpts%nkpt,atoms%taual,atoms%rmt,cell%amat,cell%bmat,cell%bbmat,nococonv%alph,&
497 : nococonv%beta,nococonv%qss,stars%sk2,stars%phi2,fmpi%irank,fmpi%isize,stars%ng3,vacuum%nmzxyd,vacuum%nmzd,&
498 : SIZE(atoms%rmsh,1),sphhar%nlhd,stars%ng3,vacuum%nvac,sym%invs,sym%invs2,input%film,sphhar%nlh,atoms%jri,sphhar%ntypsd,&
499 : sym%ntypsy,input%jspins,kpts%nkpt,atoms%dx,stars%ng2,atoms%rmsh,sliceplot%e1s,sliceplot%e2s,atoms%ulo_der,&
500 : stars%ustep,stars%ig,stars%mx1,stars%mx2,stars%mx3,stars%rgphs,sliceplot%slice,sliceplot%kk,sliceplot%nnne,&
501 : cell%z1,lapw%dim_nv2d(),vacuum%nmzxy,vacuum%nmz,vacuum%delz,stars%ig2,cell%area,sym%tau,atoms%zatom,stars%ng2,sym%nop2,&
502 : cell%volint,sym%symor,atoms%pos,ef,wann%l_bzsym,wann%l_proj_plot,irecl)
503 : #else
504 : CALL juDFT_error("not yet tested in this release",calledby&
505 0 : ="wann_postproc")
506 : #endif
507 : ENDIF
508 :
509 4 : CALL CPU_TIME(delta3)
510 4 : time_lapw_expand=delta3-delta2
511 :
512 4 : CALL CPU_TIME(delta2)
513 4 : IF(wann%l_plot_lapw.AND.fmpi%irank==0)THEN
514 : CALL juDFT_error("not yet tested in this release",calledby&
515 0 : ="wann_postproc")
516 : ! call wann_plot_from_lapw(
517 : ! > lapw%dim_nv2d(),input%jspins ,stars%ng3,vacuum%nmzxyd,stars%ng2,
518 : ! > sphhar%ntypsd,
519 : ! > atoms%ntype,atoms%lmaxd,size(atoms%rmsh,1),atoms%nat,vacuum%nmzd,atoms%neq,stars%ng3,vacuum%nvac,
520 : ! > vacuum%nmz,vacuum%nmzxy,stars%ng2,sym%nop,sym%nop2,cell%volint,input%film,sliceplot%slice,sym%symor,
521 : ! > sym%invs,sym%invs2,cell%z1,vacuum%delz,sym%ngopr,sym%ntypsy,atoms%jri,atoms%pos,atoms%zatom,
522 : ! > atoms%lmax,sym%mrot,sym%tau,atoms%rmsh,sym%invtab,cell%amat,cell%bmat,cell%bbmat,sliceplot%nnne,sliceplot%kk,
523 : ! > atoms%nlod,atoms%llod,lmd,cell%omtil,atoms%nlo,atoms%llo)
524 : ENDIF
525 4 : CALL CPU_TIME(delta3)
526 4 : time_lapw_plot=delta3-delta2
527 :
528 4 : WRITE(oUnit,*)"time_lapw_expand=",time_lapw_expand
529 4 : WRITE(oUnit,*)"time_lapw_plot=",time_lapw_plot
530 :
531 4 : IF(wann%l_finishnocoplot.AND.fmpi%irank==0) THEN
532 : ! write(*,*)'doing the UNK mixing'
533 : ! write(*,*)'nococonv%alph',nococonv%alph
534 : ! write(*,*)'nococonv%beta',nococonv%beta
535 : ! nkqpts=fullnkpts
536 : ! if(l_sgwf) nkqpts=fullnkpts*fullnqpts
537 : CALL wann_nocoplot(atoms,sliceplot%slice,sliceplot%nnne,&!nslibd&
538 : cell%amat,cell%bmat,fullnkpts,input%film,&
539 : atoms%nat,atoms%ntype,SIZE(atoms%rmsh,1),atoms%ntype,atoms%neq,atoms%pos,&
540 : atoms%jri,atoms%rmsh,nococonv%alph,nococonv%beta,fullnqpts,nococonv%qss,&
541 0 : cell%z1,atoms%zatom)
542 : ENDIF
543 :
544 4 : END SUBROUTINE wann_postproc
545 : END MODULE m_wann_postproc
|