LCOV - code coverage report
Current view: top level - fermi - dosint.f90 (source / functions) Hit Total Coverage
Test: FLEUR test coverage Lines: 0 28 0.0 %
Date: 2024-04-28 04:28:00 Functions: 0 1 0.0 %

          Line data    Source code
       1             : !--------------------------------------------------------------------------------
       2             : ! Copyright (c) 2016 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
       3             : ! This file is part of FLEUR and available as free software under the conditions
       4             : ! of the MIT license as expressed in the LICENSE file in more detail.
       5             : !--------------------------------------------------------------------------------
       6             : MODULE m_dosint
       7             :    !
       8             :    !     integrated dos to ei
       9             :    !
      10             :    USE m_trisrt
      11             :    USE m_types
      12             : 
      13             :    IMPLICIT NONE
      14             : 
      15             :    CONTAINS
      16           0 :    SUBROUTINE dosint(ei,nemax,jspins,kpts,sfac,eig,ct)
      17             : 
      18             :       INTEGER,       INTENT(IN)  :: jspins
      19             :       REAL,          INTENT(IN)  :: ei,sfac
      20             :       TYPE(t_kpts),  INTENT(IN)  :: kpts
      21             :       INTEGER,       INTENT(IN)  :: nemax(:)
      22             :       REAL,          INTENT(IN)  :: eig(:,:,:)    !(neig,nkpt,jspins)
      23             :       REAL,          INTENT(OUT) :: ct
      24             : 
      25             :       INTEGER :: jspin,iBand,itria
      26             :       INTEGER :: k1,k2,k3
      27             :       INTEGER :: neig
      28             :       REAL    :: e1,e2,e3
      29             :       REAl    :: ee,e32,e31,e21,s
      30             : 
      31           0 :       s = 0.0
      32           0 :       DO jspin = 1,jspins
      33           0 :          neig = nemax(jspin)
      34           0 :          DO iBand = 1,neig
      35           0 :             DO itria = 1,kpts%ntet
      36             :                !Get the k-points and eigenvalues
      37             :                !of the current triangle
      38           0 :                k1 = kpts%ntetra(1,itria)
      39           0 :                k2 = kpts%ntetra(2,itria)
      40           0 :                k3 = kpts%ntetra(3,itria)
      41           0 :                e1 = eig(iBand,k1,jspin)
      42           0 :                e2 = eig(iBand,k2,jspin)
      43           0 :                e3 = eig(iBand,k3,jspin)
      44             :                !Sort by ascending eigenvalues
      45           0 :                CALL trisrt(e1,e2,e3,k1,k2,k3)
      46           0 :                IF (e1.LE.-9999.0) CYCLE !Not all eigenvalues available
      47           0 :                IF (ei.LE.e1) CYCLE !triangle not occupied
      48           0 :                IF (ei.GE.e3) THEN
      49           0 :                   s = s + kpts%voltet(itria)/kpts%ntet
      50           0 :                ELSEIF (ei.GT.e2) THEN
      51           0 :                   e31 = e3 - e1
      52           0 :                   e32 = e3 - e2
      53           0 :                   ee = e3 - ei
      54             :                   s = s + kpts%voltet(itria)/kpts%ntet &
      55           0 :                          * (1.0-ee*ee/ (e31*e32))
      56             :                ELSE
      57           0 :                   e21 = e2 - e1
      58           0 :                   e31 = e3 - e1
      59           0 :                   ee = ei - e1
      60             :                   s = s + kpts%voltet(itria)/kpts%ntet &
      61           0 :                          * ee*ee/ (e21*e31)
      62             :                ENDIF
      63             :             ENDDO
      64             :          ENDDO
      65             :       ENDDO
      66             : 
      67             :       !Take into account spin-degeneracy
      68             : !jr   ct=2.*s
      69             : !gb   ct = (2./jspins)*s
      70           0 :       ct = sfac * s
      71             : 
      72           0 :    END SUBROUTINE dosint
      73             : END MODULE m_dosint

Generated by: LCOV version 1.14