UPP v11.0.0
Loading...
Searching...
No Matches
LFMFLD.f
Go to the documentation of this file.
1
44 SUBROUTINE lfmfld(RH3310,RH6610,RH3366,PW3310)
45
46!
47!
48 use vrbls3d, only: pint, alpint, zint, t, q, cwm
49 use masks, only: lmh
50 use params_mod, only: d00, d50, pq0, a2, a3, a4, h1, d01, gi
51 use ctlblk_mod, only: jsta, jend, modelname, spval, im, ista, iend
52 use physcons_post, only: con_rd, con_rv, con_eps, con_epsm1
53 use upp_physics, only: fpvsnew
54
55 implicit none
56
57!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
58!
59 real,PARAMETER :: RHOWAT=1.e3
60!
61! DECLARE VARIABLES.
62!
63 REAL ALPM, DZ, ES, PM, PWSUM, QM, QS, TM, DP, RH
64 REAL,dimension(ista:iend,jsta:jend),intent(inout) :: RH3310, RH6610, RH3366
65 REAL,dimension(ista:iend,jsta:jend),intent(inout) :: PW3310
66 real Z3310,Z6610,Z3366,P10,P33,P66
67 integer I,J,L,LLMH
68!
69!***********************************************************************
70! START LFMFLD HERE
71!
72!
73! LOOP OVER HORIZONTAL GRID.
74!
75 DO 30 j=jsta,jend
76 DO 30 i=ista,iend
77!
78! ZERO VARIABLES.
79 rh3310(i,j) = d00
80 pw3310(i,j) = d00
81 rh6610(i,j) = d00
82 rh3366(i,j) = d00
83 z3310 = d00
84 z6610 = d00
85 z3366 = d00
86!
87! SET BOUNDS FOR PRESSURES AND SURFACE L.
88 p10 = pint(i,j,nint(lmh(i,j)))
89 p66 = 0.75*p10
90 p33 = 0.50*p10
91 llmh = nint(lmh(i,j))
92!
93! ACCULMULATE RELATIVE HUMIDITIES AND PRECIPITABLE WATER.
94!
95 DO 10 l = llmh,1,-1
96!
97! GET P, Z, T, AND Q AT MIDPOINT OF ETA LAYER.
98 alpm = d50*(alpint(i,j,l)+alpint(i,j,l+1))
99 dz = zint(i,j,l)-zint(i,j,l+1)
100 dp = pint(i,j,l+1)-pint(i,j,l)
101 pm = exp(alpm)
102 tm = t(i,j,l)
103 qm = q(i,j,l)
104 qm = amax1(qm,d00)
105!
106! QS=PQ0/PM*EXP(A2*(TM-A3)/(TM-A4))
107 IF(modelname == 'GFS')THEN
108 es = min(fpvsnew(tm),pm)
109 qs = con_eps*es/(pm+con_epsm1*es)
110 ELSE
111 qs=pq0/pm*exp(a2*(tm-a3)/(tm-a4))
112 END IF
113 rh = qm/qs
114 IF (rh>h1) THEN
115 rh = h1
116 qm = rh*qs
117 ENDIF
118 IF (rh<d01) THEN
119 rh = d01
120 qm = rh*qs
121 ENDIF
122!
123! JUMP OUT OF THIS LOOP IF WE ARE ABOVE THE HIGHEST TARGET PRESSURE.
124 IF (pm<=p33) exit
125!
126! 0.66-1.00 RELATIVE HUMIDITY.
127 IF ((pm<=p10).AND.(pm>=p66)) THEN
128 z6610 = z6610 + dz
129 rh6610(i,j) = rh6610(i,j) + rh*dz
130 ENDIF
131!
132! 0.33-1.00 RELATIVE HUMIDITY AND PRECIPITABLE WATER.
133 IF ((pm<=p10).AND.(pm>=p33)) THEN
134 z3310 = z3310 + dz
135 rh3310(i,j)= rh3310(i,j)+rh*dz
136 pw3310(i,j)= pw3310(i,j)+(q(i,j,l)+cwm(i,j,l))*dp*gi
137 ENDIF
138!
139! 0.33-0.66 RELATIVE HUMIDITY.
140 IF ((pm<=p66).AND.(pm>=p33)) THEN
141 z3366 = z3366 + dz
142 rh3366(i,j) = rh3366(i,j) + rh*dz
143 ENDIF
144!
145 10 CONTINUE
146!
147! NORMALIZE TO GET MEAN RELATIVE HUMIDITIES. AT
148! ONE TIME WE DIVIDED PRECIPITABLE WATER BY DENSITY
149! TO GET THE EQUIVALENT WATER DEPTH IN METERS. NO MORE.
150 IF (z6610>d00) THEN
151 rh6610(i,j) = rh6610(i,j)/z6610
152 ELSE
153 rh6610(i,j) = spval
154 ENDIF
155!
156 IF (z3310>d00) THEN
157 rh3310(i,j) = rh3310(i,j)/z3310
158 ELSE
159 rh3310(i,j) = spval
160 ENDIF
161!
162 IF (z3366>d00) THEN
163 rh3366(i,j) = rh3366(i,j)/z3366
164 ELSE
165 rh3366(i,j) = spval
166 ENDIF
167 30 CONTINUE
168!
169!
170! END OF ROUTINE.
171!
172 RETURN
173 END
calcape() computes CAPE/CINS and other storm related variables.
Definition UPP_PHYSICS.f:27
elemental real function, public fpvsnew(t)