type_reordering Derived Type

type, public :: type_reordering


Inherited by

type~~type_reordering~~InheritedByGraph type~type_reordering type_reordering type~type_domain type_domain type~type_domain->type~type_reordering reordering type~type_ftdss type_ftdss type~type_ftdss->type~type_domain domain

Components

Type Visibility Attributes Name Initial
character(len=:), private, allocatable :: algorithm_name
integer(kind=int32), private, allocatable :: iperm(:)
logical, private :: is_reordered_iperm = .false.
logical, private :: is_reordered_perm = .false.
integer(kind=int32), private :: num_nodes = 0
integer(kind=int32), private, allocatable :: perm(:)

Finalization Procedures

final :: finalize_type_reordering


Type-Bound Procedures

procedure, private, pass(self) :: cm_inverse_method

  • interface

    private module subroutine cm_inverse_method(self)

    Arguments

    Type IntentOptional Attributes Name
    class(type_reordering), intent(inout) :: self

procedure, private, pass(self) :: cm_reorder_method

procedure, public :: get_algorithm_name

  • private function get_algorithm_name(self) result(name)

    Arguments

    Type IntentOptional Attributes Name
    class(type_reordering), intent(in) :: self

    Return Value character(len=:), allocatable

procedure, public, pass(self) :: initialize => initialize_type_reordering

procedure, private, pass(self) :: rcm_inverse_method

  • interface

    private module subroutine rcm_inverse_method(self)

    Arguments

    Type IntentOptional Attributes Name
    class(type_reordering), intent(inout) :: self

procedure, private, pass(self) :: rcm_reorder_method

generic, public :: to_original => to_original_index, to_original_indices

procedure, private, pass(self) :: to_original_index

  • interface

    private module subroutine to_original_index(self, index_reordered, index_original)

    Arguments

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

procedure, private, pass(self) :: to_original_indices

  • interface

    private 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(:)

generic, public :: to_original_value => to_original_values_int32, to_original_values_real64

procedure, private, pass(self) :: to_original_values_int32

  • interface

    private module subroutine to_original_values_int32(self, vector_reordered, vector_original)

    Arguments

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

procedure, private, pass(self) :: to_original_values_real64

  • interface

    private module subroutine to_original_values_real64(self, vector_reordered, vector_original)

    Arguments

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

generic, public :: to_reordered => to_reordered_index, to_reordered_indices

procedure, private, pass(self) :: to_reordered_index

  • interface

    private module subroutine to_reordered_index(self, index_original, index_reordered)

    Arguments

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

procedure, private, pass(self) :: to_reordered_indices

  • interface

    private module subroutine to_reordered_indices(self, indices_original, indices_reordered)

    Arguments

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

generic, public :: to_reordered_value => to_reordered_values_int32, to_reordered_values_real64

procedure, private, pass(self) :: to_reordered_values_int32

  • interface

    private 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(:)

procedure, private, pass(self) :: to_reordered_values_real64

  • interface

    private module subroutine to_reordered_values_real64(self, vector_original, vector_reordered)

    Arguments

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

Source Code

    type :: type_reordering
        private
        character(:), allocatable :: algorithm_name
        integer(int32) :: num_nodes = 0
        integer(int32), allocatable :: perm(:) ! CM/RCM indices -> original indices
        integer(int32), allocatable :: iperm(:) ! Original indices -> CM/RCM indices
        logical :: is_reordered_perm = .false.
        logical :: is_reordered_iperm = .false.
    contains
        procedure, public, pass(self) :: initialize => initialize_type_reordering

        procedure, private, pass(self) :: rcm_reorder_method
        procedure, private, pass(self) :: rcm_inverse_method
        procedure, private, pass(self) :: cm_reorder_method
        procedure, private, pass(self) :: cm_inverse_method

        ! CM/RCM ordering -> original ordering
        procedure, private, pass(self) :: to_original_values_int32
        procedure, private, pass(self) :: to_original_values_real64
        generic, public :: to_original_value => to_original_values_int32, & !&
                                                to_original_values_real64 !&
        procedure, private, pass(self) :: to_original_index
        procedure, private, pass(self) :: to_original_indices
        generic, public :: to_original => to_original_index, & !&
                                          to_original_indices !&

        !  original ordering -> CM/RCM ordering
        procedure, private, pass(self) :: to_reordered_values_int32
        procedure, private, pass(self) :: to_reordered_values_real64
        generic, public :: to_reordered_value => to_reordered_values_int32, & !&
                                                 to_reordered_values_real64 !&
        procedure, private, pass(self) :: to_reordered_index
        procedure, private, pass(self) :: to_reordered_indices
        generic, public :: to_reordered => to_reordered_index, & !&
                                           to_reordered_indices !&

        procedure, public :: get_algorithm_name

        final :: finalize_type_reordering
    end type type_reordering