c
c     file: /export/software/puddle0/dems/cumarea.f
c     Last Modified: 11/19/96
c
c     Written by: Glenn E. Moglen
c
c     Program calculates the cummulative area histogram
c
      program cumarea
      character*80 areaifile, trash
      integer*4 areai(1450, 1450), nx, ny
      real*4 area(2200000), maxarea
      igridy = 1450
      open (15, file = 'branch.in', form = 'formatted', status = 'old')
      read (15, 100) trash
      read (15, 100) trash
      read (15, 100) areaifile
      close (15, status = 'keep')
      call demread (areai, areaifile, nx, ny, igridy, dx, dy)
      call makevector (areai, area, nx, ny, maxarea)
      call getprob (area, nx, ny, maxarea)
 100  format (a80)
      end
*
*
*
      subroutine makevector (areai, area, nx, ny, maxarea)
      integer*4 areai(1450, 1450), nx, ny
      real*4 area(2200000), maxarea
      do j = 1, ny
         do i = 1, nx
            index = (j - 1) * nx + i
            area(index) = areai(j, i)
            if (area(index) .gt. maxarea) maxarea = area(index)
         end do
      end do
      return
      end        
*
*
*
      subroutine getprob (area, nx, ny, maxarea)
      integer*4 a, count, nx, ny
      real*4 area(2200000), maxarea
      logical isarea
      print *, 'Maximum area: ', maxarea
      print *, 1, 1
      do a = 2, int(maxarea)
         count = 0
         isarea = .false.
         do i = 1, nx * ny
            if (int(area(i)) .ge. a) count = count + 1
            if (int(area(i)) .eq. a) isarea = .true.           
         end do
         p = float(count) / maxarea
         if (isarea) print *, a, p 
      end do
      return
      end

