 double precision function knowles_function(alpha,m,x)
 implicit none
 BEGIN_DOC
! Function proposed by Knowles (JCP, 104, 1996) for distributing the radial points :
! the Log "m" function ( equation (7) in the paper )
 END_DOC
 double precision, intent(in) :: alpha,x
 integer, intent(in) :: m
!print*, x
 knowles_function = -alpha * dlog(1.d0-x**m)
 end

 double precision function derivative_knowles_function(alpha,m,x)
 implicit none
 BEGIN_DOC
! Derivative of the function proposed by Knowles (JCP, 104, 1996) for distributing the radial points
 END_DOC
 double precision, intent(in) :: alpha,x
 integer, intent(in) :: m
 double precision :: f
 f = x**(m-1)
 derivative_knowles_function = alpha * dble(m) * f / (1.d0 - x*f)
 end

 BEGIN_PROVIDER [double precision, alpha_knowles, (100)]
 implicit none
 integer :: i
 BEGIN_DOC
! Recommended values for the alpha parameters according to the paper of Knowles (JCP, 104, 1996)
! as a function of the nuclear charge
 END_DOC

 ! H-He
 alpha_knowles(1) = 5.d0
 alpha_knowles(2) = 5.d0

 ! Li-Be
 alpha_knowles(3) = 7.d0
 alpha_knowles(4) = 7.d0

 ! B-Ne
 do i = 5, 10
  alpha_knowles(i) = 5.d0
 enddo

 ! Na-Mg
 do i = 11, 12
  alpha_knowles(i) = 7.d0
 enddo

 ! Al-Ar
 do i = 13, 18
  alpha_knowles(i) = 5.d0
 enddo

 ! K-Ca
 do i = 19, 20
  alpha_knowles(i) = 7.d0
 enddo

 ! Sc-Zn
 do i = 21, 30
  alpha_knowles(i) = 5.d0
 enddo

 ! Ga-Kr
 do i = 31, 100
  alpha_knowles(i) = 7.d0
 enddo

 END_PROVIDER
