LCOV - code coverage report
Current view: top level - vgen - int_nv.F90 (source / functions) Hit Total Coverage
Test: combined.info Lines: 35 49 71.4 %
Date: 2019-09-08 04:53:50 Functions: 1 1 100.0 %

          Line data    Source code
       1             : MODULE m_intnv
       2             :   !     ************************************************
       3             :   !     calculates the integral of charge density 
       4             :   !     and potential in the unit cell
       5             :   !     ************************************************
       6             : CONTAINS
       7         644 :   SUBROUTINE int_nv(ispin,stars,vacuum,atoms,sphhar,&
       8             :        cell,sym,input,oneD,vpot,den,RESULT)
       9             : 
      10             :     USE m_intgr, ONLY : intgr3,intgz0
      11             :     USE m_types
      12             :     IMPLICIT NONE
      13             :     !     ..
      14             :     !     .. Scalar Arguments ..
      15             :     REAL  RESULT
      16             :     INTEGER,INTENT(IN)        :: ispin
      17             :     TYPE(t_stars),INTENT(IN)  :: stars
      18             :     TYPE(t_vacuum),INTENT(IN) :: vacuum
      19             :     TYPE(t_atoms),INTENT(IN)  :: atoms
      20             :     TYPE(t_sphhar),INTENT(IN) :: sphhar
      21             :     TYPE(t_cell),INTENT(IN)   :: cell
      22             :     TYPE(t_sym),INTENT(IN)    :: sym
      23             :     TYPE(t_input),INTENT(IN)  :: input
      24             :     TYPE(t_oneD),INTENT(IN)   :: oneD
      25             :     TYPE(t_potden),INTENT(IN) :: vpot,den
      26             : 
      27             :   
      28             :     !     ..
      29             :     !     .. Local Scalars ..
      30             :     REAL dpdot,facv,tis,tmt,tvac,tvact
      31             :     INTEGER i,ip,ivac,j,k2,lh,n,npz,nat
      32             :     LOGICAL tail
      33             :     !     ..
      34             :     !     .. Local Arrays ..
      35        1288 :     REAL dpj(atoms%jmtd),dpz(vacuum%nmzd)
      36             :     !     ..
      37             :     !     ..
      38             :     !     -----> CALCULATE DENSITY-POTENTIAL INTEGRALS
      39             :     !
      40             :     !  ******************* INTERSTITIAL REGION**********************
      41             :     !
      42             :     !  -> warping has been moved to vgen and visxc resp. ...gustav
      43             :     !
      44         644 :     tis = cell%omtil * REAL( DOT_PRODUCT(vpot%pw_w(:stars%ng3,ispin),den%pw(:stars%ng3,ispin)))
      45             : 
      46         644 :     WRITE (6,FMT=8020) tis
      47             : 8020 FORMAT (/,10x,'interstitial :',t40,ES20.10)
      48             : 
      49         644 :     RESULT = RESULT + tis
      50             :     !
      51             :     !   ******************M.T. SPHERES*******************
      52             :     !
      53         644 :     tmt = 0.
      54         644 :     nat = 1
      55        1884 :     DO n = 1,atoms%ntype
      56       21256 :        DO lh = 0,sphhar%nlh(atoms%ntypsy(nat))
      57    12196392 :           DO j = 1,atoms%jri(n)
      58    12196392 :              dpj(j) = den%mt(j,lh,n,ispin)*vpot%mt(j,lh,n,ispin)
      59             :           ENDDO
      60       20016 :           CALL intgr3(dpj,atoms%rmsh(1,n),atoms%dx(n),atoms%jri(n),dpdot)
      61       21256 :           tmt = tmt + dpdot*atoms%neq(n)
      62             :        ENDDO
      63        1884 :        nat = nat + atoms%neq(n)
      64             :     ENDDO
      65         644 :     WRITE (6,FMT=8030) tmt
      66             : 8030 FORMAT (/,10x,'muffin tin spheres :',t40,ES20.10)
      67         644 :     RESULT = RESULT + tmt
      68             :     !
      69             :     ! *********** VACUUM REGION**************
      70             :     !
      71         644 :     IF (input%film .AND. .NOT.oneD%odi%d1) THEN
      72          18 :        npz = vacuum%nmz + 1
      73          18 :        tail = .TRUE.
      74          32 :        IF (sym%zrfs .OR. sym%invs) THEN
      75             :           facv = 2.0
      76             :        ELSE
      77             :           facv = 1.0
      78             :        END IF
      79          18 :        tvac = 0.
      80          18 :        tvact = 0.
      81             :        !     set array dpz to zero
      82        4518 :        dpz=0.0
      83          36 :        DO ivac = 1,vacuum%nvac
      84        9018 :           DO ip = 1,vacuum%nmz
      85        4518 :              dpz(npz-ip) = den%vacz(ip,ivac,ispin)*vpot%vacz(ip,ivac,ispin)
      86             :              !         --->  WARPING REGION
      87             :           ENDDO
      88        4330 :           DO  k2 = 2,stars%ng2
      89      435530 :              DO  ip = 1,vacuum%nmzxy
      90             :                 dpz(npz-ip) = dpz(npz-ip) +&
      91             :                      &                       stars%nstr2(k2)*den%vacxy(ip,k2-1,ivac,ispin)*&
      92      435512 :                      &                          CONJG(vpot%vacxy(ip,k2-1,ivac,ispin))
      93             :              ENDDO
      94             :           ENDDO
      95          18 :           CALL intgz0(dpz,vacuum%delz,vacuum%nmz,tvac,tail)
      96          36 :           tvact = tvact + cell%area*tvac*facv
      97             :        ENDDO
      98          18 :        WRITE (6,FMT=8040) tvact
      99             : 8040   FORMAT (/,10x,'vacuum :',t40,f20.10)
     100          18 :        RESULT = RESULT + tvact
     101         626 :     ELSEIF (oneD%odi%d1) THEN
     102             :        !-odim
     103           0 :        npz = vacuum%nmz +1
     104           0 :        tail = .TRUE.
     105           0 :        tvac = 0.
     106           0 :        tvact = 0.
     107             :        !     set array dpz to zero
     108           0 :        dpz=0.0
     109           0 :        DO  ip = 1,vacuum%nmz
     110             :           dpz(npz-ip) = (cell%z1+vacuum%delz*(ip-1))*&
     111           0 :                &                    den%vacz(ip,vacuum%nvac,ispin)*vpot%vacz(ip,vacuum%nvac,ispin)
     112             :           !          ---> WARPING REGION
     113             :        ENDDO
     114           0 :        DO  k2 = 2,oneD%odi%nq2
     115           0 :           DO  ip = 1,vacuum%nmzxy
     116             :              dpz(npz-ip) = dpz(npz-ip)+&
     117             :                   &             (cell%z1+vacuum%delz*(ip-1))*&
     118             :                   &             den%vacxy(ip,k2-1,vacuum%nvac,ispin)*&
     119           0 :                   &             CONJG(vpot%vacxy(ip,k2-1,vacuum%nvac,ispin))
     120             :           ENDDO
     121             :        ENDDO
     122             : 
     123           0 :        CALL intgz0(dpz,vacuum%delz,vacuum%nmz,tvac,tail)
     124           0 :        tvact = tvact + cell%area*tvac
     125           0 :        WRITE (6,FMT=8041) tvact
     126             : 8041   FORMAT (/,10x,'vacuum :',t40,f20.10)
     127           0 :        RESULT = RESULT + tvact
     128             :        !+odim
     129             :     END IF
     130             : 
     131         644 :   END SUBROUTINE int_nv
     132             : END MODULE m_intnv

Generated by: LCOV version 1.13