calculate_number_of_channels_body_fixed Subroutine

private 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;

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_body_fixed~~CallsGraph proc~calculate_number_of_channels_body_fixed calculate_number_of_channels_body_fixed proc~update_channel_counts_body_fixed update_channel_counts_body_fixed proc~calculate_number_of_channels_body_fixed->proc~update_channel_counts_body_fixed

Called by

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

Contents


Variables

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

Source Code

      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