UPP  V11.0.0
 All Data Structures Files Functions Pages
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
Definition: MASKS_mod.f:1
elemental real function, public fpvsnew(t)
Definition: UPP_PHYSICS.f:345
calcape() computes CAPE/CINS and other storm related variables.
Definition: UPP_PHYSICS.f:27