subroutine tqaver use modmpi, only:comm3d, mpierr, my_real, mpi_sum use modglobal, only:ib, ie, jb, je, ih, jh, kb, ke, nsv, rslabs use modfields, only:thl0, qt0, sv0 implicit none real thl0a, qt0a real thl0al, qt0al integer n real, allocatable, dimension(:) :: sv0al, sv0a allocate (sv0al(nsv), sv0a(nsv)) thl0al = sum(thl0(ib:ie, jb:je, ke)) qt0al = sum(qt0(ib:ie, jb:je, ke)) do n = 1, nsv sv0al(n) = sum(sv0(ib:ie, jb:je, ke, n)) enddo call MPI_ALLREDUCE(thl0al, thl0a, 1, MY_REAL, & MPI_SUM, comm3d, mpierr) call MPI_ALLREDUCE(qt0al, qt0a, 1, MY_REAL, & MPI_SUM, comm3d, mpierr) if (nsv > 0) then call MPI_ALLREDUCE(sv0al, sv0a, nsv, MY_REAL, & MPI_SUM, comm3d, mpierr) end if thl0a = thl0a/rslabs qt0a = qt0a/rslabs sv0a = sv0a/rslabs thl0(ib:ie, jb:je, ke) = thl0a qt0(ib:ie, jb:je, ke) = qt0a do n = 1, nsv sv0(ib:ie, jb:je, ke, n) = sv0a(n) enddo deallocate (sv0al, sv0a) return end subroutine tqaver