UPP v11.0.0
Loading...
Searching...
No Matches
LFMFLD_GFS.f
Go to the documentation of this file.
1
45 SUBROUTINE lfmfld_gfs(RH4410,RH7294,RH4472,RH3310)
46
47!
48!
49 use vrbls3d, only: pint, q, t, pmid
50 use masks, only: lmh
51 use params_mod, only: d00
52 use ctlblk_mod, only: jsta, jend, spval, im, ista, iend
53 use upp_physics, only: fpvsnew
54!
55 implicit none
56!
57 real,PARAMETER :: RHOWAT=1.e3
58 real,parameter:: con_rd =2.8705e+2 ! gas constant air (J/kg/K)
59 real,parameter:: con_rv =4.6150e+2 ! gas constant H2O
60 real,parameter:: con_eps =con_rd/con_rv
61 real,parameter:: con_epsm1 =con_rd/con_rv-1
62 real,parameter:: strh1=0.44,strh2=0.72,strh3=0.44,strh4=0.33 &
63 ,sbrh1=1.00,sbrh2=0.94,sbrh3=0.72,sbrh4=1.00
64!
65! DECLARE VARIABLES.
66!
67 REAL ALPM, DZ, ES, PM, PWSUM, QM, QS
68 REAL,dimension(ista:iend,jsta:jend),intent(out) :: RH4410, RH7294, RH4472 &
69 ,rh3310
70!
71 integer I,J,L,LLMH
72 real P4410, P7294,P4472,P3310,Q4410,Q7294,Q4472,Q3310,QS4410, &
73 qs7294,qs4472,qs3310,ps,p33,dp1,dp2,dp3,dp4
74
75!***********************************************************************
76! START LFMFLD HERE
77!
78!
79! LOOP OVER HORIZONTAL GRID.
80!
81 DO 30 j=jsta,jend
82 DO 30 i=ista,iend
83!
84! ZERO VARIABLES.
85 rh4410(i,j) = d00
86 rh4472(i,j) = d00
87 rh7294(i,j) = d00
88 rh3310(i,j) = d00
89 p4410 = d00
90 p7294 = d00
91 p4472 = d00
92 p3310 = d00
93 q4410 = d00
94 q7294 = d00
95 q4472 = d00
96 q3310 = d00
97 qs4410 = d00
98 qs7294 = d00
99 qs4472 = d00
100 qs3310 = d00
101!
102! SET BOUNDS FOR PRESSURES AND SURFACE L.
103
104 llmh = nint(lmh(i,j))
105 ps=pint(i,j,llmh+1)
106 p33 = 0.33*ps
107!
108! ACCULMULATE RELATIVE HUMIDITIES AND PRECIPITABLE WATER.
109!
110 DO 10 l = llmh,1,-1
111!
112! GET P, Z, T, AND Q AT MIDPOINT OF ETA LAYER.
113
114 dp1 = max(min(pint(i,j,l+1),sbrh1*ps) &
115 -max(pint(i,j,l),strh1*ps),0.)
116 dp2 = max(min(pint(i,j,l+1),sbrh2*ps) &
117 -max(pint(i,j,l),strh2*ps),0.)
118 dp3 = max(min(pint(i,j,l+1),sbrh3*ps) &
119 -max(pint(i,j,l),strh3*ps),0.)
120 dp4 = max(min(pint(i,j,l+1),sbrh4*ps) &
121 -max(pint(i,j,l),strh4*ps),0.)
122
123 pm = pint(i,j,l)
124 qm = q(i,j,l)
125 qm = max(qm,d00)
126 es = min(fpvsnew(t(i,j,l)),pmid(i,j,l))
127 qs=con_eps*es/(pmid(i,j,l)+con_epsm1*es)
128!
129!
130! JUMP OUT OF THIS LOOP IF WE ARE ABOVE THE HIGHEST TARGET PRESSURE.
131 IF (pm<=p33) exit
132!
133! 0.44-1.00 RELATIVE HUMIDITY.
134! IF ((PM<=P10).AND.(PM>=P44)) THEN
135 p4410 = p4410 + dp1
136 q4410 = q4410 + qm*dp1
137 qs4410 = qs4410+ qs*dp1
138! ENDIF
139!
140! 0.33-1.00 RELATIVE HUMIDITY
141! IF ((PM<=P10).AND.(PM>=P33)) THEN
142 p3310 = p3310 + dp4
143 q3310 = q3310 + qm*dp4
144 qs3310 = qs3310+ qs*dp4
145! ENDIF
146!
147! 0.44-0.72 RELATIVE HUMIDITY.
148! IF ((PM<=P66).AND.(PM>=P33)) THEN
149 p4472 = p4472 + dp3
150 q4472 = q4472 + qm*dp3
151 qs4472 = qs4472+ qs*dp3
152! ENDIF
153! 0.72-0.94 RELATIVE HUMIDITY.
154! IF ((PM<=P66).AND.(PM>=P33)) THEN
155 p7294 = p7294 + dp2
156 q7294 = q7294 + qm*dp2
157 qs7294 = qs7294+ qs*dp2
158! ENDIF
159!
160 10 CONTINUE
161!
162! NORMALIZE TO GET MEAN RELATIVE HUMIDITIES. AT
163! ONE TIME WE DIVIDED PRECIPITABLE WATER BY DENSITY
164! TO GET THE EQUIVALENT WATER DEPTH IN METERS. NO MORE.
165 IF (p4410>d00) THEN
166 rh4410(i,j) = q4410/qs4410
167 ELSE
168 rh4410(i,j) = spval
169 ENDIF
170!
171 IF (p3310>d00) THEN
172 rh3310(i,j) = q3310/qs3310
173 ELSE
174 rh3310(i,j) = spval
175 ENDIF
176!
177 IF (p4472>d00) THEN
178 rh4472(i,j) = q4472/qs4472
179 ELSE
180 rh4472(i,j) = spval
181 ENDIF
182
183 IF (p7294>d00) THEN
184 rh7294(i,j) = q7294/qs7294
185 ELSE
186 rh7294(i,j) = spval
187 ENDIF
188 30 CONTINUE
189!
190! END OF ROUTINE.
191!
192 RETURN
193 END
calcape() computes CAPE/CINS and other storm related variables.
Definition UPP_PHYSICS.f:27
elemental real function, public fpvsnew(t)