1 2 SUBROUTINE SIGZPR(XARG,ZARG,SZOUT) 3 !*********************************************************************** 4 ! SIGZPR Module of ISC2 Model 5 ! 6 ! PURPOSE: Calculates Ambient Sigma-z Values From Dispersion Curves 7 ! for use with the PRIME calculation 8 ! 9 ! PROGRAMMER: Roger Brode 10 ! 11 ! DATE: July 5, 2001 12 ! 13 ! INPUTS: Downwind Distance 14 ! Stability Class 15 ! Rural or Urban Dispersion Option 16 ! 17 ! OUTPUTS: Vertical Dispersion CoEFFicient, SZOUT 18 ! 19 ! CALLED FROM: NUMRISE, WAKE_DFSN, WAKE_XSIG 20 !*********************************************************************** 21 22 ! Variable Declarations 23 USE MAIN1 24 IMPLICIT NONE 25 CHARACTER*12 MODNAM 26 INTEGER :: NDXHE 27 INTEGER :: NDXZHE 28 REAL :: XARG , TTRAVL , PTP , BVFRQ , ZTMP , SIGF , ALPHAB , & 29 & ZARG , SZAD , SZOUT 30 31 ! Variable Initializations 32 MODNAM = 'SIGZPR' ! 230226 33 34 ! TTRAVL = Travel time 35 36 IF ( STABLE ) THEN 37 ! The atmosphere is stable or the release was above the CBL mixing ht. 38 ! See Eq. 1 of the document by Venkatram referenced above. 39 40 TTRAVL = XARG/UEFF ! 164418 41 42 !---- Apply Sigma-Z formulation from CTDMPLUS 43 !---- Locate index below HE, and retrieve potential temperature at HE 44 45 CALL LOCATE(GRIDHT,1,MXGLVL,ZARG,NDXZHE) 46 47 IF ( NDXZHE.GE.1 ) THEN 48 CALL GINTRP(GRIDHT(NDXZHE),GRIDPT(NDXZHE),GRIDHT(NDXZHE+1), & 49 & GRIDPT(NDXZHE+1),ZARG,PTP) 50 ELSE 51 PTP = GRIDPT(1) ! 0 52 ENDIF 53 54 BVFRQ = SQRT(G*TGEFF/PTP) ! 164418 55 IF ( BVFRQ.LT.1.0E-10 ) BVFRQ = 1.0E-10 56 57 ! Set height for calculating sigma-z, ZTMP 58 ZTMP = AMAX1(ZARG,1.0E-4) 59 60 IF ( URBSTAB ) THEN 61 ! Set BVF term to zero for urban stable boundary layer 62 SZAMB = SWEFF*TTRAVL/SQRT(1.0+SWEFF*TTRAVL*(1.0/(0.72*ZTMP))& 63 & ) 64 65 ELSE 66 SZAMB = SWEFF*TTRAVL/SQRT & 67 & (1.0+SWEFF*TTRAVL*(1.0/(0.72*ZTMP)+BVFRQ/ & 68 & (0.54*SWEFF))) 69 ENDIF 70 71 IF ( ZARG.LT.ZI ) THEN ! 164418 72 CALL SZSFCLPR(XARG,ZARG) ! 138660 73 74 SIGF = AMIN1(ZARG/ZI,1.0) 75 SZAS = (1.0-SIGF)*SZSURF + SIGF*SZAMB 76 ELSE 77 SZAS = SZAMB ! 25758 78 ENDIF 79 80 SZOUT = SZAS ! 164418 81 82 83 ELSEIF ( UNSTAB ) THEN 84 85 IF ( ZARG.GE.0.1*ZI ) THEN ! 65808 86 ALPHAB = 1.0 ! 2674 87 ELSE 88 ALPHAB = 0.6 + 0.4*(ZARG/(0.1*ZI)) ! 63134 89 ENDIF 90 91 SZAD = ALPHAB*SWEFF*XARG/UEFF ! 65808 92 93 CALL SZSFCLPR(XARG,ZARG) 94 95 SZOUT = SQRT(SZAD*SZAD+SZSURF*SZSURF) 96 97 ENDIF 98 99 CONTINUE ! 230226 100 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