Releases and potentially destroys a distribution
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_distribution_obj), | intent(inout) | :: | dist |
SUBROUTINE dbcsr_distribution_release(dist)
!! Releases and potentially destroys a distribution
TYPE(dbcsr_distribution_obj), INTENT(INOUT) :: dist
! ---------------------------------------------------------------------------
IF (ASSOCIATED(dist%d)) THEN
dist%d%refcount = dist%d%refcount - 1
IF (dist%d%refcount .EQ. 0) THEN
CALL array_release(dist%d%row_dist_block)
CALL array_release(dist%d%col_dist_block)
CALL array_release(dist%d%local_rows)
CALL array_release(dist%d%local_cols)
CALL dbcsr_mp_release(dist%d%mp_env)
IF (dist%d%has_thread_dist) &
CALL array_release(dist%d%thread_dist)
CALL array_release(dist%d%row_map)
CALL array_release(dist%d%col_map)
CALL dbcsr_dist_release_locals(dist)
DEALLOCATE (dist%d)
END IF
END IF
END SUBROUTINE dbcsr_distribution_release