update channel_indices array which holds indices within the loop over level_index_ in set_body_fixed_channels
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32) | :: | omega_max_ |
largest value of \(\bar{\Omega}\), for given rotational and total angular momenta |
|||
integer(kind=int32) | :: | parity_term_exponent_ |
exponent of the \(p (-1)^{J}\) term |
|||
integer(kind=int32) | :: | level_index_ |
indices pointing to the basis arrays |
|||
integer(kind=int32), | intent(inout) | :: | channel_index_ |
index pointing to the current value in channel_indices and channels_omega_values; incremented in this subroutine |
||
integer(kind=int32), | intent(inout) | :: | channel_indices(:) |
holds the indices pointing to the basis arrays |
||
integer(kind=int32), | intent(inout) | :: | channels_omega_values(:) |
holds all values of \bar{\Omega} |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=int32), | private | :: | omega_ | ||||
integer(kind=int32), | private | :: | omega_start_ |
subroutine update_body_fixed_channels_info(omega_max_, &
parity_term_exponent_, level_index_, channel_index_, channel_indices, &
channels_omega_values)
!! update channel_indices array which holds indices within the
!! loop over level_index_ in set_body_fixed_channels
!---------------------------------------------------------------------!
integer(int32) :: omega_max_
!! largest value of \\(\bar{\Omega}\\), for given
!! rotational and total angular momenta
integer(int32) :: parity_term_exponent_
!! exponent of the \\(p (-1)^{J}\\) term
integer(int32) :: level_index_
!! indices pointing to the basis arrays
integer(int32), intent(inout) :: channel_index_
!! index pointing to the current value in channel_indices
!! and channels_omega_values; incremented in this subroutine
integer(int32), intent(inout) :: channel_indices(:)
!! holds the indices pointing to the basis arrays
integer(int32), intent(inout) :: channels_omega_values(:)
!! holds all values of \bar{\Omega}
!---------------------------------------------------------------------!
integer(int32) :: omega_, omega_start_
!---------------------------------------------------------------------!
! if p (-1)^{J} = 1, \bar{\Omega} states enter the basis
! otherwise, \bar{\Omega} > 0; to avoid redundancy, we handle this
! with omega_start_ which is 0 if parity_term_exponent_ is 0,
! otherwise 1
!---------------------------------------------------------------------!
omega_start_ = parity_term_exponent_
!---------------------------------------------------------------------!
do omega_ = omega_start_, omega_max_
channel_index_ = channel_index_ + 1
if (channel_index_ > size(channel_indices)) then
call write_error("channel_index_ out of bounds of " // &
"channel_indices in set_body_fixed_channels.")
end if
channels_omega_values(channel_index_) = omega_
channel_indices(channel_index_) = level_index_
enddo
!---------------------------------------------------------------------!
end subroutine update_body_fixed_channels_info