***s/r statfld - calcule la moyenne, la variance, le minimum et 
*                le maximum d un champs et imprime le resultat.
*

      subroutine statfld ( F_field, F_nv_S, F_no, F_from_S, F_r8stat_L, 3
     $                     minx,maxx,miny,maxy,lnk,
     $                     F_i0,F_j0,F_k0,F_in,F_jn,F_kn )
      implicit none
* 
      character*(*) F_nv_S , F_from_S
      logical F_r8stat_L
      integer minx,maxx,miny,maxy,lnk,
     $        F_i0,F_j0,F_k0,F_in,F_jn,F_kn,F_no,unf
      real F_field(minx:maxx,miny:maxy,lnk)
*
*author
*     M. Desgagne
*
*revision
* v2_00 - Desgagne M.       - initial MPI version (from MC2)
* v3_00 - Desgagne & Lee    - Lam configuration
*
*object
*
*arguments
*  Name        I/O                 Description
*----------------------------------------------------------------
* F_field       I         Field to be operated on
* F_nv_S        I         User provided string to define F_field
* F_no          I         Usually the timestep #
* F_from_S      I         Usually the name of the calling subroutine
* F_i0,F_j0     I         Global lower-left indexes of the sub-domain
*                            on which to perform statistics
* F_in,F_jn     I         Global upper-right indexes of the sub-domain
*                            on which to perform statistics
* F_k0,F_kn     I         Range of levels on which to perform statistics
*----------------------------------------------------------------
*
*implicits
#
      integer i,j,k,imin,jmin,kmin,imax,jmax,kmax
      real*8 sum,sumd2,moy,var,mind,maxd,fijk,npt_8
*
*--------------------------------------------------------------------
*
      npt_8 = dble((F_in-F_i0+1)*(F_jn-F_j0+1)*(F_kn-F_k0+1))
*
      sum   = 0.0
      sumd2 = 0.0
      imin  = F_i0
      jmin  = F_j0
      kmin  = F_k0
      imax  = F_i0
      jmax  = F_j0
      kmax  = F_k0
      maxd  = F_field(F_i0,F_j0,F_k0)
      mind  = F_field(F_i0,F_j0,F_k0)
*
      do k=F_k0,F_kn
      do j=F_j0,F_jn
      do i=F_i0,F_in
         fijk = F_field(i,j,k)
         sum = sum + fijk
         sumd2 = sumd2 + fijk*fijk
         if (fijk .gt. maxd) then
            maxd = fijk
            imax = i
            jmax = j
            kmax = k
         endif
         if (fijk .lt. mind) then
            mind = fijk
            imin = i
            jmin = j
            kmin = k
         endif
      end do
      end do
      end do
*    
      moy = sum / npt_8 
      var = max(0.d0,(sumd2 + moy*moy*npt_8 - 2*moy*sum) / npt_8)
      var = sqrt(var)
*       
* ** On imprime
*
      if (F_r8stat_L) then
         write(6,99) F_no,F_nv_S,moy,var,imin,jmin,kmin,mind,
     $                          imax,jmax,kmax,maxd
      else
         write(6,98) F_no,F_nv_S,moy,var,imin,jmin,kmin,mind,
     $                          imax,jmax,kmax,maxd
      endif
*
 98   format (i5,a7,' Mean:',e14.7,' Var:',e14.7,
     $        ' Min:[(',i5,',',i5,',',i5,')',
     $        e14.7,']',' Max:[(',i5,',',i5,',',i5,')',
     $        e14.7,']')
 99   format (i5,a7,' Mean:',e22.14,' Var:',e22.14,/
     $        ' Min:[(',i5,',',i5,',',i5,')',
     $        e22.14,']',' Max:[(',i5,',',i5,',',i5,')',
     $        e22.14,']')
*
*----------------------------------------------------------------
*
      return
      end