1
2      SUBROUTINE O3EXT
3!***********************************************************************
4!*                  O3EXT Module of AERMOD
5!*
6!*         PURPOSE: To extract hourly ozone data for PVMRM and OLM options
7!*
8!*         PROGRAMMER:  Roger W. Brode, PES, Inc.
9!*
10!*         DATE:    May 6, 2002
11!*
12!*         INPUTS:
13!*
14!*         OUTPUTS:
15!*
16!*         CALLED FROM:  HRLOOP
17!************************************************************************
18!*
19!*    Variable Declarations
20      USE MAIN1
21      IMPLICIT NONE
22      CHARACTER MODNAM*12
23
24      SAVE
25      INTEGER :: IO3YR , IO3MN , IO3DY , IO3HR , KURO3HR
26
27!*    Variable Initializations
28      MODNAM = 'O3EXT'                                                  !      0
29!*
30      IF ( O3FORM.EQ.'FREE' ) THEN
31         READ (IO3UNT,*,ERR=99,END=999) IO3YR , IO3MN , IO3DY , IO3HR , &
32     &                                  O3CONC
33      ELSE
34         READ (IO3UNT,O3FORM,ERR=99,END=999) IO3YR , IO3MN , IO3DY ,    &
35     &         IO3HR , O3CONC
36      ENDIF
37
38!*    Check for Date and Time Consistency ; If Failed, Issue Fatal Error
39      KURO3HR = IO3YR*1000000 + IO3MN*10000 + IO3DY*100 + IO3HR         !      0
40      IF ( KURDAT.NE.KURO3HR ) THEN
41!*       WRITE Error Message - Date mismatch
42         WRITE (DUMMY,'(I8.8)') KURDAT                                  !      0
43         CALL ERRHDL(PATH,MODNAM,'E','457',DUMMY)
44         RUNERR = .TRUE.
45      ENDIF
46
47      IF ( O3CONC.GE.900.0 .OR. O3CONC.LT.0.0 ) THEN                    !      0
48!        Hourly ozone value is missing, check for background value
49!        from OZONEVAL card
50         IF ( O3BACK.GE.0.0 ) THEN                                      !      0
51!           Write informational message about substitution
52            WRITE (DUMMY,'(I8.8)') KURDAT                               !      0
53            CALL ERRHDL(PATH,MODNAM,'I','458',DUMMY)
54            O3CONC = O3BACK
55            O3MISS = .FALSE.
56!           Skip to end since O3BACK units have already been converted to ug/m3
57            GOTO 999
58         ELSE
59!           Write informational message about missing data and use of full conversion
60            WRITE (DUMMY,'(I8.8)') KURDAT                               !      0
61            CALL ERRHDL(PATH,MODNAM,'I','459',DUMMY)
62            O3MISS = .TRUE.
63            GOTO 999
64         ENDIF
65      ELSE
66!        Hourly ozone data not missing
67         O3MISS = .FALSE.                                               !      0
68      ENDIF
69
70      IF ( O3FILUNITS.EQ.'PPB' ) THEN                                   !      0
71         O3CONC = (O3CONC/1000.)*1960.                                  !      0
72      ELSEIF ( O3FILUNITS.EQ.'PPM' ) THEN
73         O3CONC = O3CONC*1960.                                          !      0
74      ENDIF
75
76      GOTO 999                                                          !      0
77
78!*    Write Error Message for Error Reading Hourly Emissions File
79 99   CALL ERRHDL(PATH,MODNAM,'E','510','OZONEFIL')                     !      0
80      RUNERR = .TRUE.
81
82 999  CONTINUE                                                          !      0
83      END


HyperKWIC - Version 1.00DD executed at 20:00 on 1 Mar 2018 | Personal or Academic or Evaluation User | Free for Non-Commercial, Non-Government Use