GCC Code Coverage Report


Directory: ./
File: phys/hydrol.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 39 0.0%
Branches: 0 8 0.0%

Line Branch Exec Source
1
2 ! $Header$
3
4
5
6 SUBROUTINE hydrol(dtime, pctsrf, rain_fall, snow_fall, evap, agesno, tsol, &
7 qsol, snow, runoff)
8 USE dimphy
9 USE indice_sol_mod
10
11 IMPLICIT NONE
12 ! ======================================================================
13 ! Auteur(s): Z.X. Li (LMD/CNRS)
14 ! date: 19940414
15 ! ======================================================================
16
17 ! Traitement de l'hydrologie du sol
18 ! ---------------------------------
19 ! rain_fall: taux de pluie
20 ! snow_fall: taux de neige
21 ! agesno: age de la neige
22 ! evap: taux d'evaporation
23 ! tsol: temperature du sol
24 ! qsol: humidite du sol
25 ! snow: couverture neigeuse
26
27 include "YOMCST.h"
28
29 REAL chasno ! epaisseur du sol: 0.15 m
30 PARAMETER (chasno=3.334E+05/(2.3867E+06*0.15))
31 REAL mx_eau_sol
32 PARAMETER (mx_eau_sol=150.0)
33
34 REAL dtime
35 REAL pctsrf(klon, nbsrf)
36 REAL snow(klon, nbsrf), tsol(klon, nbsrf), qsol(klon, nbsrf)
37 REAL snow_fall(klon), rain_fall(klon), evap(klon)
38 REAL runoff(klon), agesno(klon)
39
40 INTEGER i, is
41 REAL subli, fsno
42 ! -----------------------------------------------------------------------
43 DO i = 1, klon
44
45 runoff(i) = 0.0
46
47 is = is_ter
48 snow(i, is) = snow(i, is) + snow_fall(i)*dtime*pctsrf(i, is)
49 IF (pctsrf(i,is)>epsfra) THEN
50 subli = min(evap(i)*dtime, snow(i,is))
51 snow(i, is) = snow(i, is) - subli
52 fsno = min(max((tsol(i,is)-rtt)/chasno,0.0), snow(i,is))
53 snow(i, is) = snow(i, is) - fsno
54 tsol(i, is) = tsol(i, is) - fsno*chasno
55 qsol(i, is) = qsol(i, is) + (rain_fall(i)-evap(i))*dtime + subli + fsno
56 qsol(i, is) = max(qsol(i,is), 0.0)
57 runoff(i) = runoff(i) + max(qsol(i,is)-mx_eau_sol, 0.0)*pctsrf(i, is)
58 qsol(i, is) = min(qsol(i,is), mx_eau_sol)
59 ! cc ELSE
60 ! cc snow(i,is) = 0.0
61 ! cc qsol(i,is) = 0.0
62 ! cc tsol(i,is) = 0.0
63 END IF
64
65 is = is_lic
66 snow(i, is) = snow(i, is) + snow_fall(i)*dtime*pctsrf(i, is)
67 IF (pctsrf(i,is)>epsfra) THEN
68 subli = min(evap(i)*dtime, snow(i,is))
69 snow(i, is) = snow(i, is) - subli
70 fsno = min(max((tsol(i,is)-rtt)/chasno,0.0), snow(i,is))
71 snow(i, is) = snow(i, is) - fsno
72 tsol(i, is) = tsol(i, is) - fsno*chasno
73 qsol(i, is) = qsol(i, is) + (rain_fall(i)-evap(i))*dtime + subli + fsno
74 qsol(i, is) = max(qsol(i,is), 0.0)
75 runoff(i) = runoff(i) + max(qsol(i,is)-mx_eau_sol, 0.0)*pctsrf(i, is)
76 qsol(i, is) = min(qsol(i,is), mx_eau_sol)
77 ! je limite la temperature a RTT-1.8 (il faudrait aussi prendre l'eau
78 ! de
79 ! la fonte) (Laurent Li, le 14mars98):
80 ! IM cf GK tsol(i,is) = MIN(tsol(i,is),RTT-1.8)
81 ! IM cf GK : la glace fond a 0C, non pas a -1.8
82 tsol(i, is) = min(tsol(i,is), rtt)
83
84 ! cc ELSE
85 ! cc snow(i,is) = 0.0
86 ! cc qsol(i,is) = 0.0
87 ! cc tsol(i,is) = 0.0
88 END IF
89
90 is = is_sic
91 qsol(i, is) = 0.0
92 snow(i, is) = snow(i, is) + snow_fall(i)*dtime*pctsrf(i, is)
93 IF (pctsrf(i,is)>epsfra) THEN
94 subli = min(evap(i)*dtime, snow(i,is))
95 snow(i, is) = snow(i, is) - subli
96 fsno = min(max((tsol(i,is)-rtt)/chasno,0.0), snow(i,is))
97 snow(i, is) = snow(i, is) - fsno
98 tsol(i, is) = tsol(i, is) - fsno*chasno
99 ! je limite la temperature a RTT-1.8 (il faudrait aussi prendre l'eau
100 ! de
101 ! la fonte) (Laurent Li, le 14mars98):
102 ! IM cf GK tsol(i,is) = MIN(tsol(i,is),RTT-1.8)
103 ! IM cf GK : la glace fond a 0C, non pas a -1.8
104 tsol(i, is) = min(tsol(i,is), rtt)
105
106 ! cc ELSE
107 ! cc snow(i,is) = 0.0
108 ! cc tsol(i,is) = 0.0
109 END IF
110
111 agesno(i) = (agesno(i)+(1.-agesno(i)/50.)*dtime/86400.)* &
112 exp(-1.*max(0.0,snow_fall(i))*dtime/0.3)
113 agesno(i) = max(agesno(i), 0.0)
114
115 END DO
116
117 RETURN
118 END SUBROUTINE hydrol
119