subroutine hpcmw_eps_fvm_output
      use hpcmw_eps_fvm_all
      implicit REAL*8 (A-H,O-Z)

      integer, dimension(intNODE_tot,6):: ICELnod
      real(kind=kreal), dimension(:), allocatable :: VAL, VOL

      character(len=20) :: label
      character(len=HPCMW_NAME_LEN) :: member

!C
!C-- INIT.
      call hpcmw_eps_fvm_update_1_R (DELPHI, NODE_tot)

      label= 'temperature,'

      Nk1= 1
      Nk2= 2

      NXP1= NX + 1
      NYP1= NY + 1
      NZP1= NZ + 1

      if (NX*NY*NZ.ne.intNODE_tot) then
        write (*,'(a, i8)') '### inconsistent NX,NY,NZ', my_rank
        call hpcmw_EPS_FVM_ABORT
      endif 
    
      nNODEtot= NXP1 * NYP1 * NZP1
      IBntot  = NXP1 * NYP1

      allocate (VAL(nNODEtot), VOL(nNODEtot))
      VAL= 0.d0
      VOL= 0.d0

      pVOL= 0.125d0
!C
!C-- INTERPOLATE
      icou= 0
      do k= 1, NZ
        do j= 1, NY         
          do i= 1, NX         
            icou= icou + 1
            in1= (k-1)*IBntot + (j-1)*NXP1 + i
            in2= in1 + 1
            in3= in2 + NXP1
            in4= in3 - 1
            in5= in1 + IBntot
            in6= in2 + IBntot
            in7= in3 + IBntot
            in8= in4 + IBntot
            VAL0= pVOL * DELPHI(icou)
            VOL(in1)= VOL(in1) + pVOL 
            VOL(in2)= VOL(in2) + pVOL 
            VOL(in3)= VOL(in3) + pVOL 
            VOL(in4)= VOL(in4) + pVOL 
            VOL(in5)= VOL(in5) + pVOL 
            VOL(in6)= VOL(in6) + pVOL 
            VOL(in7)= VOL(in7) + pVOL 
            VOL(in8)= VOL(in8) + pVOL 
            VAL(in1)= VAL(in1) + VAL0
            VAL(in2)= VAL(in2) + VAL0
            VAL(in3)= VAL(in3) + VAL0
            VAL(in4)= VAL(in4) + VAL0
            VAL(in5)= VAL(in5) + VAL0
            VAL(in6)= VAL(in6) + VAL0
            VAL(in7)= VAL(in7) + VAL0
            VAL(in8)= VAL(in8) + VAL0
          enddo
        enddo
      enddo

      icou= intNODE_tot
      if (my_rank.ne.0) then 
      k= 1
        do j= 1, NY         
          do i= 1, NX         
            icou= icou + 1
            in1= (k-1)*IBntot + (j-1)*NXP1 + i
            in2= in1 + 1
            in3= in2 + NXP1
            in4= in3 - 1
            VAL0= pVOL * DELPHI(icou)
            VOL(in1)= VOL(in1) + pVOL 
            VOL(in2)= VOL(in2) + pVOL 
            VOL(in3)= VOL(in3) + pVOL 
            VOL(in4)= VOL(in4) + pVOL 
            VAL(in1)= VAL(in1) + VAL0
            VAL(in2)= VAL(in2) + VAL0
            VAL(in3)= VAL(in3) + VAL0
            VAL(in4)= VAL(in4) + VAL0
          enddo
        enddo
      endif
      if (my_rank.ne.PETOT-1) then 
      k= NZ
        do j= 1, NY         
          do i= 1, NX         
            icou= icou + 1
            in1= k*IBntot + (j-1)*NXP1 + i
            in2= in1 + 1
            in3= in2 + NXP1
            in4= in3 - 1
            VAL0= pVOL * DELPHI(icou)
            VOL(in1)= VOL(in1) + pVOL 
            VOL(in2)= VOL(in2) + pVOL 
            VOL(in3)= VOL(in3) + pVOL 
            VOL(in4)= VOL(in4) + pVOL 
            VAL(in1)= VAL(in1) + VAL0
            VAL(in2)= VAL(in2) + VAL0
            VAL(in3)= VAL(in3) + VAL0
            VAL(in4)= VAL(in4) + VAL0
          enddo
        enddo
      endif

!C
!C-- OUTPUT

      IUNIT= 12
      open (IUNIT,file= hpcmw_eps_fvm_files(2), status='unknown')
        write (IUNIT,'(2i8)') Nk1
        write (IUNIT,'(2i8)') Nk1
        write (IUNIT,'(a20)') label
        do i= 1, nNODEtot
          write (IUNIT,'(2(1pe16.6))') VAL(i)/VOL(i)
        enddo
      close (IUNIT)

      end subroutine hpcmw_eps_fvm_output