LCOV - code coverage report
Current view: top level - wannier - wann_postproc.F90 (source / functions) Hit Total Coverage
Test: FLEUR test coverage Lines: 46 88 52.3 %
Date: 2024-03-29 04:21:46 Functions: 1 1 100.0 %

          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

Generated by: LCOV version 1.14