apply_reordering Subroutine

private subroutine apply_reordering(self)

TBI: Handle 3D reordering if necessary

Type Bound

type_domain

Arguments

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

Calls

proc~~apply_reordering~~CallsGraph proc~apply_reordering type_domain%apply_reordering interface~allocate_array allocate_array proc~apply_reordering->interface~allocate_array interface~deallocate_array deallocate_array proc~apply_reordering->interface~deallocate_array none~to_reordered type_reordering%to_reordered proc~apply_reordering->none~to_reordered proc~get_connectivity abst_mesh%get_connectivity proc~apply_reordering->proc~get_connectivity proc~get_num_elements type_domain%get_num_elements proc~apply_reordering->proc~get_num_elements proc~get_num_nodes~3 abst_mesh%get_num_nodes proc~apply_reordering->proc~get_num_nodes~3 proc~get_num_sides type_domain%get_num_sides proc~apply_reordering->proc~get_num_sides 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 interface~to_reordered_index type_reordering%to_reordered_index none~to_reordered->interface~to_reordered_index interface~to_reordered_indices type_reordering%to_reordered_indices none~to_reordered->interface~to_reordered_indices proc~to_reordered_index to_reordered_index interface~to_reordered_index->proc~to_reordered_index proc~to_reordered_indices to_reordered_indices interface~to_reordered_indices->proc~to_reordered_indices 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 log_error log_error proc~error_message->log_error

Called by

proc~~apply_reordering~~CalledByGraph proc~apply_reordering type_domain%apply_reordering proc~initialize_type_domain type_domain%initialize_type_domain proc~initialize_type_domain->proc~apply_reordering

Source Code

    subroutine apply_reordering(self)
        implicit none
        class(type_domain), intent(inout) :: self

        integer(int32) :: iElem, iSide, i
        integer(int32), dimension(:), pointer :: ptr_connectivity => null()
        integer(int32), allocatable :: connectivity(:)
        integer(int32), allocatable :: connectivity_reordered(:)
        integer(int32) :: node_per_mesh

        if (self%computation_dimension >= 3) then
            !! TBI: Handle 3D reordering if necessary
        end if

        if (self%computation_dimension >= 2) then
            do iElem = 1, self%get_num_elements()
                ptr_connectivity => self%elements(iElem)%e%get_connectivity()
                node_per_mesh = self%elements(iElem)%e%get_num_nodes()
                call allocate_array(connectivity, node_per_mesh)
                call allocate_array(connectivity_reordered, node_per_mesh)

                do i = 1, node_per_mesh
                    connectivity(i) = ptr_connectivity(i)
                end do
                call self%reordering%to_reordered(connectivity, connectivity_reordered)
                do i = 1, node_per_mesh
                    ptr_connectivity(i) = connectivity_reordered(i)
                end do

                call deallocate_array(connectivity)
                call deallocate_array(connectivity_reordered)
            end do
        end if

        if (self%computation_dimension >= 1) then
            do iSide = 1, self%get_num_sides()
                ptr_connectivity => self%sides(iSide)%s%get_connectivity()
                node_per_mesh = self%sides(iSide)%s%get_num_nodes()
                call allocate_array(connectivity, node_per_mesh)
                call allocate_array(connectivity_reordered, node_per_mesh)

                do i = 1, node_per_mesh
                    connectivity(i) = ptr_connectivity(i)
                end do
                call self%reordering%to_reordered(connectivity, connectivity_reordered)
                do i = 1, node_per_mesh
                    ptr_connectivity(i) = connectivity_reordered(i)
                end do

                call deallocate_array(connectivity)
                call deallocate_array(connectivity_reordered)

            end do
        end if

    end subroutine apply_reordering