1
2      SUBROUTINE GRDURBAN
3!***********************************************************************
4!             GRDURBAN Module of the AMS/EPA Regulatory Model - AERMOD
5!
6!        PURPOSE: Computes Urban Profiles
7!
8!        PROGRAMMER: Roger Brode, PES, Inc.
9!
10!        DATE:    June 11, 1996
11!
12!        MODIFIED:   Changed subroutine name from GRDURB to GRDURBAN.
13!                    R. Brode, PES, 11/21/97
14!
15!        INPUTS:  Meteorological Variables for One Hour
16!
17!        OUTPUTS: Urban Profiles of sigma-v, sigma-w, Tlz, VPTG
18!
19!        ASSUMPTIONS:  <none>
20!
21!        CALLED FROM:  METEXT
22!***********************************************************************
23
24!---- Variable declarations
25      USE MAIN1
26      IMPLICIT NONE
27      CHARACTER MODNAM*12
28      INTEGER :: I
29      REAL :: ZDCRS , SV2 , SVURB , SV2DCR , VAL2 , ATZI , SW2 , SWURB
30
31      SAVE
32
33!---- Variable initializations
34      MODNAM = 'GRDURB'                                                 !      0
35
36      ZDCRS = AT1PT2*ZIURB
37
38!     Loop Through Grid Levels
39      DO I = 1 , MXGLVL
40
41         GRDSVR(I) = GRIDSV(I)                                          !      0
42         GRDSWR(I) = GRIDSW(I)
43         GRDTGR(I) = GRIDTG(I)
44         GRDPTR(I) = GRIDPT(I)
45
46         SV2 = 0.35*URBWSTR**2
47!
48         IF ( GRIDHT(I).LE.ZIURB ) THEN
49            SVURB = SQRT(SV2)                                           !      0
50
51         ELSEIF ( GRIDHT(I).GT.ZIURB .AND. GRIDHT(I).LE.ZDCRS ) THEN
52!           COMPUTE sigmaV at 1.2*ZI
53            SV2DCR = AMIN1(SV2,0.25)                                    !      0
54!           INTERPOLATE between value of SV2 at ZI and at 1.2*ZI
55            CALL GINTRP(ZIURB,SV2,ZDCRS,SV2DCR,GRIDHT(I),VAL2)
56            SVURB = SQRT(VAL2)
57
58         ELSE   ! requested height is above 1.2*mixing height
59            ATZI = SQRT(SV2)                                            !      0
60            SVURB = AMIN1(ATZI,0.5)
61
62         ENDIF
63!
64
65         IF ( GRIDHT(I).LE.0.1*ZIURB ) THEN                             !      0
66            SW2 = 1.6*(GRIDHT(I)/ZIURB)**0.667*URBWSTR**2               !      0
67            SWURB = SQRT(SW2)
68
69         ELSEIF ( GRIDHT(I).GT.0.1*ZIURB .AND. GRIDHT(I).LE.ZIURB ) THEN
70            SWURB = SQRT(0.35*URBWSTR**2)                               !      0
71
72         ELSEIF ( GRIDHT(I).GT.ZIURB ) THEN
73!           COMPUTE sigmaW at ZI and 1.2*ZI
74!           (The coefficient 0.7 = 1.7 - HEIGHT/ZI, but HEIGHT = ZI)
75
76            SW2 = 0.35*URBWSTR**2*EXP(-(6.*(GRIDHT(I)-ZIURB)/ZIURB))    !      0
77            SWURB = SQRT(SW2)
78
79         ENDIF
80!
81         GRDSVU(I) = SQRT(GRIDSV(I)**2+SVURB**2)                        !      0
82         GRDSWU(I) = SQRT(GRIDSW(I)**2+SWURB**2)
83
84         IF ( GRIDHT(I).LE.ZIURB ) THEN
85            GRDTGU(I) = 1.0E-5                                          !      0
86         ELSE
87            GRDTGU(I) = GRIDTG(I)                                       !      0
88         ENDIF
89
90      ENDDO
91
92!---- Compute potential temperature profile from urban Dtheta/Dz profile
93      CALL GRDPTURB                                                     !      0
94
95
96      CONTINUE
97      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