set_body_fixed_channels Subroutine

public 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}

Arguments

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


Calls

proc~~set_body_fixed_channels~~CallsGraph proc~set_body_fixed_channels set_body_fixed_channels proc~update_body_fixed_channels_info update_body_fixed_channels_info proc~set_body_fixed_channels->proc~update_body_fixed_channels_info proc~write_error write_error proc~update_body_fixed_channels_info->proc~write_error proc~write_message write_message proc~write_error->proc~write_message

Called by

proc~~set_body_fixed_channels~~CalledByGraph proc~set_body_fixed_channels set_body_fixed_channels program~scattering SCATTERING program~scattering->proc~set_body_fixed_channels

Contents


Variables

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_

Source Code

      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