50 lines
1.1 KiB
Fortran
50 lines
1.1 KiB
Fortran
C
|
|
C=============================================================================
|
|
C
|
|
SUBROUTINE POLHAN(ISPHER,NO,NC,RHO,HLM)
|
|
C
|
|
C This routine calculates a function HLM(L,M), related to the the Hankel
|
|
C polynomials and their derivatives with respect to z=1/ikr,
|
|
C necessary for the Rehr-Albers expansion of the propagator.
|
|
C
|
|
USE DIM_MOD
|
|
C
|
|
COMPLEX HLM(0:NO_ST_M,0:NL_M-1),RHO,Z,ONEC
|
|
C
|
|
ONEC=(1.,0.)
|
|
C
|
|
IF(ISPHER.GE.1) THEN
|
|
Z=(0.,-1.)/RHO
|
|
C
|
|
C Case M = 0
|
|
C
|
|
HLM(0,0)=ONEC
|
|
HLM(0,1)=ONEC-Z
|
|
DO L=2,NC
|
|
HLM(0,L)=HLM(0,L-2)-FLOAT(L+L-1)*Z*HLM(0,L-1)
|
|
ENDDO
|
|
C
|
|
C Case M > 0
|
|
C
|
|
IF(NO.GE.1) THEN
|
|
DO M=1,NO
|
|
HLM(M,M)=-Z*HLM(M-1,M-1)*FLOAT(M+M-1)
|
|
HLM(M,M+1)=HLM(M,M)*FLOAT(M+M+1)*(ONEC-Z*FLOAT(M+1))
|
|
DO L=M+2,NC
|
|
HLM(M,L)=HLM(M,L-2)-FLOAT(L+L-1)*Z*(HLM(M,L-1)+HLM(M-1,L-1
|
|
&))
|
|
ENDDO
|
|
ENDDO
|
|
ENDIF
|
|
ELSE
|
|
DO M=0,NO
|
|
DO L=M,NC
|
|
HLM(M,L)=ONEC
|
|
ENDDO
|
|
ENDDO
|
|
ENDIF
|
|
C
|
|
RETURN
|
|
C
|
|
END
|