ExportSpatialAverageMeteo Subroutine

public subroutine ExportSpatialAverageMeteo(init)

Export spatial average of meteorological 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 ExportSpatialAverageMeteo   & 
!
 (init)  

IMPLICIT NONE

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



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

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

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

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

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

     count = 0
     DO k = 1, SIZE (meteoout)
       IF (meteoout (k) )  THEN
          count = count + 1
          IF (count == countmeteo) THEN !last header
             WRITE(UNIT = extents (i) % unitmeteo, FMT = '(a)')  TRIM(meteoheader (k)) 
          ELSE
             WRITE(UNIT = extents (i) % unitmeteo, FMT = '(a,2x)', ADVANCE = 'no') TRIM(meteoheader (k))
          END IF
       END IF
     END DO
  END DO

ELSE  !write spatial average values
  timeString = timeSpatialAverageMeteo
  DO i = 1, nextents
     WRITE(UNIT = extents (i) % unitmeteo, FMT ='(a,2x, 11(E12.5,5x))') &
                  timeString, (extents (i) % meteo (k), k = 1, countmeteo)
  END DO
END IF

RETURN
END SUBROUTINE ExportSpatialAverageMeteo