UPP  V11.0.0
 All Data Structures Files Functions Pages
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
Definition: MASKS_mod.f:1
Definition: physcons.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