wftsca.f Source File


Source Code

!------------------------------------------------------------------------------------
!> Summary: Get wavefunctions of same magnitude by scaling with `efac` 
!> Author: R. Zeller
!> Get wavefunctions of same magnitude by scaling with `efac`
!------------------------------------------------------------------------------------
      MODULE mod_WFTSCA
      CONTAINS
  !-------------------------------------------------------------------------------
  !> Summary: Get wavefunctions of same magnitude by scaling with `efac`
  !> Author: R. Zeller
  !> Category: numerical-tools, single-site, KKRhost
  !> Deprecated: False 
  !> Get wavefunctions of same magnitude by scaling with `efac`
  !-------------------------------------------------------------------------------      
      SUBROUTINE WFTSCA(DRDI,EFAC,PZ,QZ,FZ,SZ,NSRA,PZLM,QZLM,PZEKDR,
     +                  QZEKDR,EK,LOFLM,IRMIND,IRMD,LMAXATOM,LMMAXATOM)
      IMPLICIT NONE
c-----------------------------------------------------------------------
c                 R. Zeller      Oct. 1993
c-----------------------------------------------------------------------
C     .. Parameters ..
      DOUBLE COMPLEX CONE
      PARAMETER (CONE= (1.D0,0.D0))
C     ..
C     .. Scalar Arguments ..
      DOUBLE COMPLEX EK
      INTEGER IRMD,IRMIND,LMAXATOM,LMMAXATOM,NSRA
C     ..
C     .. Array Arguments ..
      DOUBLE COMPLEX EFAC(LMMAXATOM),FZ(IRMD,0:LMAXATOM),
     +               PZ(IRMD,0:LMAXATOM),
     +               PZEKDR(LMMAXATOM,IRMIND:IRMD,2),
     +               PZLM(LMMAXATOM,IRMIND:IRMD,2),QZ(IRMD,0:LMAXATOM),
     +               QZEKDR(LMMAXATOM,IRMIND:IRMD,2),
     +               QZLM(LMMAXATOM,IRMIND:IRMD,2),SZ(IRMD,0:LMAXATOM)
      DOUBLE PRECISION DRDI(:)
      INTEGER LOFLM(:)
C     ..
C     .. Local Scalars ..
      DOUBLE COMPLEX EFAC1,V1
      INTEGER IR,J,L,L1,LM,LM1,M
C     ..
C     .. Intrinsic Functions ..
      INTRINSIC DBLE
C     ..

c
c---> set up array efac : efac(lm) = sqrt(e)**l/(2l - 1)!!
c
      EFAC(1) = CONE
      V1 = CONE
      DO 20 L = 1,LMAXATOM
        V1 = V1*EK/DBLE(2*L-1)
        DO 10 M = -L,L
          LM = L* (L+1) + M + 1
          EFAC(LM) = V1
   10   CONTINUE
   20 CONTINUE
c
c
c---> get wfts of same magnitude by scaling with efac
c
      DO 70 LM1 = 1,LMMAXATOM
        L1 = LOFLM(LM1)
        EFAC1 = EFAC(LM1)
        DO 30 IR = IRMIND,IRMD
          PZLM(LM1,IR,1) = PZ(IR,L1)/EFAC1
          QZLM(LM1,IR,1) = QZ(IR,L1)*EFAC1
   30   CONTINUE
        IF (NSRA.EQ.2) THEN
          DO 40 IR = IRMIND,IRMD
            PZLM(LM1,IR,NSRA) = FZ(IR,L1)/EFAC1
            QZLM(LM1,IR,NSRA) = SZ(IR,L1)*EFAC1
   40     CONTINUE
        END IF
c
        DO 60 J = 1,NSRA
          DO 50 IR = IRMIND,IRMD
            PZEKDR(LM1,IR,J) = PZLM(LM1,IR,J)*EK*DRDI(IR)
            QZEKDR(LM1,IR,J) = QZLM(LM1,IR,J)*EK*DRDI(IR)
   50     CONTINUE
   60   CONTINUE
   70 CONTINUE


      END SUBROUTINE
      END MODULE mod_WFTSCA