LCOV - code coverage report
Current view: top level - init - gtest.f (source / functions) Hit Total Coverage
Test: combined.info Lines: 24 34 70.6 %
Date: 2019-09-08 04:53:50 Functions: 1 1 100.0 %

          Line data    Source code
       1             :       MODULE m_gtest
       2             :       use m_juDFT
       3             : !*********************************************************************
       4             : !     test the gaussian integration mesh for this l
       5             : !     1) integrate each ylm, 2) get normalization of each ylm,
       6             : !     3) (ylm(lmax,m=lmax | ylm) for all lm
       7             : !*********************************************************************
       8             :       CONTAINS
       9         108 :       SUBROUTINE gtest(
      10             :      >                 lmax,ngpts,vgauss,wt)
      11             : 
      12             :       USE m_ylm
      13             :       IMPLICIT NONE
      14             : !
      15             :       INTEGER, INTENT (IN) :: lmax,ngpts
      16             :       REAL,    INTENT (IN) :: vgauss(3,*),wt(*) !   gaussian integration points
      17             : 
      18             :       INTEGER :: lm,lmmax,nn
      19             :       LOGICAL :: lerr
      20             :       COMPLEX :: temp
      21             :       REAL    :: v(3)
      22         216 :       COMPLEX, DIMENSION((lmax+1)**2) :: ylm,s1,s2,s3
      23             : 
      24             :       REAL, PARAMETER :: del = 1.e-10
      25             : 
      26         108 :       lmmax = (lmax+1)**2
      27       11096 :       DO lm = 1, lmmax
      28       10988 :          s1(lm)=cmplx(0.0,0.0)
      29       10988 :          s2(lm)=cmplx(0.0,0.0)
      30       11096 :          s3(lm)=cmplx(0.0,0.0)
      31             :       ENDDO
      32             : 
      33             : !---> loop over points
      34       23040 :       DO nn = 1, ngpts
      35       22932 :          v(:) = vgauss(:,nn)
      36             :          CALL ylm4(
      37             :      >             lmax,v,
      38       22932 :      <             ylm)
      39     2798452 :          DO lm = 1, lmmax
      40     2775412 :             s1(lm) = s1(lm) + wt(nn)*ylm(lm)
      41     2775412 :             s2(lm) = s2(lm) + wt(nn)*conjg(ylm(lm))*ylm(lm)
      42     2798344 :             s3(lm) = s3(lm) + wt(nn)*conjg(ylm(lmmax))*ylm(lm)
      43             :          ENDDO
      44             :       ENDDO
      45             : 
      46             : !---> check for non-zero elements
      47         108 :       lerr = .false.
      48       11096 :       DO lm=1,lmmax
      49       10988 :          IF ((abs(s1(lm)).GT.del).AND.(lm.GT.1)) THEN
      50           0 :             WRITE (6,1000) lm,s1(lm)
      51           0 :             lerr = .true.
      52             :          ENDIF
      53             :  1000    FORMAT (20x,' integration of s.h. lm=',i3,1p,2e14.6)
      54             : 
      55       10988 :          temp = s2(lm) - cmplx(1.0,0.0)
      56       10988 :          IF (abs(temp).GT.del) THEN
      57           0 :             WRITE (6,1001) lm,temp
      58           0 :             lerr = .true.
      59             :          ENDIF
      60             :  1001    FORMAT (20x,' normalization error lm=',i3,1p,2e14.6)
      61             : 
      62       11096 :          IF (abs(s3(lm)).GT.del) THEN
      63         108 :             IF(lm.ne.lmmax) THEN
      64           0 :               WRITE (6,1002) lm,s3(lm)
      65           0 :               lerr = .true.
      66         108 :             ELSEIF( abs(abs(s3(lm))-1.0).GT.del ) THEN
      67           0 :               WRITE (6,1002) lm,s3(lm)
      68           0 :               lerr = .true.
      69             :             ENDIF
      70             :          ENDIF
      71             :  1002    FORMAT (20x,' (ylm(lmax,lmax) | ylm)    lm=',i3,1p,2e14.6)
      72             :       ENDDO
      73             : 
      74         108 :       IF (lerr) THEN
      75           0 :         WRITE (6,'(/,'' error in gaussian points'')')
      76           0 :          CALL juDFT_error("Error in gaussian points",calledby="gtest")
      77             :       ENDIF
      78             : 
      79         108 :       RETURN
      80             :       END SUBROUTINE gtest
      81             :       END MODULE m_gtest

Generated by: LCOV version 1.13