LCOV - code coverage report
Current view: top level - core - corehff.f90 (source / functions) Hit Total Coverage
Test: FLEUR test coverage Lines: 17 17 100.0 %
Date: 2024-05-03 04:28:07 Functions: 1 1 100.0 %

          Line data    Source code
       1             : MODULE m_corehff
       2             : 
       3             :    CONTAINS
       4             : 
       5          36 :    SUBROUTINE corehff(mrad,kap1,kap2,xmj,s,nsol,bhf,gck,fck,rc,dx,jtop)
       6             : !   ********************************************************************
       7             : !   *                                                                  *
       8             : !   *   CALCULATE THE RELATIVISTIC HYPERFINE FIELDS FOR THE            *
       9             : !   *                  CURRENT  CORE STATE S                           *
      10             : !   *                                                                  *
      11             : !   *   THE WAVE FUNCTION  {G(K,S),F(K,S)}  IS NORMALIZED TO 1         *
      12             : !   *                                                                  *
      13             : !   ********************************************************************
      14             : 
      15             :       USE m_constants
      16             :       USE m_rsimp
      17             : 
      18             :       IMPLICIT NONE
      19             : ! CONVERSION FACTOR FOR HYPERFINE FIELDS FROM A.U. TO GAUSS
      20             : !                                      ELECTRON CHARGE     IN ESU
      21             : !                                      BOHR-RADIUS         IN CM
      22             : !
      23             : !
      24             : ! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      25             : !   ANGULAR HYPERFINE MATRIX ELEMENTS   SEE E.G.  E.M.ROSE
      26             : !        THE FACTOR  I  HAS BEEN OMITTED
      27             : 
      28             :       INTEGER, INTENT (IN) :: mrad
      29             :       INTEGER, INTENT (IN) :: jtop,kap1,kap2,nsol,s
      30             :       REAL, INTENT (OUT)   :: bhf
      31             :       REAL, INTENT (IN)    :: dx,xmj
      32             :       REAL, INTENT (IN)    :: fck(2,2,mrad),gck(2,2,mrad),rc(mrad)
      33             : 
      34             :       INTEGER n
      35             : 
      36             :       REAL e0, a0, cautog
      37          36 :       REAL ame(2,2),rint(mrad)
      38             :       
      39          36 :       a0 = bohr_to_angstrom_const * 1.0e-8
      40          36 :       e0 = 1.6021892e-19 * 2.997930e+09
      41          36 :       cautog = e0 / (a0*a0)
      42             : 
      43          36 :       ame(1,1) = 4.0*kap1*xmj/ (4.0*kap1*kap1-1.0)
      44          36 :       IF (nsol.EQ.2) THEN
      45          16 :          ame(2,2) = 4.0*kap2*xmj/ (4.0*kap2*kap2-1.0)
      46          16 :          ame(2,1) = sqrt(0.25- (xmj/real(kap1-kap2))**2)
      47          16 :          ame(1,2) = ame(2,1)
      48             :       END IF
      49             : ! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      50          36 :       IF (nsol.EQ.1) THEN
      51       13480 :          DO n = 1,jtop
      52       13480 :             rint(n) = (gck(1,s,n)*fck(1,s,n)+fck(1,s,n)*gck(1,s,n)) * ame(1,1)
      53             :          END DO
      54             :       ELSE
      55       10784 :          DO n = 1,jtop
      56             :             rint(n) = (gck(1,s,n)*fck(1,s,n)+fck(1,s,n)*gck(1,s,n)) * ame(1,1) + &
      57             :                       (gck(2,s,n)*fck(2,s,n)+fck(2,s,n)*gck(2,s,n)) * ame(2,2) + &
      58             :                       (gck(2,s,n)*fck(1,s,n)+fck(2,s,n)*gck(1,s,n)) * ame(2,1) + &
      59       10784 :                       (gck(1,s,n)*fck(2,s,n)+fck(1,s,n)*gck(2,s,n)) * ame(1,2)
      60             :          END DO
      61             :       END IF
      62          36 :       bhf = -cautog*rsimp(mrad,rint,rc,jtop,dx)*0.001
      63             : !      write(oUnit,'(''hf='',e14.7)') BHF
      64             : 
      65          36 :    END SUBROUTINE corehff
      66             :       
      67             : END MODULE m_corehff

Generated by: LCOV version 1.14