LCOV - code coverage report
Current view: top level - ldau - u_ham.F90 (source / functions) Hit Total Coverage
Test: combined.info Lines: 0 158 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_uham
       8             :   USE m_juDFT
       9             :   !-------------------------------------------------------------------+
      10             :   !     For details see Eq.(21) of Shick et al. PRB 60, 10765 (1999)  |
      11             :   !     Sets up the LDA + U Hamilton matrix with eigenvalues in the   |
      12             :   !     diagonal:                                                     |
      13             :   !  s     ---       *s,j'  s,j    ..   *s,j'  s,j    s            s |
      14             :   ! H    = >      [ A      A    + <u|u> B      B    ] V     + d    e  |
      15             :   !  j',j  -- m,m'   l,m'   l,m          l,m'   l,m    m,m'    j,j' j |
      16             :   !                                                                   |
      17             :   !                                                  G.B. Oct. 2000   |
      18             :   !                                                                   |
      19             :   ! Version for 1st variation to be called from hssphn.               |
      20             :   ! now the Hamiltonmatrix is close packed aa()  and ar,ai and br,bi  |
      21             :   ! are provided instead of ahelp and bhelp.              Feb. 2001   |
      22             :   !-------------------------------------------------------------------|
      23             :   ! Extension to multiple U per atom type by G.M. 2017                |
      24             :   !-------------------------------------------------------------------+
      25             : CONTAINS
      26           0 :   SUBROUTINE u_ham(atoms, input,lapw,jsp,n,i_u,invsfct,&
      27           0 :        ar,ai,br,bi,vs_mmp,lmaxb, alo,blo,clo, n_size,n_rank,usp,ud,&
      28             :        noco,iintsp,jintsp,chi11,chi22,chi21, nkvecprevat,iilo,locol,l_real,aa_r,aa_c)
      29             : 
      30             :     USE m_types
      31             :     IMPLICIT NONE
      32             :     TYPE(t_input),INTENT(IN)   :: input
      33             :     TYPE(t_noco),INTENT(IN)    :: noco
      34             :     TYPE(t_atoms),INTENT(IN)   :: atoms
      35             :     TYPE(t_lapw),INTENT(IN)    :: lapw
      36             :     !     ..
      37             :     !     .. Scalar Arguments ..    
      38             :     INTEGER, INTENT (IN) :: lmaxb  
      39             :     INTEGER, INTENT (IN) :: jsp,n,i_u
      40             :     INTEGER, INTENT (IN) :: n_size,n_rank ,usp
      41             :     INTEGER, INTENT (IN) :: iintsp,jintsp
      42             :     INTEGER, INTENT (INOUT) :: nkvecprevat,iilo,locol
      43             :     REAL,    INTENT (IN) :: invsfct
      44             :     COMPLEX, INTENT (IN) :: chi11,chi22,chi21
      45             :     !     ..
      46             :     !     .. Array Arguments ..
      47             :     TYPE(t_usdus),INTENT(IN) :: ud
      48             :     REAL,    INTENT (IN) :: ar(:,0:,:),ai(:,0:,:) !(dimension%nvd,0:dimension%lmd,ab_dim)
      49             :     REAL,    INTENT (IN) :: br(:,0:,:),bi(:,0:,:) !(dimension%nvd,0:dimension%lmd,ab_dim)
      50             :     COMPLEX, INTENT (IN) :: alo(-atoms%llod:,:,:,:)!(-llod:llod,2*(2*llod+1),nlod,ab_dim)
      51             :     COMPLEX, INTENT (IN) :: blo(-atoms%llod:,:,:,:)!(-llod:llod,2*(2*llod+1),nlod,ab_dim)
      52             :     COMPLEX, INTENT (IN) :: clo(-atoms%llod:,:,:,:)!(-llod:llod,2*(2*llod+1),nlod,ab_dim)
      53             :     COMPLEX, INTENT (IN) :: vs_mmp(-lmaxb:lmaxb,-lmaxb:lmaxb,atoms%n_u,input%jspins)
      54             : 
      55             :     LOGICAL, INTENT(IN) :: l_real
      56             :     REAL,    OPTIONAL,INTENT (INOUT),ALLOCATABLE :: aa_r(:)!(matsize)
      57             :     COMPLEX, OPTIONAL,INTENT (INOUT),ALLOCATABLE :: aa_c(:)!(matsize)
      58             : 
      59             :     !     ..
      60             :     !     .. Local Scalars ..
      61             :     INTEGER  m,mp,ispin,itype,l,igp,ll,llm,nvv,ii,lp,lop,ig
      62             :     INTEGER matel0,locol0,lo,nkvec,nkvecp,nkvecprevlo,nkend
      63             :     INTEGER igp_m,i_invsf,nc
      64             :     COMPLEX chihlp
      65             :     REAL    dd,uulo,dulo,ulolo
      66             :     !     ..
      67             :     !     .. Local Arrays
      68           0 :     REAL, ALLOCATABLE :: ar_help(:,:),ai_help(:,:),va_help(:)
      69           0 :     REAL, ALLOCATABLE :: br_help(:,:),bi_help(:,:),vb_help(:)
      70           0 :     REAL, ALLOCATABLE :: cr_help(:,:),ci_help(:,:)
      71           0 :     COMPLEX, ALLOCATABLE :: ax(:,:),bx(:,:),cx(:,:)
      72           0 :     COMPLEX, ALLOCATABLE :: wa_help(:),wb_help(:),wc_help(:)
      73           0 :     COMPLEX, ALLOCATABLE :: wd_help(:),we_help(:)
      74             : 
      75             : 
      76             :     INTRINSIC cmplx,conjg
      77             : 
      78           0 :     l = atoms%lda_u(i_u)%l
      79             : 
      80           0 :     i_invsf = NINT(invsfct)
      81           0 :     nvv = lapw%nv(jsp)
      82           0 :     IF (noco%l_ss)  nvv = lapw%nv(jintsp)
      83             : 
      84             :     ALLOCATE ( ar_help(nvv,-l:l),ai_help(nvv,-l:l),va_help(-l:l),&
      85           0 :          br_help(nvv,-l:l),bi_help(nvv,-l:l),vb_help(-l:l) )
      86             :     !
      87             :     !-----------------------------------------------------------------------
      88             :     !
      89             :     !                __      mm'    *lm'                    __      mm'    *lm' . .
      90             :     ! A_help(G',m) = >     V       A     and B_help(G',m) = >     V       B    <u|u>
      91             :     !                --m'   l,n,s   G'                      --m'   l,n,s   G'
      92             :     !
      93             :     !------------------------------------------------------------------------
      94           0 :     ll = l * (l+1)
      95           0 :     DO m = -l,l
      96           0 :        DO mp = -l,l
      97           0 :           va_help(mp) = REAL(vs_mmp(m,mp,i_u,jsp)) * invsfct
      98           0 :           vb_help(mp) = va_help(mp) * ud%ddn(l,n,jsp)
      99             :        END DO
     100             : 
     101           0 :        DO ig = 1, nvv
     102           0 :           ar_help(ig,m) = 0.0
     103           0 :           ai_help(ig,m) = 0.0
     104           0 :           br_help(ig,m) = 0.0
     105           0 :           bi_help(ig,m) = 0.0
     106             : 
     107           0 :           DO mp = -l,l
     108           0 :              ar_help(ig,m) = ar_help(ig,m) + va_help(mp) * ar(ig,ll+mp,jintsp)
     109           0 :              ai_help(ig,m) = ai_help(ig,m) - va_help(mp) * ai(ig,ll+mp,jintsp)
     110           0 :              br_help(ig,m) = br_help(ig,m) + vb_help(mp) * br(ig,ll+mp,jintsp)
     111           0 :              bi_help(ig,m) = bi_help(ig,m) - vb_help(mp) * bi(ig,ll+mp,jintsp)
     112             :           END DO
     113             :        END DO
     114             : 
     115           0 :        DO mp = -l,l
     116           0 :           va_help(mp) = AIMAG(vs_mmp(m,mp,i_u,jsp)) * invsfct
     117           0 :           vb_help(mp) = va_help(mp) * ud%ddn(l,n,jsp)
     118             :        END DO
     119             : 
     120           0 :        DO ig = 1, nvv
     121           0 :           DO mp = -l,l
     122           0 :              ar_help(ig,m) = ar_help(ig,m) + va_help(mp) * ai(ig,ll+mp,jintsp)
     123           0 :              ai_help(ig,m) = ai_help(ig,m) + va_help(mp) * ar(ig,ll+mp,jintsp)
     124           0 :              br_help(ig,m) = br_help(ig,m) + vb_help(mp) * bi(ig,ll+mp,jintsp)
     125           0 :              bi_help(ig,m) = bi_help(ig,m) + vb_help(mp) * br(ig,ll+mp,jintsp)
     126             :           END DO
     127             :        END DO
     128             :     END DO
     129             :     !
     130           0 :     IF (noco%l_ss) nvv = lapw%nv(iintsp)
     131             :     !
     132             :     !--------------------------------------------
     133             :     !
     134             :     !  l,n,s    --        m   lm          m   lm
     135             :     ! H      =  >   A_help   A    + B_help   B
     136             :     !  G G'     --m       G'  G           G'  G 
     137             :     !
     138             :     !--------------------------------------------
     139           0 :     nc = 0
     140           0 :     DO ig = n_rank+1, nvv, n_size
     141           0 :        nc = nc + 1
     142             :        !
     143           0 :        IF (noco%l_ss) THEN
     144           0 :           IF (n_size > 1) CALL juDFT_error("U+SS+EV-PAR", calledby ="u_ham")
     145           0 :           IF ((iintsp.EQ.1).AND.(jintsp.EQ.1)) THEN     !---> spin-up spin-up part
     146           0 :              igp_m = ig
     147           0 :              chihlp = chi11
     148           0 :              ii = (ig-1)*(ig)/2
     149           0 :           ELSE IF ((iintsp.EQ.2).AND.(jintsp.EQ.2)) THEN !---> spin-down spin-down part
     150           0 :              igp_m = ig
     151           0 :              chihlp = chi22
     152             :              ii = (lapw%nv(1)+atoms%nlotot+ig-1)*(lapw%nv(1)+atoms%nlotot+ig)/2 + &
     153           0 :                   lapw%nv(1)+atoms%nlotot
     154             :           ELSE                                          !---> spin-down spin-up part
     155           0 :              igp_m = lapw%nv(1)
     156           0 :              chihlp = chi21
     157           0 :              ii = (lapw%nv(1)+atoms%nlotot+ig-1)*(lapw%nv(1)+atoms%nlotot+ig)/2
     158             :           END IF
     159             :        ELSE                                             ! no spin-spiral
     160           0 :           chihlp = CMPLX(1.0,0.0)
     161           0 :           igp_m = ig
     162             :           !          ii = ig * (ig - 1) / 2
     163           0 :           ii = nc*(nc-1)/2*n_size - (nc-1)*(n_size-n_rank-1)
     164             :        ENDIF
     165             : 
     166           0 :        DO m = -l,l
     167           0 :           llm = ll + m
     168             : 
     169           0 :           if (l_real) THEN
     170           0 :              DO igp = 1, igp_m
     171             :                 aa_r(ii+igp) = aa_r(ii+igp) + &
     172             :                                ar_help(igp,m) * ar(ig,llm,iintsp) + br_help(igp,m) * br(ig,llm,iintsp) - &
     173           0 :                                ai_help(igp,m) * ai(ig,llm,iintsp) - bi_help(igp,m) * bi(ig,llm,iintsp) 
     174             :              END DO ! igp 
     175             :           ELSE
     176           0 :              DO igp = 1, igp_m
     177             :                 aa_c(ii+igp) = aa_c(ii+igp) + chihlp * CMPLX(&
     178             :                                ar_help(igp,m) * ar(ig,llm,iintsp) + br_help(igp,m) * br(ig,llm,iintsp) - &
     179             :                                ai_help(igp,m) * ai(ig,llm,iintsp) - bi_help(igp,m) * bi(ig,llm,iintsp) , &
     180             :                                ar_help(igp,m) * ai(ig,llm,iintsp) + br_help(igp,m) * bi(ig,llm,iintsp) + &
     181           0 :                                ai_help(igp,m) * ar(ig,llm,iintsp) + bi_help(igp,m) * br(ig,llm,iintsp))
     182             :              END DO
     183             :           END IF
     184             :        END DO   ! m
     185             :     END DO     ! ig = 1, nvv
     186             :     !--------------------------------------------------------------------------
     187             :     !
     188             :     !     local orbitals (if there are any with same l on this atom) 
     189             :     !                    for the meaning of iilo etc. see slomat
     190             :     !
     191             :     !--------------------------------------------------------------------------
     192           0 :     nkvecprevlo = 0
     193             :     !
     194           0 :     DO lo = 1, atoms%nlo(n)
     195           0 :        IF (l.EQ.atoms%llo(lo,n)) THEN
     196           0 :           IF (n_size > 1)  CALL juDFT_error("U+LO+EV-PAR", calledby="u_ham")
     197             :           !
     198             :           !--->    calculate the contribution to H (G_lo,G): help arrays
     199             :           !
     200           0 :           ALLOCATE ( cr_help(nvv,-l:l),ci_help(nvv,-l:l) )
     201           0 :           uulo =  ud%uulon(lo,n,usp) ! * invsfct
     202           0 :           dulo =  ud%dulon(lo,n,usp) ! * invsfct
     203           0 :           matel0 = iilo
     204           0 :           locol0 = locol
     205           0 :           ll = l * (l+1)
     206           0 :           DO m = -l,l
     207           0 :              DO mp = -l,l
     208           0 :                 va_help(mp) = REAL(vs_mmp(m,mp,i_u,jsp)) * uulo
     209           0 :                 vb_help(mp) = REAL(vs_mmp(m,mp,i_u,jsp)) * dulo
     210             :              END DO
     211           0 :              DO ig = 1, nvv
     212           0 :                 cr_help(ig,m) = 0.0
     213           0 :                 ci_help(ig,m) = 0.0
     214           0 :                 DO mp = -l,l
     215           0 :                    cr_help(ig,m) = cr_help(ig,m) + va_help(mp) * ar(ig,ll+mp,jintsp)
     216           0 :                    ci_help(ig,m) = ci_help(ig,m) - va_help(mp) * ai(ig,ll+mp,jintsp)
     217           0 :                    cr_help(ig,m) = cr_help(ig,m) + vb_help(mp) * br(ig,ll+mp,jintsp)
     218           0 :                    ci_help(ig,m) = ci_help(ig,m) - vb_help(mp) * bi(ig,ll+mp,jintsp)
     219             :                 END DO
     220             :              END DO
     221           0 :              DO mp = -l,l
     222           0 :                 va_help(mp) = AIMAG(vs_mmp(m,mp,i_u,jsp)) * uulo
     223           0 :                 vb_help(mp) = AIMAG(vs_mmp(m,mp,i_u,jsp)) * dulo
     224             :              END DO
     225           0 :              DO ig = 1, nvv
     226           0 :                 DO mp = -l,l
     227           0 :                    cr_help(ig,m) = cr_help(ig,m) + va_help(mp) * ai(ig,ll+mp,jintsp)
     228           0 :                    ci_help(ig,m) = ci_help(ig,m) + va_help(mp) * ar(ig,ll+mp,jintsp)
     229           0 :                    cr_help(ig,m) = cr_help(ig,m) + vb_help(mp) * bi(ig,ll+mp,jintsp)
     230           0 :                    ci_help(ig,m) = ci_help(ig,m) + vb_help(mp) * br(ig,ll+mp,jintsp)
     231             :                 END DO
     232             :              END DO
     233             :           END DO
     234             :           !
     235             :           !--->    now add to H (G_lo,G)
     236             :           !
     237           0 :           DO m = -l,l
     238           0 :              iilo = matel0
     239           0 :              locol = locol0
     240           0 :              DO nkvec = 1,i_invsf* (2*l+1)
     241           0 :                 locol = locol + 1
     242           0 :                 IF (MOD(locol-1,n_size).EQ.n_rank) THEN
     243             :                    !-t3e
     244           0 :                    IF (l_real) THEN
     245           0 :                       DO ig = 1,nvv
     246           0 :                          iilo = iilo + 1
     247             :                          aa_r(iilo) = aa_r(iilo) + &
     248             :                                       ar_help(ig,m) * REAL(alo(m,nkvec,lo,iintsp)) + br_help(ig,m) * REAL(blo(m,nkvec,lo,iintsp)) + &
     249             :                                       cr_help(ig,m) * REAL(clo(m,nkvec,lo,iintsp)) - ai_help(ig,m) *AIMAG(alo(m,nkvec,lo,iintsp)) - &
     250           0 :                                       bi_help(ig,m) *AIMAG(blo(m,nkvec,lo,iintsp)) - ci_help(ig,m) *AIMAG(clo(m,nkvec,lo,iintsp))
     251             :                       END DO                     ! jump to end of row:
     252             :                    ELSE
     253           0 :                       DO ig = 1,nvv
     254           0 :                          iilo = iilo + 1
     255             :                          aa_c(iilo) = aa_c(iilo) + CMPLX(&
     256             :                                       ar_help(ig,m) * REAL(alo(m,nkvec,lo,iintsp)) + br_help(ig,m) * REAL(blo(m,nkvec,lo,iintsp)) + &
     257             :                                       cr_help(ig,m) * REAL(clo(m,nkvec,lo,iintsp)) - ai_help(ig,m) *AIMAG(alo(m,nkvec,lo,iintsp)) - &
     258             :                                       bi_help(ig,m) *AIMAG(blo(m,nkvec,lo,iintsp)) - ci_help(ig,m) *AIMAG(clo(m,nkvec,lo,iintsp)) , &
     259             :                                       ai_help(ig,m) * REAL(alo(m,nkvec,lo,iintsp)) + bi_help(ig,m) * REAL(blo(m,nkvec,lo,iintsp)) + &
     260             :                                       ci_help(ig,m) * REAL(clo(m,nkvec,lo,iintsp)) + ar_help(ig,m) *AIMAG(alo(m,nkvec,lo,iintsp)) + &
     261           0 :                                       br_help(ig,m) *AIMAG(blo(m,nkvec,lo,iintsp)) + cr_help(ig,m) *AIMAG(clo(m,nkvec,lo,iintsp)) )
     262             :                       ENDDO                     ! jump to end of row:
     263             :                    ENDIF
     264           0 :                    iilo = iilo + nkvecprevat + nkvecprevlo + nkvec 
     265             :                 ENDIF
     266             :              ENDDO
     267             :           ENDDO
     268           0 :           DEALLOCATE (cr_help,ci_help)
     269             :           !
     270             :           !--->    calculate the contribution to H (G_lo,G_lo)
     271             :           !
     272           0 :           ALLOCATE (ax(-l:l,2*(2*atoms%llod+1)),wc_help(-l:l), bx(-l:l,2*(2*atoms%llod+1)),wd_help(-l:l))
     273           0 :           ALLOCATE (cx(-l:l,2*(2*atoms%llod+1)),we_help(-l:l), wa_help(-l:l),wb_help(-l:l))
     274             : 
     275           0 :           iilo = matel0
     276           0 :           locol = locol0
     277           0 :           DO nkvec = 1,i_invsf* (2*l+1)
     278           0 :              locol = locol + 1
     279           0 :              IF (MOD(locol-1,n_size).EQ.n_rank) THEN
     280           0 :                 iilo = iilo + nvv + nkvecprevat
     281             :                 !
     282             :                 !---> with other LOs
     283             :                 !
     284           0 :                 DO lop = 1, lo
     285           0 :                    lp = atoms%llo(lop,n)
     286           0 :                    IF (l.EQ.lp) THEN
     287           0 :                       dd    = ud%ddn(l,n,jsp)       ! * invsfct
     288           0 :                       ulolo = ud%uloulopn(lo,lop,n,usp) ! * invsfct
     289           0 :                       nkend = (2*lp+1) * i_invsf
     290           0 :                       IF (lop.EQ.lo) nkend = nkvec
     291           0 :                       DO m = -l,l
     292           0 :                          DO mp = -l,l
     293           0 :                             wa_help(mp) = vs_mmp(m,mp,i_u,jsp) ! * invsfct
     294           0 :                             wb_help(mp) = vs_mmp(m,mp,i_u,jsp) * dd
     295           0 :                             wc_help(mp) = vs_mmp(m,mp,i_u,jsp) * uulo
     296           0 :                             wd_help(mp) = vs_mmp(m,mp,i_u,jsp) * dulo
     297           0 :                             we_help(mp) = vs_mmp(m,mp,i_u,jsp) * ulolo
     298             :                          END DO
     299           0 :                          DO nkvecp = 1, nkend
     300           0 :                             ax(m,nkvecp) = CMPLX(0.0,0.0)
     301           0 :                             bx(m,nkvecp) = CMPLX(0.0,0.0)
     302           0 :                             cx(m,nkvecp) = CMPLX(0.0,0.0)
     303           0 :                             DO mp = -l,l
     304             :                                ax(m,nkvecp) = ax(m,nkvecp) + &
     305             :                                               CONJG(alo(mp,nkvecp,lop,jintsp)) * wa_help(mp) + &
     306           0 :                                               CONJG(clo(mp,nkvecp,lop,jintsp)) * wc_help(mp)
     307             :                                bx(m,nkvecp) = bx(m,nkvecp) + &
     308             :                                               CONJG(blo(mp,nkvecp,lop,jintsp)) * wb_help(mp) + &
     309           0 :                                               CONJG(clo(mp,nkvecp,lop,jintsp)) * wd_help(mp)
     310             :                                cx(m,nkvecp) = cx(m,nkvecp) + &
     311             :                                               CONJG(alo(mp,nkvecp,lop,jintsp)) * wc_help(mp) + &
     312             :                                               CONJG(blo(mp,nkvecp,lop,jintsp)) * wd_help(mp) + &
     313           0 :                                               CONJG(clo(mp,nkvecp,lop,jintsp)) * we_help(mp)
     314             :                             END DO
     315             :                          END DO
     316             :                       END DO
     317             :                       !
     318             :                       !---> add to H, special bound for contribution of lo with with itself
     319             :                       !
     320           0 :                       DO nkvecp = 1,nkend  
     321           0 :                          iilo = iilo + 1
     322           0 :                          IF (l_real) THEN
     323           0 :                          DO m = -l,l
     324             :                             aa_r(iilo) = aa_r(iilo) + &
     325             :                                          REAL(alo(m,nkvec,lo,iintsp))* REAL(ax(m,nkvecp)) + &
     326             :                                          REAL(blo(m,nkvec,lo,iintsp))* REAL(bx(m,nkvecp)) + &
     327             :                                          REAL(clo(m,nkvec,lo,iintsp))* REAL(cx(m,nkvecp)) - &
     328             :                                          AIMAG(alo(m,nkvec,lo,iintsp))*AIMAG(ax(m,nkvecp)) - &
     329             :                                          AIMAG(blo(m,nkvec,lo,iintsp))*AIMAG(bx(m,nkvecp)) - &
     330           0 :                                          AIMAG(clo(m,nkvec,lo,iintsp))*AIMAG(cx(m,nkvecp)) 
     331             :                          END DO
     332             :                       ELSE
     333           0 :                          DO m = -l,l
     334             :                             aa_c(iilo) = aa_c(iilo) + alo(m,nkvec,lo,iintsp) * ax(m,nkvecp) + &
     335             :                                                       blo(m,nkvec,lo,iintsp) * bx(m,nkvecp) + &
     336           0 :                                                       clo(m,nkvec,lo,iintsp) * cx(m,nkvecp) 
     337             :                          END DO
     338             :                       END IF
     339             :                       END DO
     340             :                    ELSE
     341           0 :                       iilo = iilo + i_invsf * (2*lp+1) ! = nkvecprevlo
     342             :                    END IF                               ! l = lp
     343             :                 END DO
     344             :                 !
     345             :              END IF ! T3e
     346             :              !-t3e
     347             :           END DO
     348           0 :           DEALLOCATE (ax,bx,cx,wa_help,wb_help,wc_help,wd_help,we_help)
     349           0 :           nkvecprevlo = nkvecprevlo + i_invsf * (2*l+1)
     350             :        ELSE
     351           0 :           lp = i_invsf * (2*atoms%llo(lo,n)+1)
     352           0 :           iilo = iilo + (nvv + nkvecprevlo + nkvecprevat) * lp
     353           0 :           iilo = iilo + (lp+1) * lp / 2
     354           0 :           nkvecprevlo = nkvecprevlo + lp
     355           0 :           locol = locol + lp
     356             :        END IF  ! end of if(l=atoms%llo(lo,n))
     357             :     END DO     ! end of lo = 1,atoms%nlo loop
     358           0 :     nkvecprevat = nkvecprevat + nkvecprevlo
     359             : 
     360           0 :     DEALLOCATE ( ar_help,ai_help,br_help,bi_help,va_help,vb_help )
     361             :     !
     362           0 :   END SUBROUTINE u_ham
     363             : END MODULE m_uham

Generated by: LCOV version 1.13