calculate number of channels in even and odd parity blocks in the body-fixed frame; in principle, \(\bar{\Omega}\in \langle 0, \mathrm{min}(j, J))), but number of channels additionally depends on the sign of \( p (-1)^{J} \): channels with \(\bar{\Omega}=0\) values enter blocks with \( p (-1)^{J} = + 1 \) only;
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | total_angular_momentum_ |
total angular momentum |
||
integer(kind=int32), | intent(inout) | :: | number_of_channels_even_parity_block |
number of channels in the p = 1 (even parity) block |
||
integer(kind=int32), | intent(inout) | :: | number_of_channels_odd_parity_block |
number of channels in the p = -1 (odd parity) block |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=int32), | private | :: | level_index_ | ||||
integer(kind=int32), | private | :: | omega_max_ |
subroutine calculate_number_of_channels_body_fixed( &
total_angular_momentum_, number_of_channels_even_parity_block, &
number_of_channels_odd_parity_block)
!! calculate number of channels in even and odd parity
!! blocks in the body-fixed frame;
!! in principle, \\(\bar{\Omega}\in \langle 0, \mathrm{min}(j, J)\)),
!! but number of channels additionally depends on the
!! sign of \\( p (-1)^{J} \\): channels with
!! \\(\bar{\Omega}=0\\) values enter blocks with
!! \\( p (-1)^{J} = + 1 \\) _only_;
!---------------------------------------------------------------------!
integer(int32), intent(in) :: total_angular_momentum_
!! total angular momentum
integer(int32), intent(inout) :: number_of_channels_even_parity_block
!! number of channels in the p = 1 (even parity) block
integer(int32), intent(inout) :: number_of_channels_odd_parity_block
!! number of channels in the p = -1 (odd parity) block
!---------------------------------------------------------------------!
integer(int32) :: level_index_, omega_max_
!---------------------------------------------------------------------!
number_of_channels_even_parity_block = 0
number_of_channels_odd_parity_block = 0
do level_index_ = 1, number_of_basis_levels
omega_max_ = min(rot_levels(level_index_), total_angular_momentum_)
call update_channel_counts_body_fixed(omega_max_, &
total_angular_momentum_, number_of_channels_even_parity_block, &
number_of_channels_odd_parity_block)
end do
!---------------------------------------------------------------------!
end subroutine calculate_number_of_channels_body_fixed