LCOV - code coverage report
Current view: top level - cdn_mt - abcof.F90 (source / functions) Hit Total Coverage
Test: combined.info Lines: 161 194 83.0 %
Date: 2019-09-08 04:53:50 Functions: 2 2 100.0 %

          Line data    Source code
       1             : MODULE m_abcof
       2             : CONTAINS
       3        1848 :   SUBROUTINE abcof(input,atoms,sym, cell,lapw,ne,usdus,&
       4        1848 :                    noco,jspin,oneD, acof,bcof,ccof,zMat,eig,force)
       5             :     !     ************************************************************
       6             :     !     subroutine constructs the a,b coefficients of the linearized
       7             :     !     m.t. wavefunctions for each band and atom.       c.l. fu
       8             :     !     ************************************************************
       9             : #include "cpp_double.h"
      10             : 
      11             :     USE m_constants, ONLY : tpi_const, ImagUnit
      12             :     USE m_setabc1lo
      13             :     USE m_sphbes
      14             :     USE m_dsphbs
      15             :     USE m_abclocdn
      16             :     USE m_ylm
      17             :     USE m_types
      18             :     USE m_juDFT
      19             :     IMPLICIT NONE
      20             :     TYPE(t_input),INTENT(IN)  :: input
      21             :     TYPE(t_usdus),INTENT(IN)  :: usdus
      22             :     TYPE(t_lapw),INTENT(IN)   :: lapw
      23             :     TYPE(t_oneD),INTENT(IN)   :: oneD
      24             :     TYPE(t_noco),INTENT(IN)   :: noco
      25             :     TYPE(t_sym),INTENT(IN)    :: sym
      26             :     TYPE(t_cell),INTENT(IN)   :: cell
      27             :     TYPE(t_atoms),INTENT(IN)  :: atoms
      28             :     TYPE(t_mat),INTENT(IN)    :: zMat
      29             :     TYPE(t_force),OPTIONAL,INTENT(INOUT) :: force
      30             :     !     ..
      31             :     !     .. Scalar Arguments ..
      32             :     INTEGER, INTENT (IN) :: ne
      33             :     INTEGER, INTENT (IN) :: jspin
      34             :     !     ..
      35             :     !     .. Array Arguments ..
      36             :     COMPLEX, INTENT (OUT) :: acof(:,0:,:)!(nobd,0:dimension%lmd,atoms%nat)
      37             :     COMPLEX, INTENT (OUT) :: bcof(:,0:,:)!(nobd,0:dimension%lmd,atoms%nat)
      38             :     COMPLEX, INTENT (OUT) :: ccof(-atoms%llod:,:,:,:)!(-llod:llod,nobd,atoms%nlod,atoms%nat)
      39             :     REAL,    OPTIONAL, INTENT (IN) :: eig(:)!(dimension%neigd)
      40             :     !     ..
      41             :     !     .. Local Scalars ..
      42             :     COMPLEX cexp,phase,c_0,c_1,c_2
      43             :     REAL const,df,r1,s,tmk,wronk,qss(3)
      44        1848 :     REAL s2h, s2h_e(ne)
      45             :     INTEGER i,j,k,l,ll1,lm ,n,nap,natom,nn,iatom,jatom,lmp,m,nkvec
      46             :     INTEGER inv_f,ie,ilo,kspin,iintsp,nintsp,nvmax,lo,inap
      47             :     LOGICAL l_force
      48             :     !     ..
      49             :     !     .. Local Arrays ..
      50        1848 :     INTEGER nbasf0(atoms%nlod,atoms%nat)
      51        3696 :     REAL dfj(0:atoms%lmaxd),fj(0:atoms%lmaxd),fg(3),fgp(3),fgr(3),fk(3),fkp(3),fkr(3)
      52        3696 :     REAL alo1(atoms%nlod),blo1(atoms%nlod),clo1(atoms%nlod)
      53        1848 :     COMPLEX ylm( (atoms%lmaxd+1)**2 )
      54             :     COMPLEX ccchi(2,2)
      55        5544 :     LOGICAL enough(atoms%nat),apw(0:atoms%lmaxd,atoms%ntype)
      56        1848 :     REAL,    ALLOCATABLE :: work_r(:)
      57        1848 :     COMPLEX, ALLOCATABLE :: work_c(:)
      58             : 
      59        1848 :     CALL timestart("abcof")
      60             : 
      61        1848 :     IF (zmat%l_real) THEN
      62         350 :        IF (noco%l_soc.AND.sym%invs) CALL judft_error("BUG in abcof, SOC&INVS but real?")
      63         350 :        IF (noco%l_noco) CALL judft_error("BUG in abcof, l_noco but real?")
      64             :     ENDIF
      65             : 
      66        1848 :     const = 2 * tpi_const/SQRT(cell%omtil)
      67             : 
      68        6756 :     acof(:,:,:)   = CMPLX(0.0,0.0)
      69        6756 :     bcof(:,:,:)   = CMPLX(0.0,0.0)
      70        6756 :     ccof(:,:,:,:) = CMPLX(0.0,0.0)
      71        1848 :     l_force = .FALSE.
      72        1848 :     IF(PRESENT(eig).AND.input%l_f) THEN
      73          12 :        l_force = .TRUE.
      74             :     END IF
      75        1848 :     IF(l_force) THEN
      76          12 :        force%acoflo  = CMPLX(0.0,0.0)
      77          12 :        force%bcoflo  = CMPLX(0.0,0.0)
      78          12 :        force%e1cof   = CMPLX(0.0,0.0)
      79          12 :        force%e2cof   = CMPLX(0.0,0.0)
      80          12 :        force%aveccof = CMPLX(0.0,0.0)
      81          12 :        force%bveccof = CMPLX(0.0,0.0)
      82          12 :        force%cveccof = CMPLX(0.0,0.0)
      83             :     END IF
      84             : 
      85             :     !+APW_LO
      86       10136 :     DO n = 1, atoms%ntype
      87       42584 :        DO l = 0,atoms%lmax(n)
      88       38440 :           apw(l,n) = .FALSE.
      89       55932 :           DO lo = 1,atoms%nlo(n)
      90       55932 :              IF (atoms%l_dulo(lo,n)) apw(l,n) = .TRUE.
      91             :           ENDDO
      92       42584 :           IF ((input%l_useapw).AND.(atoms%lapw_l(n).GE.l)) apw(l,n) = .FALSE.
      93             :        ENDDO
      94        7932 :        DO lo = 1,atoms%nlo(n)
      95        6084 :           IF (atoms%l_dulo(lo,n)) apw(atoms%llo(lo,n),n) = .TRUE.
      96             :        ENDDO
      97             :     ENDDO
      98             :     !+APW_LO
      99             :     !
     100        1848 :     nintsp = 1
     101        1848 :     IF (noco%l_ss) nintsp = 2
     102             :     !---> loop over the interstitial spin
     103        3776 :     DO iintsp = 1,nintsp
     104             :        !
     105        1928 :        nvmax=lapw%nv(jspin)
     106        1928 :        IF (noco%l_ss) nvmax=lapw%nv(iintsp)
     107        1928 :        IF (iintsp .EQ. 1) THEN
     108        7392 :           qss= - noco%qss/2
     109             :        ELSE
     110         320 :           qss= + noco%qss/2
     111             :        ENDIF
     112             : 
     113             :        !---> loop over atom types
     114             :        !$OMP PARALLEL DO &
     115             :        !$OMP& DEFAULT(none)&
     116             :        !$OMP& PRIVATE(n,nn,natom,k,i,work_r,work_c,ccchi,kspin,fg,fk,s,r1,fj,dfj,l,df,wronk,tmk,phase,lo,nkvec,&
     117             :        !$OMP& alo1,blo1,clo1,inap,nap,j,fgr,fgp,s2h,s2h_e,fkr,fkp,ylm,ll1,m,c_0,c_1,c_2,jatom,lmp,inv_f,lm)&
     118             :        !$OMP& SHARED(noco,atoms,sym,cell,oneD,lapw,nvmax,ne,zMat,usdus,iintsp,eig,l_force,&
     119        3776 :        !$OMP& jspin,qss,apw,const,nbasf0,enough,acof,bcof,ccof,force)
     120             :        DO n = 1,atoms%ntype
     121        4224 :           CALL setabc1lo(atoms,n,usdus,jspin,alo1,blo1,clo1)
     122             :           
     123             :           !  ----> loop over equivalent atoms
     124       14996 :           DO nn = 1,atoms%neq(n)
     125        4988 :              natom = 0
     126       10236 :              DO i = 1, n-1
     127       10236 :                 natom = natom + atoms%neq(i)
     128             :              ENDDO
     129        4988 :              natom = natom + nn
     130        9212 :              IF ((atoms%invsat(natom).EQ.0) .OR. (atoms%invsat(natom).EQ.1)) THEN
     131             :                 !--->        loop over lapws
     132        4232 :                 IF (zmat%l_real) THEN
     133        1224 :                    ALLOCATE ( work_r(ne) )
     134             :                 ELSE
     135        3008 :                    ALLOCATE ( work_c(ne) )
     136             :                 ENDIF
     137      930462 :                 DO k = 1,nvmax
     138      926230 :                    IF (.NOT.noco%l_noco) THEN
     139      659862 :                       IF (zmat%l_real) THEN
     140      570768 :                          work_r(:ne)=zMat%data_r(k,:ne)
     141             :                       ELSE
     142       89094 :                          work_c(:ne)=zMat%data_c(k,:ne)
     143             :                       END IF
     144             :                    ENDIF
     145             : 
     146      926230 :                    IF (noco%l_noco) THEN
     147             :                       !--->            generate the spinors (chi)
     148      266368 :                       ccchi(1,1) =  EXP(ImagUnit*noco%alph(n)/2)*COS(noco%beta(n)/2)
     149      266368 :                       ccchi(1,2) = -EXP(ImagUnit*noco%alph(n)/2)*SIN(noco%beta(n)/2)
     150      266368 :                       ccchi(2,1) =  EXP(-ImagUnit*noco%alph(n)/2)*SIN(noco%beta(n)/2)
     151      266368 :                       ccchi(2,2) =  EXP(-ImagUnit*noco%alph(n)/2)*COS(noco%beta(n)/2)
     152      266368 :                       IF (noco%l_ss) THEN
     153             :                          !--->              the coefficients of the spin-down basis functions are
     154             :                          !--->              stored in the second half of the eigenvector
     155        9280 :                          kspin = (iintsp-1)*(lapw%nv(1)+atoms%nlotot)
     156       46400 :                          DO i = 1,ne
     157        9280 :                             work_c(i) = ccchi(iintsp,jspin)*zMat%data_c(kspin+k,i)
     158             :                          ENDDO
     159             :                       ELSE
     160             :                          !--->              perform sum over the two interstitial spin directions
     161             :                          !--->              and take into account the spin boundary conditions
     162             :                          !--->              (jspin counts the local spin directions inside each MT)
     163      257088 :                          kspin = lapw%nv(1)+atoms%nlotot
     164     2460480 :                          DO i = 1,ne
     165             :                             work_c(i) = ccchi(1,jspin)*zMat%data_c(k,i)&
     166      257088 :                                  &                        + ccchi(2,jspin)*zMat%data_c(kspin+k,i)
     167             :                          ENDDO
     168             :                       ENDIF
     169             :                    ENDIF ! (noco%l_noco)
     170      926230 :                    IF (noco%l_ss) THEN
     171        9280 :                       fg = lapw%gvec(:,k,iintsp) + qss
     172             :                    ELSE
     173      916950 :                       fg = lapw%gvec(:,k,jspin) + qss
     174             :                    ENDIF ! (noco%l_ss)
     175     3704920 :                    fk = lapw%bkpt + fg
     176     3704920 :                    s =  DOT_PRODUCT(fk,MATMUL(cell%bbmat,fk))
     177      926230 :                    IF(l_force) THEN
     178        5732 :                       s2h = 0.5*s
     179        5732 :                       s2h_e(:ne) = s2h-eig(:ne)
     180             :                    END IF
     181      926230 :                    s = SQRT(s)
     182      926230 :                    r1 = atoms%rmt(n)*s
     183      926230 :                    CALL sphbes(atoms%lmax(n),r1,fj)
     184      926230 :                    CALL dsphbs(atoms%lmax(n),r1,fj,dfj)
     185             :                    !  ----> construct a and b coefficients
     186     9378884 :                    DO l = 0,atoms%lmax(n)
     187     8452654 :                       df = s*dfj(l)
     188     8452654 :                       wronk = usdus%uds(l,n,jspin)*usdus%dus(l,n,jspin) - usdus%us(l,n,jspin)*usdus%duds(l,n,jspin)
     189     9378884 :                       IF (apw(l,n)) THEN
     190           0 :                          fj(l) = 1.0*const * fj(l)/usdus%us(l,n,jspin)
     191           0 :                          dfj(l) = 0.0
     192             :                       ELSE
     193     8452654 :                          dfj(l) = const* (usdus%dus(l,n,jspin)*fj(l)-df*usdus%us(l,n,jspin))/wronk
     194     8452654 :                          fj(l) = const* (df*usdus%uds(l,n,jspin)-fj(l)*usdus%duds(l,n,jspin))/wronk
     195             :                       ENDIF
     196             :                    ENDDO ! loop over l
     197             :                    tmk = tpi_const* (fk(1)*atoms%taual(1,natom)+&
     198             :                                      fk(2)*atoms%taual(2,natom)+&
     199      926230 :                                      fk(3)*atoms%taual(3,natom))
     200      926230 :                    phase = CMPLX(COS(tmk),SIN(tmk))
     201      926230 :                    IF (oneD%odi%d1) THEN
     202           0 :                       inap = oneD%ods%ngopr(natom)
     203             :                    ELSE
     204      926230 :                       nap = atoms%ngopr(natom)
     205      926230 :                       inap = sym%invtab(nap)
     206             :                    END IF
     207     3704920 :                    DO j = 1,3
     208     2778690 :                       fkr(j) = 0.0
     209     2778690 :                       fgr(j) = 0.0
     210    12040990 :                       DO i = 1,3
     211    11114760 :                          IF (oneD%odi%d1) THEN
     212           0 :                             fkr(j) = fkr(j) + fk(i)*oneD%ods%mrot(i,j,inap)
     213           0 :                             fgr(j) = fgr(j) + fg(i)*oneD%ods%mrot(i,j,inap)
     214             :                          ELSE
     215     8336070 :                             fkr(j) = fkr(j) + fk(i)*sym%mrot(i,j,inap)
     216     8336070 :                             fgr(j) = fgr(j) + fg(i)*sym%mrot(i,j,inap)
     217             :                          END IF
     218             :                       END DO
     219             :                    END DO
     220    12040990 :                    fkp = MATMUL(fkr,cell%bmat)
     221    12040990 :                    fgp = MATMUL(fgr,cell%bmat)
     222             :                    !     ----> generate spherical harmonics
     223      926230 :                    CALL ylm4(atoms%lmax(n),fkp,ylm)
     224             :                    !     ----> loop over l
     225      926230 :                    DO l = 0,atoms%lmax(n)
     226     8452654 :                       ll1 = l* (l+1)
     227             :                       !     ----> loop over m
     228    87146362 :                       DO m = -l,l
     229    77767478 :                          lm = ll1 + m
     230    77767478 :                          c_0 = CONJG(ylm(lm+1))*phase
     231    77767478 :                          c_1 = c_0 *  fj(l)
     232    77767478 :                          c_2 = c_0 * dfj(l)
     233             :                          !     ----> loop over bands
     234    77767478 :                          IF (zmat%l_real) THEN
     235  1679478990 :                             acof(:ne,lm,natom) = acof(:ne,lm,natom) +  c_1 * work_r(:ne)
     236    48936336 :                             bcof(:ne,lm,natom) = bcof(:ne,lm,natom) +  c_2 * work_r(:ne)
     237             :                          ELSE
     238   340356956 :                             acof(:ne,lm,natom) = acof(:ne,lm,natom) +  c_1 * work_c(:ne)
     239    28831142 :                             bcof(:ne,lm,natom) = bcof(:ne,lm,natom) +  c_2 * work_c(:ne)
     240             :                          END IF
     241             : 
     242   155534956 :                          IF (atoms%l_geo(n).AND.l_force) THEN
     243      464292 :                             IF (zmat%l_real) THEN
     244           0 :                                force%e1cof(:ne,lm,natom) = force%e1cof(:ne,lm,natom) + c_1 * work_r(:ne) * s2h_e(:ne)
     245           0 :                                force%e2cof(:ne,lm,natom) = force%e2cof(:ne,lm,natom) + c_2 * work_r(:ne) * s2h_e(:ne)
     246           0 :                                DO i = 1,3
     247           0 :                                   force%aveccof(i,:ne,lm,natom) = force%aveccof(i,:ne,lm,natom) + c_1 * work_r(:ne) * fgp(i)
     248           0 :                                   force%bveccof(i,:ne,lm,natom) = force%bveccof(i,:ne,lm,natom) + c_2 * work_r(:ne) * fgp(i)
     249             :                                END DO
     250             :                             ELSE
     251     6964380 :                                force%e1cof(:ne,lm,natom) = force%e1cof(:ne,lm,natom) + c_1 * work_c(:ne) * s2h_e(:ne)
     252     6964380 :                                force%e2cof(:ne,lm,natom) = force%e2cof(:ne,lm,natom) + c_2 * work_c(:ne) * s2h_e(:ne)
     253     3250044 :                                DO i = 1,3
     254    20893140 :                                   force%aveccof(i,:ne,lm,natom) = force%aveccof(i,:ne,lm,natom) + c_1 * work_c(:ne) * fgp(i)
     255    21357432 :                                   force%bveccof(i,:ne,lm,natom) = force%bveccof(i,:ne,lm,natom) + c_2 * work_c(:ne) * fgp(i)
     256             :                                END DO
     257             :                             END IF
     258             :                          ENDIF
     259             : 
     260    96906836 :                          IF (noco%l_soc.AND.sym%invs) THEN
     261     8259992 :                             IF (atoms%invsat(natom).EQ.1) THEN
     262           0 :                                jatom = sym%invsatnr(natom)
     263           0 :                                lmp = ll1 - m
     264           0 :                                inv_f = (-1)**(l-m)
     265           0 :                                c_1 =  CONJG(c_1) * inv_f
     266           0 :                                c_2 =  CONJG(c_2) * inv_f
     267           0 :                                CALL CPP_BLAS_caxpy(ne,c_1,work_c,1, acof(1,lmp,jatom),1)
     268           0 :                                CALL CPP_BLAS_caxpy(ne,c_2,work_c,1, bcof(1,lmp,jatom),1)
     269           0 :                                IF (atoms%l_geo(n).AND.l_force) THEN
     270           0 :                                   CALL CPP_BLAS_caxpy(ne,c_1,work_c*s2h_e,1, force%e1cof(1,lmp,jatom),1)
     271           0 :                                   CALL CPP_BLAS_caxpy(ne,c_2,work_c*s2h_e,1, force%e2cof(1,lmp,jatom),1)
     272           0 :                                   DO i = 1,3
     273           0 :                                      CALL CPP_BLAS_caxpy(ne,c_1,work_c*fgp(i),1, force%aveccof(i,1,lmp,jatom),3)
     274           0 :                                      CALL CPP_BLAS_caxpy(ne,c_2,work_c*fgp(i),1, force%bveccof(i,1,lmp,jatom),3)
     275             :                                   END DO
     276             :                                END IF
     277             :                             ENDIF
     278             :                          ENDIF
     279             :                       ENDDO ! loop over m
     280             :                    ENDDO ! loop over l
     281     1993990 :                    DO lo=1,atoms%nlo(n)
     282     5816642 :                       DO nkvec=1,lapw%nkvec(lo,natom)
     283     4890412 :                          IF (k==lapw%kvec(nkvec,lo,natom)) THEN !check if this k-vector has LO attached
     284             :                             CALL abclocdn(atoms,sym,noco,lapw,cell,ccchi(:,jspin),iintsp,phase,ylm,&
     285        6940 :                                           n,natom,k,nkvec,lo,ne,alo1,blo1,clo1,acof,bcof,ccof,zMat,l_force,fgp,force)
     286             :                          ENDIF
     287             :                       ENDDO
     288             :                    END DO
     289             :                 ENDDO ! loop over LAPWs
     290        4232 :                 IF (zmat%l_real) THEN
     291        1224 :                    DEALLOCATE(work_r)
     292             :                 ELSE               
     293        3008 :                    DEALLOCATE(work_c)
     294             :                 ENDIF
     295             :              ENDIF  ! invsatom == ( 0 v 1 )
     296             :           ENDDO    ! loop over equivalent atoms
     297             :        ENDDO       ! loop over atom types
     298             :        !$OMP END PARALLEL DO
     299             :     ENDDO       ! loop over interstitial spin
     300        1848 :     IF (noco%l_soc.AND.sym%invs) THEN
     301             : 
     302             :        !
     303             :        !                           -p,n       (l+m)   p,n  *
     304             :        ! Usually, we exploit that A     = (-1)      (A    )  if p and -p are the positions
     305             :        !                           l,m                l,-m
     306             :        ! of two atoms related by inversion symmetry and the coefficients are considered to
     307             :        ! be in the local frame of the representative atom. This is possible, if z is real.
     308             :        ! After SOC, however, the eigenvectors z are complex and this is no longer possible
     309             :        ! so the z has to enter, not z*. This is done within the k-loop.
     310             :        !                                    -p,n       m   p,n  *
     311             :        ! When called from hsohelp, we need A     = (-1)  (A    ) because we don't have to
     312             :        !                                     l,m           l,-m                    l
     313             :        ! rotate, but in the sums in hsoham only products A*  A   enter and the (-1) cancels.
     314             :        !                                                  lm  lm
     315             :     ELSE
     316        1360 :        iatom = 0
     317        4536 :        DO n = 1,atoms%ntype
     318        5788 :           DO nn = 1,atoms%neq(n)
     319        3940 :              iatom = iatom + 1
     320        7116 :              IF (atoms%invsat(iatom).EQ.1) THEN
     321         756 :                 jatom = sym%invsatnr(iatom)
     322             :                 cexp = EXP(tpi_const*ImagUnit*DOT_PRODUCT(atoms%taual(:,jatom)&
     323         756 :                      &             + atoms%taual(:,iatom),lapw%bkpt))
     324        2220 :                 DO ilo = 1,atoms%nlo(n)
     325        1464 :                    l = atoms%llo(ilo,n)
     326        5148 :                    DO m = -l,l
     327        2928 :                       inv_f = (-1.0)**(m+l)
     328      110680 :                       DO ie = 1,ne
     329      106288 :                          ccof(m,ie,ilo,jatom) = inv_f * cexp * CONJG(  ccof(-m,ie,ilo,iatom))
     330      109216 :                          IF(l_force) THEN
     331           0 :                             force%acoflo(m,ie,ilo,jatom) = inv_f * cexp * CONJG(force%acoflo(-m,ie,ilo,iatom))
     332           0 :                             force%bcoflo(m,ie,ilo,jatom) = inv_f * cexp * CONJG(force%bcoflo(-m,ie,ilo,iatom))
     333           0 :                             DO i = 1,3
     334           0 :                                force%cveccof(i,m,ie,ilo,jatom) = -inv_f * cexp * CONJG(force%cveccof(i,-m,ie,ilo,iatom))
     335             :                             END DO
     336             :                          END IF
     337             :                       ENDDO
     338             :                    ENDDO
     339             :                 ENDDO
     340         756 :                 DO l = 0,atoms%lmax(n)
     341        6804 :                    ll1 = l* (l+1)
     342       68040 :                    DO m =-l,l
     343       61236 :                       lm  = ll1 + m
     344       61236 :                       lmp = ll1 - m
     345       61236 :                       inv_f = (-1.0)**(m+l)
     346     2223531 :                       DO ie = 1,ne
     347     2162295 :                          acof(ie,lm,jatom) = inv_f * cexp * CONJG(acof(ie,lmp,iatom))
     348     2223531 :                          bcof(ie,lm,jatom) = inv_f * cexp * CONJG(bcof(ie,lmp,iatom))
     349             :                       END DO
     350       68040 :                       IF (atoms%l_geo(n).AND.l_force) THEN
     351           0 :                          DO ie = 1,ne
     352           0 :                             force%e1cof(ie,lm,jatom) = inv_f * cexp * CONJG(force%e1cof(ie,lmp,iatom))
     353           0 :                             force%e2cof(ie,lm,jatom) = inv_f * cexp * CONJG(force%e2cof(ie,lmp,iatom))
     354           0 :                             DO i = 1,3
     355           0 :                                force%aveccof(i,ie,lm,jatom) = -inv_f * cexp * CONJG(force%aveccof(i,ie,lmp,iatom))
     356           0 :                                force%bveccof(i,ie,lm,jatom) = -inv_f * cexp * CONJG(force%bveccof(i,ie,lmp,iatom))
     357             :                             END DO
     358             :                          END DO
     359             :                       END IF
     360             :                    ENDDO
     361             :                 ENDDO
     362             :              ENDIF
     363             :           ENDDO
     364             :        ENDDO
     365             :     ENDIF
     366             : 
     367        1848 :     CALL timestop("abcof")
     368             : 
     369        3696 :   END SUBROUTINE abcof
     370             : END MODULE m_abcof

Generated by: LCOV version 1.13