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