calculate_number_of_channels_space_fixed Subroutine

private subroutine calculate_number_of_channels_space_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 space-fixed frame based on available values of orbital angular momentum: \( l \in \langle |j-J|, j+J \rangle \); parity is defined as \(p= (-1)^{j+l}\)

Arguments

Type IntentOptional 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


Calls

proc~~calculate_number_of_channels_space_fixed~~CallsGraph proc~calculate_number_of_channels_space_fixed calculate_number_of_channels_space_fixed proc~update_channel_counts_space_fixed update_channel_counts_space_fixed proc~calculate_number_of_channels_space_fixed->proc~update_channel_counts_space_fixed

Called by

proc~~calculate_number_of_channels_space_fixed~~CalledByGraph proc~calculate_number_of_channels_space_fixed calculate_number_of_channels_space_fixed proc~set_number_of_channels set_number_of_channels proc~set_number_of_channels->proc~calculate_number_of_channels_space_fixed program~scattering SCATTERING program~scattering->proc~set_number_of_channels

Contents


Variables

Type Visibility Attributes Name Initial
integer(kind=int32), private :: l_max_
integer(kind=int32), private :: l_min_
integer(kind=int32), private :: level_index_

Source Code

      subroutine calculate_number_of_channels_space_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 space-fixed frame based on available
         !! values of orbital angular momentum:
         !! \\( l \in \langle |j-J|, j+J \rangle \\);
         !! parity is defined as \\(p= (-1)^{j+l}\\)
         !---------------------------------------------------------------------!
         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_, l_min_, l_max_
         !---------------------------------------------------------------------!
         number_of_channels_even_parity_block = 0
         number_of_channels_odd_parity_block  = 0
         do level_index_ = 1, number_of_basis_levels
            l_min_ = abs(total_angular_momentum_ - rot_levels(level_index_))
            l_max_ = total_angular_momentum_ + rot_levels(level_index_)
            call update_channel_counts_space_fixed(l_min_, l_max_,             &
               level_index_, number_of_channels_even_parity_block,             &
               number_of_channels_odd_parity_block)
         end do
         !---------------------------------------------------------------------!
      end subroutine calculate_number_of_channels_space_fixed