LCOV - code coverage report
Current view: top level - xc-pot - excepbe.f90 (source / functions) Hit Total Coverage
Test: combined.info Lines: 38 38 100.0 %
Date: 2019-09-08 04:53:50 Functions: 2 2 100.0 %

          Line data    Source code
       1             : MODULE m_excepbe
       2             : !.....-----------------------------------------------------------------
       3             : !.....epbe(easy_pbe) exchange-correlation energy density  in hartree.
       4             : !     excepbe - easypbe
       5             : !.....------------------------------------------------------------------
       6             : CONTAINS
       7         917 :    SUBROUTINE excepbe( &
       8             :       xcpot,jspins,mirm,irmx, &
       9         917 :       rh,agr,agru,agrd, &
      10         917 :       g2ru,g2rd,gggr,gggru,gggrd, &
      11         917 :       exc)
      12             : 
      13             :       USE m_easypbe
      14             :       USE m_types_xcpot_data
      15             : 
      16             :       IMPLICIT NONE
      17             : 
      18             : ! .. Arguments ..
      19             :       TYPE(t_xcpot_data),INTENT(IN)::xcpot
      20             :       INTEGER, INTENT (IN) :: irmx,jspins,mirm
      21             :       REAL,    INTENT (IN) :: rh(mirm,jspins)
      22             :       REAL,    INTENT (IN) :: agr(mirm),agru(mirm),agrd(mirm)
      23             :       REAL,    INTENT (IN) :: g2ru(mirm),g2rd(mirm),gggr(mirm)
      24             :       REAL,    INTENT (IN) :: gggru(mirm),gggrd(mirm)
      25             :       REAL,    INTENT (OUT) :: exc(mirm)
      26             : 
      27             : ! .. local variables ..
      28             :       INTEGER :: lcor,lpot,i
      29             :       REAL :: ro,rou,rod,xedl,cedl,xedg,cedg,xced
      30             :       REAL :: up,agrup,delgrup,uplap,dn,agrdn,delgrdn,dnlap, &
      31             :               agrt,delgrt, &
      32             :               exlsd,vxuplsd,vxdnlsd,eclsd,vcuplsd,vcdnlsd, &
      33             :               expbe,vxuppbe,vxdnpbe,ecpbe,vcuppbe,vcdnpbe, &
      34             :               vxupsr,vxdnsr
      35             : 
      36             :       REAL, PARAMETER :: sml = 1.e-14
      37             :       REAL, PARAMETER :: smlc = 2.01e-14
      38             : 
      39             : !$OMP parallel do default(private) &
      40             : !$OMP SHARED(xcpot,jspins,mirm,irmx) &
      41             : !$OMP SHARED(rh,agr,agru,agrd) &
      42             : !$OMP SHARED(g2ru,g2rd,gggr,gggru,gggrd) &
      43         917 : !$OMP SHARED(exc)
      44             :       DO i = 1,irmx
      45             : 
      46    30707339 :          IF (jspins == 1) THEN
      47     8415000 :             rou=rh(i,1)/2
      48     8415000 :             rou=max(rou,sml)
      49             :             rod=rou
      50             :          ELSE
      51    22292339 :             rou=rh(i,1)
      52    22292339 :             rod=rh(i,jspins)
      53    22292339 :             rou=max(rou,sml)
      54    22292339 :             rod=max(rod,sml)
      55             :          ENDIF
      56             : 
      57    30707339 :          ro=rou+rod
      58             : 
      59             :          !.....
      60             :          !       xedl,xedg: exchange energy density (local,grad.exp.) in ry.
      61             :          !       cedl,cedg: exchange energy density (local,grad.expnd.) in ry.
      62             :          !.....
      63    30707339 :          xedl = 0.0e0
      64    30707339 :          cedl = 0.0e0
      65    30707339 :          xedg = 0.0e0
      66    30707339 :          cedg = 0.0e0
      67             : 
      68    30707339 :          IF (ro > smlc) THEN
      69             : 
      70    30692499 :             lcor=1
      71    30692499 :             lpot=1
      72    30692499 :             up=rou
      73    30692499 :             agrup=agru(i)
      74    30692499 :             delgrup=gggru(i)
      75    30692499 :             uplap=g2ru(i)
      76    30692499 :             dn=rod
      77    30692499 :             agrdn=agrd(i)
      78    30692499 :             delgrdn=gggrd(i)
      79    30692499 :             dnlap=g2rd(i)
      80    30692499 :             agrt=agr(i)
      81    30692499 :             delgrt=gggr(i)
      82             : 
      83             :             CALL easypbe (xcpot, &
      84             :                           up,agrup,delgrup,uplap,dn,agrdn,delgrdn,dnlap, &
      85             :                           agrt,delgrt,lcor,lpot, &
      86             :                           exlsd,vxuplsd,vxdnlsd,eclsd,vcuplsd,vcdnlsd, &
      87             :                           expbe,vxuppbe,vxdnpbe,ecpbe,vcuppbe,vcdnpbe, &
      88    30692499 :                           vxupsr,vxdnsr)
      89             : 
      90    30692499 :             xedl=exlsd
      91    30692499 :             cedl=eclsd
      92    30692499 :             xedg=expbe-exlsd
      93    30692499 :             cedg=ecpbe-eclsd
      94             : 
      95             :          ENDIF ! ro > smlc
      96             : 
      97    30707339 :          xced = (xedl+cedl+xedg+cedg)
      98             : 
      99    30709173 :          exc(i) = xced*2  ! in ry
     100             : 
     101             :       ENDDO
     102             : !$OMP end parallel do
     103         917 :    END SUBROUTINE excepbe
     104             : END MODULE m_excepbe

Generated by: LCOV version 1.13