SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
ice_soilfr.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5  SUBROUTINE ice_soilfr(HSNOW_ISBA, HSOILFRZ, PTSTEP, PKSFC_IVEG, PCG, PCT, &
6  ppsng, pffg, ptauice, pdwgi1, pdwgi2, pwsatz, &
7  pmpotsatz, pbcoefz, pd_g, ptg, pwgi, pwg )
8 !! ##########################################################################
9 !
10 !!**** *ICE_SOILFR*
11 !!
12 !! PURPOSE
13 !! -------
14 !
15 ! In ISBA-FR: calculates the
16 ! 1.) evolution of the surface and deep-soil temperature(s)
17 ! (i.e., Ts and T2 if Force-Restore, TN if DIFfusion) due to soil water
18 ! phase changes
19 !
20 !!** METHOD
21 !! ------
22 !
23 ! - latent heating from soil ice phase changes
24 !
25 !! EXTERNAL
26 !! --------
27 !!
28 !! none
29 !!
30 !! IMPLICIT ARGUMENTS
31 !! ------------------
32 !!
33 !!
34 !! REFERENCE
35 !! ---------
36 !!
37 !! Noilhan and Planton (1989)
38 !! Belair (1995)
39 !! Boone et al. (2000)
40 !!
41 !! AUTHOR
42 !! ------
43 !!
44 !! A. Boone * Meteo-France *
45 !! B. Decharme * Meteo-France *
46 !!
47 !! MODIFICATIONS
48 !! -------------
49 !! Original 14/03/95
50 !! (A.Boone) 08/11/00 soil ice phase changes herein
51 !! (A.Boone) 06/05/02 Updates, ordering. Addition of 'HSOILFRZ' option
52 !! (B. Decharme) 03/2009 BUG : effect of insolation due to vegetation cover
53 !! at 1 for bare soil
54 !! (B. Decharme) 07/2012 Time spliting for soil ice
55 !! (A.Boone) 02/2013 Split from isba_fluxes.F90
56 !-------------------------------------------------------------------------------
57 !
58 !* 0. DECLARATIONS
59 ! ------------
60 !
61 USE modd_csts, ONLY : xcl, xtt, xpi, xday, xci, xrholi, &
62  xlmtt, xrholw, xg, xcondi
63 USE modd_surf_par, ONLY : xundef
64 USE modd_isba_par, ONLY : xwgmin, xsphsoil, xdrywght
65 !
66 USE yomhook ,ONLY : lhook, dr_hook
67 USE parkind1 ,ONLY : jprb
68 !
69 IMPLICIT NONE
70 !
71 !* 0.1 declarations of arguments
72 !
73 !
74  CHARACTER(LEN=*), INTENT(IN) :: hsnow_isba ! 'DEF' = Default F-R snow scheme
75 ! ! (Douville et al. 1995)
76 ! ! '3-L' = 3-L snow scheme (option)
77 ! ! (Boone and Etchevers 2001)
78 !
79  CHARACTER(LEN=*), INTENT(IN) :: hsoilfrz ! soil freezing-physics option
80 ! ! 'DEF' Default (Boone et al. 2000; Giard and Bazile 2000)
81 ! ! 'LWT' phase changes as above, but relation between unfrozen
82 ! water and temperature considered
83 !
84 REAL, INTENT (IN) :: ptstep ! model time step (s)
85 !
86 !
87 REAL, DIMENSION(:), INTENT(IN) :: pksfc_iveg
88 ! PKSFC_IVEG= non-dimensional vegetation insolation coefficient
89 !
90 REAL, DIMENSION(:), INTENT(IN) :: ptauice
91 ! PTAUICE = characteristic time scale for soil water phase changes (s)
92 !
93 REAL, DIMENSION(:), INTENT(IN) :: ppsng
94 ! PPSNG = snow fractions over ground
95 !
96 REAL, DIMENSION(:), INTENT(IN) :: pffg
97 ! PPSNG = flood fractions over ground
98 !
99 REAL, DIMENSION(:), INTENT (IN) :: pcg, pct
100 ! PCT = area-averaged heat capacity (K m2 J-1)
101 ! PCG = heat capacity of the soil (K m2 J-1)
102 !
103 REAL, DIMENSION(:,:), INTENT(IN) :: pd_g, pwsatz
104 ! PD_G = Depth of bottom of Soil layers (m)
105 ! PWSATZ = porosity (m3/m3)
106 !
107 REAL, DIMENSION(:,:), INTENT(IN) :: pmpotsatz, pbcoefz
108 ! PMPOTSATZ = matric potential at saturation (m)
109 ! PBCOEFZ = slope of the water retention curve (-)
110 !
111 REAL, DIMENSION(:,:), INTENT(INOUT) :: pwg, pwgi, ptg
112 ! PWGI = soil frozen volumetric water content (m3/m3)
113 ! PWG = soil liquid volumetric water content (m3/m3)
114 ! PTG = soil temperature profile (K)
115 !
116 REAL, DIMENSION(:), INTENT(OUT) :: pdwgi1, pdwgi2
117 ! PDWGI1 = near-surface liquid water equivalent
118 ! volumetric ice content tendency
119 ! PDWGI2 = deep ground liquid water equivalent
120 ! volumetric ice content tendency
121 !
122 !
123 !* 0.2 declarations of local variables
124 !
125 REAL :: zksoil ! coefficient for soil freeze/thaw
126 !
127 REAL, DIMENSION(SIZE(PCG)) :: zksfc_frz, zfreezing, zice_melt, zwim, &
128  zwit, zwgi1, zwgi2, zwm, zsoilheatcap, &
129  ziceeff, zeffic, ztauice, &
130  zwgmin, ztgmax, zmatpot, zdeltat
131 ! ZKSFC_FRZ = surface insolation coefficient (kg m-2 K-1)
132 ! ZFREEZING = rate for freezing soil water (kg m-2)
133 ! ZICE_MELT = rate for melting soil ice (kg m-2)
134 ! ZWIM,ZWIT = available ice content (m3 m-3)
135 ! ZWGI1,ZWGI2 = volumetric ice contents (m3 m-3)
136 ! ZWM = available liquid water content (m3 m-3)
137 ! ZSOILHEATCAP = soil heat capacity (J m-3 K-1)
138 ! ZICEEFF = effective soil ice penetration depth (m)
139 ! ZEFFIC = phase change efficiency
140 ! ZMATPOT = soil matric potential (m)
141 ! ZWGMIN = volumetric water content above which soil water can
142 ! be unfrozen (if energy and mass available)(m3 m-3)
143 ! ZTGMAX = temperature below which liquid water
144 ! can be frozen (if energy and mass available)(K)
145 ! ZDELTAT = Freezing or melting temperature depression (K) after
146 ! possible flux correction
147 !
148 REAL, DIMENSION(SIZE(PCG)) :: zwsat_avgz
149 ! ZWSAT_AVGZ = soil column average porosity (m3 m-3)
150 !
151 REAL, DIMENSION(SIZE(PCG)) :: zpsng
152 ! ZPSNG = snow fractions corresponding to
153 ! dummy argument PPSNG
154 ! if HSNOW_ISBA = 'DEF' (composite
155 ! or Force-Restore snow scheme), else
156 ! they are zero for explicit snow case
157 ! as snow fluxes calculated outside of
158 ! this routine using the
159 ! HSNOW_ISBA = '3-L' or 'CRO' option.
160 !
161 !* 0.3 declarations of local parameters
162 !
163 REAL, PARAMETER :: zinsolfrz_veg = 0.20 ! (-) Vegetation insolation coefficient
164 !
165 REAL, PARAMETER :: zinsolfrz_lai = 30.0 ! (m2 m-2) Vegetation insolation coefficient
166 !
167 REAL, PARAMETER :: zeffic_min = 0.01 ! (-) (0 <= ZEFFIC_MIN << 1)
168 ! This parameter ensures
169 ! a small minimum melt or freeze efficiency...
170 ! It is numerical. When it is small, it has
171 ! a only small impact on results, except
172 ! that it keeps very small values of ice from persisting
173 ! over long periods of time as they approach zero.
174 ! If it is zero, then this effect off.
175 !
176 !
177 INTEGER :: ini, jj
178 !
179 REAL, DIMENSION(SIZE(PCG)) :: zwork1, zwork2, ztdiurn
180 !
181 REAL(KIND=JPRB) :: zhook_handle
182 !-------------------------------------------------------------------------------
183 !
184 !* 0. Initialization
185 ! --------------
186 IF (lhook) CALL dr_hook('ICE_SOILFR',0,zhook_handle)
187 !
188 zfreezing(:) = 0.0
189 zksfc_frz(:) = 0.0
190 zeffic(:) = 0.0
191 zice_melt(:) = 0.0
192 zwgi1(:) = 0.0
193 zwim(:) = 0.0
194 zsoilheatcap(:) = 0.0
195 zwit(:) = 0.0
196 zwgi2(:) = 0.0
197 ztgmax(:) = 0.0
198 zwgmin(:) = 0.0
199 zmatpot(:) = 0.0
200 zwsat_avgz(:) = xundef
201 zdeltat(:) = 0.0
202 ztdiurn(:) = 0.0
203 !
204 ini = SIZE(ptg,1)
205 !
206 !-------------------------------------------------------------------------------
207 !
208 ! If ISBA-ES option in use, then snow covered surface
209 ! fluxes calculated outside of this routine, so set
210 ! the local snow fractions here to zero:
211 !
212 IF(hsnow_isba == '3-L' .OR. hsnow_isba == 'CRO')THEN
213  zpsng(:) = 0.0
214 ELSE
215  zpsng(:) = ppsng(:)+pffg(:)
216 ENDIF
217 !
218 !* 1. Melting/freezing normalized coefficient
219 ! ---------------------------------------
220 !
221 zksoil = (0.5 * sqrt(xcondi*xci*xrholi*xday/xpi))/xlmtt
222 !
223 ztauice(:) = max(ptstep,ptauice(:))
224 !
225 DO jj=1,ini
226 !-------------------------------------------------------------------------------
227 !* 2. EFFECT OF THE MELTING/FREEZING
228 ! ON THE SURFACE-SOIL HEAT AND ICE CONTENTS
229 ! ('DEF' or Force-Restore soil option)
230 ! -----------------------------------------
231 !
232 ! 2.0 Average soil-column porosity
233 ! ----------------------------
234 ! if Force-Restore option in use, then vertical
235 ! profiles of soil hydrological parameters are constant,
236 ! so use the values in uppermost element (arbitrary)
237 !
238  zwsat_avgz(jj) = pwsatz(jj,1)
239 !
240 ! Influence of vegetation insolation on surface:
241 !
242  zksfc_frz(jj) = zksoil * pksfc_iveg(jj)
243 !
244 ENDDO
245 !* 2.2 Water freezing
246 ! --------------
247 !
248 IF(hsoilfrz == 'LWT')THEN
249 !
250 ! use option to control phase changes based on a relationship
251 ! between the unfrozen liquid water content and temperature.
252 ! Uses the Clapp and Hornberger model for water potential.
253 ! The energy-limit method used by Boone et al. 2000 and
254 ! Giard and Bazile (2000) is the default.
255 !
256  DO jj=1,ini
257  zmatpot(jj) = min(pmpotsatz(jj,1), xlmtt*(ptg(jj,1)-xtt)/(xg*ptg(jj,1)) )
258  zwgmin(jj) = zwsat_avgz(jj)*( (zmatpot(jj)/pmpotsatz(jj,1))**(-1./pbcoefz(jj,1)) )
259 
260  zmatpot(jj) = pmpotsatz(jj,1)*( (pwg(jj,1)/zwsat_avgz(jj))**(-pbcoefz(jj,1)) )
261  ztgmax(jj) = xlmtt*xtt/(xlmtt - xg* zmatpot(jj))
262  ENDDO
263 ELSE
264  zwgmin(:) = xwgmin
265  ztgmax(:) = xtt
266 ENDIF
267 !
268 DO jj=1,ini
269 !
270  zdeltat(jj) = ptg(jj,1) - ztgmax(jj) ! initial temperature depression
271 !
272  zwork2(jj) = xrholw*pd_g(jj,1)
273  zeffic(jj) = max(zeffic_min,(pwg(jj,1)-xwgmin)/zwsat_avgz(jj))
274  zfreezing(jj) = min( max(0.0,pwg(jj,1)-zwgmin(jj))*zwork2(jj), &
275  zksfc_frz(jj)*zeffic(jj)*max( -zdeltat(jj), 0.) )
276 !
277 !* 2.3 Ground Ice melt
278 ! ---------------
279 !
280  zeffic(jj) = max(zeffic_min,pwgi(jj,1)/(zwsat_avgz(jj)-xwgmin))
281  zice_melt(jj) = min( pwgi(jj,1)*zwork2(jj), &
282  zksfc_frz(jj)*zeffic(jj)*max( zdeltat(jj), 0. ) )
283 !
284 !* 2.4 Ice reservoir evolution
285 ! -----------------------
286 !
287 ! Melting of ice/freezing of water:
288 !
289  zwgi1(jj) = pwgi(jj,1) + (ptstep/ztauice(jj))*(1.0-zpsng(jj))* &
290  (zfreezing(jj) - zice_melt(jj))/zwork2(jj)
291 !
292 !
293  zwgi1(jj) = max( zwgi1(jj) , 0. )
294  zwgi1(jj) = min( zwgi1(jj) , zwsat_avgz(jj)-xwgmin)
295 !
296 ! Time tendency:
297 !
298  pdwgi1(jj) = zwgi1(jj) - pwgi(jj,1)
299 !
300 !
301 !* 2.5 Effect on temperature
302 ! ---------------------
303 !
304  ptg(jj,1) = ptg(jj,1) + pdwgi1(jj)*xlmtt*pct(jj)*zwork2(jj)
305 !
306 !-------------------------------------------------------------------------------
307 !
308 !* 3. EFFECT OF THE MELTING/FREEZING
309 ! ON THE DEEP-SOIL HEAT AND ICE CONTENTS
310 ! ('DEF' or Force-Restore soil option)
311 ! --------------------------------------
312 !
313  zwork1(jj) = pd_g(jj,1)/pd_g(jj,2)
314 !* 3.1 Available Deep ice content
315 ! --------------------------
316 !
317  zwim(jj) = ( pwgi(jj,2) - zwork1(jj) * pwgi(jj,1) ) / ( 1. - zwork1(jj) )
318 !
319  zwim(jj) = max(0.,zwim(jj)) ! Just in case of round-off errors
320 !
321 !* 3.2 Deep liquid water content
322 ! -------------------------
323 !
324  zwm(jj) = ( pwg(jj,2) - zwork1(jj) * pwg(jj,1) ) / ( 1. - zwork1(jj) )
325 !
326 !* 3.3 Water freezing
327 ! --------------
328 !
329 ! Total soil volumetric heat capacity [J/(m3 K)]:
330 !
331  zsoilheatcap(jj) = xcl*xrholw*pwg(jj,2) + &
332  xci*xrholi*pwgi(jj,2) + &
333  xsphsoil*xdrywght*(1.0-zwsat_avgz(jj))*(1.0-zwsat_avgz(jj))
334 !
335 ! Soil thickness which corresponds to T2 (m): 2 times the diurnal
336 ! surface temperature wave penetration depth as T2 is the average
337 ! temperature for this layer:
338 !
339  ztdiurn(jj) = min(pd_g(jj,2), 4./(zsoilheatcap(jj)*pcg(jj)))
340 !
341 ! Effective soil ice penetration depth (m):
342 !
343  ziceeff(jj) = (pwgi(jj,2)/(pwgi(jj,2)+pwg(jj,2)))*pd_g(jj,2)
344 !
345 ENDDO
346 !
347 IF(hsoilfrz == 'LWT')THEN
348 !
349 ! as for the surface layer (above)JJ
350 ! Note also that if the 'DIF'
351 ! soil option is not in force, then the soil parameters are assumed
352 ! to be homogeneous (in the verticalJJ thus we use 1st element of 2nd dimension
353 ! of the 2D-soil parameter arrays).
354 !
355  DO jj=1,ini
356 
357  zmatpot(jj) = min(pmpotsatz(jj,1), xlmtt*(ptg(jj,2)-xtt)/(xg*ptg(jj,2)) )
358  zwgmin(jj) = zwsat_avgz(jj)*( (zmatpot(jj)/pmpotsatz(jj,1))**(-1./pbcoefz(jj,1)) )
359 
360  zmatpot(jj) = pmpotsatz(jj,1)*( (pwg(jj,2)/zwsat_avgz(jj))**(-pbcoefz(jj,1)) )
361  ztgmax(jj) = xlmtt*xtt/(xlmtt - xg* zmatpot(jj))
362  ENDDO
363 ELSE
364  zwgmin(:) = xwgmin
365  ztgmax(:) = xtt
366 ENDIF
367 !
368 ! Allow freezing by T2 up to a certain depth so that
369 ! T2 energy can not be used to freeze soil water
370 ! at levels sufficiently deep in the soil.
371 !
372 DO jj=1,ini
373 !
374  zdeltat(jj) = ptg(jj,2) - ztgmax(jj) ! initial temperature depression
375 !
376  zwork1(jj) = pd_g(jj,1)/pd_g(jj,2)
377  zwork2(jj) = xrholw*(pd_g(jj,2)-pd_g(jj,1))
378 
379  zfreezing(jj) = 0.0
380  IF (ziceeff(jj) <= ztdiurn(jj)) THEN
381 !
382  zeffic(jj) = max(zeffic_min, max(0.0,zwm(jj) - xwgmin)/zwsat_avgz(jj))
383  zfreezing(jj) = min( max(0.0, zwm(jj) - zwgmin(jj))* zwork2(jj), &
384  zksoil*zeffic(jj)*max( -zdeltat(jj) , 0. ) )
385  ENDIF
386 !
387 !
388 !* 3.4 Ground Ice melt
389 ! ---------------
390 !
391  zeffic(jj) = max(zeffic_min, zwim(jj)/(zwsat_avgz(jj)-xwgmin))
392  zice_melt(jj) = min( zwim(jj)*zwork2(jj), &
393  zksoil*zeffic(jj)*max( zdeltat(jj) , 0. ) )
394 !
395 !
396 !* 3.5 Deep-part of deep-soil Ice reservoir evolution
397 ! ----------------------------------------------
398 !
399  zwit(jj) = zwim(jj) + (ptstep/ztauice(jj))*(1.0-zpsng(jj))* &
400  ((zfreezing(jj) - zice_melt(jj))/ zwork2(jj))
401 !
402  zwit(jj) = max( zwit(jj) , 0. )
403  zwit(jj) = min( zwit(jj) , zwsat_avgz(jj)-xwgmin)
404 !
405 !
406 !* 3.6 Add reservoir evolution from surface freezing (WI2 contains WI1)
407 ! ----------------------------------------------------------------
408 !
409  zwgi2(jj) = (1.-zwork1(jj))*zwit(jj) + zwork1(jj)*zwgi1(jj)
410 !
411  pdwgi2(jj) = zwgi2(jj) - pwgi(jj,2)
412 !
413 !
414 !* 3.7 Effect on temperature
415 ! ---------------------
416 !
417  ptg(jj,2) = ptg(jj,2) + pdwgi2(jj)*xlmtt*pcg(jj)*xrholw*pd_g(jj,2)
418 !
419 ENDDO
420 !
421 IF (lhook) CALL dr_hook('ICE_SOILFR',1,zhook_handle)
422 !-------------------------------------------------------------------------------
423 END SUBROUTINE ice_soilfr
424 
425 
426 
427 
428 
429 
430 
431 
432 
433 
434 
subroutine ice_soilfr(HSNOW_ISBA, HSOILFRZ, PTSTEP, PKSFC_IVEG, PCG, PCT, PPSNG, PFFG, PTAUICE, PDWGI1, PDWGI2, PWSATZ, PMPOTSATZ, PBCOEFZ, PD_G, PTG, PWGI, PWG)
Definition: ice_soilfr.F90:5