set_refalpha_gfn2_num Subroutine

private pure subroutine set_refalpha_gfn2_num(alpha, ga, gc, num)

Set the reference polarizibility for an atomic number

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(out) :: alpha(:,:)

Reference polarizibility

real(kind=wp), intent(in) :: ga

Maximum charge scaling height

real(kind=wp), intent(in) :: gc

Charge scaling steepness

integer, intent(in) :: num

Atomic number


Source Code

pure subroutine set_refalpha_gfn2_num(alpha, ga, gc, num)

   !> Reference polarizibility
   real(wp), intent(out) :: alpha(:, :)

   !> Maximum charge scaling height
   real(wp), intent(in) :: ga

   !> Charge scaling steepness
   real(wp), intent(in) :: gc

   !> Atomic number
   integer, intent(in) :: num

   integer :: ref
   integer :: ir, is
   real(wp) :: iz
   real(wp) :: aiw(23)

   alpha(:, :) = 0.0_wp
   if (num > 0 .and. num <= size(refn)) then
      ref = get_nref(num)
      do ir = 1, ref
         is = refsys(ir, num)
         if (abs(is) < 1e-12_wp) cycle

         iz = get_effective_charge(is)
         aiw = sscale(is)*secaiw(:, is) &
            &    * zeta(ga, get_hardness(is)*gc, iz, refh(ir, num)+iz)
         alpha(:, ir) = max(ascale(ir, num)*(alphaiw(:, ir, num) &
            &            - hcount(ir, num)*aiw), 0.0_wp)
      end do
   end if

end subroutine set_refalpha_gfn2_num