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 |
---|