| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | input_vector(:) | |||
| real(kind=dp), | intent(out) | :: | output_vector(:) | |||
| real(kind=dp), | intent(out) | :: | full_vector(:) | |||
| integer(kind=MPIArg), | intent(in) | :: | sizes(0:) | |||
| integer(kind=MPIArg), | intent(in) | :: | displs(0:) | |||
| integer, | intent(in) | :: | run |
subroutine mult_ham_vector_real_ss(input_vector, output_vector, full_vector, sizes, displs, run) real(dp), intent(in) :: input_vector(:) real(dp), intent(out) :: output_vector(:) real(dp), intent(out) :: full_vector(:) integer(MPIArg), intent(in) :: sizes(0:), displs(0:) integer, intent(in) :: run integer :: i, j, ierr call MPIBarrier(ierr, tTimeIn=.false.) call MPIAllGatherV(input_vector, full_vector, sizes, displs) output_vector = 0.0_dp associate(rep => cs_replicas(run)) do i = 1, sizes(iProcIndex) do j = 1, rep%sparse_core_ham(i)%num_elements output_vector(i) = output_vector(i) + rep%sparse_core_ham(i)%elements(j) * full_vector(rep%sparse_core_ham(i)%positions(j)) end do end do end associate end subroutine mult_ham_vector_real_ss