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}\)
Type | Intent | Optional | 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 |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=int32), | private | :: | channel_index_ |
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