LCOV - code coverage report
Current view: top level - wannier - wann_read_inp.f90 (source / functions) Hit Total Coverage
Test: combined.info Lines: 0 569 0.0 %
Date: 2019-09-08 04:53:50 Functions: 0 1 0.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_read_inp
       8             : 
       9             : contains
      10           0 : subroutine wann_read_inp(input,l_p0,wann)
      11             : !********************************************
      12             : !     Read the Wannier input file 'wann_inp'.
      13             : !     Frank Freimuth
      14             : !********************************************
      15             :    use m_judft
      16             :    use m_types_setup
      17             : 
      18             :    implicit none
      19             : 
      20             :    TYPE(t_input), intent(in)   :: input
      21             :    TYPE(t_wann), intent(inout) :: wann
      22             :    logical,intent(in)          :: l_p0
      23             : 
      24             :    logical           :: l_file,l_orbcompinp
      25             :    integer           :: i,ios,n
      26             :    character(len=30) :: task
      27             :    real              :: version_real
      28             : 
      29             : !-----some defaults
      30           0 :    wann%l_atomlist=.false.
      31           0 :    wann%l_ndegen=.false.
      32           0 :    wann%l_orbitalmom=.false.
      33           0 :    wann%l_orbcomp=.false.
      34           0 :    wann%l_orbcomprs=.false.
      35           0 :    wann%l_perturbrs=.false.
      36           0 :    wann%l_denmat=.false.                                             
      37           0 :    wann%l_perturb=.false.
      38           0 :    wann%l_nedrho=.false.
      39           0 :    wann%l_anglmomrs=.false.
      40           0 :    wann%l_anglmom=.false.
      41           0 :    wann%l_socspicom=.false.
      42           0 :    wann%l_socspicomrs=.false.
      43           0 :    wann%l_offdiposoprs=.false.
      44           0 :    wann%l_offdiposop=.false.
      45           0 :    wann%l_spindisp=.false.
      46           0 :    wann%l_spindisprs=.false.
      47           0 :    wann%l_torque=.false.
      48           0 :    wann%l_torquers=.false.
      49           0 :    wann%l_berry=.false.
      50           0 :    wann%l_perpmag=.false.
      51           0 :    wann%l_perpmagrs=.false.
      52           0 :    wann%l_perpmagat=.false.
      53           0 :    wann%l_perpmagatrs=.false.
      54           0 :    wann%l_socmatrs=.false.
      55           0 :    wann%l_socmat=.false.
      56           0 :    wann%l_soctomom=.false.
      57           0 :    wann%l_kptsreduc2=.false.
      58           0 :    wann%l_nablars=.false.
      59           0 :    wann%l_nablapaulirs=.false.
      60           0 :    wann%l_surfcurr=.false.
      61           0 :    wann%l_updown=.false.
      62           0 :    wann%l_ahe=.false.
      63           0 :    wann%l_she=.false.
      64           0 :    wann%l_rmat=.false.
      65           0 :    wann%l_nabla=.false.
      66           0 :    wann%l_socodi=.false.
      67           0 :    wann%l_pauli=.false.
      68           0 :    wann%l_pauliat=.false.
      69           0 :    wann%l_potmat=.false.
      70           0 :    wann%l_projgen=.false.
      71           0 :    wann%l_stopopt=.false.
      72           0 :    wann%l_kpointgen=.false.
      73           0 :    wann%l_w90kpointgen=.false.
      74           0 :    wann%l_plot_symm=.false.
      75           0 :    wann%l_socmmn0=.false.
      76           0 :    wann%l_bzsym=.false.
      77           0 :    wann%l_hopping=.false.
      78           0 :    wann%l_kptsreduc=.false.
      79           0 :    wann%l_prepwan90=.false.
      80           0 :    wann%l_plot_umdat=.false.
      81           0 :    wann%l_wann_plot=.false.
      82           0 :    wann%l_bynumber=.false.
      83           0 :    wann%l_matrixmmn=.false.
      84           0 :    wann%l_matrixamn=.false.
      85           0 :    wann%l_projmethod=.false.
      86           0 :    wann%l_wannierize=.false.
      87           0 :    wann%l_plotw90=.false.
      88           0 :    wann%l_byenergy=.false.
      89           0 :    wann%l_proj_plot=.false.
      90           0 :    wann%l_bestproj=.false.
      91           0 :    wann%l_ikptstart=.false.
      92           0 :    wann%l_lapw=.false.
      93           0 :    wann%l_plot_lapw=.false.
      94           0 :    wann%l_fermi=.false.
      95           0 :    wann%l_dipole=.false.
      96           0 :    wann%l_dipole2=.false.
      97           0 :    wann%l_dipole3=.false.
      98           0 :    wann%l_mmn0=.false.
      99           0 :    wann%l_mmn0at=.false.
     100           0 :    wann%l_manyfiles=.false.
     101           0 :    wann%l_collectmanyfiles=.false.
     102           0 :    wann%l_ldauwan=.false.
     103           0 :    wann%l_lapw_kpts=.false.
     104           0 :    wann%l_lapw_gfleur=.false.
     105           0 :    wann%l_unformatted=.false.
     106           0 :    wann%l_finishnocoplot=.false.
     107           0 :    wann%l_finishgwf=.false.
     108           0 :    wann%l_skipkov=.false.
     109           0 :    wann%l_matrixuHu=.false.
     110           0 :    wann%l_matrixuHu_dmi=.false.
     111           0 :    wann%ikptstart=1
     112           0 :    wann%wan90version=2 ! Set the standard to Wannier90-1.2
     113           0 :    wann%l_mmn0_unf_to_spn_unf=.false.
     114           0 :    wann%l_mmn0_to_spn_unf=.false.
     115           0 :    wann%l_mmn0_to_spn=.false.
     116           0 :    wann%l_mmn0_to_spn2=.false.
     117           0 :    wann%l_mmn0_unf_to_spn=.false.
     118           0 :    wann%l_perpmag_unf_to_tor_unf=.false.
     119           0 :    wann%l_perpmag_to_tor_unf=.false.
     120           0 :    wann%l_perpmag_to_tor=.false.
     121           0 :    wann%l_perpmag_unf_to_tor=.false.
     122           0 :    wann%l_hsomtxvec_unf_to_lmpzsoc_unf=.false.
     123           0 :    wann%l_hsomtxvec_to_lmpzsoc_unf=.false.
     124           0 :    wann%l_hsomtxvec_to_lmpzsoc=.false.
     125           0 :    wann%l_hsomtxvec_unf_to_lmpzsoc=.false.
     126             : 
     127             : !-----read the input file 'wann_inp'
     128           0 :    l_file=.false.
     129           0 :    inquire(file='wann_inp',exist=l_file)
     130           0 :    IF ((.not.l_file).AND.(.NOT.input%l_inpXML)) THEN
     131           0 :       CALL juDFT_error ("wann_inp not found", calledby="wann_read_inp")
     132             :    END IF
     133           0 :    IF (l_file) THEN
     134           0 :       wann%band_min(1:2)=-1
     135           0 :       wann%band_max(1:2)=-1
     136           0 :       wann%l_byindex=.false.
     137           0 :       open(916,file='wann_inp',form='formatted')
     138           0 :       i=0
     139             :       do 
     140           0 :          i=i+1
     141           0 :          read(916,'(a)',iostat=ios)task
     142           0 :          if(ios.ne.0)exit
     143           0 :          if(l_p0) write(6,*)"line ",i,":",task
     144           0 :          if(task(1:1).eq.'!')cycle
     145           0 :          if(index(task,'=F').ne.0.or.index(task,'=f').ne.0)cycle
     146           0 :          read(task,*,iostat=ios)task
     147           0 :          if(index(task,'=').ne.0)then
     148           0 :             task=task(1:(index(task,'=')-1))
     149             :          endif
     150           0 :          if(l_p0) write(6,*)"==>key: ",task
     151           0 :          if(trim(task).eq.'endjobs')then
     152             :             exit
     153           0 :          elseif(trim(task).eq.'nabla')then
     154           0 :             wann%l_nabla=.true.
     155           0 :          elseif(trim(task).eq.'kptsreduc2')then
     156           0 :             wann%l_kptsreduc2=.true.
     157           0 :             backspace(916)
     158           0 :             read(916,*,iostat=ios)task,wann%mhp(1),wann%mhp(2),wann%mhp(3)
     159           0 :             if (ios /= 0) CALL juDFT_error ("error reading mhp", calledby="wann_read_inp")
     160           0 :             if(l_p0)write(6,*)"mhp=",wann%mhp(1),wann%mhp(2),wann%mhp(3)
     161           0 :          elseif(trim(task).eq.'nablars')then
     162           0 :             wann%l_nablars=.true.
     163           0 :          elseif(trim(task).eq.'nablapaulirs')then
     164           0 :             wann%l_nablapaulirs=.true.
     165           0 :          elseif(trim(task).eq.'socspicom')then
     166           0 :             wann%l_socspicom=.true.
     167           0 :          elseif(trim(task).eq.'orbitalmom')then
     168           0 :             wann%l_orbitalmom=.true.
     169           0 :          elseif(trim(task).eq.'anglmom')then
     170           0 :             wann%l_anglmom=.true.
     171           0 :          elseif(trim(task).eq.'ndegen')then
     172           0 :             wann%l_ndegen=.true.
     173           0 :          elseif(trim(task).eq.'unformatted')then
     174           0 :             wann%l_unformatted=.true.
     175           0 :          elseif(trim(task).eq.'orbcomp')then
     176           0 :             wann%l_orbcomp=.true.
     177           0 :          elseif(trim(task).eq.'orbcomprs')then
     178           0 :             wann%l_orbcomprs=.true.
     179           0 :          elseif(trim(task).eq.'denmat')then
     180           0 :             wann%l_denmat=.true.
     181           0 :          elseif(trim(task).eq.'nedrho')then
     182           0 :             wann%l_nedrho=.true.
     183           0 :          elseif(trim(task).eq.'perturb')then
     184           0 :             wann%l_perturb=.true.
     185           0 :          elseif(trim(task).eq.'perturbrs')then
     186           0 :             wann%l_perturbrs=.true.
     187           0 :          elseif(trim(task).eq.'rmat')then
     188           0 :             wann%l_rmat=.true.
     189           0 :          elseif(trim(task).eq.'anglmomrs')then
     190           0 :             wann%l_anglmomrs=.true.
     191           0 :          elseif(trim(task).eq.'socspicomrs')then
     192           0 :             wann%l_socspicomrs=.true.
     193           0 :          elseif(trim(task).eq.'she')then
     194           0 :             wann%l_she=.true.
     195           0 :          elseif(trim(task).eq.'berry')then
     196           0 :             wann%l_berry=.true.
     197           0 :          elseif(trim(task).eq.'offdiposop')then
     198           0 :             wann%l_offdiposop=.true.
     199           0 :          elseif(trim(task).eq.'offdiposoprs')then
     200           0 :             wann%l_offdiposoprs=.true.
     201           0 :          elseif(trim(task).eq.'spindisp')then
     202           0 :             wann%l_spindisp=.true.
     203           0 :          elseif(trim(task).eq.'spindisprs')then
     204           0 :             wann%l_spindisprs=.true.
     205           0 :          elseif(trim(task).eq.'torque')then
     206           0 :             wann%l_torque=.true.
     207           0 :          elseif(trim(task).eq.'torquers')then
     208           0 :             wann%l_torquers=.true.
     209           0 :          elseif(trim(task).eq.'perpmag')then
     210           0 :             wann%l_perpmag=.true.
     211           0 :          elseif(trim(task).eq.'perpmagrs')then
     212           0 :             wann%l_perpmagrs=.true.
     213           0 :          elseif(trim(task).eq.'perpmagat')then
     214           0 :             wann%l_perpmagat=.true.
     215           0 :          elseif(trim(task).eq.'perpmagatrs')then
     216           0 :             wann%l_perpmagatrs=.true.
     217           0 :          elseif(trim(task).eq.'mmn0_unf_to_spn_unf')then
     218           0 :             wann%l_mmn0_unf_to_spn_unf=.true.
     219           0 :          elseif(trim(task).eq.'mmn0_to_spn_unf')then
     220           0 :             wann%l_mmn0_to_spn_unf=.true.
     221           0 :          elseif(trim(task).eq.'mmn0_to_spn')then
     222           0 :             wann%l_mmn0_to_spn=.true.
     223           0 :          elseif(trim(task).eq.'mmn0_to_spn2')then
     224           0 :             wann%l_mmn0_to_spn2=.true.
     225           0 :          elseif(trim(task).eq.'mmn0_unf_to_spn')then
     226           0 :             wann%l_mmn0_unf_to_spn=.true.
     227           0 :          elseif(trim(task).eq.'perpmag_unf_to_tor_unf')then
     228           0 :             wann%l_perpmag_unf_to_tor_unf=.true.
     229           0 :          elseif(trim(task).eq.'perpmag_to_tor_unf')then
     230           0 :             wann%l_perpmag_to_tor_unf=.true.
     231           0 :          elseif(trim(task).eq.'perpmag_to_tor')then
     232           0 :             wann%l_perpmag_to_tor=.true.
     233           0 :          elseif(trim(task).eq.'perpmag_unf_to_tor')then
     234           0 :             wann%l_perpmag_unf_to_tor=.true.
     235           0 :          elseif(trim(task).eq.'hsomtxvec_unf_to_lmpzsoc_unf')then
     236           0 :             wann%l_hsomtxvec_unf_to_lmpzsoc_unf=.true.
     237           0 :          elseif(trim(task).eq.'hsomtxvec_to_lmpzsoc_unf')then
     238           0 :             wann%l_hsomtxvec_to_lmpzsoc_unf=.true.
     239           0 :          elseif(trim(task).eq.'hsomtxvec_to_lmpzsoc')then
     240           0 :             wann%l_hsomtxvec_to_lmpzsoc=.true.
     241           0 :          elseif(trim(task).eq.'hsomtxvec_unf_to_lmpzsoc')then
     242           0 :             wann%l_hsomtxvec_unf_to_lmpzsoc=.true.  
     243           0 :          elseif(trim(task).eq.'socmat')then
     244           0 :             wann%l_socmat=.true.
     245           0 :          elseif(trim(task).eq.'socmatrs')then
     246           0 :             wann%l_socmatrs=.true.
     247           0 :          elseif(trim(task).eq.'soctomom')then
     248           0 :             wann%l_soctomom=.true.
     249           0 :          elseif(trim(task).eq.'surfcurr')then
     250           0 :             wann%l_surfcurr=.true.
     251           0 :          elseif(trim(task).eq.'lapw_kpts')then
     252           0 :             wann%l_lapw_kpts=.true.
     253           0 :          elseif(trim(task).eq.'updown')then
     254           0 :             wann%l_updown=.true.
     255           0 :          elseif(trim(task).eq.'stopopt')then
     256           0 :             wann%l_stopopt=.true.
     257           0 :          elseif(trim(task).eq.'projgen')then
     258           0 :             wann%l_projgen=.true.
     259           0 :          elseif(trim(task).eq.'kpointgen')then
     260           0 :             wann%l_kpointgen=.true.
     261           0 :          elseif(trim(task).eq.'potmat')then
     262           0 :             wann%l_potmat=.true.
     263           0 :          elseif(trim(task).eq.'w90kpointgen')then
     264           0 :             wann%l_w90kpointgen=.true.
     265           0 :          elseif(trim(task).eq.'lapw_gfleur')then
     266           0 :             wann%l_lapw_gfleur=.true.
     267           0 :             backspace(916)
     268           0 :             read(916,*,iostat=ios)task,wann%gfthick,wann%gfcut
     269           0 :             if (ios /= 0) CALL juDFT_error ("error reading gfcut", calledby="wann_read_inp")
     270           0 :             if(l_p0)write(6,*)"gfcut=",wann%gfthick,wann%gfcut
     271           0 :          elseif(trim(task).eq.'lapw')then
     272           0 :             wann%l_lapw=.true.
     273           0 :             backspace(916)
     274           0 :             read(916,*,iostat=ios)task,wann%unigrid(:)
     275           0 :             if (ios /= 0) CALL juDFT_error ("error reading unigrid", calledby="wann_read_inp")
     276           0 :             if(l_p0)write(6,*)"unigrid=",wann%unigrid(:)
     277           0 :          elseif(trim(task).eq.'plot_lapw')then
     278           0 :             wann%l_plot_lapw=.true.
     279           0 :          elseif(trim(task).eq.'bzsym')then
     280           0 :             wann%l_bzsym=.true.
     281           0 :          elseif(trim(task).eq.'mmn0')then
     282           0 :             wann%l_mmn0=.true.
     283           0 :          elseif(trim(task).eq.'mmn0at')then
     284           0 :             wann%l_mmn0at=.true.
     285           0 :          elseif(trim(task).eq.'manyfiles')then
     286           0 :             wann%l_manyfiles=.true.
     287           0 :          elseif(trim(task).eq.'collectmanyfiles')then
     288           0 :             wann%l_collectmanyfiles=.true.
     289           0 :          elseif(trim(task).eq.'bestproj')then
     290           0 :             wann%l_bestproj=.true.
     291           0 :          elseif(trim(task).eq.'pauli')then
     292           0 :             wann%l_pauli=.true.
     293           0 :          elseif(trim(task).eq.'pauliat')then
     294           0 :             wann%l_pauliat=.true.
     295           0 :          elseif(trim(task).eq.'proj_plot')then
     296           0 :             wann%l_proj_plot=.true.
     297           0 :          elseif(trim(task).eq.'hopping')then
     298           0 :             wann%l_hopping=.true.
     299           0 :          elseif(trim(task).eq.'plot_symm')then
     300           0 :             wann%l_plot_symm=.true.
     301           0 :          elseif(trim(task).eq.'kptsreduc')then
     302           0 :             wann%l_kptsreduc=.true.
     303           0 :          elseif(trim(task).eq.'fermi')then
     304           0 :             wann%l_fermi=.true.
     305           0 :          elseif(trim(task).eq.'prepwan90')then
     306           0 :             wann%l_prepwan90=.true.
     307           0 :          elseif(trim(task).eq.'plot_umdat')then
     308           0 :             wann%l_plot_umdat=.true.
     309           0 :          elseif(trim(task).eq.'wann_plot')then
     310           0 :             wann%l_wann_plot=.true.
     311           0 :          elseif(trim(task).eq.'bynumber')then
     312           0 :             wann%l_bynumber=.true.
     313           0 :          elseif(trim(task).eq.'matrixmmn')then
     314           0 :             wann%l_matrixmmn=.true.
     315           0 :          elseif(trim(task).eq.'projmethod')then
     316           0 :             wann%l_projmethod=.true.
     317           0 :          elseif(trim(task).eq.'matrixamn')then
     318           0 :             wann%l_matrixamn=.true.
     319           0 :          elseif(trim(task).eq.'wannierize')then
     320           0 :             wann%l_wannierize=.true.
     321           0 :          elseif(trim(task).eq.'plotw90')then
     322           0 :             wann%l_plotw90=.true.
     323           0 :          elseif(trim(task).eq.'dipole')then
     324           0 :             wann%l_dipole=.true.
     325           0 :          elseif(trim(task).eq.'dipole3')then
     326           0 :             wann%l_dipole3=.true.
     327           0 :          elseif(trim(task).eq.'ldauwan')then
     328           0 :             wann%l_ldauwan=.true.
     329           0 :          elseif(trim(task).eq.'byenergy')then
     330           0 :             wann%l_byenergy=.true.
     331           0 :          elseif(trim(task).eq.'finishnocoplot') then
     332           0 :             wann%l_finishnocoplot=.true.
     333           0 :          elseif(trim(task).eq.'finishgwf') then
     334           0 :             wann%l_finishgwf=.true.
     335           0 :          elseif(trim(task).eq.'skipkov') then
     336           0 :             wann%l_skipkov=.true.
     337           0 :          elseif(trim(task).eq.'matrixuhu') then
     338           0 :             wann%l_matrixuHu=.true.
     339           0 :          elseif(trim(task).eq.'matrixuhu-dmi') then
     340           0 :             wann%l_matrixuHu_dmi=.true.
     341           0 :          elseif(trim(task).eq.'wan90version')then
     342           0 :             backspace(916)
     343           0 :             read(916,*,iostat=ios)task,version_real
     344           0 :             if (ios /= 0) CALL judft_error("error reading wan90version", calledby="wann_read_inp")
     345           0 :             if(abs(version_real-1.1).lt.1.e-9)then
     346           0 :                wann%wan90version=1
     347           0 :             elseif(abs(version_real-1.2).lt.1.e-9)then
     348           0 :                wann%wan90version=2
     349           0 :             elseif(abs(version_real-2.0).lt.1.e-9)then
     350           0 :                wann%wan90version=3
     351             :             else
     352           0 :               CALL judft_error ("chosen w90 version unknown", calledby="wann_read_inp")
     353             :             endif
     354           0 :          elseif(trim(task).eq.'atomlist')then
     355           0 :             wann%l_atomlist=.true.
     356           0 :             backspace(916)
     357           0 :             read(916,*,iostat=ios)task,wann%atomlist_num
     358           0 :             if (ios /= 0) CALL judft_error ("error reading atomlist_num", calledby="wann_read_inp")
     359           0 :             if(allocated(wann%atomlist))deallocate(wann%atomlist)
     360           0 :             allocate(wann%atomlist(wann%atomlist_num))
     361           0 :             backspace(916)
     362           0 :             read(916,*,iostat=ios)task,wann%atomlist_num,wann%atomlist
     363           0 :             if (ios /= 0) CALL judft_error ("error reading atomlist", calledby="wann_read_inp")
     364           0 :             if(l_p0)write(6,*)"atomlist_num=",wann%atomlist_num
     365           0 :             if(l_p0)write(6,*)"atomlist=",wann%atomlist
     366           0 :          elseif(trim(task).eq.'byindex')then
     367           0 :             wann%l_byindex=.true.
     368           0 :             backspace(916)
     369           0 :             read(916,*,iostat=ios)task,wann%band_min(1),wann%band_max(1)
     370           0 :             if (ios /= 0) CALL juDFT_error("error reading byindex,band_min,band_max", calledby="wann_read_inp")
     371           0 :             if(l_p0)write(6,*)"band_min=",wann%band_min(1)
     372           0 :             if(l_p0)write(6,*)"band_max=",wann%band_max(1)
     373           0 :             if(wann%band_min(2).eq.-1)then
     374           0 :                wann%band_min(2)=wann%band_min(1)
     375           0 :                wann%band_max(2)=wann%band_max(1)
     376             :             endif
     377           0 :          elseif(trim(task).eq.'byindex2')then
     378           0 :             wann%l_byindex=.true.
     379           0 :             backspace(916)
     380           0 :             read(916,*,iostat=ios)task,wann%band_min(2),wann%band_max(2)
     381           0 :             if (ios /= 0) CALL juDFT_error ("error reading byindex2,band_min2,band_max", calledby="wann_read_inp")
     382           0 :             if(l_p0)write(6,*)"band_min2=",wann%band_min(2)
     383           0 :             if(l_p0)write(6,*)"band_max2=",wann%band_max(2)
     384           0 :             if(wann%band_min(1).eq.-1)then
     385           0 :                wann%band_min(1)=wann%band_min(2)
     386           0 :                wann%band_max(1)=wann%band_max(2)
     387             :             endif
     388           0 :          elseif(trim(task).eq.'ikptstart')then
     389           0 :             wann%l_ikptstart=.true.
     390           0 :             backspace(916)
     391           0 :             read(916,*,iostat=ios)task,wann%ikptstart
     392           0 :             if (ios /= 0) CALL juDFT_error ("error reading ikptstart", calledby="wann_read_inp")
     393           0 :             if(l_p0)write(6,*)"ikptstart=",wann%ikptstart
     394             :          else
     395           0 :             write(6,*)"unrecognized key: ",task
     396           0 :             CALL juDFT_error ("unrecognized key in wann_inp", calledby="wann_read_inp")
     397             :          endif
     398             :       enddo
     399             : 
     400           0 :       if (ios /= 0) CALL juDFT_error ("error reading wann_inp", calledby="wann_read_inp")
     401           0 :       if(l_p0.and.ios.lt.0)write(6,*)"end of wann_inp reached"
     402           0 :       close(916)
     403             : 
     404           0 :    ELSE IF (input%l_inpXML) THEN
     405             : 
     406           0 :       DO i = 1, SIZE(wann%jobList)
     407           0 :          task = TRIM(ADJUSTL(wann%jobList(i)))
     408           0 :          if(l_p0) write(6,*)"task ",i,":",task
     409           0 :          if(task(1:1).eq.'!')cycle
     410           0 :          if(index(task,'=F').ne.0.or.index(task,'=f').ne.0)cycle
     411           0 :          read(task,*,iostat=ios)task
     412           0 :          if(index(task,'=').ne.0)then
     413           0 :             task=task(1:(index(task,'=')-1))
     414             :          endif
     415           0 :          if(l_p0) write(6,*)"==>key: ",task
     416           0 :          if(trim(task).eq.'endjobs') THEN
     417             :             EXIT
     418           0 :          elseif(trim(task).eq.'nabla')then
     419           0 :             wann%l_nabla=.true.
     420             : !         elseif(trim(task).eq.'kptsreduc2')then
     421             : !            wann%l_kptsreduc2=.true.
     422             : !            backspace(916)
     423             : !            read(916,*,iostat=ios)task,wann%mhp(1),wann%mhp(2),wann%mhp(3)
     424             : !            if (ios /= 0) CALL juDFT_error ("error reading mhp", calledby="wann_read_inp")
     425             : !            if(l_p0)write(6,*)"mhp=",wann%mhp(1),wann%mhp(2),wann%mhp(3)
     426           0 :          elseif(trim(task).eq.'nablars')then
     427           0 :             wann%l_nablars=.true.
     428           0 :          elseif(trim(task).eq.'nablapaulirs')then
     429           0 :             wann%l_nablapaulirs=.true.
     430           0 :          elseif(trim(task).eq.'socspicom')then
     431           0 :             wann%l_socspicom=.true.
     432           0 :          elseif(trim(task).eq.'orbitalmom')then
     433           0 :             wann%l_orbitalmom=.true.
     434           0 :          elseif(trim(task).eq.'anglmom')then
     435           0 :             wann%l_anglmom=.true.
     436           0 :          elseif(trim(task).eq.'ndegen')then
     437           0 :             wann%l_ndegen=.true.
     438           0 :          elseif(trim(task).eq.'unformatted')then
     439           0 :             wann%l_unformatted=.true.
     440           0 :          elseif(trim(task).eq.'orbcomp')then
     441           0 :             wann%l_orbcomp=.true.
     442           0 :          elseif(trim(task).eq.'orbcomprs')then
     443           0 :             wann%l_orbcomprs=.true.
     444           0 :          elseif(trim(task).eq.'denmat')then
     445           0 :             wann%l_denmat=.true.
     446           0 :          elseif(trim(task).eq.'nedrho')then
     447           0 :             wann%l_nedrho=.true.
     448           0 :          elseif(trim(task).eq.'perturb')then
     449           0 :             wann%l_perturb=.true.
     450           0 :          elseif(trim(task).eq.'perturbrs')then
     451           0 :             wann%l_perturbrs=.true.
     452           0 :          elseif(trim(task).eq.'rmat')then
     453           0 :             wann%l_rmat=.true.
     454           0 :          elseif(trim(task).eq.'anglmomrs')then
     455           0 :             wann%l_anglmomrs=.true.
     456           0 :          elseif(trim(task).eq.'socspicomrs')then
     457           0 :             wann%l_socspicomrs=.true.
     458           0 :          elseif(trim(task).eq.'she')then
     459           0 :             wann%l_she=.true.
     460           0 :          elseif(trim(task).eq.'berry')then
     461           0 :             wann%l_berry=.true.
     462           0 :          elseif(trim(task).eq.'offdiposop')then
     463           0 :             wann%l_offdiposop=.true.
     464           0 :          elseif(trim(task).eq.'offdiposoprs')then
     465           0 :             wann%l_offdiposoprs=.true.
     466           0 :          elseif(trim(task).eq.'spindisp')then
     467           0 :             wann%l_spindisp=.true.
     468           0 :          elseif(trim(task).eq.'spindisprs')then
     469           0 :             wann%l_spindisprs=.true.
     470           0 :          elseif(trim(task).eq.'torque')then
     471           0 :             wann%l_torque=.true.
     472           0 :          elseif(trim(task).eq.'torquers')then
     473           0 :             wann%l_torquers=.true.
     474           0 :          elseif(trim(task).eq.'perpmag')then
     475           0 :             wann%l_perpmag=.true.
     476           0 :          elseif(trim(task).eq.'perpmagrs')then
     477           0 :             wann%l_perpmagrs=.true.
     478           0 :          elseif(trim(task).eq.'perpmagat')then
     479           0 :             wann%l_perpmagat=.true.
     480           0 :          elseif(trim(task).eq.'perpmagatrs')then
     481           0 :             wann%l_perpmagatrs=.true.
     482           0 :          elseif(trim(task).eq.'mmn0_unf_to_spn_unf')then
     483           0 :             wann%l_mmn0_unf_to_spn_unf=.true.
     484           0 :          elseif(trim(task).eq.'mmn0_to_spn_unf')then
     485           0 :             wann%l_mmn0_to_spn_unf=.true.
     486           0 :          elseif(trim(task).eq.'mmn0_to_spn')then
     487           0 :             wann%l_mmn0_to_spn=.true.
     488           0 :          elseif(trim(task).eq.'mmn0_to_spn2')then
     489           0 :             wann%l_mmn0_to_spn2=.true.
     490           0 :          elseif(trim(task).eq.'mmn0_unf_to_spn')then
     491           0 :             wann%l_mmn0_unf_to_spn=.true.
     492           0 :          elseif(trim(task).eq.'perpmag_unf_to_tor_unf')then
     493           0 :             wann%l_perpmag_unf_to_tor_unf=.true.
     494           0 :          elseif(trim(task).eq.'perpmag_to_tor_unf')then
     495           0 :             wann%l_perpmag_to_tor_unf=.true.
     496           0 :          elseif(trim(task).eq.'perpmag_to_tor')then
     497           0 :             wann%l_perpmag_to_tor=.true.
     498           0 :          elseif(trim(task).eq.'perpmag_unf_to_tor')then
     499           0 :             wann%l_perpmag_unf_to_tor=.true.
     500           0 :          elseif(trim(task).eq.'hsomtxvec_unf_to_lmpzsoc_unf')then
     501           0 :             wann%l_hsomtxvec_unf_to_lmpzsoc_unf=.true.
     502           0 :          elseif(trim(task).eq.'hsomtxvec_to_lmpzsoc_unf')then
     503           0 :             wann%l_hsomtxvec_to_lmpzsoc_unf=.true.
     504           0 :          elseif(trim(task).eq.'hsomtxvec_to_lmpzsoc')then
     505           0 :             wann%l_hsomtxvec_to_lmpzsoc=.true.
     506           0 :          elseif(trim(task).eq.'hsomtxvec_unf_to_lmpzsoc')then
     507           0 :             wann%l_hsomtxvec_unf_to_lmpzsoc=.true.  
     508           0 :          elseif(trim(task).eq.'socmat')then
     509           0 :             wann%l_socmat=.true.
     510           0 :          elseif(trim(task).eq.'socmatrs')then
     511           0 :             wann%l_socmatrs=.true.
     512           0 :          elseif(trim(task).eq.'soctomom')then
     513           0 :             wann%l_soctomom=.true.
     514           0 :          elseif(trim(task).eq.'surfcurr')then
     515           0 :             wann%l_surfcurr=.true.
     516           0 :          elseif(trim(task).eq.'lapw_kpts')then
     517           0 :             wann%l_lapw_kpts=.true.
     518           0 :          elseif(trim(task).eq.'updown')then
     519           0 :             wann%l_updown=.true.
     520           0 :          elseif(trim(task).eq.'stopopt')then
     521           0 :             wann%l_stopopt=.true.
     522           0 :          elseif(trim(task).eq.'projgen')then
     523           0 :             wann%l_projgen=.true.
     524           0 :          elseif(trim(task).eq.'kpointgen')then
     525           0 :             wann%l_kpointgen=.true.
     526           0 :          elseif(trim(task).eq.'potmat')then
     527           0 :             wann%l_potmat=.true.
     528           0 :          elseif(trim(task).eq.'w90kpointgen')then
     529           0 :             wann%l_w90kpointgen=.true.
     530             : !         elseif(trim(task).eq.'lapw_gfleur')then
     531             : !            wann%l_lapw_gfleur=.true.
     532             : !            backspace(916)
     533             : !            read(916,*,iostat=ios)task,wann%gfthick,wann%gfcut
     534             : !            if (ios /= 0) CALL juDFT_error ("error reading gfcut", calledby="wann_read_inp")
     535             : !            if(l_p0)write(6,*)"gfcut=",wann%gfthick,wann%gfcut
     536             : !         elseif(trim(task).eq.'lapw')then
     537             : !            wann%l_lapw=.true.
     538             : !            backspace(916)
     539             : !            read(916,*,iostat=ios)task,wann%unigrid(:)
     540             : !            if (ios /= 0) CALL juDFT_error ("error reading unigrid", calledby="wann_read_inp")
     541             : !            if(l_p0)write(6,*)"unigrid=",wann%unigrid(:)
     542           0 :          elseif(trim(task).eq.'plot_lapw')then
     543           0 :             wann%l_plot_lapw=.true.
     544           0 :          elseif(trim(task).eq.'bzsym')then
     545           0 :             wann%l_bzsym=.true.
     546           0 :          elseif(trim(task).eq.'mmn0')then
     547           0 :             wann%l_mmn0=.true.
     548           0 :          elseif(trim(task).eq.'mmn0at')then
     549           0 :             wann%l_mmn0at=.true.
     550           0 :          elseif(trim(task).eq.'manyfiles')then
     551           0 :             wann%l_manyfiles=.true.
     552           0 :          elseif(trim(task).eq.'collectmanyfiles')then
     553           0 :             wann%l_collectmanyfiles=.true.
     554           0 :          elseif(trim(task).eq.'bestproj')then
     555           0 :             wann%l_bestproj=.true.
     556           0 :          elseif(trim(task).eq.'pauli')then
     557           0 :             wann%l_pauli=.true.
     558           0 :          elseif(trim(task).eq.'pauliat')then
     559           0 :             wann%l_pauliat=.true.
     560           0 :          elseif(trim(task).eq.'proj_plot')then
     561           0 :             wann%l_proj_plot=.true.
     562           0 :          elseif(trim(task).eq.'hopping')then
     563           0 :             wann%l_hopping=.true.
     564           0 :          elseif(trim(task).eq.'plot_symm')then
     565           0 :             wann%l_plot_symm=.true.
     566           0 :          elseif(trim(task).eq.'kptsreduc')then
     567           0 :             wann%l_kptsreduc=.true.
     568           0 :          elseif(trim(task).eq.'fermi')then
     569           0 :             wann%l_fermi=.true.
     570           0 :          elseif(trim(task).eq.'prepwan90')then
     571           0 :             wann%l_prepwan90=.true.
     572           0 :          elseif(trim(task).eq.'plot_umdat')then
     573           0 :             wann%l_plot_umdat=.true.
     574           0 :          elseif(trim(task).eq.'wann_plot')then
     575           0 :             wann%l_wann_plot=.true.
     576           0 :          elseif(trim(task).eq.'bynumber')then
     577           0 :             wann%l_bynumber=.true.
     578           0 :          elseif(trim(task).eq.'matrixmmn')then
     579           0 :             wann%l_matrixmmn=.true.
     580           0 :          elseif(trim(task).eq.'projmethod')then
     581           0 :             wann%l_projmethod=.true.
     582           0 :          elseif(trim(task).eq.'matrixamn')then
     583           0 :             wann%l_matrixamn=.true.
     584           0 :          elseif(trim(task).eq.'wannierize')then
     585           0 :             wann%l_wannierize=.true.
     586           0 :          elseif(trim(task).eq.'plotw90')then
     587           0 :             wann%l_plotw90=.true.
     588           0 :          elseif(trim(task).eq.'dipole')then
     589           0 :             wann%l_dipole=.true.
     590           0 :          elseif(trim(task).eq.'dipole3')then
     591           0 :             wann%l_dipole3=.true.
     592           0 :          elseif(trim(task).eq.'ldauwan')then
     593           0 :             wann%l_ldauwan=.true.
     594           0 :          elseif(trim(task).eq.'byenergy')then
     595           0 :             wann%l_byenergy=.true.
     596           0 :          elseif(trim(task).eq.'finishnocoplot') then
     597           0 :             wann%l_finishnocoplot=.true.
     598           0 :          elseif(trim(task).eq.'finishgwf') then
     599           0 :             wann%l_finishgwf=.true.
     600           0 :          elseif(trim(task).eq.'skipkov') then
     601           0 :             wann%l_skipkov=.true.
     602           0 :          elseif(trim(task).eq.'matrixuhu') then
     603           0 :             wann%l_matrixuHu=.true.
     604           0 :          elseif(trim(task).eq.'matrixuhu-dmi') then
     605           0 :             wann%l_matrixuHu_dmi=.true.
     606             : !         elseif(trim(task).eq.'wan90version')then
     607             : !            backspace(916)
     608             : !            read(916,*,iostat=ios)task,version_real
     609             : !            if (ios /= 0) CALL judft_error("error reading wan90version", calledby="wann_read_inp")
     610             : !            if(abs(version_real-1.1).lt.1.e-9)then
     611             : !               wann%wan90version=1
     612             : !            elseif(abs(version_real-1.2).lt.1.e-9)then
     613             : !               wann%wan90version=2
     614             : !            elseif(abs(version_real-2.0).lt.1.e-9)then
     615             : !               wann%wan90version=3
     616             : !            else
     617             : !              CALL judft_error ("chosen w90 version unknown", calledby="wann_read_inp")
     618             : !            endif
     619             : !         elseif(trim(task).eq.'atomlist')then
     620             : !            wann%l_atomlist=.true.
     621             : !            backspace(916)
     622             : !            read(916,*,iostat=ios)task,wann%atomlist_num
     623             : !            if (ios /= 0) CALL judft_error ("error reading atomlist_num", calledby="wann_read_inp")
     624             : !            if(allocated(wann%atomlist))deallocate(wann%atomlist)
     625             : !            allocate(wann%atomlist(wann%atomlist_num))
     626             : !            backspace(916)
     627             : !            read(916,*,iostat=ios)task,wann%atomlist_num,wann%atomlist
     628             : !            if (ios /= 0) CALL judft_error ("error reading atomlist", calledby="wann_read_inp")
     629             : !            if(l_p0)write(6,*)"atomlist_num=",wann%atomlist_num
     630             : !            if(l_p0)write(6,*)"atomlist=",wann%atomlist
     631             : !         elseif(trim(task).eq.'ikptstart')then
     632             : !            wann%l_ikptstart=.true.
     633             : !            backspace(916)
     634             : !            read(916,*,iostat=ios)task,wann%ikptstart
     635             : !            if (ios /= 0) CALL juDFT_error ("error reading ikptstart", calledby="wann_read_inp")
     636             : !            if(l_p0)write(6,*)"ikptstart=",wann%ikptstart
     637             :          else
     638           0 :             write(6,*)"unrecognized key: ",task
     639           0 :             CALL juDFT_error ("unrecognized key in wannier jobList", calledby="wann_read_inp")
     640             :          endif
     641             :       enddo
     642             : 
     643           0 :       IF (wann%l_byindex) THEN
     644           0 :          if(l_p0)write(6,*)"band_min1=",wann%band_min(1)
     645           0 :          if(l_p0)write(6,*)"band_max1=",wann%band_max(1)
     646           0 :          if(l_p0)write(6,*)"band_min2=",wann%band_min(2)
     647           0 :          if(l_p0)write(6,*)"band_max2=",wann%band_max(2)
     648             :       END IF
     649             : 
     650             :    END IF ! l_file
     651             : 
     652             : 
     653             : !-----input file for orbital decomposition
     654           0 :    if(wann%l_orbcomp.or.wann%l_orbcomprs)then
     655           0 :       inquire(file='orbcomp_inp',exist=l_orbcompinp)
     656           0 :       if(l_orbcompinp)then
     657           0 :          open(159,file='orbcomp_inp')
     658           0 :          read(159,*)wann%oc_num_orbs,wann%l_oc_f
     659           0 :          if(allocated(wann%oc_orbs))deallocate(wann%oc_orbs)
     660           0 :          allocate(wann%oc_orbs(wann%oc_num_orbs))
     661           0 :          do n=1,wann%oc_num_orbs
     662           0 :             read(159,*)wann%oc_orbs(n)
     663             :          enddo
     664           0 :          close(159)
     665             :       else !default is all atoms including f
     666             : !         wann%oc_num_orbs=natd
     667           0 :          wann%l_oc_f=.true.
     668           0 :          if(allocated(wann%oc_orbs))deallocate(wann%oc_orbs)
     669           0 :          allocate(wann%oc_orbs(wann%oc_num_orbs))
     670           0 :          do n=1,wann%oc_num_orbs
     671           0 :             wann%oc_orbs(n)=n
     672             :          enddo
     673             :       endif
     674             :    endif
     675             : 
     676             : !-----default atom list: all atoms
     677           0 :    if(.not.wann%l_atomlist)then
     678           0 :      if(allocated(wann%atomlist))deallocate(wann%atomlist)
     679           0 :      allocate(wann%atomlist(wann%atomlist_num))
     680           0 :      do n=1,wann%atomlist_num
     681           0 :        wann%atomlist(n)=n
     682             :      enddo
     683             :    endif      
     684             : 
     685           0 : end subroutine wann_read_inp
     686             : 
     687             : end module m_wann_read_inp

Generated by: LCOV version 1.13