diff --git a/sources/io.F90 b/sources/io.F90 index 32393d7..c91cbfc 100644 --- a/sources/io.F90 +++ b/sources/io.F90 @@ -1594,35 +1594,26 @@ module io else ! nprocs < lnprocs -! divide files between processes +! divide files between processes and update the block process accordingly ! nl = 0 - i = mod(lnprocs, nprocs) - j = lnprocs / nprocs - do p = 0, nprocs - k = 0 - do n = 0, p - nl = k - if (n < i) then - nu = k + j - else - nu = k + j - 1 - end if - k = nu + 1 - end do - do n = nl, nu - call change_blocks_process(n, p) - end do - end do - k = 0 - do n = 0, nproc - nl = k - if (n < i) then - nu = k + j + nd = lnprocs / nprocs + nr = mod(lnprocs, nprocs) + do n = 0, nprocs - 1 + if (n < nr) then + il = n * (nd + 1) + iu = il + nd else - nu = k + j - 1 + il = n * nd + nr + iu = il + nd - 1 + end if + do i = il, iu + call change_blocks_process(i, n) + end do + if (n == nproc) then + nl = il + nu = iu end if - k = nu + 1 end do do n = nl, nu