Computes the global sum of a field over owned cells.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(flow_mpi_t), | intent(in) | :: | flow | |||
| real(kind=rk), | intent(in) | :: | a(:) |
function flow_global_sum_owned(flow, a) result(total) use mod_profiling, only : profiler_start, profiler_stop type(flow_mpi_t), intent(in) :: flow real(rk), intent(in) :: a(:) real(rk) :: total, local_total integer :: c, ierr local_total = 0.0_rk do c = flow%first_cell, flow%last_cell local_total = local_total + a(c) end do if (flow%nprocs == 1) then total = local_total return end if call profiler_start('MPI_Communication') call MPI_Allreduce(local_total, total, 1, MPI_DOUBLE_PRECISION, MPI_SUM, flow%comm, ierr) call check_mpi(ierr, 'MPI_Allreduce flow sum') call profiler_stop('MPI_Communication') end function flow_global_sum_owned