!C
!C***
!C*** hpcmw_eps_fvm_global_output
!C***
!C
subroutine hpcmw_eps_fvm_global_output
use hpcmw_eps_fvm_all
implicit REAL*8 (A-H,O-Z)
integer, dimension(:), allocatable :: rcounts, displs
integer, dimension(:), allocatable :: NODE_ID_G
integer, dimension(:), allocatable :: NEWtoOLD
real(kind=kreal), dimension(:), allocatable :: VAL
!C
!C-- INIT.
allocate (rcounts(PETOT), displs(0:PETOT))
rcounts= 0
displs = 0
call MPI_allGATHER &
& (intNODE_tot, 1, MPI_INTEGER, rcounts, 1, MPI_INTEGER, &
& MPI_COMM_WORLD, ierr)
do ip= 1, PETOT
displs(ip)= displs(ip-1) + rcounts(ip)
enddo
NODE_tot_G= displs(PETOT)
allocate (NODE_ID_G(NODE_tot_G), NEWtoOLD(NODE_tot_G))
allocate (VAL(NODE_tot_G))
!C
!C-- GLOBAL ARRAY
call MPI_allGATHERv &
& (NODE_GLOBAL, intNODE_tot, MPI_INTEGER, &
& NODE_ID_G , rcounts, displs(0), MPI_INTEGER, &
& MPI_COMM_WORLD, ierr)
call MPI_allGATHERv &
& (DELPHI, intNODE_tot, MPI_DOUBLE_PRECISION, &
& VAL , rcounts, displs(0), MPI_DOUBLE_PRECISION, &
& MPI_COMM_WORLD, ierr)
if (my_rank.eq.0) then
do i= 1, NODE_tot_G
j= NODE_ID_G(i)
NEWtoOLD(j)= i
enddo
IUNIT= 12
open (IUNIT, file= AVSfile, status='unknown')
do j= 1, NODE_tot_G
ii= NEWtoOLD(j)
write (IUNIT,'(i8,1pe16.6)') j, VAL(ii)
enddo
close (IUNIT)
endif
end subroutine hpcmw_eps_fvm_global_output