calculate_u_matrix Subroutine

private subroutine calculate_u_matrix(t_matrix_, u_matrix_)

Calculates the U-matrix from T-matrix at grid point N: \(U_{\mathrm{N}} = 12(\mathbf{I} - 10 T_{\mathrm{N}})^{-1} - 10 \mathbf{I}\)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: t_matrix_(:,:)

T-matrix at grid point N

real(kind=dp), intent(inout) :: u_matrix_(:,:)

(output) U-matrix at grid point N


Calls

proc~~calculate_u_matrix~~CallsGraph proc~calculate_u_matrix calculate_u_matrix interface~add_scalar_to_diagonal add_scalar_to_diagonal proc~calculate_u_matrix->interface~add_scalar_to_diagonal interface~invert_symmetric_matrix invert_symmetric_matrix proc~calculate_u_matrix->interface~invert_symmetric_matrix interface~fill_symmetric_matrix fill_symmetric_matrix proc~calculate_u_matrix->interface~fill_symmetric_matrix

Called by

proc~~calculate_u_matrix~~CalledByGraph proc~calculate_u_matrix calculate_u_matrix proc~initial_setup initial_setup proc~initial_setup->proc~calculate_u_matrix proc~general_propagation_step general_propagation_step proc~general_propagation_step->proc~calculate_u_matrix proc~numerov numerov proc~numerov->proc~initial_setup proc~numerov->proc~general_propagation_step proc~handle_final_propagation_steps handle_final_propagation_steps proc~numerov->proc~handle_final_propagation_steps proc~handle_final_propagation_steps->proc~general_propagation_step program~scattering SCATTERING program~scattering->proc~numerov

Contents

Source Code


Variables

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

Source Code

      subroutine calculate_u_matrix(t_matrix_, u_matrix_)
         !! Calculates the U-matrix from T-matrix at grid point N:
         !! \\(U_{\mathrm{N}} = 12(\mathbf{I} - 10 T_{\mathrm{N}})^{-1} - 10 \mathbf{I}\\)
         !---------------------------------------------------------------------!
         real(dp), intent(in) :: t_matrix_(:,:)
            !! T-matrix at grid point N
         real(dp), intent(inout) :: u_matrix_(:,:)
            !! (output) U-matrix at grid point N
         !---------------------------------------------------------------------!
         integer(int32) :: channel_index_
         !---------------------------------------------------------------------!
         u_matrix_ = - t_matrix_
         call add_scalar_to_diagonal(u_matrix_, 1.0_dp)
         call invert_symmetric_matrix(u_matrix_)
         call fill_symmetric_matrix(u_matrix_, 'u')
         u_matrix_ = 12.0_dp * u_matrix_
         call add_scalar_to_diagonal(u_matrix_, - 10.0_dp)
         !---------------------------------------------------------------------!
      end subroutine calculate_u_matrix