Computes the real part of the cross-section contribution for given indices.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | initial_index_ |
index pointing to the basis element involving initial state |
||
integer(kind=int32), | intent(in) | :: | final_index_ |
index pointing to the basis element involving final state |
||
integer(kind=int32), | intent(in) | :: | l_initial_ |
pre-collisional \(l\) value |
||
integer(kind=int32), | intent(in) | :: | l_final_ |
post-collisional \(l\) value |
||
real(kind=dp), | intent(in) | :: | s_matrix_real_(:,:) |
real part of the S-matrix |
(output) contribution to the cross-section from real part of the S-matrix
function compute_real_component(initial_index_, final_index_, l_initial_,&
l_final_, s_matrix_real_) result(real_contribution_)
!! Computes the real part of the cross-section contribution
!! for given indices.
!---------------------------------------------------------------------!
integer(int32), intent(in) :: initial_index_
!! index pointing to the basis element involving initial state
integer(int32), intent(in) :: final_index_
!! index pointing to the basis element involving final state
integer(int32), intent(in) :: l_initial_
!! pre-collisional \\(l\\) value
integer(int32), intent(in) :: l_final_
!! post-collisional \\(l\\) value
real(dp), intent(in) :: s_matrix_real_(:,:)
!! real part of the S-matrix
real(dp) :: real_contribution_
!! (output) contribution to the cross-section from real part
!! of the S-matrix
!---------------------------------------------------------------------!
if (l_initial_ == l_final_) then
if (initial_index_ == final_index_) then
real_contribution_ = 1.0_dp - s_matrix_real_(initial_index_, final_index_)
else
real_contribution_ = - s_matrix_real_(initial_index_, final_index_)
endif
else
real_contribution_ = - s_matrix_real_(initial_index_, final_index_)
endif
end function compute_real_component