Prepares the channel_indices array which holds indices that refer to the basis arrays: v1level/j1level/internal_energies, and channels_omega_values which holds values of \bar{\Omega}
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | total_angular_momentum_ |
total angular momentum |
||
integer(kind=int32), | intent(in) | :: | parity_exponent_ |
parity exponent of the block (0 if p = +1, 1 if p = -1) |
||
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 | :: | channel_index_ | ||||
integer(kind=int32), | private | :: | level_index_ | ||||
integer(kind=int32), | private | :: | omega_max_ | ||||
integer(kind=int32), | private | :: | parity_term_exponent_ |
subroutine set_body_fixed_channels(total_angular_momentum_, &
parity_exponent_, channel_indices, channels_omega_values)
!! Prepares the channel_indices array which holds indices that refer
!! to the basis arrays: v1level/j1level/internal_energies, and
!! channels_omega_values which holds values of \bar{\Omega}
!---------------------------------------------------------------------!
integer(int32), intent(in) :: total_angular_momentum_
!! total angular momentum
integer(int32), intent(in) :: parity_exponent_
!! parity exponent of the block (0 if p = +1, 1 if p = -1)
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) :: level_index_, channel_index_, omega_max_, &
parity_term_exponent_
!---------------------------------------------------------------------!
! due to construction of body-fixed basis states:
! |v j \bar{\Omega} J p > = N (|v j \bar{\Omega} J >
! + p (-1)^{J} |v j -\bar{\Omega} J > )
! we are interested in the exponent of the "p (-1)^{J}" term
!---------------------------------------------------------------------!
parity_term_exponent_=mod(parity_exponent_ + total_angular_momentum_,2)
!---------------------------------------------------------------------!
channel_index_ = 0
!---------------------------------------------------------------------!
do level_index_ = 1, number_of_basis_levels
omega_max_ = min(rot_levels(level_index_), total_angular_momentum_)
call update_body_fixed_channels_info(omega_max_, &
parity_term_exponent_, level_index_, channel_index_, &
channel_indices, channels_omega_values)
enddo
!---------------------------------------------------------------------!
end subroutine set_body_fixed_channels