to_original_indices Module Subroutine

module subroutine to_original_indices(self, indices_reordered, indices_original)

Arguments

Type IntentOptional Attributes Name
class(type_reordering), intent(in) :: self
integer(kind=int32), intent(in) :: indices_reordered(:)
integer(kind=int32), intent(inout) :: indices_original(:)

Called by

proc~~to_original_indices~~CalledByGraph proc~to_original_indices to_original_indices interface~to_original_indices type_reordering%to_original_indices interface~to_original_indices->proc~to_original_indices

Source Code

    module subroutine to_original_indices(self, indices_reordered, indices_original)
        implicit none
        class(type_reordering), intent(in) :: self
        integer(int32), intent(in) :: indices_reordered(:)
        integer(int32), intent(inout) :: indices_original(:)

        integer(int32) :: i

        if (size(indices_reordered) /= size(indices_original)) error stop "Size mismatch"
        if (self%algorithm_name == "none") then
            indices_original(:) = indices_reordered(:)
            return
        end if

        if (.not. self%is_reordered_perm) error stop "'perm' not ready. Call 'reorder' first."

        do i = 1, size(indices_reordered)
            indices_original(i) = self%perm(indices_reordered(i))
        end do

    end subroutine to_original_indices