Finds the local virtual elements All elements are mapped at once. Therefore an entry in the resulting array can be used as a lookup index for any of the local element arrays. The distribution itself tells into which array to look.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(array_i1d_obj), | intent(inout), | DIMENSION(0:nbins - 1) | :: | local_elements |
local virtual elements |
|
integer, | intent(in), | DIMENSION(:) | :: | bin_distribution |
distribution of elements to bins |
|
integer, | intent(in) | :: | nbins |
number of bins |
SUBROUTINE find_all_local_elements(local_elements, & bin_distribution, nbins) !! Finds the local virtual elements !! All elements are mapped at once. Therefore an entry in the !! resulting array can be used as a lookup index for any of the local !! element arrays. The distribution itself tells into which array to !! look. INTEGER, INTENT(IN) :: nbins !! number of bins INTEGER, DIMENSION(:), INTENT(IN) :: bin_distribution !! distribution of elements to bins TYPE(array_i1d_obj), DIMENSION(0:nbins - 1), & INTENT(INOUT) :: local_elements !! local virtual elements INTEGER :: bin, el INTEGER, DIMENSION(0:nbins - 1) :: nlve nlve(:) = 0 DO el = 1, SIZE(bin_distribution) bin = bin_distribution(el) nlve(bin) = nlve(bin) + 1 local_elements(bin)%low%data(nlve(bin)) = el END DO END SUBROUTINE find_all_local_elements