LCOV - code coverage report
Current view: top level - wannier - wann_postproc.F90 (source / functions) Coverage Total Hit
Test: FLEUR test coverage Lines: 52.3 % 88 46
Test Date: 2025-06-14 04:34:23 Functions: 100.0 % 1 1

            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            4 :     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
        

Generated by: LCOV version 2.0-1