get_neighbors_impl Function

private function get_neighbors_impl(self, i) result(neighbors)

Type Bound

type_crs_adjacency_element

Arguments

Type IntentOptional Attributes Name
class(type_crs_adjacency_element), intent(in) :: self
integer(kind=int32), intent(in) :: i

Return Value integer(kind=int32), allocatable, (:)


Calls

proc~~get_neighbors_impl~~CallsGraph proc~get_neighbors_impl type_crs_adjacency_element%get_neighbors_impl interface~allocate_array allocate_array proc~get_neighbors_impl->interface~allocate_array proc~allocate_rank1_int16 allocate_rank1_int16 interface~allocate_array->proc~allocate_rank1_int16 proc~allocate_rank1_int32 allocate_rank1_int32 interface~allocate_array->proc~allocate_rank1_int32 proc~allocate_rank1_int64 allocate_rank1_int64 interface~allocate_array->proc~allocate_rank1_int64 proc~allocate_rank1_int8 allocate_rank1_int8 interface~allocate_array->proc~allocate_rank1_int8 proc~allocate_rank1_logical1 allocate_rank1_logical1 interface~allocate_array->proc~allocate_rank1_logical1 proc~allocate_rank1_logical4 allocate_rank1_logical4 interface~allocate_array->proc~allocate_rank1_logical4 proc~allocate_rank1_logical8 allocate_rank1_logical8 interface~allocate_array->proc~allocate_rank1_logical8 proc~allocate_rank1_real128 allocate_rank1_real128 interface~allocate_array->proc~allocate_rank1_real128 proc~allocate_rank1_real32 allocate_rank1_real32 interface~allocate_array->proc~allocate_rank1_real32 proc~allocate_rank1_real64 allocate_rank1_real64 interface~allocate_array->proc~allocate_rank1_real64 proc~allocate_rank2_int16 allocate_rank2_int16 interface~allocate_array->proc~allocate_rank2_int16 proc~allocate_rank2_int32 allocate_rank2_int32 interface~allocate_array->proc~allocate_rank2_int32 proc~allocate_rank2_int64 allocate_rank2_int64 interface~allocate_array->proc~allocate_rank2_int64 proc~allocate_rank2_int8 allocate_rank2_int8 interface~allocate_array->proc~allocate_rank2_int8 proc~allocate_rank2_logical1 allocate_rank2_logical1 interface~allocate_array->proc~allocate_rank2_logical1 proc~allocate_rank2_logical4 allocate_rank2_logical4 interface~allocate_array->proc~allocate_rank2_logical4 proc~allocate_rank2_logical8 allocate_rank2_logical8 interface~allocate_array->proc~allocate_rank2_logical8 proc~allocate_rank2_real128 allocate_rank2_real128 interface~allocate_array->proc~allocate_rank2_real128 proc~allocate_rank2_real32 allocate_rank2_real32 interface~allocate_array->proc~allocate_rank2_real32 proc~allocate_rank2_real64 allocate_rank2_real64 interface~allocate_array->proc~allocate_rank2_real64 proc~error_message error_message proc~allocate_rank1_int16->proc~error_message proc~allocate_rank1_int32->proc~error_message proc~allocate_rank1_int64->proc~error_message proc~allocate_rank1_int8->proc~error_message proc~allocate_rank1_logical1->proc~error_message proc~allocate_rank1_logical4->proc~error_message proc~allocate_rank1_logical8->proc~error_message proc~allocate_rank1_real128->proc~error_message proc~allocate_rank1_real32->proc~error_message proc~allocate_rank1_real64->proc~error_message proc~allocate_rank2_int16->proc~error_message proc~allocate_rank2_int32->proc~error_message proc~allocate_rank2_int64->proc~error_message proc~allocate_rank2_int8->proc~error_message proc~allocate_rank2_logical1->proc~error_message proc~allocate_rank2_logical4->proc~error_message proc~allocate_rank2_logical8->proc~error_message proc~allocate_rank2_real128->proc~error_message proc~allocate_rank2_real32->proc~error_message proc~allocate_rank2_real64->proc~error_message log_error log_error proc~error_message->log_error

Called by

proc~~get_neighbors_impl~~CalledByGraph proc~get_neighbors_impl type_crs_adjacency_element%get_neighbors_impl proc~coloring_dsatur coloring_dsatur proc~coloring_dsatur->proc~get_neighbors_impl proc~update_saturation update_saturation proc~coloring_dsatur->proc~update_saturation proc~coloring_lfo coloring_lfo proc~coloring_lfo->proc~get_neighbors_impl proc~find_smallest_available_color find_smallest_available_color proc~find_smallest_available_color->proc~get_neighbors_impl proc~update_saturation->proc~get_neighbors_impl interface~coloring_dsatur type_coloring%coloring_dsatur interface~coloring_dsatur->proc~coloring_dsatur interface~coloring_lfo type_coloring%coloring_lfo interface~coloring_lfo->proc~coloring_lfo proc~coloring_welsh_powell coloring_welsh_powell proc~coloring_welsh_powell->proc~find_smallest_available_color interface~coloring_welsh_powell type_coloring%coloring_welsh_powell interface~coloring_welsh_powell->proc~coloring_welsh_powell proc~initialize_type_coloring type_coloring%initialize_type_coloring proc~initialize_type_coloring->interface~coloring_dsatur proc~initialize_type_coloring->interface~coloring_lfo proc~initialize_type_coloring->interface~coloring_welsh_powell

Source Code

    function get_neighbors_impl(self, i) result(neighbors)
        implicit none
        class(type_crs_adjacency_element), intent(in) :: self
        integer(int32), intent(in) :: i
        integer(int32), allocatable :: neighbors(:)

        integer(int32) :: start_p, end_p, num_neighbors

        if (i < 1 .or. i > self%num_row) then
            ! 範囲外の場合はサイズ0の配列を返す
            call allocate_array(neighbors, length=0_int32)
            return
        end if

        start_p = self%ptr(i)
        end_p = self%ptr(i + 1) - 1
        num_neighbors = end_p - start_p + 1

        if (num_neighbors > 0) then
            call allocate_array(neighbors, length=num_neighbors)
            neighbors = self%ind(start_p:end_p)
        else
            call allocate_array(neighbors, length=0_int32)
        end if
    end function get_neighbors_impl