Releases all MPI resources and buffers.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(flow_mpi_t), | intent(inout) | :: | flow |
subroutine flow_mpi_finalize(flow) type(flow_mpi_t), intent(inout) :: flow integer :: ierr if (allocated(flow%owned)) deallocate(flow%owned) if (allocated(flow%gather_counts)) deallocate(flow%gather_counts) if (allocated(flow%gather_displs)) deallocate(flow%gather_displs) if (allocated(flow%gather_firsts)) deallocate(flow%gather_firsts) if (allocated(flow%gather_sendbuf)) deallocate(flow%gather_sendbuf) if (allocated(flow%gather_recvbuf)) deallocate(flow%gather_recvbuf) if (allocated(flow%gather_matrix_counts)) deallocate(flow%gather_matrix_counts) if (allocated(flow%gather_matrix_displs)) deallocate(flow%gather_matrix_displs) if (allocated(flow%gather_matrix_sendbuf)) deallocate(flow%gather_matrix_sendbuf) if (allocated(flow%gather_matrix_recvbuf)) deallocate(flow%gather_matrix_recvbuf) if (allocated(flow%cell_owner)) deallocate(flow%cell_owner) if (allocated(flow%ghost_cells)) deallocate(flow%ghost_cells) if (allocated(flow%owned_faces)) deallocate(flow%owned_faces) if (allocated(flow%cell_send_ranks)) deallocate(flow%cell_send_ranks) if (allocated(flow%cell_recv_ranks)) deallocate(flow%cell_recv_ranks) if (allocated(flow%cell_send_counts)) deallocate(flow%cell_send_counts) if (allocated(flow%cell_recv_counts)) deallocate(flow%cell_recv_counts) if (allocated(flow%cell_send_displs)) deallocate(flow%cell_send_displs) if (allocated(flow%cell_recv_displs)) deallocate(flow%cell_recv_displs) if (allocated(flow%cell_send_cells)) deallocate(flow%cell_send_cells) if (allocated(flow%cell_recv_cells)) deallocate(flow%cell_recv_cells) if (allocated(flow%cell_sendbuf)) deallocate(flow%cell_sendbuf) if (allocated(flow%cell_recvbuf)) deallocate(flow%cell_recvbuf) if (allocated(flow%cell_requests)) deallocate(flow%cell_requests) if (allocated(flow%face_send_ranks)) deallocate(flow%face_send_ranks) if (allocated(flow%face_recv_ranks)) deallocate(flow%face_recv_ranks) if (allocated(flow%face_send_counts)) deallocate(flow%face_send_counts) if (allocated(flow%face_recv_counts)) deallocate(flow%face_recv_counts) if (allocated(flow%face_send_displs)) deallocate(flow%face_send_displs) if (allocated(flow%face_recv_displs)) deallocate(flow%face_recv_displs) if (allocated(flow%face_send_faces)) deallocate(flow%face_send_faces) if (allocated(flow%face_recv_faces)) deallocate(flow%face_recv_faces) if (allocated(flow%face_sendbuf)) deallocate(flow%face_sendbuf) if (allocated(flow%face_recvbuf)) deallocate(flow%face_recvbuf) if (allocated(flow%face_requests)) deallocate(flow%face_requests) if (flow%comm /= MPI_COMM_NULL) then call MPI_Comm_free(flow%comm, ierr) call check_mpi(ierr, 'MPI_Comm_free flow') end if flow%comm = MPI_COMM_NULL flow%rank = -1 flow%nprocs = 0 flow%first_cell = 0 flow%last_cell = -1 flow%nlocal = 0 flow%gather_max_components = 0 flow%ncell_send_ranks = 0 flow%ncell_recv_ranks = 0 flow%nface_send_ranks = 0 flow%nface_recv_ranks = 0 end subroutine flow_mpi_finalize