ExportSpatialAverageBalance Subroutine

public subroutine ExportSpatialAverageBalance(init)

Export spatial average of soil balance variables

Arguments

Type IntentOptional Attributes Name
logical, intent(in), optional :: init

Variables

Type Visibility Attributes Name Initial
integer(kind=short), public :: count
integer(kind=short), public :: i
integer(kind=short), public :: k

Source Code

SUBROUTINE ExportSpatialAverageBalance   & 
!
 (init)  

IMPLICIT NONE

!arguments with intent in:
LOGICAL, OPTIONAL, INTENT(IN) :: init

!local declarations
INTEGER (KIND = short) :: i, k, count

!-------------------------------end of declaration-----------------------------
IF ( countbalance == 0 ) THEN
    RETURN
END IF

IF (PRESENT (init) .AND. init ) THEN !open file and write header
  DO i = 1, nextents
     extents (i) % unitbalance = GetUnit ()
     OPEN (UNIT = extents (i) % unitbalance, FILE = extents (i) % filebalance)
     WRITE(UNIT = extents (i) % unitbalance, FMT ='(a)') &
              'spatial average values of soil balance variables'
     WRITE(UNIT = extents (i) % unitbalance, FMT ='(a,a)') &
              'extent id: ', TRIM(extents (i) % id)
     WRITE(UNIT = extents (i) % unitbalance, FMT ='(a,a)') &
              'extent name: ', TRIM(extents (i) % name)
     WRITE(UNIT = extents (i) % unitbalance, FMT ='(a,f15.5)') &
               'extent area (km2): ', extents (i) % area / 1000. ** 2.

     WRITE(UNIT = extents (i) % unitbalance, FMT ='(a,i5)') &
               'number of variables: ', countbalance
    
     WRITE(UNIT = extents (i) % unitbalance, FMT = *) 
     WRITE(UNIT = extents (i) % unitbalance, FMT = '(a)')  'data'

     WRITE(UNIT = extents (i) % unitbalance, FMT = '(a)', ADVANCE = 'no' )  'DateTime          '

     count = 0
     DO k = 1, SIZE (balanceout)
       IF (balanceout (k) )  THEN
          count = count + 1
          IF (count == countbalance) THEN !last header
             WRITE(UNIT = extents (i) % unitbalance, FMT = '(a)')  TRIM(balanceheader (k)) 
          ELSE
             WRITE(UNIT = extents (i) % unitbalance, FMT = '(a,2x)', ADVANCE = 'no') &
                   TRIM(balanceheader (k))
          END IF
       END IF
     END DO
  END DO

ELSE  !write spatial average values
  timeString = timeSpatialAverageBalance
  DO i = 1, nextents
     WRITE(UNIT = extents (i) % unitbalance, FMT ='(a,2x, 10(E12.5,5x))') &
                  timeString, (extents (i) % balance (k), k = 1, countbalance)
  END DO
END IF

RETURN
END SUBROUTINE ExportSpatialAverageBalance