1 | MODULE module_sf_pxlsm |
---|
2 | |
---|
3 | USE module_model_constants |
---|
4 | USE module_wrf_error |
---|
5 | |
---|
6 | INTEGER, PARAMETER :: NSOLD=20 |
---|
7 | REAL, PARAMETER :: RD = 287.04, CPD = 1004.67, & |
---|
8 | CPH2O = 4.218E+3, CPICE = 2.106E+3, & |
---|
9 | LSUBF = 3.335E+5, SIGMA = 5.67E-8, & |
---|
10 | ROVCP = RD / CPD |
---|
11 | |
---|
12 | REAL, PARAMETER :: CRANKP = 0.5 ! CRANK-NIC PARAMETER |
---|
13 | REAL, PARAMETER :: RIC = 0.25 ! critical Richardson number |
---|
14 | REAL, PARAMETER :: DENW = 1000.0 ! water density in KG/M3 |
---|
15 | REAL, PARAMETER :: TAUINV = 1.0 / 86400.0 ! 1/1DAY(SEC) |
---|
16 | REAL, PARAMETER :: T2TFAC = 1.0 / 10.0 ! Bottom soil temp response factor |
---|
17 | REAL, PARAMETER :: PI = 3.1415926 |
---|
18 | REAL, PARAMETER :: PR0 = 0.95 |
---|
19 | REAL, PARAMETER :: CZO = 0.032 |
---|
20 | REAL, PARAMETER :: OZO = 1.E-4 |
---|
21 | |
---|
22 | CONTAINS |
---|
23 | ! |
---|
24 | |
---|
25 | !------------------------------------------------------------------------- |
---|
26 | SUBROUTINE pxlsm(U3D, V3D, DZ8W, QV3D,T3D,TH3D, RHO, & |
---|
27 | PSFC, GSW, GLW, RAINBL, EMISS, & |
---|
28 | ITIMESTEP, NSOIL, DT, ANAL_INTERVAL, & |
---|
29 | XLAND, ALBBCK, ALBEDO, SNOALB, & |
---|
30 | SMOIS, TSLB, MAVAIL, TA2, QA2, & |
---|
31 | ZS,DZS, PSIH, & |
---|
32 | LANDUSEF,SOILCTOP,SOILCBOT,VEGFRA,VEGF_PX, & |
---|
33 | ISLTYP,RA,RS,LAI,NLCAT,NSCAT, & |
---|
34 | HFX,QFX,LH,TSK,ZNT,CANWAT, & |
---|
35 | GRDFLX,SHDMIN,SHDMAX, & |
---|
36 | SNOWC,PBLH,RMOL,UST,CAPG,DTBL, & |
---|
37 | T2_NDG_OLD, T2_NDG_NEW, & |
---|
38 | Q2_NDG_OLD, Q2_NDG_NEW, & |
---|
39 | SN_NDG_OLD, SN_NDG_NEW, SNOW, SNOWH,SNOWNCV,& |
---|
40 | T2OBS, Q2OBS, PXLSM_SMOIS_INIT, & |
---|
41 | PXLSM_SOIL_NUDGE, & |
---|
42 | ids,ide, jds,jde, kds,kde, & |
---|
43 | ims,ime, jms,jme, kms,kme, & |
---|
44 | its,ite, jts,jte, kts,kte ) |
---|
45 | |
---|
46 | !************************************************************************* |
---|
47 | ! THIS MODULE CONTAINS THE PLEIM-XIU LAND-SURFACE MODEL (PX-LSM). |
---|
48 | ! IT IS DESIGNED TO SIMULATE CHARACTERISTICS OF THE LAND SURFACE AND |
---|
49 | ! VEGETATION AND EXCHANGE WITH THE PLANETARY BOUNDARY LAYER (PBL). THE |
---|
50 | ! SOIL MOISTURE MODEL IS BASED ON THE ISBA SCHEME DEVELOPED BY NOILHAN |
---|
51 | ! AND PLANTON (1989) AND JACQUEMIN AND NOILHAN (1990) AND INCLUDES |
---|
52 | ! PROGNOSTIC EQUATIONS FOR SOIL MOISTURE AND SOIL TEMPERATURE IN TWO |
---|
53 | ! LAYERS (1 CM AND 1 M) AS WELL AS CANOPY WATER CONTENT. SURFACE |
---|
54 | ! MOISTURE FLUXES ARE MODELED BY 3 PATHWAYS: SOIL EVAPORATION, CANOPY |
---|
55 | ! EVAPORATION, AND VEGETATIVE EVAPOTRANSPIRRATION. |
---|
56 | ! EVAPOTRANSPIRATION DIRECTLY FROM THE ROOT ZONE SOIL LAYER IS MODELED |
---|
57 | ! VIA A CANOPY RESISTANCE ANALOG ALGORITHM WHERE STOMATAL CONDUCTANCE |
---|
58 | ! IS CONTROLLED BY SOLAR RADIATION, AIR TEMPERATURE, AIR HUMIDITY, AND |
---|
59 | ! ROOT ZONE SOIL MOISTURE. REQUIRED VEGETATION CHARACTERISTICS DERIVED |
---|
60 | ! FROM THE USGS LANDUSE DATA INCLUDE: LEAF AREA INDEX, FRACTIONAL VEGETATION |
---|
61 | ! COVERAGE, ROUGHNESS LENGTH, AND MINIMUM STOMATAL RESISTANCE. AN INDIRECT |
---|
62 | ! NUDGING SCHEME ADJUSTS SOIL MOISTURE ACCORDING TO DIFFERENCES BETWEEN |
---|
63 | ! MODELED TEMPERATURE AND HUMIDITY AND ANALYSED SURFACE FIELDS. |
---|
64 | ! |
---|
65 | ! References: |
---|
66 | ! Pleim and Xiu, 1995: Development and testing of a surface flux and planetary |
---|
67 | ! boundary layer model for application in mesoscale models. |
---|
68 | ! J. Appl. Meteoro., Vol. 34, 16-32. |
---|
69 | ! Xiu and Pleim, 2001: Development of a land surface model. Part I: Application |
---|
70 | ! in a mesoscale meteorological model. J. Appl. Meteoro., |
---|
71 | ! Vol. 40, 192-209. |
---|
72 | ! Pleim and Xiu, 2003: Development of a land surface model. Part II: Data |
---|
73 | ! assimilation. J. Appl. Meteoro., Vol. 42, 1811-1822. |
---|
74 | ! |
---|
75 | ! REVISION HISTORY: |
---|
76 | ! AX 4/2005 - developed WRF version based on the MM5 PX LSM |
---|
77 | !************************************************************************ |
---|
78 | ! ARGUMENT LIST: |
---|
79 | ! |
---|
80 | !... Inputs: |
---|
81 | !-- U3D 3D u-velocity interpolated to theta points (m/s) |
---|
82 | !-- V3D 3D v-velocity interpolated to theta points (m/s) |
---|
83 | !-- DZ8W dz between full levels (m) |
---|
84 | !-- QV3D 3D mixing ratio |
---|
85 | !-- T3D Temperature (K) |
---|
86 | !-- TH3D Theta (K) |
---|
87 | !-- RHO 3D dry air density (kg/m^3) |
---|
88 | |
---|
89 | !-- PSFC surface pressure (Pa) |
---|
90 | !-- GSW downward short wave flux at ground surface (W/m^2) |
---|
91 | !-- GLW downward long wave flux at ground surface (W/m^2) |
---|
92 | !-- RAINBL Timestep rainfall |
---|
93 | !-- EMISS surface emissivity (between 0 and 1) |
---|
94 | |
---|
95 | !-- ITIMESTEP time step number |
---|
96 | !-- NSOIL number of soil layers |
---|
97 | !-- DT time step (second) |
---|
98 | !-- ANAL_INTERVAL Interval of analyses used for soil moisture and temperature nudging |
---|
99 | |
---|
100 | !-- XLAND land mask (1 for land, 2 for water) |
---|
101 | !-- ALBBCK Background Albedo |
---|
102 | !-- ALBEDO surface albedo with snow cover effects |
---|
103 | !-- SNOALB Albedo of snow |
---|
104 | |
---|
105 | !-- SMOIS total soil moisture content (volumetric fraction) |
---|
106 | !-- TSLB soil temp (k) |
---|
107 | !-- MAVAIL Moisture availibility of soil |
---|
108 | !-- TA2 2-m temperature |
---|
109 | !-- QA2 2-m mixing ratio |
---|
110 | |
---|
111 | !-- SVPT0 constant for saturation vapor pressure (K) |
---|
112 | !-- SVP1 constant for saturation vapor pressure (kPa) |
---|
113 | !-- SVP2 constant for saturation vapor pressure (dimensionless) |
---|
114 | !-- SVP3 constant for saturation vapor pressure (K) |
---|
115 | |
---|
116 | !-- ZS depths of centers of soil layers |
---|
117 | !-- DZS thicknesses of soil layers |
---|
118 | !-- PSIH similarity stability function for heat |
---|
119 | |
---|
120 | !-- LANDUSEF Landuse fraction |
---|
121 | !-- SOILCTOP Top soil fraction |
---|
122 | !-- SOILCBOT Bottom soil fraction |
---|
123 | !-- VEGFRA Vegetation fraction |
---|
124 | !-- VEGF_PX Veg fraction recomputed and used by PX LSM |
---|
125 | !-- ISLTYP Soil type |
---|
126 | |
---|
127 | !-- RA Aerodynamic resistence |
---|
128 | !-- RS Stomatal resistence |
---|
129 | !-- LAI Leaf area index (weighted according to fractional landuse) |
---|
130 | !-- NLCAT Number of landuse categories |
---|
131 | !-- NSCAT Number of soil categories |
---|
132 | |
---|
133 | !-- HFX net upward heat flux at the surface (W/m^2) |
---|
134 | !-- QFX net upward moisture flux at the surface (kg/m^2/s) |
---|
135 | !-- LH net upward latent heat flux at surface (W/m^2) |
---|
136 | !-- TSK surface skin temperature (K) |
---|
137 | !-- ZNT rougness length |
---|
138 | !-- CANWAT Canopy water (mm) |
---|
139 | |
---|
140 | !-- GRDFLX Ground heat flux |
---|
141 | !-- SFCEVP Evaportation from surface |
---|
142 | !-- SHDMIN Minimum annual vegetation fraction for each grid cell |
---|
143 | !-- SHDMAX Maximum annual vegetation fraction for each grid cell |
---|
144 | |
---|
145 | !-- SNOWC flag indicating snow coverage (1 for snow cover) |
---|
146 | !-- PBLH PBL height (m) |
---|
147 | !-- RMOL 1/L Reciprocal of Monin-Obukhov length |
---|
148 | !-- UST u* in similarity theory (m/s) |
---|
149 | !-- CAPG heat capacity for soil (J/K/m^3) |
---|
150 | !-- DTBL time step of boundary layer calls |
---|
151 | |
---|
152 | !-- T2_NDG_OLD Analysis temperature prior to current time |
---|
153 | !-- T2_NDG_NEW Analysis temperature ahead of current time |
---|
154 | !-- Q2_NDG_OLD Analysis mixing ratio prior to current time |
---|
155 | !-- Q2_NDG_NEW Analysis mixing ratio ahead of current time |
---|
156 | |
---|
157 | !-- SN_NDG_OLD Analysis snow water prior to current time |
---|
158 | !-- SN_NDG_NEW Analysis snow water ahead of current time |
---|
159 | !-- SNOW Snow water equivalent |
---|
160 | !-- SNOWH Physical snow depth |
---|
161 | !-- SNOWNCV Time step accumulated snow |
---|
162 | |
---|
163 | !-- T2OBS Analysis temperature interpolated from prior and next in time analysese |
---|
164 | !-- Q2OBS Analysis moisture interpolated from prior and next in time analysese |
---|
165 | !-- PXLSM_SMOIS_INIT Flag to intialize deep soil moisture to a value derived from moisture availiability. |
---|
166 | !-- PXLSM_SOIL_NUDGE Flag to use soil moisture and temperature nudging in the PX LSM |
---|
167 | ! This is typically done for the first simulation. |
---|
168 | |
---|
169 | !-- ids start index for i in domain |
---|
170 | !-- ide end index for i in domain |
---|
171 | !-- jds start index for j in domain |
---|
172 | !-- jde end index for j in domain |
---|
173 | !-- kds start index for k in domain |
---|
174 | !-- kde end index for k in domain |
---|
175 | !-- ims start index for i in memory |
---|
176 | !-- ime end index for i in memory |
---|
177 | !-- jms start index for j in memory |
---|
178 | !-- jme end index for j in memory |
---|
179 | !-- kms start index for k in memory |
---|
180 | !-- kme end index for k in memory |
---|
181 | !-- jts start index for j in tile |
---|
182 | !-- jte end index for j in tile |
---|
183 | !-- kts start index for k in tile |
---|
184 | !-- kte end index for k in tile |
---|
185 | !... Outputs: |
---|
186 | |
---|
187 | IMPLICIT NONE |
---|
188 | |
---|
189 | !.......Arguments |
---|
190 | ! DECLARATIONS - INTEGER |
---|
191 | INTEGER, INTENT(IN) :: ids,ide, jds,jde, kds,kde, & |
---|
192 | ims,ime, jms,jme, kms,kme, & |
---|
193 | its,ite, jts,jte, kts,kte |
---|
194 | |
---|
195 | INTEGER, INTENT(IN) :: NSOIL, ITIMESTEP, NLCAT, NSCAT, & |
---|
196 | ANAL_INTERVAL, PXLSM_SMOIS_INIT, PXLSM_SOIL_NUDGE |
---|
197 | |
---|
198 | REAL, INTENT(IN ) :: DT,DTBL |
---|
199 | |
---|
200 | INTEGER, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ISLTYP |
---|
201 | |
---|
202 | ! DECLARATIONS - REAL |
---|
203 | REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN) :: U3D, V3D, RHO, & |
---|
204 | T3D, TH3D, DZ8W, QV3D |
---|
205 | |
---|
206 | REAL, DIMENSION(1:NSOIL), INTENT(IN)::ZS,DZS |
---|
207 | REAL, DIMENSION( ims:ime , 1:NSOIL, jms:jme ), INTENT(INOUT) :: SMOIS, TSLB |
---|
208 | |
---|
209 | REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: RA, RS, LAI, ZNT |
---|
210 | REAL, DIMENSION( ims:ime , jms:jme ), INTENT(OUT):: GRDFLX, TSK, TA2, QA2 |
---|
211 | |
---|
212 | REAL, DIMENSION( ims:ime , 1:NLCAT, jms:jme ), INTENT(IN):: LANDUSEF |
---|
213 | REAL, DIMENSION( ims:ime , 1:NSCAT, jms:jme ), INTENT(IN):: SOILCTOP, SOILCBOT |
---|
214 | |
---|
215 | |
---|
216 | REAL, DIMENSION( ims:ime, jms:jme ), & |
---|
217 | INTENT(IN) :: PSFC, GSW, GLW, RAINBL, & |
---|
218 | EMISS, XLAND, SNOALB, & |
---|
219 | ALBBCK, SHDMIN, SHDMAX, & |
---|
220 | PBLH, RMOL, SNOWNCV, & |
---|
221 | UST, MAVAIL |
---|
222 | REAL, DIMENSION( ims:ime, jms:jme ), & |
---|
223 | INTENT(IN) :: T2_NDG_OLD, T2_NDG_NEW, & |
---|
224 | Q2_NDG_OLD, Q2_NDG_NEW, & |
---|
225 | SN_NDG_OLD, SN_NDG_NEW |
---|
226 | |
---|
227 | REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT) :: T2OBS, Q2OBS |
---|
228 | |
---|
229 | REAL, DIMENSION( ims:ime, jms:jme ), & |
---|
230 | INTENT(INOUT) :: CAPG,CANWAT, QFX, HFX, LH, & |
---|
231 | PSIH,VEGFRA, VEGF_PX, SNOW, & |
---|
232 | SNOWH, SNOWC, ALBEDO |
---|
233 | |
---|
234 | |
---|
235 | LOGICAL :: radiation |
---|
236 | |
---|
237 | ! <<<< Local Variables >>>> |
---|
238 | REAL:: G1000, ALN10 |
---|
239 | INTEGER:: J, I, NS, NUDGE, ISTI, WEIGHT |
---|
240 | !... Parameters |
---|
241 | INTEGER, PARAMETER :: NSTPS = 11 ! max. soil types |
---|
242 | |
---|
243 | !... Integer |
---|
244 | INTEGER, DIMENSION( 1: NSTPS ) :: JP |
---|
245 | |
---|
246 | !... Real |
---|
247 | |
---|
248 | REAL, DIMENSION( ims:ime, jms:jme ) :: XLAI, XLAIMN, RSTMIN, XVEG, XVEGMN, XSNUP |
---|
249 | |
---|
250 | REAL, DIMENSION( ims:ime, jms:jme ) :: RADNET, EG, ER, ETR, QST |
---|
251 | |
---|
252 | REAL:: SFCPRS,TA1,DENS1,QV1,ZLVL,SOLDN,LWDN, & |
---|
253 | EMISSI,PRECIP,THETA1,VAPPRS,QSBT, & |
---|
254 | WG,W2,WR,TG,T2,USTAR,MOLX,Z0, & |
---|
255 | RAIR,CPAIR,IFLAND,ISNOW, & |
---|
256 | ES,QSS,BETAP, & |
---|
257 | RH2_OLD, RH2_NEW, T2_OLD, T2_NEW, & |
---|
258 | CORE, CORB, TIME_BETWEEN_ANALYSIS |
---|
259 | REAL:: FWSAT,FWFC,FWWLT,FB,FCGSAT,FJP,FAS,FC2R,FC1SAT |
---|
260 | REAL:: RH2OBS, HU, SNOBS |
---|
261 | REAL:: FSEAS, T2I, HC_SNOW, SNOW_FRA, SNOWALB |
---|
262 | REAL:: QST12,ZFUNC,ZF1,ZA2,QV2, DT_FDDA, CURTIME |
---|
263 | |
---|
264 | REAL, PARAMETER :: DTPBLX = 40.0 ! Max PX timestep = 40 sec |
---|
265 | REAL:: DTPBL |
---|
266 | INTEGER:: NTSPS, IT |
---|
267 | |
---|
268 | ! |
---|
269 | !-------------------------------Executable starts here-------------------- |
---|
270 | ! |
---|
271 | ALN10 = ALOG(10.0) |
---|
272 | G1000 = g*1.0E-3 ! G/1000 |
---|
273 | WEIGHT = 0 |
---|
274 | DT_FDDA = ANAL_INTERVAL * 1.0 ! Convert DT of Analysis to real |
---|
275 | !IF (ITIMESTEP .EQ. 1) THEN |
---|
276 | ! Calculate several soil and vegetation parameters, e.g., LAI, |
---|
277 | CALL VEGELAND(LANDUSEF, VEGFRA, SHDMIN, SHDMAX, & |
---|
278 | SOILCTOP, SOILCBOT, NLCAT, NSCAT, & |
---|
279 | ZNT,XLAI,XLAIMN,RSTMIN,XVEG,XVEGMN,XSNUP, & |
---|
280 | ids,ide, jds,jde, kds,kde, & |
---|
281 | ims,ime, jms,jme, kms,kme, & |
---|
282 | its,ite, jts,jte, kts,kte) |
---|
283 | !ENDIF |
---|
284 | !----------------------------------------------------------------------------------- |
---|
285 | !--- Compute time relatve to old and new analysis time for timestep interpolation |
---|
286 | CURTIME = (ITIMESTEP-1) * DT |
---|
287 | TIME_BETWEEN_ANALYSIS = AMOD(CURTIME,DT_FDDA) |
---|
288 | IF (TIME_BETWEEN_ANALYSIS .EQ. 0.0) THEN |
---|
289 | CORB = 1.0 |
---|
290 | CORE = 0.0 |
---|
291 | ELSE |
---|
292 | CORE = TIME_BETWEEN_ANALYSIS / DT_FDDA |
---|
293 | CORB = 1.0 - CORE |
---|
294 | ENDIF |
---|
295 | !----------------------------------------------------------------------------------- |
---|
296 | |
---|
297 | |
---|
298 | DO J = jts,jte !-- MAIN J LOOP |
---|
299 | |
---|
300 | DO I = its,ite !-- MAIN I LOOP |
---|
301 | |
---|
302 | IFLAND = XLAND(I,J) |
---|
303 | |
---|
304 | ! Compute soil properties via weighting of fractional components |
---|
305 | IF (IFLAND .LT. 1.5 ) THEN |
---|
306 | CALL SOILPROP (SOILCBOT(I,:,J), WEIGHT, & |
---|
307 | ITIMESTEP, MAVAIL(I,J), & |
---|
308 | PXLSM_SMOIS_INIT, & |
---|
309 | FWSAT,FWFC,FWWLT,FB,FCGSAT, & |
---|
310 | FJP,FAS,FC2R,FC1SAT,ISTI,SMOIS(I,2,J) ) |
---|
311 | ISLTYP(I,J) = ISTI |
---|
312 | ENDIF |
---|
313 | |
---|
314 | !-- Variables Sub. SURFPX needs |
---|
315 | SFCPRS = PSFC(i,j) / 1000.0 ! surface pressure in cb |
---|
316 | TA1 = T3D(i,1,j) ! air temperature at first layer |
---|
317 | DENS1 = RHO(I,1,J) ! air density at first layer |
---|
318 | QV1 = QV3D(i,1,j) ! water vapor mixing ratio at first layer |
---|
319 | QV2 = QV3D(i,2,j) |
---|
320 | ZLVL = 0.5 * DZ8W(i,1,j) ! thickness of lowest half level |
---|
321 | ZF1 = DZ8W(i,1,j) |
---|
322 | ZA2 = ZF1 + 0.5 * DZ8W(i,2,j) |
---|
323 | |
---|
324 | LWDN = GLW(I,J) ! longwave radiation |
---|
325 | EMISSI = EMISS(I,J) ! emissivity |
---|
326 | PRECIP = MAX ( 1.0E-3*RAINBL(i,j)/DTBL,0.0) ! accumulated precip. rate during DT (=dtpbl) |
---|
327 | ! convert RAINBL from mm to m for PXLSM |
---|
328 | WR = 1.0E-3*CANWAT(I,J) ! convert CANWAT from mm to m for PXLSM |
---|
329 | THETA1 = TH3D(i,1,j) ! potential temp at first layer |
---|
330 | |
---|
331 | IF(PXLSM_SOIL_NUDGE .EQ. 1) THEN |
---|
332 | !-- 2 m Temp and RH for Nudging |
---|
333 | T2_OLD = T2_NDG_OLD(I,J) |
---|
334 | T2_NEW = T2_NDG_NEW(I,J) |
---|
335 | VAPPRS = SVP1 * EXP(SVP2 * (T2_OLD - SVPT0) / ( T2_OLD - SVP3)) |
---|
336 | QSBT = EP_2 * VAPPRS / (SFCPRS - VAPPRS) |
---|
337 | RH2_OLD = Q2_NDG_OLD(I,J) / QSBT |
---|
338 | VAPPRS = SVP1 * EXP(SVP2 * (T2_NEW - SVPT0) / (T2_NEW - SVP3)) |
---|
339 | QSBT = EP_2 * VAPPRS / (SFCPRS - VAPPRS) |
---|
340 | RH2_NEW = Q2_NDG_NEW(I,J) / QSBT |
---|
341 | RH2OBS = CORB * RH2_OLD + CORE * RH2_NEW |
---|
342 | T2OBS(I,J) = CORB * T2_OLD + CORE * T2_NEW |
---|
343 | Q2OBS(I,J) = CORB * Q2_NDG_OLD(I,J) + CORE * Q2_NDG_NEW(I,J) |
---|
344 | SNOBS = CORB * SN_NDG_OLD(I,J) + CORE * SN_NDG_NEW(I,J) |
---|
345 | ENDIF |
---|
346 | IF (IFLAND .GT. 1.5) THEN ! if over water |
---|
347 | ZNT(I,J) = CZO * UST(I,J) * UST(I,J) / G + OZO |
---|
348 | ENDIF |
---|
349 | USTAR = MAX(UST(I,J),0.01) |
---|
350 | Z0 = ZNT(I,J) |
---|
351 | CPAIR = CPD * (1.0 + 0.84 * QV1) ! J/(K KG) |
---|
352 | |
---|
353 | !-- Note that when IFGROW = 0 is selected in Vegeland then max and min |
---|
354 | !-- LAI and Veg are the same |
---|
355 | T2I = TSLB(I,2,J) |
---|
356 | ! FSEAS = AMAX1(1.0 - 0.0016 * (298.0 - T2I) ** 2,0.0) ! BATS |
---|
357 | FSEAS = AMAX1(1.0 - 0.015625 * (290.0 - T2I) ** 2,0.0) ! JP97 |
---|
358 | IF (T2I .GE. 290.0) FSEAS = 1.0 |
---|
359 | |
---|
360 | LAI(I,J) = XLAIMN(I,J) + FSEAS*(XLAI(I,J) - XLAIMN(I,J)) |
---|
361 | VEGF_PX(I,J) = XVEGMN(I,J) + FSEAS*(XVEG(I,J) - XVEGMN(I,J)) |
---|
362 | |
---|
363 | !!--- Set LAI and VEGFRC according to deep soil temp |
---|
364 | |
---|
365 | IF (IFLAND .GT. 1.5) THEN ! if over water |
---|
366 | VEGF_PX(I,J) = 0. !MAKE Sure veg algorithms not used for water |
---|
367 | ENDIF |
---|
368 | |
---|
369 | ! Compute fractional snow area and snow albedo |
---|
370 | CALL PXSNOW (ITIMESTEP, SNOBS, SNOWNCV(I,J), SNOW(I,J), & |
---|
371 | SNOWH(I,J), XSNUP(I,J), ALBBCK(i,j), & |
---|
372 | SNOALB(I,J),VEGF_PX(I,J), SHDMIN(I,J), & |
---|
373 | HC_SNOW, SNOW_FRA, SNOWC(I,J), ALBEDO(I,J) ) |
---|
374 | |
---|
375 | SOLDN = GSW(I,J) / (1.0 - ALBEDO(I,J)) ! downward shortwave radiaton |
---|
376 | ISNOW = SNOWC(I,J) |
---|
377 | |
---|
378 | NUDGE=PXLSM_SOIL_NUDGE |
---|
379 | IF ( J .LE. 2 .OR. J .GE. (jme-1) ) NUDGE=0 |
---|
380 | |
---|
381 | IF ( RMOL(I,J) .GT. 0.0 ) THEN |
---|
382 | MOLX = AMIN1(1/RMOL(I,J),1000.0) |
---|
383 | ELSE IF ( RMOL(I,J) .LT. 0.0 ) THEN |
---|
384 | MOLX = AMAX1(1/RMOL(I,J),-1000.0) |
---|
385 | ELSE |
---|
386 | MOLX = 1000 |
---|
387 | ENDIF |
---|
388 | |
---|
389 | ZFUNC = ZF1 * (1.0 - ZF1 / MAX(100.,PBLH(I,J))) ** 2 |
---|
390 | QST12 = KARMAN * ZFUNC*(QV2-QV1) & |
---|
391 | / (ZA2-ZLVL) |
---|
392 | |
---|
393 | !--- LSM sub-time loop too prevent dt > 40 sec |
---|
394 | NTSPS = INT(DT / (DTPBLX + 0.000001) + 1.0) |
---|
395 | DTPBL = DT / NTSPS |
---|
396 | |
---|
397 | DO IT=1,NTSPS |
---|
398 | !... SATURATION VAPOR PRESSURE (MB) OVER WATER OR LAND |
---|
399 | IF ( TSLB(I,1,J) .LE. SVPT0 ) THEN ! with snow |
---|
400 | ES = SVP1 * EXP(22.514 - 6.15E3 / TSLB(I,1,J)) ! cb |
---|
401 | ELSE |
---|
402 | ES = SVP1 * EXP(SVP2 * (TSLB(I,1,J) - SVPT0) / (TSLB(I,1,J) - SVP3)) |
---|
403 | ENDIF |
---|
404 | QSS = ES * 0.622 / (SFCPRS - ES) |
---|
405 | |
---|
406 | !... beta method, Lee & Pielke (JAM,May1992) |
---|
407 | BETAP = 1.0 |
---|
408 | IF (IFLAND .LT. 1.5 .AND. ISNOW .LT. 0.5 .AND. SMOIS(I,1,J) .LE. FWFC) THEN |
---|
409 | BETAP = 0.25 * (1.0 - COS(SMOIS(I,1,J) / FWFC * PI)) ** 2 |
---|
410 | ENDIF |
---|
411 | |
---|
412 | |
---|
413 | CALL SURFPX (DTPBL, IFLAND, SNOWC(I,J), NUDGE, & !in |
---|
414 | SOLDN, GSW(I,J), LWDN, EMISSI, ZLVL, & !in |
---|
415 | MOLX, Z0, USTAR, & !in |
---|
416 | SFCPRS, DENS1, QV1, QSS, TA1, & !in |
---|
417 | THETA1, PRECIP, & !in |
---|
418 | CPAIR, PSIH(I,J), & !in |
---|
419 | RH2OBS,T2OBS(I,J), & !in |
---|
420 | VEGF_PX(I,J), ISTI, LAI(I,J), BETAP, & !in |
---|
421 | RSTMIN(I,J), HC_SNOW, SNOW_FRA, & !in |
---|
422 | FWWLT, FWFC, FCGSAT, FWSAT, FB, & !in |
---|
423 | FC1SAT,FC2R,FAS,FJP,DZS(1),DZS(2),QST12, & !in |
---|
424 | RADNET(I,J), GRDFLX(I,J), HFX(I,J), QFX(I,J), LH(I,J), & !out |
---|
425 | EG(I,J), ER(I,J), ETR(I,J), & !out |
---|
426 | QST(I,J), CAPG(I,J), RS(I,J), RA(I,J), & !out |
---|
427 | TSLB(I,1,J), TSLB(I,2,J), & !out |
---|
428 | SMOIS(I,1,J), SMOIS(I,2,J), WR, TA2(I,J), QA2(I,J) ) |
---|
429 | |
---|
430 | END DO ! Time internal PX time loop |
---|
431 | |
---|
432 | |
---|
433 | TSK(I,J)= TSLB(I,1,J) ! Skin temp set to 1 cm soil temperature in PX for now |
---|
434 | CANWAT(I,J) = WR * 1000. ! convert WR back to mm for CANWAT |
---|
435 | |
---|
436 | ENDDO ! END MIAN I LOOP |
---|
437 | ENDDO ! END MAIN J LOOP |
---|
438 | |
---|
439 | !------------------------------------------------------ |
---|
440 | END SUBROUTINE pxlsm |
---|
441 | !------------------------------------------------------ |
---|
442 | !*************************************************************************** |
---|
443 | !*************************************************************************** |
---|
444 | SUBROUTINE VEGELAND( landusef, vegfra, & ! in |
---|
445 | shdmin, shdmax, & |
---|
446 | soilctop, soilcbot, nlcat, nscat, & |
---|
447 | znt, xlai, xlaimn, rstmin, xveg, xvegmn, & |
---|
448 | xsnup, & |
---|
449 | ids,ide, jds,jde, kds,kde, & |
---|
450 | ims,ime, jms,jme, kms,kme, & |
---|
451 | its,ite, jts,jte, kts,kte ) |
---|
452 | !*************************************************************************** |
---|
453 | ! |
---|
454 | ! CALLED FROM Sub. bl_init in module_physics.init.F |
---|
455 | ! |
---|
456 | ! THIS PROGRAM PROCESSES THE USGS LANDUSE DATA |
---|
457 | ! WHICH HAS BEEN GRIDDED BY THE WPS SYSTEM |
---|
458 | ! AND PRODUCES 2-D FIELDS OF LU RELATED PARAMETERS |
---|
459 | ! FOR USE IN THE PX SURFACE MODEL |
---|
460 | ! |
---|
461 | ! |
---|
462 | ! REVISION HISTORY: |
---|
463 | ! AX Oct 2004 - developed WRF version based on VEGELAND in the MM5 PX LSM |
---|
464 | ! RG Dec 2006 - revised for WRFV2.1.2 |
---|
465 | ! JP Dec 2007 - revised for WRFV3 - removed IFGROW options |
---|
466 | !****************************************************************************** |
---|
467 | |
---|
468 | |
---|
469 | IMPLICIT NONE |
---|
470 | !... |
---|
471 | INTEGER, INTENT(IN) :: ids,ide, jds,jde, kds,kde, & |
---|
472 | ims,ime, jms,jme, kms,kme, & |
---|
473 | its,ite, jts,jte, kts,kte |
---|
474 | |
---|
475 | INTEGER , INTENT(IN) :: NSCAT, NLCAT |
---|
476 | |
---|
477 | REAL, DIMENSION( ims:ime , 1:NLCAT, jms:jme ), INTENT(IN) :: LANDUSEF |
---|
478 | REAL, DIMENSION( ims:ime , 1:NSCAT, jms:jme ), INTENT(IN) :: SOILCTOP, SOILCBOT |
---|
479 | |
---|
480 | REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: VEGFRA, SHDMIN, SHDMAX |
---|
481 | |
---|
482 | REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ZNT |
---|
483 | |
---|
484 | REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT) :: XLAI, XLAIMN, RSTMIN, & |
---|
485 | XVEG, XVEGMN, XSNUP |
---|
486 | |
---|
487 | !... local variables |
---|
488 | |
---|
489 | INTEGER :: itf, jtf, k, j, i |
---|
490 | REAL :: SUMLAI, SUMLMN, SUMRSI, SUMLZ0, SUMVEG, SUMVMN, ALAI, VEGF, SUMSNUP |
---|
491 | REAL :: VFMX, VFMN, VSEAS, FAREA, FWAT, ZNOTC |
---|
492 | REAL, DIMENSION( NLCAT ) :: LAIMX, LAIMN, Z0, VEG, VEGMN, SNUP |
---|
493 | REAL, PARAMETER :: ZNOTCMN = 5.0 ! CM, MIN Zo FOR CROPS |
---|
494 | REAL, PARAMETER :: ZNOTCMX = 15.0 ! CM, MAX Zo FOR CROPS |
---|
495 | |
---|
496 | !***************************************************************************** |
---|
497 | ! USGS LU characterization |
---|
498 | !--------------------------- |
---|
499 | ! Name Rstmin Zo Mxfr MnFr MxLA MnLA |
---|
500 | ! 1 Urban 150. 50. 40. 20. 2.0 0.5 Urban or Built-up Land |
---|
501 | ! 2 DrCrp 70. 10. 95. 15. 3.0 0.5 Dryland Cropland and Pasture |
---|
502 | ! 3 IrCrp 60. 10. 95. 10. 3.0 0.5 Irrigated Cropland and Pasture |
---|
503 | ! 4 MixCp 70. 10. 95. 15. 3.0 0.5 Mixed Dry/Irr Crop and Past |
---|
504 | ! 5 CrGrM 80. 10. 95. 35. 2.5 1.0 Grassland/Cropland Mosaic |
---|
505 | ! 6 CrWdM 180. 40. 95. 40. 4.0 1.5 Woodland/Cropland Mosaic |
---|
506 | ! 7 GrsLd 100. 7. 95. 70. 2.5 1.0 Grassland |
---|
507 | ! 8 ShrLd 200. 20. 70. 50. 3.0 1.0 Shrubland |
---|
508 | ! 9 ShrGr 150. 20. 85. 60. 3.0 1.0 Mixed Shrubland/Grassland |
---|
509 | ! 10 Savan 120. 20. 80. 60. 2.0 1.0 Savanna |
---|
510 | ! 11 DBFst 200. 50. 95. 50. 5.0 1.0 Broadleaf Deciduous Forest |
---|
511 | ! 12 DNFst 175. 50. 95. 50. 5.0 1.0 Deciduous Coniferous Forest |
---|
512 | ! 13 EBFst 120. 40. 95. 85. 5.0 4.0 Evergreen Broadleaf Forest (Palm?) |
---|
513 | ! 14 ENFst 175. 50. 90. 80. 4.0 3.0 Evergreen Coniferous Forest |
---|
514 | ! 15 MxFst 200. 50. 95. 60. 5.0 2.0 Mixed forest |
---|
515 | ! 16 Water 9999. 0.1 00. 00. 0.0 0.0 Water |
---|
516 | ! 17 HWtld 164. 15. 60. 40. 2.0 1.0 Herbaceous Wetland (none in east) |
---|
517 | ! 18 WWtld 200. 45. 90. 80. 5.0 3.0 Forested Wetlands (e.g. Everglades) |
---|
518 | ! 19 BarSp 100. 5. 10. 05. 0.5 0.2 Barren or Sparsely Vegetated |
---|
519 | ! 20 HrTun 150. 10. 20. 10. 1.0 0.5 Herbaceous Tundra |
---|
520 | ! 21 WdTun 200. 10. 30. 10. 1.0 0.5 Shrub and Brush Tundra |
---|
521 | ! 22 MxTun 150. 5. 20. 05. 1.0 0.5 Mixed Tundra |
---|
522 | ! 23 BGTun 100. 5. 5. 02. 0.1 0.1 Bare Ground Tundra |
---|
523 | ! 24 SnwIc 300. 5. 5. 02. 0.1 0.1 Perennial Snowfields or Glaciers |
---|
524 | !----------------------------------------------------------------------------- |
---|
525 | |
---|
526 | REAL, DIMENSION(24) :: RSMIN, Z00, VEG0, VEGMN0, LAI0, LAIMN0, SNUP0 |
---|
527 | |
---|
528 | DATA RSMIN /150.0, 70.0, 60.0, 70.0, 80.0, 180.0, 100.0, 200.0, & |
---|
529 | 150.0, 120.0, 200.0, 175.0, 120.0, 175.0, 200.0,9999.0, & |
---|
530 | 164.0, 200.0, 100.0, 150.0, 200.0, 150.0, 100.0, 300.0/ |
---|
531 | DATA Z00 / 50.0, 10.0, 10.0, 10.0, 10.0, 40.0, 7.0, 20.0, & |
---|
532 | 20.0, 20.0, 50.0, 50.0, 40.0, 50.0, 50.0, 0.1, & |
---|
533 | 15.0, 45.0, 5.0, 10.0, 10.0, 5.0, 5.0, 5.0/ |
---|
534 | DATA VEG0 / 40.0, 95.0, 95.0, 95.0, 95.0, 95.0, 95.0, 70.0, & |
---|
535 | 85.0, 80.0, 95.0, 95.0, 95.0, 90.0, 95.0, 0.00, & |
---|
536 | 60.0, 90.0, 10.0, 20.0, 30.0, 20.0, 5.0, 5.0/ |
---|
537 | DATA VEGMN0/ 20.0, 15.0, 10.0, 15.0, 35.0, 40.0, 70.0, 50.0, & |
---|
538 | 60.0, 60.0, 50.0, 50.0, 85.0, 80.0, 60.0, 0.0, & |
---|
539 | 40.0, 80.0, 5.0, 10.0, 10.0, 5.0, 2.0, 2.0/ |
---|
540 | DATA LAI0 / 2.0, 3.0, 3.0, 3.0, 2.5, 4.0, 2.5, 3.0, & |
---|
541 | 3.0, 2.0, 5.0, 5.0, 5.0, 4.0, 5.0, 0.0, & |
---|
542 | 2.0, 5.0, 0.50, 1.0, 1.0, 1.0, 0.1, 0.1/ |
---|
543 | DATA LAIMN0/ 0.50, 0.50, 0.50, 0.50, 1.0, 1.5, 1.0, 1.0, & |
---|
544 | 1.0, 1.0, 1.0, 1.0, 4.0, 3.0, 2.0, 0.0, & |
---|
545 | 1.0, 3.0, 0.20, 0.50, 0.50, 0.50, 0.10, 0.10/ |
---|
546 | DATA SNUP0/ 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.03, & |
---|
547 | 0.035, 0.04, 0.08, 0.08, 0.08, 0.08, 0.08, 0.01, & |
---|
548 | 0.01, 0.01, 0.02, 0.02, 0.025, 0.025, 0.025, 0.02/ |
---|
549 | |
---|
550 | !---- INITIALIZE PARAMETERS |
---|
551 | |
---|
552 | INTEGER :: KWAT |
---|
553 | DATA KWAT / 16/ |
---|
554 | |
---|
555 | ! This routine expects 24 landuse categories. Stop if NLCAT is different. |
---|
556 | IF(NLCAT .NE. 24)CALL wrf_error_fatal('in PXLSM - num_land_cat must be 24 for this option ') |
---|
557 | |
---|
558 | !-------------------------------------------------------------------- |
---|
559 | !-- Initialize 2 and 3-D veg parameters to be cacluated |
---|
560 | |
---|
561 | DO K=1,NLCAT |
---|
562 | LAIMX(K) = LAI0(K) |
---|
563 | LAIMN(K) = LAIMN0(K) |
---|
564 | Z0(K) = Z00(K) |
---|
565 | VEG(K) = VEG0(K) |
---|
566 | VEGMN(K) = VEGMN0(K) |
---|
567 | SNUP(K) = SNUP0(K) |
---|
568 | ENDDO |
---|
569 | |
---|
570 | DO J = jts,jte |
---|
571 | DO I = its,ite |
---|
572 | XLAI(I,J) = 0.0 |
---|
573 | XLAIMN(I,J) = 0.0 |
---|
574 | RSTMIN(I,J) = 9999.0 |
---|
575 | XVEG(I,J) = 0.0 |
---|
576 | XVEGMN(I,J) = 0.0 |
---|
577 | XSNUP(I,J) = 0.0 |
---|
578 | ENDDO ! END LOOP THROUGH GRID CELLS |
---|
579 | ENDDO ! END LOOP THROUGH GRID CELLS |
---|
580 | !-------------------------------------------------------------------- |
---|
581 | |
---|
582 | DO J = jts,jte |
---|
583 | DO I = its,ite |
---|
584 | |
---|
585 | !-- INITIALIZE SUMS |
---|
586 | SUMLAI = 0.0 |
---|
587 | SUMLMN = 0.0 |
---|
588 | SUMRSI = 0.0 |
---|
589 | SUMLZ0 = 0.0 |
---|
590 | SUMVEG = 0.0 |
---|
591 | SUMVMN = 0.0 |
---|
592 | ALAI = 0.0 |
---|
593 | SUMSNUP= 0.0 |
---|
594 | |
---|
595 | !-- ESTIMATE CROP EMERGANCE DATE FROM VEGFRAC |
---|
596 | VFMX = SHDMAX(I,J) + 0.001 |
---|
597 | VFMN = SHDMIN(I,J) |
---|
598 | VEGF = VEGFRA(I,J) |
---|
599 | !-- Computations for VEGETATION CELLS ONLY |
---|
600 | IF(VFMX.GT.0.0.AND.LANDUSEF(I,KWAT,J).LT.1.00) THEN |
---|
601 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
602 | IF(VEGF.LE.VFMN) THEN |
---|
603 | VSEAS = 0.0 |
---|
604 | ELSE |
---|
605 | VSEAS = ((VEGF-VFMN)/(VFMX-VFMN)) |
---|
606 | ENDIF |
---|
607 | ! print *,I,J,VSEAS,VEGF-VFMN,VFMX-VFMN |
---|
608 | IF(VSEAS.GT.1.0.OR.VSEAS.LT.0.0) THEN |
---|
609 | print *,' VSEAS NOT BETWEEN 0 AND 1, STOP', & |
---|
610 | ' VSEAS=',VSEAS,VEGF,VFMX,VFMN |
---|
611 | STOP |
---|
612 | ENDIF |
---|
613 | ZNOTC = ZNOTCMN * (1-VSEAS) + ZNOTCMX * VSEAS ! Zo FOR CROPS |
---|
614 | DO K = 1, NLCAT |
---|
615 | LAIMX(K) = LAIMN0(K) * (1-VSEAS) + LAI0(K) * VSEAS |
---|
616 | LAIMN(K) = LAIMX(K) |
---|
617 | VEG(K) = VEGMN0(K) * (1-VSEAS) + VEG0(K) * VSEAS |
---|
618 | VEGMN(K) = VEG(K) |
---|
619 | !-- SEASONALLY VARY Zo FOR DryCrop (k=2) OR Irigated Crop (k=3) OR Mix Crop (k=4) |
---|
620 | IF (K .GE. 2 .AND. K .LE. 4) THEN |
---|
621 | Z0(K) = ZNOTC |
---|
622 | !-- CrGrM (k=5) or CrWdM (k=6) USE AVG WITH GRASS AND FOREST |
---|
623 | ELSE IF (K .GE.5 .AND. K .LE. 6) THEN |
---|
624 | Z0(K) = 0.5 * (ZNOTC + Z00(K)) |
---|
625 | ENDIF |
---|
626 | ENDDO |
---|
627 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
628 | |
---|
629 | ENDIF !-- IF cell is vegetation |
---|
630 | !------------------------------------- |
---|
631 | !-- LOOP THROUGH LANDUSE Fraction and compute totals |
---|
632 | DO K = 1, NLCAT |
---|
633 | FAREA = LANDUSEF(I,K,J) |
---|
634 | SUMLAI = SUMLAI + LAIMX(K) * FAREA |
---|
635 | SUMLMN = SUMLMN + LAIMN(K) * FAREA |
---|
636 | ALAI = ALAI + FAREA |
---|
637 | SUMRSI = SUMRSI + FAREA * LAIMX(K) / RSMIN(K) |
---|
638 | SUMLZ0 = SUMLZ0 + FAREA * ALOG(Z0(K)) |
---|
639 | SUMVEG = SUMVEG + FAREA * VEG(K) |
---|
640 | SUMVMN = SUMVMN + FAREA * VEGMN(K) |
---|
641 | SUMSNUP= SUMSNUP+ FAREA * SNUP(K) |
---|
642 | ENDDO |
---|
643 | |
---|
644 | !-- CHECK FOR WATER |
---|
645 | FWAT = LANDUSEF(I,KWAT,J) |
---|
646 | IF (FWAT .GT. 0.999) THEN |
---|
647 | XLAI(I,J) = LAIMX(KWAT) |
---|
648 | XLAIMN(I,J) = LAIMN(KWAT) |
---|
649 | RSTMIN(I,J) = RSMIN(KWAT) |
---|
650 | ZNT(I,J) = Z0(KWAT) |
---|
651 | XVEG(I,J) = VEG(KWAT) |
---|
652 | XVEGMN(I,J) = VEGMN(KWAT) |
---|
653 | XSNUP(I,J) = SNUP(KWAT) |
---|
654 | ELSE |
---|
655 | IF (FWAT .GT. 0.10) THEN |
---|
656 | ALAI = ALAI - FWAT |
---|
657 | SUMLZ0 = SUMLZ0 - FWAT * ALOG(Z0(KWAT)) |
---|
658 | ENDIF |
---|
659 | XLAI(I,J) = SUMLAI / ALAI |
---|
660 | XLAIMN(I,J) = SUMLMN / ALAI |
---|
661 | RSTMIN(I,J) = SUMLAI / SUMRSI |
---|
662 | ZNT(I,J) = EXP(SUMLZ0/ALAI) |
---|
663 | XVEG(I,J) = SUMVEG / ALAI |
---|
664 | XVEGMN(I,J) = SUMVMN / ALAI |
---|
665 | XSNUP(I,J) = SUMSNUP/ALAI |
---|
666 | ENDIF |
---|
667 | |
---|
668 | IF (FWAT .GT. 0.50) THEN |
---|
669 | ZNT(I,J) = Z0(KWAT) |
---|
670 | ENDIF |
---|
671 | |
---|
672 | ZNT(I,J) = ZNT(I,J) * 0.01 !CONVERT TO M |
---|
673 | XVEG(I,J) = XVEG(I,J) * 0.01 !CONVERT TO FRAC |
---|
674 | XVEGMN(I,J) = XVEGMN(I,J) * 0.01 |
---|
675 | |
---|
676 | ENDDO ! END LOOP THROUGH GRID CELLS |
---|
677 | ENDDO ! END LOOP THROUGH GRID CELLS |
---|
678 | !-------------------------------------------------------------------- |
---|
679 | |
---|
680 | !------------------------------------------------------------------------------ |
---|
681 | END SUBROUTINE vegeland |
---|
682 | !------------------------------------------------------------------------------ |
---|
683 | !********************************************************************** |
---|
684 | SUBROUTINE SURFPX(DTPBL, IFLAND, ISNOW, NUDGEX, & !in |
---|
685 | SOLDN, GSW, LWDN, EMISSI, Z1, & !in |
---|
686 | MOL, ZNT, UST, & !in |
---|
687 | PSURF, DENS1, QV1, QSS, TA1, & !in |
---|
688 | THETA1, PRECIP, & !in |
---|
689 | CPAIR, PSIH, & !in |
---|
690 | RH2OBS, T2OBS, & !in |
---|
691 | VEGFRC, ISTI, LAI, BETAP, & !in |
---|
692 | RSTMIN, HC_SNOW, SNOW_FRA, & !in |
---|
693 | WWLT, WFC, CGSAT, WSAT, B, & !in |
---|
694 | C1SAT, C2R, AS, JP, DS1, DS2,QST12, & !in |
---|
695 | RADNET, GRDFLX, HFX, QFX, LH, EG, ER, ETR, & !out |
---|
696 | QST, CAPG, RS, RA, TG, T2, & !out |
---|
697 | WG, W2, WR, TA2, QA2 ) !out |
---|
698 | |
---|
699 | IMPLICIT NONE |
---|
700 | !********************************************************************** |
---|
701 | ! |
---|
702 | ! FUNCTION: |
---|
703 | ! THIS SUBROUTINE COMPUTES SOIL MOISTURE AND TEMPERATURE TENDENCIES |
---|
704 | ! BY SOLVING THE PROGNOSTIC EQUATIONS IN PX95. |
---|
705 | ! |
---|
706 | ! SUBROUTINES CALLED: |
---|
707 | ! SUB. QFLUX compute the soil and canopy evaporation, and transpiration |
---|
708 | ! SUB. SMASS compute nudging coefficients for soil moisture and temp nudging |
---|
709 | ! |
---|
710 | ! ARGUMENTS: |
---|
711 | ! DTPBL: TIME STEP OF THE MINOR LOOP FOR THE LAND-SURFACE/PBL MODEL |
---|
712 | ! IFLAND: INDEX WHICH INDICATES THE TYPE OF SURFACE,=1,LAND;=2,SEA |
---|
713 | ! ISNOW: SNOW (=1) OR NOT (=0) |
---|
714 | ! NUDGE: SWITCH FOR SOIL MOISTURE NUDGING |
---|
715 | ! SOLDN: SHORT-WAVE RADIATION |
---|
716 | ! LWDN: LONG-WAVE RADIATION |
---|
717 | ! EMISSI: EMISSIVITY |
---|
718 | ! Z1: HEIGHT OF THE LOWEST HALF LAYER |
---|
719 | ! MOL: MONIN-OBUKOV LENGH (M) |
---|
720 | ! ZNT: ROUGHNESS LENGTH (M) |
---|
721 | ! UST: FRICTION VELOCITY (M/S) |
---|
722 | ! TST: Turbulent moisture scale |
---|
723 | ! RA: AERODYNAMIC RESISTENCE |
---|
724 | ! PSURF: P AT SURFACE (CB) |
---|
725 | ! DENS1: AIR DENSITY AT THE FIRST HALF LAYER |
---|
726 | ! QV1: Air humidity at first half layer |
---|
727 | ! QSS: Saturation mixing ratio at ground |
---|
728 | ! TA1: Air temperature at first half layer |
---|
729 | ! THETA1: Potential temperature at first half layer |
---|
730 | ! PRECIP: Precipitation rate in m/s |
---|
731 | ! STBOLT: STEFAN BOLTZMANN'S CONSTANT |
---|
732 | ! KARMAN: VON KARMAN CONSTANT |
---|
733 | ! CPAIR: Specific heat of moist air (M^2 S^-2 K^-1) |
---|
734 | ! TAUINV: 1/1DAY(SEC) |
---|
735 | ! VEGFRC: Vegetation coverage |
---|
736 | ! ISTI: soil type |
---|
737 | ! LAI: Leaf area index |
---|
738 | ! BETAP: Coefficient for bare soil evaporation |
---|
739 | ! THZ1OB: Observed TEMP FROM ANAL OF OBS TEMPS AT SCREEN HT |
---|
740 | ! RHOBS: Observed relative humidity at SCREEN HT |
---|
741 | ! RSTMIN Minimum Stomatol resistence |
---|
742 | !... Outputs from SURFPX |
---|
743 | ! RADNET: Net radiation |
---|
744 | ! HFX: SENSIBLE HEAT FLUX (W / M^2) |
---|
745 | ! QFX: TOTAL EVAP FLUX (KG / M^2 S) |
---|
746 | ! GRDFLX: Ground heat flux (W / M^2) |
---|
747 | ! QST: Turbulent moisture scale |
---|
748 | ! CAPG: THERMAL CAPACITY OF GROUND SLAB (J/M^2/K) |
---|
749 | ! RS: Surface resistence |
---|
750 | ! RA: Surface aerodynamic resistence |
---|
751 | ! EG: evaporation from ground (bare soil) |
---|
752 | ! ER: evaporation from canopy |
---|
753 | ! ETR: transpiration from vegetation |
---|
754 | ! TA2: diagnostic 2-m temperature from surface layer and lsm |
---|
755 | ! |
---|
756 | !... Updated variables in this subroutine |
---|
757 | ! TG: Soil temperature at first soil layer |
---|
758 | ! T2: Soil temperature in root zone |
---|
759 | ! WG: Soil moisture at first soil layer |
---|
760 | ! W2: Soil moisture at root zone |
---|
761 | ! WR: Canopy water content in m |
---|
762 | ! |
---|
763 | ! REVISION HISTORY: |
---|
764 | ! AX 2/2005 - developed WRF version based on the MM5 PX LSM |
---|
765 | ! |
---|
766 | !********************************************************************** |
---|
767 | ! |
---|
768 | !---------------------------------------------------------------------- |
---|
769 | ! |
---|
770 | !.......Arguments |
---|
771 | |
---|
772 | !.. Integer |
---|
773 | INTEGER , INTENT(IN) :: ISTI, NUDGEX |
---|
774 | |
---|
775 | !... Real |
---|
776 | REAL , INTENT(IN) :: DTPBL, DS1, DS2 |
---|
777 | REAL , INTENT(IN) :: IFLAND, ISNOW |
---|
778 | REAL , INTENT(IN) :: SOLDN, GSW, LWDN, EMISSI, Z1 |
---|
779 | REAL , INTENT(IN) :: ZNT |
---|
780 | REAL , INTENT(IN) :: PSURF, DENS1, QV1, QSS, TA1, THETA1, PRECIP |
---|
781 | REAL , INTENT(IN) :: CPAIR |
---|
782 | REAL , INTENT(IN) :: VEGFRC, LAI |
---|
783 | REAL , INTENT(IN) :: RSTMIN, HC_SNOW, SNOW_FRA |
---|
784 | REAL , INTENT(IN) :: WWLT, WFC, CGSAT, WSAT, B, C1SAT, C2R, AS, JP |
---|
785 | REAL , INTENT(IN) :: RH2OBS,T2OBS |
---|
786 | REAL , INTENT(IN) :: QST12 |
---|
787 | |
---|
788 | REAL , INTENT(OUT) :: RADNET, EG, ER, ETR |
---|
789 | REAL , INTENT(OUT) :: QST, CAPG, RS, TA2, QA2 |
---|
790 | |
---|
791 | REAL , INTENT(INOUT) :: TG, T2, WG, W2, WR, UST, RA, BETAP |
---|
792 | REAL , INTENT(INOUT) :: GRDFLX, QFX, HFX, LH, PSIH, MOL |
---|
793 | |
---|
794 | !... Local Variables |
---|
795 | |
---|
796 | !... Real |
---|
797 | REAL :: HF, LV, CQ4 |
---|
798 | REAL :: RAH, RAW, ET, W2CG, CG, CT, SOILFLX, CPOT, THETAG |
---|
799 | REAL :: ZOL, ZOBOL, ZNTOL, Y, Y0, PSIH15, YNT |
---|
800 | REAL :: WGNUDG, W2NUDG, ALPH1, ALPH2, BET1, BET2, T1P5 |
---|
801 | REAL :: CQ1, CQ2, CQ3, COEFFNP1, COEFFN, TSNEW, TSHLF, T2NEW |
---|
802 | REAL :: ROFF, WRMAX, PC, DWR, PNET, TENDWR, WRNEW |
---|
803 | REAL :: COF1, CFNP1WR, CFNWR, PG, FASS |
---|
804 | REAL :: TENDW2, W2NEW, W2HLF, W2REL, C1, C2, WEQ, CFNP1, CFN, WGNEW |
---|
805 | REAL :: ALN10, TMP1, TMP2, TMP3, AA, AB, TST, RBH, CTVEG |
---|
806 | REAL :: QST1,PHIH,PSIOB |
---|
807 | REAL :: T2NUD, T2NUDF |
---|
808 | REAL :: VAPPRS, QSBT, RH2MOD |
---|
809 | |
---|
810 | !... Parameters |
---|
811 | REAL :: ZOBS, GAMAH, BETAH, SIGF, BH, CT_SNOW |
---|
812 | REAL, PARAMETER :: CV = 8.0E-6 ! K-M2/J |
---|
813 | PARAMETER (ZOBS = 1.5) ! height for observed screen temp., (m) |
---|
814 | PARAMETER (BH = 15.7) |
---|
815 | PARAMETER (GAMAH = 16. ) !11.6) |
---|
816 | PARAMETER (BETAH = 5.0 ) !8.21) |
---|
817 | PARAMETER (SIGF = 0.5) ! rain interception see LSM (can be 0-1) |
---|
818 | !PARAMETER (CT_SNOW = 5.54E-5) |
---|
819 | ! New value of CT_SNOW calibrated using multilayer soil model where csnow=6.9E5 J/(m3 K) |
---|
820 | ! from NCAR CSM |
---|
821 | PARAMETER (CT_SNOW = 2.0E-5) |
---|
822 | ALN10 = ALOG(10.0) |
---|
823 | RADNET = SOLDN - (EMISSI *(STBOLT *TG **4 - LWDN)) ! NET RADIATION |
---|
824 | |
---|
825 | !-------------------------------------------------------------------- |
---|
826 | CPOT= (100.0 / PSURF) ** ROVCP ! rcp is global constant(module_model_constants) |
---|
827 | THETAG = TG * CPOT |
---|
828 | |
---|
829 | ZOL = Z1/MOL |
---|
830 | ZOBOL = ZOBS/MOL |
---|
831 | ZNTOL = ZNT/MOL |
---|
832 | |
---|
833 | !----------------------------------------------------------------------------------------- |
---|
834 | IF (MOL .LT. 0.0) THEN |
---|
835 | Y = ( 1.0 - GAMAH * ZOL ) ** 0.5 |
---|
836 | Y0 = ( 1.0 - GAMAH * ZOBOL ) ** 0.5 |
---|
837 | YNT = ( 1.0 - GAMAH * ZNTOL ) ** 0.5 |
---|
838 | PSIH15 = 2.0 * ALOG((Y + 1.0) / (Y0 + 1.0)) |
---|
839 | PSIH = 2.0 * ALOG((Y + 1.0) / (YNT + 1.0)) |
---|
840 | PSIOB = 2.0 * ALOG((Y0 + 1.0) / (YNT + 1.0)) |
---|
841 | PHIH = 1.0 / Y |
---|
842 | ELSE |
---|
843 | IF((ZOL-ZNTOL).LE.1.0) THEN |
---|
844 | PSIH = -BETAH*(ZOL-ZNTOL) |
---|
845 | ELSE |
---|
846 | PSIH = 1.-BETAH-(ZOL-ZNTOL) |
---|
847 | ENDIF |
---|
848 | IF ((ZOBOL - ZNTOL) .LE. 1.0) THEN |
---|
849 | PSIOB = -BETAH * (ZOBOL - ZNTOL) |
---|
850 | ELSE |
---|
851 | PSIOB = 1.0 - BETAH - (ZOBOL - ZNTOL) |
---|
852 | ENDIF |
---|
853 | PSIH15 = PSIH - PSIOB |
---|
854 | IF(ZOL.LE.1.0) THEN |
---|
855 | PHIH = 1.0 + BETAH * ZOL |
---|
856 | ELSE |
---|
857 | PHIH = BETAH + ZOL |
---|
858 | ENDIF |
---|
859 | ENDIF |
---|
860 | !----------------------------------------------------------------------------------------- |
---|
861 | !-- ADD RA AND RB FOR HEAT AND MOISTURE |
---|
862 | !... RB FOR HEAT = 5 /UST |
---|
863 | !... RB FOR WATER VAPOR = 5*(0.599/0.709)^2/3 /UST = 4.503/UST |
---|
864 | RA=PR0* ( ALOG(Z1/ZNT) - PSIH )/(KARMAN*UST) |
---|
865 | RAH = RA + 5.0 / UST |
---|
866 | RAW = RA + 4.503 / UST |
---|
867 | !-------------------------------------------------------------------- |
---|
868 | !-- COMPUTE MOISTURE FLUX |
---|
869 | CALL QFLUX( DENS1, QV1, TA1, SOLDN, RAW, QSS, & |
---|
870 | VEGFRC, ISNOW, ISTI, IFLAND, LAI, BETAP, & |
---|
871 | WG, W2, WR, & |
---|
872 | RSTMIN, WWLT, WFC, & |
---|
873 | EG, ER, ETR, CQ4, RS, FASS) |
---|
874 | !-------------------------------------------------------------------- |
---|
875 | |
---|
876 | !-------------------------------------------------------------------- |
---|
877 | !..........Total evaporation (ET) |
---|
878 | ET = EG + ER + ETR |
---|
879 | QST = -ET / (DENS1 * UST) |
---|
880 | |
---|
881 | LV = 2.83E6 !-- LATENT HEAT OF SUBLIMATION AT 0C FROM STULL(1988) |
---|
882 | IF (ISNOW .LT. 0.5.AND.TG.GT.273.15) & |
---|
883 | LV = (2.501 - 0.00237 * (TG - 273.15)) * 1.E6 !-- FROM STULL(1988) in J/KG |
---|
884 | |
---|
885 | IF (IFLAND .LT. 1.5 ) QFX = ET !-- Recaculate QFX over land to account for P-X LSM EG, ER and ETR |
---|
886 | LH = LV * QFX |
---|
887 | !----------------------------------------------------------------------------------------- |
---|
888 | |
---|
889 | !----------------------------------------------------------------------------------------- |
---|
890 | ! Surface sensible heat flux |
---|
891 | TST = (THETA1 - THETAG ) / (UST*RAH) |
---|
892 | HF = UST * TST |
---|
893 | HFX = AMAX1(-DENS1 * CPAIR * HF, -250.0) ! using -250. from MM5 |
---|
894 | !----------------------------------------------------------------------------------------- |
---|
895 | |
---|
896 | !----------------------------------------------------------------------------------------- |
---|
897 | ! Compute the diagnosed 2m Q and T consistent with PX LSM |
---|
898 | QST1 = 0.5*(QST+QST12/PHIH) |
---|
899 | TA2= (THETAG + TST * (PR0 / KARMAN * (ALOG(ZOBS / ZNT) - PSIOB)+5.))/CPOT |
---|
900 | QA2= QV1 - QST1 * PR0/ KARMAN * (ALOG(Z1 / ZOBS) - PSIH15) |
---|
901 | !-- Relative humidity |
---|
902 | VAPPRS = SVP1 * EXP(SVP2 * (TA2 - SVPT0) / (TA2 - SVP3)) |
---|
903 | QSBT = EP_2 * VAPPRS / (PSURF - VAPPRS) |
---|
904 | RH2MOD = QA2 / QSBT |
---|
905 | !----------------------------------------------------------------------------------------- |
---|
906 | IF (IFLAND .LT. 1.5 ) THEN |
---|
907 | W2CG = AMAX1(W2,WWLT) |
---|
908 | CG = CGSAT * 1.0E-6 * (WSAT/ W2CG) ** & |
---|
909 | (0.5 * B / ALN10) |
---|
910 | CT = 1./((1-VEGFRC)/CG + VEGFRC/CV) |
---|
911 | CT = 1./(SNOW_FRA/CT_SNOW + (1-SNOW_FRA)/CT) |
---|
912 | CAPG = 1.0/CT |
---|
913 | |
---|
914 | SOILFLX = 2.0 * PI * TAUINV * (TG - T2) |
---|
915 | GRDFLX = SOILFLX / CT |
---|
916 | ENDIF |
---|
917 | !----------------------------------------------------------------------------------------- |
---|
918 | |
---|
919 | |
---|
920 | !-------------------------------------------------------------------- |
---|
921 | !-- ASSIMILATION --- COMPUTE SOIL MOISTURE NUDGING FROM TA2 and RH2 |
---|
922 | !-------COMPUTE ASSIMILATION COEFFICIENTS FOR ALL I |
---|
923 | IF (IFLAND .LT. 1.5 ) THEN |
---|
924 | IF (NUDGEX .EQ. 0) THEN !-- NO NUDGING CASE |
---|
925 | WGNUDG = 0.0 |
---|
926 | W2NUDG = 0.0 |
---|
927 | T2NUD = 0.0 |
---|
928 | ELSE !-- NUDGING CASE |
---|
929 | |
---|
930 | CALL SMASS (ISTI, FASS, SOLDN, VEGFRC, RA, WWLT, WFC, & |
---|
931 | ALPH1, ALPH2, BET1, BET2, T2NUDF) |
---|
932 | |
---|
933 | !--COMPUTE MODEL RH |
---|
934 | WGNUDG = ALPH1 * (T2OBS - TA2) + ALPH2 * (RH2OBS - RH2MOD) * 100 |
---|
935 | W2NUDG = BET1 * (T2OBS - TA2) + BET2 * (RH2OBS - RH2MOD) * 100 |
---|
936 | IF (W2 .GE. WFC) W2NUDG = AMIN1(W2NUDG,0.0) |
---|
937 | IF (W2 .LE. WWLT) W2NUDG = AMAX1(W2NUDG,0.0) |
---|
938 | T2NUD = T2NUDF * (T2OBS - TA2) |
---|
939 | !print *, 'T2NUD =',T2NUD,T2NUDF |
---|
940 | ENDIF |
---|
941 | ENDIF |
---|
942 | !----------------------------------------------------------------------------------------- |
---|
943 | |
---|
944 | !----------------------------------------------------------------------------------------- |
---|
945 | !-- Compute new values for TS,T2,WG,W2 and WR. No change over ice or water (XLAND > 1) |
---|
946 | IF (IFLAND .LT. 1.5 ) THEN |
---|
947 | !-- SOLVE BY CRANK-NIC -- TENDTS=CT*(RADNET-HFX-QFX)-SOILFLX |
---|
948 | !-- Calculate the coefficients for implicit calculation of TG |
---|
949 | CQ1 = (1.0 - 0.622 * LV * CRANKP / (r_d * TG)) * QSS |
---|
950 | CQ2 = 0.622 * LV * QSS * CRANKP / (r_d * TG * TG) |
---|
951 | CQ3 = DENS1 * BETAP * (1.0 - VEGFRC) / RAW |
---|
952 | COEFFNP1 = 1.0 + DTPBL * CRANKP * (4.0 * EMISSI * STBOLT * TG ** 3 & |
---|
953 | * CT + DENS1 * CPAIR / RAH * CPOT * CT + 2.0 * PI & |
---|
954 | * TAUINV ) + DTPBL * (CT * LV * CQ2 * (CQ3 + CQ4)) |
---|
955 | COEFFN = CT * (GSW + EMISSI * (STBOLT * (4.0 * CRANKP - 1.0) & |
---|
956 | * TG ** 4 + LWDN) & !NET RAD |
---|
957 | + DENS1 * CPAIR / RAH * (THETA1 - (1.0 - CRANKP) * THETAG) & |
---|
958 | - LV * (CQ3 * (CQ1 - QV1) + CQ4 * (CQ1 - QV1))) & !SFC HEAT FLUX |
---|
959 | - 2.0 * PI * TAUINV * ((1.0 - CRANKP) * TG - T2) !SOIL FLUX |
---|
960 | TSNEW = (TG + DTPBL * COEFFN) / COEFFNP1 |
---|
961 | !-- FOR SNOW COVERED SURFACE TEMPERATURE IS NOT MORE THAN ZERO |
---|
962 | ! IF (ISNOW .GT. 0.5) TSNEW = AMIN1(TSNEW,273.15) |
---|
963 | TSHLF = 0.5 * ( TSNEW + TG) |
---|
964 | T2NEW = (T2 + DTPBL * TAUINV * T2TFAC * (TSHLF - (1 - CRANKP) * T2) & |
---|
965 | + DTPBL*T2NUD) & ! Added deep temperature nudging |
---|
966 | / (1.0 + DTPBL * TAUINV * T2TFAC * CRANKP) |
---|
967 | !-- REPLACE OLD with NEW Value |
---|
968 | TG = TSNEW |
---|
969 | T2 = T2NEW |
---|
970 | ENDIF |
---|
971 | !----------------------------------------------------------------------------------------- |
---|
972 | |
---|
973 | !----------------------------------------------------------------------------------------- |
---|
974 | ! Compute new subsurface soil and canopy moisture values DENS1. No change required over ocean. |
---|
975 | IF (IFLAND .LT. 1.5) THEN |
---|
976 | !-- Compute WR |
---|
977 | ROFF = 0.0 |
---|
978 | WRMAX = 0.2E-3 * VEGFRC * LAI ! max. WRMAX IN m |
---|
979 | !-- PC is precip. intercepted by veg.(M/S) |
---|
980 | PC = VEGFRC * SIGF * PRECIP |
---|
981 | DWR = (WRMAX - WR) / DTPBL !the tendency to reach max. |
---|
982 | PNET = PC - ER/ DENW ! residual of precip. and evap. |
---|
983 | IF (PNET .GT. DWR) THEN |
---|
984 | ROFF = PNET - DWR |
---|
985 | PC = PC - ROFF |
---|
986 | ENDIF |
---|
987 | IF (QSS .LT. QV1) THEN |
---|
988 | TENDWR = PC - ER / DENW |
---|
989 | WRNEW = WR + DTPBL * TENDWR |
---|
990 | ELSE |
---|
991 | COF1 = DENS1 / DENW * VEGFRC * (QSS - QV1) / RAW |
---|
992 | !-- using delta=wr/wrmax |
---|
993 | CFNP1WR = 1.0 + DTPBL * COF1 * CRANKP / WRMAX |
---|
994 | CFNWR = PC - COF1 * (1.0 - CRANKP) * WR / WRMAX |
---|
995 | WRNEW = (WR + DTPBL * CFNWR) / CFNP1WR |
---|
996 | ENDIF |
---|
997 | !-- Compute W2 |
---|
998 | !.......... |
---|
999 | PG = DENW * (PRECIP - PC) ! PG is precip. reaching soil (PC already including ROFF) |
---|
1000 | IF(ER.GT.0.5E-3)PRINT *,' PRECIP,PC,DTPBL,PNET=' & |
---|
1001 | ,PRECIP,PC,DTPBL,PNET |
---|
1002 | TENDW2 = 1.0 / (DENW * DS2) * (PG - EG - ETR) & |
---|
1003 | + (W2NUDG + WGNUDG) / DS2 ! NUDGING |
---|
1004 | W2NEW = W2 + DTPBL * TENDW2 |
---|
1005 | W2NEW = AMIN1(W2NEW,WSAT) |
---|
1006 | W2NEW = AMAX1(W2NEW,0.05) |
---|
1007 | W2HLF = 0.5 * (W2 + W2NEW) |
---|
1008 | !.. new values |
---|
1009 | W2 = W2NEW |
---|
1010 | WR = AMIN1(WRMAX,WRNEW) |
---|
1011 | if (WR .lt. 1.0E-8) WR = 0.0 |
---|
1012 | ENDIF |
---|
1013 | !----------------------------------------------------------------------------------------- |
---|
1014 | |
---|
1015 | !----------------------------------------------------------------------------------------- |
---|
1016 | ! Compute new surface soil moisture values (WR). |
---|
1017 | IF (IFLAND .LT. 1.5) THEN ! over ocean no change to wg w2,wr |
---|
1018 | !-- FOR SNOW COVERED SURFACE, ASSUME SURFACE IS SATURATED AND |
---|
1019 | ! WG AND W2 ARE NOT CHANGED |
---|
1020 | IF (ISNOW .GT.0.5) THEN |
---|
1021 | WG = WSAT |
---|
1022 | ELSE |
---|
1023 | W2REL = W2HLF / WSAT |
---|
1024 | IF (WG .GT. WWLT) THEN |
---|
1025 | C1 = C1SAT * (WSAT / WG) ** (0.5 * B + 1.0) |
---|
1026 | ELSE ! elimilate C1 for wg < wilting point |
---|
1027 | C1 = C1SAT * (WSAT / WWLT) ** (0.5 * B + 1.0) |
---|
1028 | ENDIF |
---|
1029 | C2 = C2R * W2HLF / (WSAT - W2HLF + 1.E-11) |
---|
1030 | IF (W2HLF .EQ. WSAT) THEN |
---|
1031 | WEQ = WSAT |
---|
1032 | ELSE |
---|
1033 | WEQ = W2HLF - AS * WSAT * W2REL ** JP * & |
---|
1034 | (1.0 - W2REL ** (8.0 * JP)) |
---|
1035 | ENDIF |
---|
1036 | |
---|
1037 | !.... The beta method, Lee & Pielke (JAM, May 1992) |
---|
1038 | CFNP1 = 1.0 + DTPBL * C2 * TAUINV * CRANKP |
---|
1039 | CFN = C1 / (DENW * DS1) * (PG - EG) - C2 * TAUINV * & |
---|
1040 | ((1.0 - CRANKP) * WG - WEQ) + WGNUDG/ DS1 |
---|
1041 | |
---|
1042 | WGNEW = AMAX1((WG + DTPBL * CFN) / CFNP1,0.001) |
---|
1043 | !-- NEW VALUES |
---|
1044 | WG = AMIN1(WGNEW,WSAT) |
---|
1045 | |
---|
1046 | ENDIF !endif for ISNOW |
---|
1047 | ENDIF !endif for XLAND |
---|
1048 | !----------------------------------------------------------------------------------------- |
---|
1049 | |
---|
1050 | END SUBROUTINE surfpx |
---|
1051 | !*********************************************************************** |
---|
1052 | !*********************************************************************** |
---|
1053 | |
---|
1054 | !*********************************************************************** |
---|
1055 | !*********************************************************************** |
---|
1056 | SUBROUTINE QFLUX (DENS1, QV1, TA1, RG, RAW, QSS, & ! in |
---|
1057 | VEGFRC, ISNOW, ISTI, IFLAND, LAI, BETAP, & ! in |
---|
1058 | WG, W2, WR, & ! in |
---|
1059 | RSTMIN, WWLT, WFC, & |
---|
1060 | EG, ER, ETR, CQ4, RS, FASS) ! out |
---|
1061 | |
---|
1062 | !*********************************************************************** |
---|
1063 | ! |
---|
1064 | ! FUNCTION: |
---|
1065 | ! THIS SUBROUTINE COMPUTES EVAPORATION FROM BARE SOIL (EG) AND FROM |
---|
1066 | ! THE WET PART OF CANOPY (ER) AND TRANSPIRATION FROM THE DRY PART OF |
---|
1067 | ! CANOPY (ETR). |
---|
1068 | ! |
---|
1069 | ! REVISION HISTORY: |
---|
1070 | ! A. Xiu Oct 2004 - adapted from the PX LSM in MM5 for the WRF system |
---|
1071 | ! R. Gilliam Dec 2006 - Completed WRF V2.1.2 implementation |
---|
1072 | ! |
---|
1073 | !*********************************************************************** |
---|
1074 | ! QFLUX ARGUMENT LIST: |
---|
1075 | ! ---------------------------------------------------------------------- |
---|
1076 | ! INPUTS: |
---|
1077 | !-- DENS1 air density at first layer |
---|
1078 | !-- QV1 air humidity at first layer |
---|
1079 | !-- TA1 air temperature at first layer |
---|
1080 | !-- RG shortwave radition reaching the ground |
---|
1081 | !-- RAW RA+RB for moisture |
---|
1082 | !-- QSS saturation mixing ratio at ground |
---|
1083 | !-- VEGFRC vegetation coverage |
---|
1084 | !-- ISNOW if snow on the ground |
---|
1085 | !-- ISTI soil type |
---|
1086 | !-- IFLAND if land (=1) or water (=2) |
---|
1087 | !-- LAI leaf area index |
---|
1088 | !-- BETAP |
---|
1089 | !-- WG soil moisture at first soil layer |
---|
1090 | !-- W2 soil moisture at root zone |
---|
1091 | !-- WR Canopy water |
---|
1092 | ! |
---|
1093 | ! OUTPUTS FROM QFLUX: |
---|
1094 | !-- EG evaporation from ground (bare soil) |
---|
1095 | !-- ER evaporation from canopy |
---|
1096 | !-- ETR transpiration from vegetation |
---|
1097 | !-- CQ4 |
---|
1098 | !-- RS surface resistence |
---|
1099 | !-- FASS parameter for soil moisture nudging |
---|
1100 | ! ---------------------------------------------------------------------- |
---|
1101 | |
---|
1102 | IMPLICIT NONE |
---|
1103 | |
---|
1104 | ! ---------------------------------------------------------------------- |
---|
1105 | ! DECLARATIONS - INTEGER |
---|
1106 | INTEGER , INTENT(IN) :: ISTI |
---|
1107 | |
---|
1108 | ! ---------------------------------------------------------------------- |
---|
1109 | ! DECLARATIONS - REAL |
---|
1110 | REAL , INTENT(IN) :: ISNOW, IFLAND |
---|
1111 | REAL , INTENT(IN) :: DENS1, QV1, TA1, RG, RAW, QSS, & |
---|
1112 | VEGFRC, LAI, & |
---|
1113 | WG, W2, WR, RSTMIN |
---|
1114 | REAL , INTENT(INOUT) :: BETAP |
---|
1115 | REAL, INTENT(IN) :: WWLT, WFC |
---|
1116 | |
---|
1117 | REAL , INTENT(OUT) :: EG, ER, ETR, CQ4, RS, FASS |
---|
1118 | |
---|
1119 | !... Local Variables |
---|
1120 | |
---|
1121 | !... Real |
---|
1122 | REAL :: WRMAX, DELTA, SIGG, RADL, RADF, W2AVAIL, W2MXAV |
---|
1123 | REAL :: FTOT, F1, F2, F3, F4 |
---|
1124 | REAL :: FSHELT, GS, GA, FX |
---|
1125 | |
---|
1126 | |
---|
1127 | |
---|
1128 | !... Parameters |
---|
1129 | REAL, PARAMETER :: RSMAX = 5000.0 ! s/m |
---|
1130 | REAL, PARAMETER :: FTMIN = 0.0000001 ! m/s |
---|
1131 | REAL, PARAMETER :: F3MIN = 0.25 |
---|
1132 | |
---|
1133 | ! |
---|
1134 | !... for water surface, no canopy evaporation and transpiration |
---|
1135 | ER = 0.0 |
---|
1136 | ETR = 0.0 |
---|
1137 | |
---|
1138 | !... GROUND EVAPORATION (DEPOSITION) |
---|
1139 | IF (QSS .LT. QV1) BETAP = 1.0 |
---|
1140 | EG = DENS1 * (1.0 - VEGFRC) * BETAP * (QSS - QV1) / RAW |
---|
1141 | |
---|
1142 | !... CANOPY |
---|
1143 | IF (IFLAND .LT. 1.5 .AND. ISTI .GT. 0) THEN |
---|
1144 | WRMAX = 0.2E-3 * VEGFRC * LAI ! in unit m |
---|
1145 | IF (WR .LE. 0.0) THEN |
---|
1146 | DELTA = 0.0 |
---|
1147 | ELSE |
---|
1148 | ! DELTA = (WR / WRMAX) ** 0.66667 |
---|
1149 | DELTA = WR / WRMAX ! referred to SiB model |
---|
1150 | ENDIF |
---|
1151 | IF (QSS .GE. QV1) THEN |
---|
1152 | SIGG = DELTA |
---|
1153 | ELSE |
---|
1154 | SIGG = 1.0 |
---|
1155 | ENDIF |
---|
1156 | |
---|
1157 | ER = DENS1 * VEGFRC * SIGG * (QSS - QV1) / RAW |
---|
1158 | ! IF(ER.GT.0.5E-3)PRINT *,' WR,SIGG,DENS1,VEGFRC,QSS,QV1,RAW=', & |
---|
1159 | ! WR,SIGG,DENS1,VEGFRC,QSS,QV1,RAW,' ER=',ER |
---|
1160 | ENDIF |
---|
1161 | |
---|
1162 | !-- TRANSPIRATION |
---|
1163 | |
---|
1164 | IF (IFLAND .LT. 1.5 .AND. ISTI .GT. 0) THEN |
---|
1165 | ! |
---|
1166 | !-RADIATION |
---|
1167 | IF (RSTMIN .GT. 130.0) THEN |
---|
1168 | RADL = 30.0 ! W/M2 |
---|
1169 | ELSE |
---|
1170 | RADL = 100.0 ! W/M2 |
---|
1171 | ENDIF |
---|
1172 | RADF = 1.1 * RG / (RADL * LAI) ! NP89 - EQN34 |
---|
1173 | F1 = (RSTMIN / RSMAX + RADF) / (1.0 + RADF) |
---|
1174 | |
---|
1175 | !-SOIL MOISTURE |
---|
1176 | W2AVAIL = W2 - WWLT |
---|
1177 | W2MXAV = WFC - WWLT |
---|
1178 | F2 = 1.0 / (1.0 + EXP(-5.0 * ( W2AVAIL / W2MXAV - & |
---|
1179 | (W2MXAV / 3.0 + WWLT)))) ! according JP, 9/94 |
---|
1180 | |
---|
1181 | !-AIR TEMP |
---|
1182 | !... according to Avissar (1985) and AX 7/95 |
---|
1183 | IF (TA1 .LE. 302.15) THEN |
---|
1184 | F4 = 1.0 / (1.0 + EXP(-0.41 * (TA1 - 282.05))) |
---|
1185 | ELSE |
---|
1186 | F4 = 1.0 / (1.0 + EXP(0.5 * (TA1 - 314.0))) |
---|
1187 | ENDIF |
---|
1188 | !... |
---|
1189 | FTOT = LAI * F1 * F2 * F4 |
---|
1190 | FTOT = AMAX1(FTOT,FTMIN) |
---|
1191 | ENDIF |
---|
1192 | |
---|
1193 | IF (IFLAND .LT. 1.5 .AND. ISTI .GT. 0) THEN |
---|
1194 | FSHELT = 1.0 ! go back to NP89 |
---|
1195 | GS = FTOT / (RSTMIN * FSHELT) |
---|
1196 | GA = 1.0 / RAW |
---|
1197 | !-- Compute humidity effect according to RH at leaf surf |
---|
1198 | F3 = 0.5 * (GS - GA + SQRT(GA * GA + GA * GS * & |
---|
1199 | (4.0 * QV1 / QSS - 2.0) + GS * GS)) / GS |
---|
1200 | F3 = AMIN1(AMAX1(F3,F3MIN),1.0) |
---|
1201 | RS = 1.0 / (GS * F3) |
---|
1202 | |
---|
1203 | !--- Compute Assimilation factor for soil moisture nudging - jp 12/94 |
---|
1204 | !-- Note that the 30 coef is to result in order 1 factor for max |
---|
1205 | IF (RG .LT. 0.00001) THEN ! do not nudge during night |
---|
1206 | FX = 0.0 |
---|
1207 | ELSE |
---|
1208 | FX = 30.0 * F1 * F4 * LAI / (RSTMIN * FSHELT) |
---|
1209 | ENDIF |
---|
1210 | FASS = FX |
---|
1211 | ETR = DENS1 * VEGFRC * (1.0 - SIGG) * (QSS - QV1) / (RAW + RS) |
---|
1212 | !..... CQ4 is used for the implicit calculation of TG in SURFACE |
---|
1213 | CQ4 = DENS1 * VEGFRC * ((1.0 - SIGG) / (RAW + RS) + SIGG / RAW) |
---|
1214 | ENDIF ! endif for if IFLAND |
---|
1215 | |
---|
1216 | END SUBROUTINE qflux |
---|
1217 | !------------------------------------------------------------------------------------------ |
---|
1218 | !------------------------------------------------------------------------------------------ |
---|
1219 | |
---|
1220 | !------------------------------------------------------------------------------------------ |
---|
1221 | SUBROUTINE SMASS (ISTI, FASS, RG, VEGFRC, RA, & !in |
---|
1222 | WWLT, WFC, & |
---|
1223 | ALPH1, ALPH2, BET1, BET2, T2NUDF ) !out |
---|
1224 | !------------------------------------------------------------------------------------------ |
---|
1225 | IMPLICIT NONE |
---|
1226 | !******************************************************************* |
---|
1227 | ! SMASS COMPUTES SOIL MOISTURE NUDGING COEFFICIENTS |
---|
1228 | !******************************************************************* |
---|
1229 | ! |
---|
1230 | !.........Arguments |
---|
1231 | INTEGER, PARAMETER :: NSCAT = 16 ! max. soil types |
---|
1232 | |
---|
1233 | INTEGER, INTENT(IN) :: ISTI |
---|
1234 | REAL, INTENT(IN) :: FASS, RG, VEGFRC, RA |
---|
1235 | REAL, INTENT(IN) :: WWLT, WFC |
---|
1236 | REAL, INTENT(OUT) :: ALPH1, ALPH2, BET1, BET2, T2NUDF |
---|
1237 | |
---|
1238 | |
---|
1239 | !........Local variables |
---|
1240 | |
---|
1241 | !... Real |
---|
1242 | REAL :: FBET, FALPH, FRA, FTEXT |
---|
1243 | REAL, DIMENSION( 1: NSCAT ) :: WFCX, WWLTX |
---|
1244 | |
---|
1245 | !... Parameters |
---|
1246 | REAL, PARAMETER :: A1MAX = -10.E-5, A2MAX = 1.E-5 ! m/K, m for 6hr period |
---|
1247 | REAL, PARAMETER :: B1MAX = -10.E-3, B2MAX = 1.E-3 ! m/K, m (Bouttier et al 1993) |
---|
1248 | REAL, PARAMETER :: TASSI = 4.6296E-5 ! 1/6hr in 1/sec |
---|
1249 | REAL, PARAMETER :: RAMIN = 10.0 ! 0.1 s/cm |
---|
1250 | ! |
---|
1251 | !-- WFC is field capacity (M^3/M^3) (JN90) |
---|
1252 | DATA WFCX / 0.135, 0.150, 0.195, 0.255, 0.240, 0.255, 0.322, & |
---|
1253 | 0.325, 0.310, 0.370, 0.367, 0.367, 0.367, 0.367, 0.367, 0.367 / |
---|
1254 | ! |
---|
1255 | !-- WWLT is wilting point (M^3/M^3) (JN90) |
---|
1256 | DATA WWLTX / 0.068, 0.075, 0.114, 0.179, 0.155, 0.175, 0.218, & |
---|
1257 | 0.250, 0.219, 0.283, 0.286, 0.286, 0.286, 0.286, 0.286, 0.286 / |
---|
1258 | |
---|
1259 | ! |
---|
1260 | FBET = FASS |
---|
1261 | FALPH = RG / 1370.0 |
---|
1262 | !--TEXTURE FACTOR NORMALIZED BY LOAM (IST=5) |
---|
1263 | FRA = RAMIN / RA ! scale by aerodynamic resistance |
---|
1264 | FTEXT = TASSI * (WWLT + WFC) / (WWLTX(5) + WFCX(5)) * FRA |
---|
1265 | ! write(6,*) ' ftot, fbet=',ftot, fbet,' ftext=',ftext/tassi |
---|
1266 | ! |
---|
1267 | ALPH1 = A1MAX * FALPH * (1.0 - VEGFRC) * FTEXT |
---|
1268 | ALPH2 = A2MAX * FALPH * (1.0 - VEGFRC) * FTEXT |
---|
1269 | BET1 = B1MAX * FBET * VEGFRC * FTEXT |
---|
1270 | BET2 = B2MAX * FBET * VEGFRC * FTEXT |
---|
1271 | T2NUDF = 1.0E-5 * MAX((1.0 - 5.0 * FALPH),0.0) ! T2 Nudging at night |
---|
1272 | |
---|
1273 | END SUBROUTINE smass |
---|
1274 | !------------------------------------------------------------------------------------------ |
---|
1275 | !------------------------------------------------------------------------------------------ |
---|
1276 | |
---|
1277 | !------------------------------------------------------------------------------------------ |
---|
1278 | !------------------------------------------------------------------------------------------ |
---|
1279 | SUBROUTINE SOILPROP (SOILCBOT,WEIGHT, ITIMESTEP, MAVAIL, & ! IN |
---|
1280 | PXLSM_SMOIS_INIT, & ! IN |
---|
1281 | FWSAT,FWFC,FWWLT,FB,FCGSAT, & ! OUT |
---|
1282 | FJP,FAS,FC2R,FC1SAT,ISTI, W2 ) ! OUT |
---|
1283 | IMPLICIT NONE |
---|
1284 | !******************************************************************* |
---|
1285 | ! SOILPROP COMPUTES SOIL PARAMETERS FOR BOTH BOTTOM AND TOP LAYERS |
---|
1286 | ! USING FRACTIONAL SOIL TYPE. A HARD CODED OPTION IS AVAILIABLE |
---|
1287 | ! TO COMPUTE THE SOIL PARAMETERS USING FRACTIONAL INFORMATION, OR |
---|
1288 | ! TO JUST USE SOIL PARAMETERS OF THE DOMINANT SOIL TYPE |
---|
1289 | !******************************************************************* |
---|
1290 | !------------------------------------------------------------------------ |
---|
1291 | !-- SOIL PARAMETERS ARE SPECIFIED BY SOIL TYPE: |
---|
1292 | ! # SOIL TYPE WSAT WFC WWLT B CGSAT JP AS C2R C1SAT |
---|
1293 | ! _ _________ ____ ___ ____ ____ _____ ___ ___ ___ _____ |
---|
1294 | ! 1 SAND .395 .135 .068 4.05 3.222 4 .387 3.9 .082 |
---|
1295 | ! 2 LOAMY SAND .410 .150 .075 4.38 3.057 4 .404 3.7 .098 |
---|
1296 | ! 3 SANDY LOAM .435 .195 .114 4.90 3.560 4 .219 1.8 .132 |
---|
1297 | ! 4 SILT LOAM .485 .255 .179 5.30 4.418 6 .105 0.8 .153 |
---|
1298 | ! 5 LOAM .451 .240 .155 5.39 4.111 6 .148 0.8 .191 |
---|
1299 | ! 6 SND CLY LM .420 .255 .175 7.12 3.670 6 .135 0.8 .213 |
---|
1300 | ! 7 SLT CLY LM .477 .322 .218 7.75 3.593 8 .127 0.4 .385 |
---|
1301 | ! 8 CLAY LOAM .476 .325 .250 8.52 3.995 10 .084 0.6 .227 |
---|
1302 | ! 9 SANDY CLAY .426 .310 .219 10.40 3.058 8 .139 0.3 .421 |
---|
1303 | ! 10 SILTY CLAY .482 .370 .283 10.40 3.729 10 .075 0.3 .375 |
---|
1304 | ! 11 CLAY .482 .367 .286 11.40 3.600 12 .083 0.3 .342 |
---|
1305 | ! 12 CLAY .482 .367 .286 11.40 3.600 12 .083 0.3 .342 |
---|
1306 | ! 13 CLAY .482 .367 .286 11.40 3.600 12 .083 0.3 .342 |
---|
1307 | ! 14 CLAY .482 .367 .286 11.40 3.600 12 .083 0.3 .342 |
---|
1308 | ! 15 CLAY .482 .367 .286 11.40 3.600 12 .083 0.3 .342 |
---|
1309 | ! 16 CLAY .482 .367 .286 11.40 3.600 12 .083 0.3 .342 |
---|
1310 | !------------------------------------------------------------------------ |
---|
1311 | ! |
---|
1312 | !.........Arguments |
---|
1313 | INTEGER, PARAMETER :: NSCAT = 16 ! max. soil types |
---|
1314 | INTEGER, PARAMETER :: NSCATMIN = 16 ! min soil types |
---|
1315 | |
---|
1316 | INTEGER, INTENT(IN) :: WEIGHT, ITIMESTEP, PXLSM_SMOIS_INIT |
---|
1317 | REAL, INTENT(IN) :: MAVAIL |
---|
1318 | REAL, DIMENSION(1:NSCAT), INTENT(IN) :: SOILCBOT |
---|
1319 | REAL, INTENT(OUT) :: FWSAT,FWFC,FWWLT,FB,FCGSAT, & |
---|
1320 | FJP,FAS,FC2R,FC1SAT |
---|
1321 | REAL, INTENT(INOUT) :: W2 |
---|
1322 | |
---|
1323 | |
---|
1324 | INTEGER, INTENT(OUT) :: ISTI |
---|
1325 | !........Local variables |
---|
1326 | CHARACTER*4, AVCLASS |
---|
1327 | CHARACTER*4, DIMENSION( 1: NSCAT ) :: TEXID |
---|
1328 | !... Integer |
---|
1329 | INTEGER:: S |
---|
1330 | !... Real |
---|
1331 | REAL:: TFRACBOT, CFRAC, SUMSND, SUMCLY, AVS, AVC, AVSLT |
---|
1332 | REAL, DIMENSION( 1: NSCAT ) :: WSAT, WFC, WWLT, B, CGSAT, AS, & |
---|
1333 | JP, C2R, C1SAT |
---|
1334 | |
---|
1335 | REAL, DIMENSION( 1: NSCATMIN ) :: SAND, CLAY |
---|
1336 | !.......... DATA statement for SOIL PARAMETERS for the 11 soil types |
---|
1337 | DATA SAND /92.5,80.5,61.1,19.6,4.0,40.0,57.1,11.3,26.8, & |
---|
1338 | 52.0,6.5,10.2,1.0,1.0,1.0,1.0/ |
---|
1339 | DATA CLAY/2.1,4.1,10.9,19.1,7.3,18.8,23.3,32.2,36.6, & |
---|
1340 | 43.0,46.2,58.8,1.0,1.0,1.0,1.0/ |
---|
1341 | DATA TEXID/'Sand','Lsan','Sloa','Sill','Silt','Loam','Sclo', & |
---|
1342 | 'Sicl','Cllo','Sacl','Sicy','Clay','Ormt','Wate', & |
---|
1343 | 'Bedr','Othe'/ |
---|
1344 | |
---|
1345 | ! |
---|
1346 | !-- WSAT is saturated soil moisture (M^3/M^3) (JN90) |
---|
1347 | DATA WSAT / 0.395, 0.410, 0.435, 0.485, 0.451, 0.420, 0.477, & |
---|
1348 | 0.476, 0.426, 0.482, 0.482, 0.482, 0.482, 0.482, 0.482, 0.482 / |
---|
1349 | ! |
---|
1350 | !-- WFC is field capacity (M^3/M^3) (JN90) |
---|
1351 | DATA WFC / 0.135, 0.150, 0.195, 0.255, 0.240, 0.255, 0.322, & |
---|
1352 | 0.325, 0.310, 0.370, 0.367, 0.367, 0.367, 0.367, 0.367, 0.367 / |
---|
1353 | ! |
---|
1354 | !-- WWLT is wilting point (M^3/M^3) (JN90) |
---|
1355 | DATA WWLT / 0.068, 0.075, 0.114, 0.179, 0.155, 0.175, 0.218, & |
---|
1356 | 0.250, 0.219, 0.283, 0.286, 0.286, 0.286, 0.286, 0.286, 0.286 / |
---|
1357 | ! |
---|
1358 | !-- B is slop of the retention curve (NP89) |
---|
1359 | DATA B / 4.05, 4.38, 4.90, 5.30, 5.39, 7.12, 7.75, & |
---|
1360 | 8.52, 10.40, 10.40, 11.40, 11.40, 11.40, 11.40, 11.40, 11.40 / |
---|
1361 | ! |
---|
1362 | !-- CGSAT is soil thermal coef. at saturation (10^-6 K M^2 J^-1) (NP89) |
---|
1363 | DATA CGSAT / 3.222, 3.057, 3.560, 4.418, 4.111, 3.670, 3.593, & |
---|
1364 | 3.995, 3.058, 3.729, 3.600, 3.600, 3.600, 3.600, 3.600, 3.600 / |
---|
1365 | ! |
---|
1366 | !-- JP is coefficient of WGEQ formulation (NP89) |
---|
1367 | DATA JP / 4, 4, 4, 6, 6, 6, 8, & |
---|
1368 | 10, 8, 10, 12, 12, 12, 12, 12, 12 / |
---|
1369 | ! |
---|
1370 | !-- AS is coefficient of WGEQ formulation (NP89) |
---|
1371 | DATA AS / 0.387, 0.404, 0.219, 0.105, 0.148, 0.135, 0.127, & |
---|
1372 | 0.084, 0.139, 0.075, 0.083, 0.083, 0.083, 0.083, 0.083, 0.083 / |
---|
1373 | ! |
---|
1374 | !-- C2R is the value of C2 for W2=0.5WSAT (NP89) |
---|
1375 | DATA C2R / 3.9, 3.7, 1.8, 0.8, 0.8, 0.8, 0.4, & |
---|
1376 | 0.6, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3 / |
---|
1377 | ! |
---|
1378 | !-- C1SAT is the value of C1 at saturation (NP89) |
---|
1379 | DATA C1SAT / 0.082, 0.098, 0.132, 0.153, 0.191, 0.213, 0.385, & |
---|
1380 | 0.227, 0.421, 0.375, 0.342, 0.342, 0.342, 0.342, 0.342, 0.342 / |
---|
1381 | ! |
---|
1382 | !-------------------------------Exicutable starts here-------------------- |
---|
1383 | |
---|
1384 | IF(WEIGHT.GE.1.0) THEN !Compute soil characteristics using weighting determined by fractional soil content |
---|
1385 | FWSAT =0 |
---|
1386 | FWFC =0 |
---|
1387 | FWWLT =0 |
---|
1388 | FB =0 |
---|
1389 | FCGSAT=0 |
---|
1390 | FJP =0 |
---|
1391 | FAS =0 |
---|
1392 | FC2R =0 |
---|
1393 | FC1SAT=0 |
---|
1394 | TFRACBOT =0 |
---|
1395 | CFRAC=0 |
---|
1396 | |
---|
1397 | DO S=1,NSCAT |
---|
1398 | IF(SOILCBOT(S).GE.CFRAC) THEN |
---|
1399 | ISTI=S |
---|
1400 | CFRAC=SOILCBOT(S) |
---|
1401 | ENDIF |
---|
1402 | |
---|
1403 | TFRACBOT=TFRACBOT+SOILCBOT(S) |
---|
1404 | |
---|
1405 | FWSAT =FWSAT + WSAT(S) *SOILCBOT(S) |
---|
1406 | FWFC =FWFC + WFC(S) *SOILCBOT(S) |
---|
1407 | FWWLT =FWWLT + WWLT(S) *SOILCBOT(S) |
---|
1408 | FB =FB + B(S) *SOILCBOT(S) |
---|
1409 | FCGSAT=FCGSAT + CGSAT(S) *SOILCBOT(S) |
---|
1410 | FJP =FJP + JP(S) *SOILCBOT(S) |
---|
1411 | FAS =FAS + AS(S) *SOILCBOT(S) |
---|
1412 | FC2R =FC2R + C2R(S) *SOILCBOT(S) |
---|
1413 | FC1SAT=FC1SAT + C1SAT(S) *SOILCBOT(S) |
---|
1414 | |
---|
1415 | |
---|
1416 | ENDDO |
---|
1417 | |
---|
1418 | TFRACBOT = 1/TFRACBOT |
---|
1419 | FWSAT =FWSAT * TFRACBOT |
---|
1420 | FWFC =FWFC * TFRACBOT |
---|
1421 | FWWLT =FWWLT * TFRACBOT |
---|
1422 | FB =FB * TFRACBOT |
---|
1423 | FCGSAT=FCGSAT * TFRACBOT |
---|
1424 | FJP =FJP * TFRACBOT |
---|
1425 | FAS =FAS * TFRACBOT |
---|
1426 | FC2R =FC2R * TFRACBOT |
---|
1427 | FC1SAT=FC1SAT * TFRACBOT |
---|
1428 | |
---|
1429 | ELSE !Compute soil characteristics by sand and clay fraction |
---|
1430 | |
---|
1431 | CFRAC = 0.0 |
---|
1432 | SUMSND = 0.0 |
---|
1433 | SUMCLY = 0.0 |
---|
1434 | TFRACBOT = 0.0 |
---|
1435 | |
---|
1436 | DO S = 1,NSCAT |
---|
1437 | TFRACBOT = TFRACBOT + SOILCBOT(S) |
---|
1438 | SUMSND = SUMSND + SAND(S) * SOILCBOT(S) |
---|
1439 | SUMCLY = SUMCLY + CLAY(S) * SOILCBOT(S) |
---|
1440 | |
---|
1441 | IF(SOILCBOT(S).GE.CFRAC) THEN ! Find Dominant Category and fraction |
---|
1442 | ISTI=S |
---|
1443 | CFRAC=SOILCBOT(S) |
---|
1444 | ENDIF |
---|
1445 | ENDDO |
---|
1446 | |
---|
1447 | IF(TFRACBOT.GT.0.001) THEN |
---|
1448 | AVS = SUMSND / TFRACBOT |
---|
1449 | AVC = SUMCLY / TFRACBOT |
---|
1450 | AVSLT = 100 - AVS - AVC |
---|
1451 | |
---|
1452 | IF(AVS.GT.85..AND.AVC.LT.100.-AVS) THEN |
---|
1453 | AVCLASS= 'Sand' |
---|
1454 | ISTI = 1 |
---|
1455 | ELSE IF(AVS.GT.70..AND.AVC.LT.100.-AVS) THEN |
---|
1456 | AVCLASS= 'Lsan' |
---|
1457 | ISTI = 2 |
---|
1458 | ELSE IF((AVC.LT.20..AND.AVS.GT.52..AND.AVC.GT.7.5) & |
---|
1459 | .OR.(AVC.LE.7.5.AND.AVSLT.LT.50.)) THEN |
---|
1460 | AVCLASS= 'Sloa' |
---|
1461 | ISTI = 3 |
---|
1462 | ELSE IF(AVC.LT.35..AND.AVS.GT.45..AND.AVSLT.LT.28.) THEN |
---|
1463 | AVCLASS= 'Sclo' |
---|
1464 | ISTI = 6 |
---|
1465 | ELSE IF(AVC.GE.35..AND.AVS.GT.45.) THEN |
---|
1466 | AVCLASS = 'Sacl' |
---|
1467 | ISTI = 9 |
---|
1468 | ELSE IF(AVC.LT.27.0.AND.AVSLT.LT.50.) THEN |
---|
1469 | AVCLASS= 'Loam' |
---|
1470 | ISTI = 5 |
---|
1471 | ELSE IF(AVC.LT.12..AND.AVSLT.GT.80.) THEN |
---|
1472 | AVCLASS = 'Silt' |
---|
1473 | ISTI = 4 |
---|
1474 | ELSE IF(AVC.LT.27.) THEN |
---|
1475 | AVCLASS = 'Sill' |
---|
1476 | ISTI = 4 |
---|
1477 | ELSE IF(AVC.LT.40..AND.AVS.GT.20.) THEN |
---|
1478 | AVCLASS = 'Cllo' |
---|
1479 | ISTI = 8 |
---|
1480 | ELSE IF(AVC.LT.40.) THEN |
---|
1481 | AVCLASS = 'Sicl' |
---|
1482 | ISTI = 7 |
---|
1483 | ELSE IF(AVSLT.GE.40.) THEN |
---|
1484 | AVCLASS = 'Sicy' |
---|
1485 | ISTI = 10 |
---|
1486 | ELSE |
---|
1487 | AVCLASS = 'Clay' |
---|
1488 | ISTI = 11 |
---|
1489 | ENDIF |
---|
1490 | |
---|
1491 | ELSE |
---|
1492 | ISTI=5 |
---|
1493 | AVCLASS = TEXID(ISTI) |
---|
1494 | ENDIF |
---|
1495 | |
---|
1496 | FWSAT =WSAT(ISTI) |
---|
1497 | FWFC =WFC(ISTI) |
---|
1498 | FWWLT =WWLT(ISTI) |
---|
1499 | FB =B(ISTI) |
---|
1500 | FCGSAT=CGSAT(ISTI) |
---|
1501 | FJP =JP(ISTI) |
---|
1502 | FAS =AS(ISTI) |
---|
1503 | FC2R =C2R(ISTI) |
---|
1504 | FC1SAT=C1SAT(ISTI) |
---|
1505 | |
---|
1506 | |
---|
1507 | ENDIF |
---|
1508 | |
---|
1509 | ! Compute W2 using soil moisture availiability if pxlsm_smois_init (in namelist) is not zero |
---|
1510 | IF (ITIMESTEP .EQ. 1 .AND. PXLSM_SMOIS_INIT .GT. 0) THEN |
---|
1511 | W2 = FWWLT + (0.5*(FWSAT+FWFC) - FWWLT) * MAVAIL |
---|
1512 | ENDIF |
---|
1513 | |
---|
1514 | END SUBROUTINE soilprop |
---|
1515 | !------------------------------------------------------------------------------------------ |
---|
1516 | !------------------------------------------------------------------------------------------ |
---|
1517 | !------------------------------------------------------------------------------------------ |
---|
1518 | SUBROUTINE PXSNOW (ITIMESTEP, ASNOW, CSNOW, SNOW, & |
---|
1519 | SNOWH, SNUP, & |
---|
1520 | ALB, SNOALB, SHDFAC, SHDMIN, & |
---|
1521 | HC_SNOW, SNOW_FRA, SNOWC, SNOWALB) |
---|
1522 | !------------------------------------------------------------------------------------------ |
---|
1523 | IMPLICIT NONE |
---|
1524 | !******************************************************************* |
---|
1525 | ! Pleim-Xiu LSM Snow model |
---|
1526 | !******************************************************************* |
---|
1527 | !--------------------------------------------------------------------------------------------------- |
---|
1528 | ! ITIMESTEP -- Model time step index |
---|
1529 | ! ASNOW -- Analyzed snow water equivalent (mm) |
---|
1530 | ! CSNOW -- Current snow water equivalent (mm) |
---|
1531 | ! SNOW -- Snow water equivalent in model (mm) |
---|
1532 | ! SNOWH -- Physical snow depth (m) |
---|
1533 | ! SNUP -- Physical snow depth (landuse dependent) where when below, snow cover is fractional |
---|
1534 | ! |
---|
1535 | ! HC_SNOW -- Heat capacity of snow as a function of depth |
---|
1536 | ! SNOW_FRA-- Factional snow area |
---|
1537 | ! IFSNOW -- Snow flag |
---|
1538 | ! SNOWALB -- Snow albedo |
---|
1539 | !--------------------------------------------------------------------------------------------------- |
---|
1540 | !--- Arguments |
---|
1541 | REAL, PARAMETER :: W2SN_CONV = 10.0 |
---|
1542 | REAL, PARAMETER :: CS_SNOWPACK = 2092.0 |
---|
1543 | REAL, PARAMETER :: SALP = 2.6 |
---|
1544 | !----------------------------------------------- |
---|
1545 | INTEGER, INTENT(IN) :: ITIMESTEP |
---|
1546 | REAL, INTENT(IN) :: ASNOW, CSNOW, SNUP, ALB, SNOALB, SHDFAC, SHDMIN |
---|
1547 | REAL, INTENT(INOUT) :: SNOW, SNOWH, SNOWC |
---|
1548 | REAL, INTENT(OUT) :: HC_SNOW, SNOW_FRA, SNOWALB |
---|
1549 | !------------------------------------------------------------------------------------ |
---|
1550 | |
---|
1551 | |
---|
1552 | !----------------------------------------------- |
---|
1553 | ! Local variables |
---|
1554 | !... Real |
---|
1555 | REAL:: CONV_WAT2SNOW, CSNOWW, RHO_SNOWPACK, & |
---|
1556 | LIQSN_RATIO, SNEQV, RSNOW |
---|
1557 | !----------------------------------------------- |
---|
1558 | |
---|
1559 | SNEQV=ASNOW*0.001 ! Snow water in meters |
---|
1560 | RHO_SNOWPACK = 450 ! Snowpack density (kg/m3), this should be computed in the future |
---|
1561 | LIQSN_RATIO = DENW/RHO_SNOWPACK ! Ratio of water density and snowpack density |
---|
1562 | |
---|
1563 | CONV_WAT2SNOW = LIQSN_RATIO/1000 ! Conversion factor for snow liquid equiv. (mm) to snowpack (m) |
---|
1564 | |
---|
1565 | SNOW = ASNOW ! Set snow water to analysis value for now, implement a nudging scheme later |
---|
1566 | SNOWH= SNOW * CONV_WAT2SNOW ! Conversion of snow water (mm) to snow depth (m) |
---|
1567 | |
---|
1568 | |
---|
1569 | ! Is snow cover now present. The limit is 0.45 mm of water eqivalent or about 2 inches snow depth |
---|
1570 | SNOWC = 0.0 |
---|
1571 | IF (SNOWH .GT. 0.005) SNOWC = 1.0 |
---|
1572 | |
---|
1573 | HC_SNOW = RHO_SNOWPACK * CS_SNOWPACK * SNOWH |
---|
1574 | |
---|
1575 | IF (SNEQV < SNUP) THEN |
---|
1576 | RSNOW = SNEQV / SNUP |
---|
1577 | SNOW_FRA = 1. - ( EXP ( - SALP * RSNOW) - RSNOW * EXP ( - SALP)) |
---|
1578 | ELSE |
---|
1579 | SNOW_FRA = 1.0 |
---|
1580 | END IF |
---|
1581 | |
---|
1582 | SNOWC = SNOW_FRA |
---|
1583 | |
---|
1584 | ! ---------------------------------------------------------------------- |
---|
1585 | ! SNOALB IS ARGUMENT REPRESENTING MAXIMUM ALBEDO OVER DEEP SNOW, |
---|
1586 | ! AS PASSED INTO SFLX, AND ADAPTED FROM THE SATELLITE-BASED MAXIMUM |
---|
1587 | ! SNOW ALBEDO FIELDS PROVIDED BY D. ROBINSON AND G. KUKLA |
---|
1588 | ! (1985, JCAM, VOL 24, 402-411) |
---|
1589 | ! ---------------------------------------------------------------------- |
---|
1590 | SNOWALB = AMIN1(1.0,ALB + AMAX1(0.0,(1.0- SHDFAC - & |
---|
1591 | (SHDMIN/100)) * SNOW_FRA * (SNOALB - ALB))) |
---|
1592 | |
---|
1593 | END SUBROUTINE pxsnow |
---|
1594 | |
---|
1595 | END MODULE module_sf_pxlsm |
---|
1596 | |
---|