Computes the global maximum magnitude 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_max_owned(flow, a) result(global_max) use mod_profiling, only : profiler_start, profiler_stop type(flow_mpi_t), intent(in) :: flow real(rk), intent(in) :: a(:) real(rk) :: global_max, local_max integer :: c, ierr local_max = 0.0_rk do c = flow%first_cell, flow%last_cell local_max = max(local_max, abs(a(c))) end do if (flow%nprocs == 1) then global_max = local_max return end if call profiler_start('MPI_Communication') call MPI_Allreduce(local_max, global_max, 1, MPI_DOUBLE_PRECISION, MPI_MAX, flow%comm, ierr) call check_mpi(ierr, 'MPI_Allreduce flow max') call profiler_stop('MPI_Communication') end function flow_global_max_owned