update_body_fixed_channels_info Subroutine

private subroutine update_body_fixed_channels_info(omega_max_, parity_term_exponent_, level_index_, channel_index_, channel_indices, channels_omega_values)

update channel_indices array which holds indices within the loop over level_index_ in set_body_fixed_channels

Arguments

Type IntentOptional Attributes Name
integer(kind=int32) :: omega_max_

largest value of \(\bar{\Omega}\), for given rotational and total angular momenta

integer(kind=int32) :: parity_term_exponent_

exponent of the \(p (-1)^{J}\) term

integer(kind=int32) :: level_index_

indices pointing to the basis arrays

integer(kind=int32), intent(inout) :: channel_index_

index pointing to the current value in channel_indices and channels_omega_values; incremented in this subroutine

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~~update_body_fixed_channels_info~~CallsGraph proc~update_body_fixed_channels_info 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~~update_body_fixed_channels_info~~CalledByGraph proc~update_body_fixed_channels_info update_body_fixed_channels_info proc~set_body_fixed_channels set_body_fixed_channels proc~set_body_fixed_channels->proc~update_body_fixed_channels_info program~scattering SCATTERING program~scattering->proc~set_body_fixed_channels

Contents


Variables

Type Visibility Attributes Name Initial
integer(kind=int32), private :: omega_
integer(kind=int32), private :: omega_start_

Source Code

      subroutine update_body_fixed_channels_info(omega_max_,                   &
         parity_term_exponent_, level_index_, channel_index_, channel_indices, &
         channels_omega_values)
         !! update channel_indices array which holds indices within the
         !! loop over level_index_ in set_body_fixed_channels
         !---------------------------------------------------------------------!
         integer(int32) :: omega_max_
            !! largest value of \\(\bar{\Omega}\\), for given
            !! rotational and total angular momenta
         integer(int32) :: parity_term_exponent_
            !! exponent of the \\(p (-1)^{J}\\) term
         integer(int32) :: level_index_
            !! indices pointing to the basis arrays
         integer(int32), intent(inout) :: channel_index_
            !! index pointing to the current value in channel_indices
            !! and channels_omega_values; incremented in this subroutine
         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) :: omega_, omega_start_
         !---------------------------------------------------------------------!
         ! if p (-1)^{J} = 1, \bar{\Omega} states enter the basis
         ! otherwise, \bar{\Omega} > 0; to avoid redundancy, we handle this
         ! with omega_start_ which is 0 if parity_term_exponent_ is 0,
         ! otherwise 1
         !---------------------------------------------------------------------!
         omega_start_ = parity_term_exponent_
         !---------------------------------------------------------------------!
         do omega_ = omega_start_, omega_max_
            channel_index_ = channel_index_ + 1
            if (channel_index_ > size(channel_indices)) then
               call write_error("channel_index_ out of bounds of " //          &
                  "channel_indices in set_body_fixed_channels.")
            end if
            channels_omega_values(channel_index_)  = omega_
            channel_indices(channel_index_) = level_index_
         enddo
         !---------------------------------------------------------------------!
      end subroutine update_body_fixed_channels_info