initialize_type_reordering Subroutine

private subroutine initialize_type_reordering(self, algorithm_name, node_adj)

Type Bound

type_reordering

Arguments

Type IntentOptional Attributes Name
class(type_reordering), intent(inout) :: self
character(len=*), intent(in) :: algorithm_name
class(type_node_adjacency), intent(in) :: node_adj

Calls

proc~~initialize_type_reordering~~CallsGraph proc~initialize_type_reordering type_reordering%initialize_type_reordering interface~cm_reorder_method type_reordering%cm_reorder_method proc~initialize_type_reordering->interface~cm_reorder_method interface~create_inverse_permutation type_reordering%create_inverse_permutation proc~initialize_type_reordering->interface~create_inverse_permutation interface~rcm_reorder_method type_reordering%rcm_reorder_method proc~initialize_type_reordering->interface~rcm_reorder_method proc~cm_reorder_method cm_reorder_method interface~cm_reorder_method->proc~cm_reorder_method proc~create_inverse_permutation create_inverse_permutation interface~create_inverse_permutation->proc~create_inverse_permutation proc~rcm_reorder_method rcm_reorder_method interface~rcm_reorder_method->proc~rcm_reorder_method proc~execute_reordering_core execute_reordering_core proc~cm_reorder_method->proc~execute_reordering_core proc~get_num_nodes~2 type_node_adjacency%get_num_nodes proc~cm_reorder_method->proc~get_num_nodes~2 interface~allocate_array allocate_array proc~create_inverse_permutation->interface~allocate_array interface~deallocate_array deallocate_array proc~create_inverse_permutation->interface~deallocate_array proc~rcm_reorder_method->interface~allocate_array proc~rcm_reorder_method->interface~deallocate_array proc~rcm_reorder_method->proc~execute_reordering_core proc~rcm_reorder_method->proc~get_num_nodes~2 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~deallocate_rank1_int32 deallocate_rank1_int32 interface~deallocate_array->proc~deallocate_rank1_int32 proc~deallocate_rank1_int64 deallocate_rank1_int64 interface~deallocate_array->proc~deallocate_rank1_int64 proc~deallocate_rank1_int8 deallocate_rank1_int8 interface~deallocate_array->proc~deallocate_rank1_int8 proc~deallocate_rank1_logical1 deallocate_rank1_logical1 interface~deallocate_array->proc~deallocate_rank1_logical1 proc~deallocate_rank1_logical4 deallocate_rank1_logical4 interface~deallocate_array->proc~deallocate_rank1_logical4 proc~deallocate_rank1_logical8 deallocate_rank1_logical8 interface~deallocate_array->proc~deallocate_rank1_logical8 proc~deallocate_rank1_real128 deallocate_rank1_real128 interface~deallocate_array->proc~deallocate_rank1_real128 proc~deallocate_rank1_real32 deallocate_rank1_real32 interface~deallocate_array->proc~deallocate_rank1_real32 proc~deallocate_rank1_real64 deallocate_rank1_real64 interface~deallocate_array->proc~deallocate_rank1_real64 proc~deallocate_rank2_int32 deallocate_rank2_int32 interface~deallocate_array->proc~deallocate_rank2_int32 proc~deallocate_rank2_int64 deallocate_rank2_int64 interface~deallocate_array->proc~deallocate_rank2_int64 proc~deallocate_rank2_int8 deallocate_rank2_int8 interface~deallocate_array->proc~deallocate_rank2_int8 proc~deallocate_rank2_logical1 deallocate_rank2_logical1 interface~deallocate_array->proc~deallocate_rank2_logical1 proc~deallocate_rank2_logical4 deallocate_rank2_logical4 interface~deallocate_array->proc~deallocate_rank2_logical4 proc~deallocate_rank2_logical8 deallocate_rank2_logical8 interface~deallocate_array->proc~deallocate_rank2_logical8 proc~deallocate_rank2_real128 deallocate_rank2_real128 interface~deallocate_array->proc~deallocate_rank2_real128 proc~deallocate_rank2_real32 deallocate_rank2_real32 interface~deallocate_array->proc~deallocate_rank2_real32 proc~deallocate_rank2_real64 deallocate_rank2_real64 interface~deallocate_array->proc~deallocate_rank2_real64 proc~execute_reordering_core->interface~allocate_array proc~execute_reordering_core->interface~deallocate_array proc~execute_reordering_core->proc~get_num_nodes~2 proc~execute_bfs_ordering execute_bfs_ordering proc~execute_reordering_core->proc~execute_bfs_ordering proc~find_start_node find_start_node proc~execute_reordering_core->proc~find_start_node proc~get_degree_csr type_node_adjacency%get_degree_csr proc~execute_reordering_core->proc~get_degree_csr 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 proc~deallocate_rank1_int32->proc~error_message proc~deallocate_rank1_int64->proc~error_message proc~deallocate_rank1_int8->proc~error_message proc~deallocate_rank1_logical1->proc~error_message proc~deallocate_rank1_logical4->proc~error_message proc~deallocate_rank1_logical8->proc~error_message proc~deallocate_rank1_real128->proc~error_message proc~deallocate_rank1_real32->proc~error_message proc~deallocate_rank1_real64->proc~error_message proc~deallocate_rank2_int32->proc~error_message proc~deallocate_rank2_int64->proc~error_message proc~deallocate_rank2_int8->proc~error_message proc~deallocate_rank2_logical1->proc~error_message proc~deallocate_rank2_logical4->proc~error_message proc~deallocate_rank2_logical8->proc~error_message proc~deallocate_rank2_real128->proc~error_message proc~deallocate_rank2_real32->proc~error_message proc~deallocate_rank2_real64->proc~error_message proc~sort_and_enqueue_neighbors sort_and_enqueue_neighbors proc~execute_bfs_ordering->proc~sort_and_enqueue_neighbors log_error log_error proc~error_message->log_error proc~sort_and_enqueue_neighbors->interface~allocate_array proc~sort_and_enqueue_neighbors->interface~deallocate_array proc~get_neighbors_csr type_node_adjacency%get_neighbors_csr proc~sort_and_enqueue_neighbors->proc~get_neighbors_csr sort_index sort_index proc~sort_and_enqueue_neighbors->sort_index

Source Code

    subroutine initialize_type_reordering(self, algorithm_name, node_adj)
        implicit none
        class(type_reordering), intent(inout) :: self
        character(*), intent(in) :: algorithm_name
        class(type_node_adjacency), intent(in) :: node_adj

        if (allocated(self%algorithm_name)) deallocate (self%algorithm_name)
        allocate (character(len=len_trim(algorithm_name)) :: self%algorithm_name)
        self%algorithm_name = trim(adjustl(algorithm_name))

        select case (self%algorithm_name)
        case ("rcm")
            call self%rcm_reorder_method(node_adj)
            call self%create_inverse_permutation()
        case ("cm")
            call self%cm_reorder_method(node_adj)
            call self%create_inverse_permutation()
        case default
            ! No reordering
        end select
    end subroutine initialize_type_reordering