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