initialize_pes_matrix Subroutine

public subroutine initialize_pes_matrix(channel_indices, channels_omega_values, nonzero_terms_per_element, nonzero_legendre_indices, nonzero_algebraic_coefficients)

launches "check_nonzero_pes_matrix_elements" and "prepare_pes_matrix_elements" subroutines; called from the main program

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: channel_indices(:)

holds the indices pointing to the basis arrays

integer(kind=int32), intent(in) :: channels_omega_values(:)

holds all values of \bar{\Omega}

integer(kind=int32), intent(inout), allocatable :: nonzero_terms_per_element(:)

keeps the number of non-vanishing elements of the sum over \(\lambda\) for each non-zero element of the PES matrix

integer(kind=int32), intent(inout), allocatable :: nonzero_legendre_indices(:)

holds indices pointing to legendre_indices, which correspond to the non-vanishing elements of the sum over \(\lambda\) for each non-zero element of the PES matrix;

real(kind=dp), intent(inout), allocatable :: nonzero_algebraic_coefficients(:)

holds the values of the non-zero algebraic coefficients


Calls

proc~~initialize_pes_matrix~~CallsGraph proc~initialize_pes_matrix initialize_pes_matrix proc~check_nonzero_pes_matrix_elements check_nonzero_pes_matrix_elements proc~initialize_pes_matrix->proc~check_nonzero_pes_matrix_elements proc~print_pes_matrix_elements_summary print_pes_matrix_elements_summary proc~initialize_pes_matrix->proc~print_pes_matrix_elements_summary proc~time_count_summary time_count_summary proc~initialize_pes_matrix->proc~time_count_summary proc~prepare_pes_matrix_elements prepare_pes_matrix_elements proc~initialize_pes_matrix->proc~prepare_pes_matrix_elements interface~allocate_1d allocate_1d proc~initialize_pes_matrix->interface~allocate_1d proc~zero_projections_3j_condition zero_projections_3j_condition proc~check_nonzero_pes_matrix_elements->proc~zero_projections_3j_condition proc~integer_to_character integer_to_character proc~print_pes_matrix_elements_summary->proc~integer_to_character proc~write_message write_message proc~print_pes_matrix_elements_summary->proc~write_message proc~time_count_summary->proc~write_message proc~process_single_matrix_element process_single_matrix_element proc~prepare_pes_matrix_elements->proc~process_single_matrix_element proc~triangle_inequality_holds triangle_inequality_holds proc~zero_projections_3j_condition->proc~triangle_inequality_holds proc~is_sum_even is_sum_even proc~zero_projections_3j_condition->proc~is_sum_even proc~process_single_matrix_element->proc~zero_projections_3j_condition proc~percival_seaton_coefficient percival_seaton_coefficient proc~process_single_matrix_element->proc~percival_seaton_coefficient fwig3jj fwig3jj proc~percival_seaton_coefficient->fwig3jj

Called by

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

Contents

Source Code


Variables

Type Visibility Attributes Name Initial
integer(kind=int32), private :: number_of_channels
integer(kind=int32), private :: number_of_nonzero_algebraic_coefficients
integer(kind=int32), private :: number_of_nonzero_pes_matrix_elements
real(kind=dp), private :: time_start_
real(kind=dp), private :: time_stop_
real(kind=dp), private :: total_time_

Source Code

      subroutine initialize_pes_matrix(channel_indices,                        &
         channels_omega_values, nonzero_terms_per_element,                     &
         nonzero_legendre_indices, nonzero_algebraic_coefficients)
         !! launches "check_nonzero_pes_matrix_elements" and
         !! "prepare_pes_matrix_elements" subroutines; called from
         !! the main program
         !---------------------------------------------------------------------!
         integer(int32), intent(in) :: channel_indices(:)
            !! holds the indices pointing to the basis arrays
         integer(int32), intent(in) :: channels_omega_values(:)
            !! holds all values of \bar{\Omega}
         integer(int32), intent(inout), allocatable :: nonzero_terms_per_element(:)
            !! keeps the number of non-vanishing elements of the sum over \\(\lambda\\)
            !! for each non-zero element of the PES matrix
         integer(int32), intent(inout), allocatable :: nonzero_legendre_indices(:)
            !! holds indices pointing to legendre_indices, which correspond to
            !! the non-vanishing elements of the sum over \\(\lambda\\)
            !! for each non-zero element of the PES matrix;
         real(dp), intent(inout), allocatable :: nonzero_algebraic_coefficients(:)
            !! holds the values of the non-zero algebraic coefficients
         !---------------------------------------------------------------------!
         integer(int32) :: number_of_channels,                                 &
            number_of_nonzero_pes_matrix_elements,                             &
            number_of_nonzero_algebraic_coefficients
         real(dp) :: time_start_, time_stop_, total_time_
         !---------------------------------------------------------------------!
         call cpu_time(time_start_)
         !---------------------------------------------------------------------!
         call check_nonzero_pes_matrix_elements(channel_indices,               &
            channels_omega_values, number_of_nonzero_pes_matrix_elements,      &
            number_of_nonzero_algebraic_coefficients)
         !---------------------------------------------------------------------!
         call allocate_1d(nonzero_terms_per_element,                           &
            number_of_nonzero_pes_matrix_elements)
         call allocate_1d(nonzero_algebraic_coefficients,                      &
            number_of_nonzero_algebraic_coefficients)
         call allocate_1d(nonzero_legendre_indices,                            &
            number_of_nonzero_algebraic_coefficients)
         !---------------------------------------------------------------------!
         call prepare_pes_matrix_elements(channel_indices,                     &
            channels_omega_values, nonzero_terms_per_element,                  &
            nonzero_legendre_indices, nonzero_algebraic_coefficients)
         !---------------------------------------------------------------------!
         call cpu_time(time_stop_)
         !---------------------------------------------------------------------!
         if (print_level.ge.2) then
            !------------------------------------------------------------------!
            number_of_channels = size(channel_indices)
            call print_pes_matrix_elements_summary(                            &
               number_of_channels, number_of_nonzero_pes_matrix_elements,      &
               number_of_nonzero_algebraic_coefficients)
            !------------------------------------------------------------------!
            call time_count_summary(time_start_, time_stop_, total_time_,      &
               "-- PES matrix initialization completed in ")
            !------------------------------------------------------------------!
         endif
         !---------------------------------------------------------------------!
      end subroutine initialize_pes_matrix