LCOV - code coverage report
Current view: top level - core - coredir.f (source / functions) Hit Total Coverage
Test: FLEUR test coverage Lines: 68 68 100.0 %
Date: 2024-04-19 04:21:58 Functions: 1 1 100.0 %

          Line data    Source code
       1             :       MODULE m_coredir
       2             :       CONTAINS
       3         664 :       SUBROUTINE coredir(mrad,e,l,xmj,iway,vv,bb,rc,dx,nmatch,nzero,
       4         664 :      +                   gc,fc,pow,qow,piw,qiw)
       5             : 
       6             : c.........................................................coredir
       7             : c   solution of dirac equation for atomic problem
       8             : c   full relativistic spin-polarized case
       9             : c   Ry units: in charge
      10             : c_______________________________________________  a. shick KFA 1996
      11             : 
      12             :       USE m_constants, ONLY : c_light
      13             :       USE m_crtail
      14             :       USE m_kernel1
      15             :       USE m_kernel2
      16             : 
      17             :       IMPLICIT NONE
      18             : c
      19             : C     .. Parameters ..
      20             :       INTEGER, INTENT (IN) :: mrad
      21             : C     ..
      22             : C     .. Scalar Arguments ..
      23             :       REAL dx,e,xmj
      24             :       INTEGER iway,l,nmatch,nzero
      25             : C     ..
      26             : C     .. Array Arguments ..
      27             :       REAL bb(mrad),fc(2,2,mrad),gc(2,2,mrad),piw(2,2),pow(2,2),
      28             :      +     qiw(2,2),qow(2,2),rc(mrad),vv(mrad)
      29             : C     ..
      30             : C     .. Local Scalars ..
      31             :       REAL cc,csq,dx1
      32             :       INTEGER i,ir,irv,j,kap1,kap2,n,nn,nsol,nstart
      33             : C     ..
      34             : C     .. Local Arrays ..
      35         664 :       REAL b(mrad),dp(2,2,mrad),dq(2,2,mrad),ra(mrad),v(mrad),
      36         664 :      +     wp(2,2,mrad),wq(2,2,mrad),xx1(4),xx2(4)
      37             : C     ..
      38             : C     .. External Subroutines ..
      39             :       EXTERNAL inconi,inconz
      40             : C     ..
      41             : C     .. Intrinsic Functions ..
      42             :       INTRINSIC abs
      43             : C     ..
      44         664 :       cc = c_light(2.0)
      45         664 :       csq = cc*cc
      46             : C
      47         664 :       kap1 = -l - 1
      48         664 :       kap2 = +l
      49             : c
      50         664 :       nsol = 2
      51         664 :       IF (abs(xmj).GE.l) nsol = 1
      52             : C
      53         664 :       IF (iway.EQ.2) GO TO 60
      54             : C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      55             : C             OUTWARD INTEGRATION
      56             : C
      57         996 :       DO i = 1,2
      58        2324 :          DO j = 1,2
      59        1328 :             pow(j,i) = 0.0
      60        1992 :             qow(j,i) = 0.0
      61             :          END DO
      62             :       END DO
      63             : c     potential redefinition
      64      165890 :       DO ir = 1,nmatch
      65      165558 :          v(ir) = vv(ir)*rc(ir)*rc(ir)
      66      165558 :          b(ir) = bb(ir)*rc(ir)*rc(ir)
      67      165890 :          ra(ir) = rc(ir)
      68             :       END DO
      69             : c initial condition
      70         332 :       CALL inconz(e,l,xmj,kap1,kap2,vv(1),bb(1),rc(1),xx1,xx2)
      71             : c dirac equation solution: two cases 1)nsol=2; 2)nsol=1.
      72         332 :       nstart = 1
      73         332 :       IF (nsol.EQ.2) THEN
      74             :          CALL kernel2(mrad,nsol,xmj,kap1,kap2,xx1,xx2,e,v,b,ra,dx,
      75         170 :      +                nmatch,nstart,dp,dq,wp,wq)
      76             :       ELSE
      77             :          CALL kernel1(mrad,xmj,kap1,xx1,e,v,b,ra,dx,nmatch,nstart,dp,
      78         162 :      +                dq,wp,wq)
      79             :       END IF
      80             : C
      81             : C     NOW TRANSFORM TO THE PROPER WAVEFUNCTIONS
      82             : C
      83      165890 :       DO 30 n = 1,nmatch
      84      417864 :          DO 20 j = 1,nsol
      85      678108 :             DO 10 i = 1,nsol
      86      425802 :                gc(i,j,n) = wp(i,j,n)/rc(n)
      87      425802 :                fc(i,j,n) = wq(i,j,n)/ (rc(n)*cc)
      88      252306 :    10       CONTINUE
      89      165558 :    20    CONTINUE
      90         332 :    30 CONTINUE
      91             : c
      92         834 :       DO 50 j = 1,nsol
      93        1344 :          DO 40 i = 1,nsol
      94         842 :             pow(i,j) = wp(i,j,nmatch)
      95         842 :             qow(i,j) = wq(i,j,nmatch)
      96         502 :    40    CONTINUE
      97         332 :    50 CONTINUE
      98         664 :       RETURN
      99             : C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     100             : C             INWARD INTEGRATION
     101             : C
     102             :    60 CONTINUE
     103         996 :       DO i = 1,2
     104        2324 :          DO j = 1,2
     105        1328 :             piw(j,i) = 0.0
     106        1992 :             qiw(j,i) = 0.0
     107             :          END DO
     108             :       END DO
     109             : c initial condition
     110         332 :       CALL inconi(l,xmj,e,csq,rc(nzero),xx1,xx2)
     111             : c     redefinition of order & potential redefinition
     112       26210 :       DO ir = nzero,nmatch,-1
     113       25878 :          irv = nzero - ir + 1
     114       25878 :          v(irv) = vv(ir)*rc(ir)*rc(ir)
     115       25878 :          b(irv) = bb(ir)*rc(ir)*rc(ir)
     116       26210 :          ra(irv) = rc(ir)
     117             :       END DO
     118         332 :       dx1 = -dx
     119             : c dirac equation solution: two cases 1)nsol=2; 2)nsol=1.
     120         332 :       nstart = 1
     121         332 :       IF (nsol.EQ.2) THEN
     122             :          CALL kernel2(mrad,nsol,xmj,kap1,kap2,xx1,xx2,e,v,b,ra,dx1,
     123         170 :      +                nzero-nmatch+1,nstart,dp,dq,wp,wq)
     124             :       ELSE
     125             :          CALL kernel1(mrad,xmj,kap1,xx1,e,v,b,ra,dx1,nzero-nmatch+1,
     126         162 :      +                nstart,dp,dq,wp,wq)
     127             :       END IF
     128             : C
     129             : C     NOW TRANSFORM TO THE PROPER WAVEFUNCTIONS
     130             : C
     131       26210 :       DO 90 nn = 1,nzero - nmatch + 1
     132       25878 :          n = nzero - nn + 1
     133       64728 :          DO 80 j = 1,nsol
     134      103644 :             DO 70 i = 1,nsol
     135       64794 :                gc(i,j,n) = wp(i,j,nn)/ra(nn)
     136       64794 :                fc(i,j,n) = wq(i,j,nn)/ (ra(nn)*cc)
     137       38850 :    70       CONTINUE
     138       25878 :    80    CONTINUE
     139         332 :    90 CONTINUE
     140             : 
     141             : c exponential tail
     142             : 
     143             :       CALL crtail(
     144             :      >            mrad,e,rc,nsol,nzero,csq,
     145         332 :      X            gc,fc)
     146             : 
     147         834 :       DO  j = 1,nsol
     148        1676 :          DO  i = 1,nsol
     149         842 :             piw(i,j) = wp(i,j,nzero-nmatch+1)
     150        1344 :             qiw(i,j) = wq(i,j,nzero-nmatch+1)
     151             :          ENDDO
     152             :       ENDDO
     153             : c
     154             :       END SUBROUTINE coredir
     155             :       END MODULE m_coredir

Generated by: LCOV version 1.14