SUBROUTINE hankel(ord,arg,knd,hnkl,dhnkl) !========================================================================================= ! Calculate hankel functions and derivatives of first or second kind of order ord for ! argument arg USE Numeric_Kinds_Module USE CommonInfo_Module USE Jacobi_Module USE EnergyGrid_Module USE Gaussian_Module USE APH_Module IMPLICIT NONE !========================================================================================= ! I N P U T INTEGER,INTENT(IN) :: ord,knd REAL(dp) :: arg !========================================================================================= ! O U T P U T COMPLEX(dp) :: hnkl,dhnkl !========================================================================================= ! I N T E R N A L S REAL(dp) :: zj, dzj, zy, dzy Call rbes(ord,arg,zj,dzj,zy,dzy) IF (knd.eq.1) THEN hnkl=Cmplx(zj,zy,dp) dhnkl=Cmplx(dzj,dzy,dp) ELSEIF (knd.eq.2) THEN hnkl=Cmplx(zj,-zy,dp) dhnkl=Cmplx(dzj,-dzy,dp) ELSE PRINT*,'Incorrect specification of Hankel function kind' PRINT*,'Should be 1 or 2 : knd = ',knd STOP 'hankel' ENDIF Return End Subroutine hankel