1 SUBROUTINE EV_SETUP 2 !*********************************************************************** 3 ! EV_SETUP Module of the AMS/EPA Regulatory Model - AERMOD 4 ! 5 ! PURPOSE: Controls Processing of Run SETUP Information 6 ! 7 ! PROGRAMMER: Roger Brode, Jeff Wang 8 ! MODIFIED BY D. Strimaitis, SRC (for GRIDDED TERRAIN Processing) 9 ! 10 ! MODIFIED: Moved the code to insert a blank line in temporary event 11 ! file after each pathway from SUB EVEFIL. 12 ! R.W. Brode, PES, Inc. - November 15, 1995. 13 ! 14 ! MODIFIED: Default format for METFRM modified to eliminate the 15 ! variable ZDM on input. 16 ! BY: J. Paumier, PES DATE: 27 July 1994 17 ! 18 ! DATE: December 15, 1993 19 ! 20 ! INPUTS: Input Runstream File 21 ! 22 ! OUTPUTS: Processing Option Switches 23 ! Arrays of Source Parameters 24 ! Arrays of Receptor Locations 25 ! Meteorological Data Specifications 26 ! Terrain Grid Data Specifications 27 ! Output Options 28 ! 29 ! CALLED FROM: MAIN 30 !*********************************************************************** 31 ! 32 ! Variable Declarations 33 USE MAIN1 34 IMPLICIT NONE 35 CHARACTER MODNAM*12 36 37 SAVE 38 INTEGER :: I , IFSTAT 39 LOGICAL NOPATH , NOKEY 40 CHARACTER RDFRM*20 , ECFRM*20 , EVFRM*20 41 CHARACTER INPFLD*2 , PATHWY(7)*2 42 INTERFACE 43 SUBROUTINE EXPATH(INPFLD,PATHWY,IPN,NOPATH) 44 CHARACTER(LEN=2) , INTENT(IN) :: INPFLD 45 CHARACTER(LEN=2) , INTENT(IN) , DIMENSION(:) :: PATHWY 46 INTEGER , INTENT(IN) :: IPN 47 LOGICAL , INTENT(OUT) :: NOPATH 48 END 49 END INTERFACE 50 51 52 ! Variable Initializations 53 MODNAM = 'EV_SETUP' ! 0 54 EOF = .FALSE. 55 ILINE = 0 56 57 ! Setup READ format and ECHO format for runstream record, 58 ! based on the ISTRG PARAMETER (set in MAIN1) 59 WRITE (RDFRM,9100) ISTRG , ISTRG 60 9100 FORMAT ('(A',I3.3,',T1,',I3.3,'A1)') 61 WRITE (ECFRM,9250) ISTRG 62 9250 FORMAT ('(1X,A',I3.3,')') 63 WRITE (EVFRM,9300) ISTRG 64 9300 FORMAT ('(A',I3.3,')') 65 66 ! LOOP Through Input Runstream Records 67 DO WHILE ( .NOT.EOF ) 68 69 ! Increment the Line Counter 70 ILINE = ILINE + 1 ! 0 71 72 ! READ Record to Buffers, as A80 and 80A1 for ISTRG = 80. 73 ! Length of ISTRG is Set in PARAMETER Statement in MAIN1 74 READ (INUNIT,RDFRM,END=999) RUNST1 , (RUNST(I),I=1,ISTRG) 75 76 ! Convert Lower Case to Upper Case Letters --- CALL LWRUPR 77 CALL LWRUPR ! 0 78 79 ! Define Fields on Card --- CALL DEFINE 80 CALL DEFINE 81 82 ! Get the Contents of the Fields --- CALL GETFLD 83 CALL GETFLD 84 85 IF ( ECHO .AND. (FIELD(1).EQ.'OU' .AND. FIELD(2).EQ.'FINISHED')& 86 & ) THEN 87 ! Echo Last Input Card to Output File (Use Character Substring to 88 ! Avoid Echoing ^Z Which May Appear at "End of File" for Some 89 ! Editors). Also, Allow for Shift in the Input Runstream File of 90 ! Up to 3 Columns. 91 IF ( LOCB(1).EQ.1 ) THEN ! 0 92 WRITE (IOUNIT,9200) RUNST1(1:11) ! 0 93 9200 FORMAT (' ',A11) 94 ELSEIF ( LOCB(1).EQ.2 ) THEN 95 WRITE (IOUNIT,9210) RUNST1(1:12) ! 0 96 9210 FORMAT (' ',A12) 97 ELSEIF ( LOCB(1).EQ.3 ) THEN 98 WRITE (IOUNIT,9220) RUNST1(1:13) ! 0 99 9220 FORMAT (' ',A13) 100 ELSEIF ( LOCB(1).EQ.4 ) THEN 101 WRITE (IOUNIT,9230) RUNST1(1:14) ! 0 102 9230 FORMAT (' ',A14) 103 ENDIF 104 ELSEIF ( ECHO ) THEN 105 ! Echo Full Input Card to Output File 106 WRITE (IOUNIT,ECFRM) RUNST1 ! 0 107 ENDIF 108 109 ! If Blank Line, Then CYCLE to Next Card 110 IF ( BLINE ) GOTO 11 ! 0 111 112 ! Check for 'NO ECHO' In First Two Fields 113 IF ( FIELD(1).EQ.'NO' .AND. FIELD(2).EQ.'ECHO' ) THEN ! 0 114 ECHO = .FALSE. ! 0 115 GOTO 11 116 ENDIF 117 118 ! Extract Pathway ID From Field 1 --- CALL EXPATH 119 PATHWY(1) = 'CO' ! 0 120 PATHWY(2) = 'SO' 121 PATHWY(3) = 'ME' 122 PATHWY(4) = 'TG' 123 PATHWY(5) = 'EV' 124 PATHWY(6) = 'OU' 125 PATHWY(7) = '**' 126 CALL EXPATH(FIELD(1),PATHWY,7,NOPATH) 127 128 ! For Invalid Pathway and Comment Lines Skip to Next Record 129 IF ( NOPATH ) THEN 130 ! WRITE Error Message ! Invalid Pathway ID 131 CALL ERRHDL(PPATH,MODNAM,'E','100',PATH) ! 0 132 PATH = PPATH 133 GOTO 11 134 ELSEIF ( PATH.EQ.'**' ) THEN 135 GOTO 11 ! 0 136 ENDIF 137 138 ! Extract Keyword From Field 2 --- CALL EXKEY 139 CALL EXKEY(FIELD(2),NOKEY) ! 0 140 141 IF ( NOKEY ) THEN 142 ! WRITE Error Message ! Invalid Keyword 143 CALL ERRHDL(PATH,MODNAM,'E','105',KEYWRD) ! 0 144 PKEYWD = KEYWRD 145 GOTO 11 146 ENDIF 147 148 ! Check for Proper Order of Setup Cards --- CALL SETORD 149 CALL EV_SETORD ! 0 150 151 ! Process Input Card Based on Pathway 152 IF ( PATH.EQ.'CO' ) THEN 153 ! Process COntrol Pathway Cards --- CALL COCARD 154 CALL COCARD ! 0 155 ELSEIF ( PATH.EQ.'SO' ) THEN 156 ! Process SOurce Pathway Cards --- CALL SOCARD 157 CALL SOCARD ! 0 158 ELSEIF ( PATH.EQ.'ME' ) THEN 159 ! Process MEteorology Pathway Cards --- CALL MECARD 160 CALL MECARD ! 0 161 ELSEIF ( PATH.EQ.'EV' ) THEN 162 ! Process EVent Pathway Cards --- CALL EVCARD 163 CALL EVCARD ! 0 164 ELSEIF ( PATH.EQ.'TG' ) THEN 165 ! Process Terrain Grid Pathway Cards --- CALL TGCARD 166 CALL TGCARD ! 0 167 ELSEIF ( PATH.EQ.'OU' ) THEN 168 ! Process OUtput Pathway Cards --- CALL OUCARD 169 CALL EV_OUCARD ! 0 170 ENDIF 171 172 ! Store the Current Keyword as the Previous Keyword 173 PKEYWD = KEYWRD ! 0 174 175 ! Check for 'OU FINISHED' Card. Exit DO WHILE Loop By Branching 176 ! to Statement 999 in Order to Avoid Reading a ^Z "End of File" 177 ! Marker That May Be Present For Some Editors. 178 IF ( PATH.EQ.'OU' .AND. KEYWRD.EQ.'FINISHED' ) GOTO 999 179 180 GOTO 11 ! 0 181 999 EOF = .TRUE. ! 0 182 11 CONTINUE ! 0 183 ENDDO 184 185 ! Reinitialize Line Number Counter to Count Meteorology Data 186 ILINE = 0 ! 0 187 188 ! Check That All Pathways Were Finished 189 IF ( ICSTAT(25).NE.1 .OR. ISSTAT(25).NE.1 .OR. IMSTAT(25) & 190 & .NE.1 .OR. IESTAT(25).NE.1 .OR. IOSTAT(25).NE.1 ) THEN 191 ! Runstream File Incomplete, Save I?STAT to IFSTAT and Write Message 192 IFSTAT = ICSTAT(25)*10000 + ISSTAT(25)*1000 + IMSTAT(25) & 193 & *100 + IESTAT(25)*10 + IOSTAT(25) 194 WRITE (DUMMY,'(I5.5)') IFSTAT 195 CALL ERRHDL(PATH,MODNAM,'E','125',DUMMY) 196 ENDIF 197 198 CONTINUE ! 0 199 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