LCOV - code coverage report
Current view: top level - xc-pot - mkgl0.f90 (source / functions) Hit Total Coverage
Test: FLEUR test coverage Lines: 35 35 100.0 %
Date: 2024-11-09 04:22:24 Functions: 1 1 100.0 %

          Line data    Source code
       1             : MODULE m_mkgl0
       2             : !      ------------------------------------------------------------------
       3             : !      make quantities for vxcallg. for paramag. case
       4             : !        dens,drr,ddrr are charge density and its gradient for nonmag.
       5             : !        one spin.
       6             : 
       7             : !      agr: abs(grad(ro)), g2r: laplacian(ro),
       8             : !      gggr: grad(ro)*grad(agr),
       9             : !      grgru,d: grad(ro)*grad(rou),for rod., gzgr: grad(zeta)*grad(ro).
      10             : !      ------------------------------------------------------------------
      11             : CONTAINS
      12        1150 :    SUBROUTINE mkgl0(jspins,rad, densi,drri,ddrri, grad)
      13             : 
      14             :       USE m_types
      15             :       IMPLICIT NONE
      16             : 
      17             :       INTEGER, INTENT (IN) :: jspins
      18             :       REAL,    INTENT (IN) :: rad(:),densi(:,:)
      19             :       REAL,    INTENT (IN) :: drri(:,:),ddrri(:,:)
      20             :       TYPE(t_gradients)::grad
      21             : 
      22             :       REAL dagrr,dagrru,ddrr,ddrrd,ddrru,drr,drrd,drru,dzdr,ro,rod,rou,rv,spnf
      23             :       INTEGER i
      24             : !     ------------------------------------------------------------------
      25             : 
      26        1150 :       spnf = 1./(3-jspins)
      27        1150 :       IF (allocated(grad%sigma)) THEN
      28       16825 :          DO i=1,size(rad)
      29       16800 :             grad%sigma(1,i)=spnf * drri(i,1)*spnf * drri(i,1)
      30       16825 :             IF (jspins>1) THEN
      31       16800 :                grad%sigma(2,i)=spnf * drri(i,1)*spnf * drri(i,2)
      32       16800 :                grad%sigma(3,i)=spnf * drri(i,2)*spnf * drri(i,2)
      33             :             ENDIF
      34             :          ENDDO
      35          25 :          RETURN
      36             :       ENDIF
      37      936860 :       DO i = 1,size(rad)
      38             : 
      39      935735 :          rv = rad(i)
      40      935735 :          ro =  spnf * (densi(i,1) + densi(i,jspins))
      41      935735 :          rou = spnf * densi(i,1)
      42      935735 :          rod = spnf * densi(i,jspins)
      43             : 
      44      935735 :          drr =   spnf * (drri(i,1) + drri(i,jspins))
      45      935735 :          drru =  spnf * drri(i,1)
      46      935735 :          drrd =  spnf * drri(i,jspins)
      47      935735 :          ddrr =  spnf * (ddrri(i,1) + ddrri(i,jspins))
      48      935735 :          ddrru = spnf * ddrri(i,1)
      49      935735 :          ddrrd = spnf * ddrri(i,jspins)
      50             : 
      51      935735 :          grad%agrt(i) = abs(drr)
      52      935735 :          grad%agru(i) = abs(drru)
      53      935735 :          grad%agrd(i) = grad%agru(i)
      54             : 
      55      935735 :          dagrr = drr*ddrr/grad%agrt(i)
      56      935735 :          dagrru = drru*ddrru/grad%agru(i)
      57             : 
      58      935735 :          grad%gggrt(i) = drr*dagrr
      59      935735 :          grad%gggru(i) = drru*dagrru
      60      935735 :          grad%gggrd(i) = grad%gggru(i)
      61             : 
      62      935735 :          dzdr = ((drru-drrd)*ro- (rou-rod)*drr)/ro**2
      63             : 
      64      935735 :          grad%gzgr(i) = dzdr*drr
      65             : 
      66      935735 :          grad%g2rt(i) = ddrr + 2*drr/rv
      67      935735 :          grad%g2ru(i) = ddrru + 2*drru/rv
      68      935735 :          grad%g2rd(i) = ddrrd + 2*drrd/rv
      69             : 
      70      935735 :          grad%grgru(i) = drr*drru
      71      936860 :          grad%grgrd(i) = drr*drrd
      72             : 
      73             :       ENDDO
      74             : 
      75             :    END SUBROUTINE mkgl0
      76             : END MODULE m_mkgl0

Generated by: LCOV version 1.14