to_reordered_values_int32 Module Subroutine

module subroutine to_reordered_values_int32(self, vector_original, vector_reordered)

Arguments

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

Called by

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

Source Code

    module subroutine to_reordered_values_int32(self, vector_original, vector_reordered)
        implicit none
        class(type_reordering), intent(in) :: self
        integer(int32), intent(in) :: vector_original(:)
        integer(int32), intent(inout) :: vector_reordered(:)

        integer(int32) :: i

        if (size(vector_original) /= self%num_nodes .or. size(vector_reordered) /= self%num_nodes) error stop "Size mismatch"
        if (self%algorithm_name == "none") then
            vector_reordered(:) = vector_original(:)
            return
        end if
        if (.not. self%is_reordered_iperm) error stop "'iperm' not ready. Call 'invert' first."

        do i = 1, self%num_nodes
            vector_reordered(self%iperm(i)) = vector_original(i)
        end do

    end subroutine to_reordered_values_int32