Set the reference polarizibility for an atomic number
Type | Intent | Optional | 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 |
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