find_start_node Subroutine

subroutine find_start_node(num_nodes, degree, visited, start_node, istat)

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: num_nodes
integer(kind=int32), intent(in) :: degree(:)
logical, intent(in) :: visited(:)
integer(kind=int32), intent(inout) :: start_node
integer(kind=int32), intent(inout) :: istat

Called by

proc~~find_start_node~~CalledByGraph proc~find_start_node find_start_node proc~cm_reorder_method cm_reorder_method proc~cm_reorder_method->proc~find_start_node proc~rcm_reorder_method rcm_reorder_method proc~rcm_reorder_method->proc~find_start_node interface~cm_reorder_method type_reordering%cm_reorder_method interface~cm_reorder_method->proc~cm_reorder_method interface~rcm_reorder_method type_reordering%rcm_reorder_method interface~rcm_reorder_method->proc~rcm_reorder_method proc~initialize_type_reordering type_reordering%initialize_type_reordering proc~initialize_type_reordering->interface~cm_reorder_method proc~initialize_type_reordering->interface~rcm_reorder_method

Source Code

    subroutine find_start_node(num_nodes, degree, visited, start_node, istat)
        implicit none
        integer(int32), intent(in) :: num_nodes, degree(:)
        logical, intent(in) :: visited(:)
        integer(int32), intent(inout) :: start_node, istat
        integer(int32) :: i, min_deg

        istat = 0
        min_deg = num_nodes + 1
        start_node = -1
        do i = 1, num_nodes
            if (.not. visited(i) .and. degree(i) < min_deg) then
                min_deg = degree(i)
                start_node = i
            end if
        end do
        if (start_node == -1) istat = 1
    end subroutine find_start_node