source: LMDZ4/trunk/libf/phylmd/hydrol.F @ 594

Last change on this file since 594 was 524, checked in by lmdzadmin, 20 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.1 KB
Line 
1!
2! $Header$
3!
4c
5c
6      SUBROUTINE hydrol(dtime,pctsrf,rain_fall,snow_fall,evap,
7     .                  agesno, tsol,qsol,snow,runoff)
8      IMPLICIT none
9c======================================================================
10c Auteur(s): Z.X. Li (LMD/CNRS)
11c date: 19940414
12c======================================================================
13c
14c Traitement de l'hydrologie du sol
15c ---------------------------------
16c rain_fall: taux de pluie
17c snow_fall: taux de neige
18c agesno: age de la neige
19c evap: taux d'evaporation
20c tsol: temperature du sol
21c qsol: humidite du sol
22c snow: couverture neigeuse
23C
24#include "dimensions.h"
25#include "dimphy.h"
26#include "YOMCST.h"
27#include "indicesol.h"
28c
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)
33c
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)
39C
40      INTEGER i, is
41      REAL subli, fsno
42C-----------------------------------------------------------------------
43      DO 99999 i = 1, klon
44c
45         runoff(i) = 0.0
46c
47         is = is_ter
48         snow(i,is) = snow(i,is) + snow_fall(i) * dtime * pctsrf(i,is)
49         IF (pctsrf(i,is) .GT. 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
56     .                              + 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)
59     .                            * pctsrf(i,is)
60            qsol(i,is) = MIN(qsol(i,is),mx_eau_sol)
61ccc         ELSE
62ccc            snow(i,is) = 0.0
63ccc            qsol(i,is) = 0.0
64ccc            tsol(i,is) = 0.0
65         ENDIF
66c
67         is = is_lic
68         snow(i,is) = snow(i,is) + snow_fall(i) * dtime * pctsrf(i,is)
69         IF (pctsrf(i,is) .GT. epsfra) THEN
70            subli = MIN(evap(i)*dtime,snow(i,is))
71            snow(i,is) = snow(i,is) - subli
72            fsno = MIN(MAX((tsol(i,is)-RTT)/chasno,0.0),snow(i,is))
73            snow(i,is) = snow(i,is) - fsno
74            tsol(i,is) = tsol(i,is) - fsno*chasno
75            qsol(i,is) = qsol(i,is) + (rain_fall(i)-evap(i))*dtime
76     .                              + subli + fsno
77            qsol(i,is) = MAX(qsol(i,is),0.0)
78            runoff(i) = runoff(i) + MAX(qsol(i,is)-mx_eau_sol, 0.0)
79     .                            * pctsrf(i,is)
80            qsol(i,is) = MIN(qsol(i,is),mx_eau_sol)
81c je limite la temperature a RTT-1.8 (il faudrait aussi prendre l'eau de
82c la fonte) (Laurent Li, le 14mars98):
83cIM cf GK   tsol(i,is) = MIN(tsol(i,is),RTT-1.8)
84cIM cf GK : la glace fond a 0C, non pas a -1.8
85            tsol(i,is) = MIN(tsol(i,is),RTT)
86c
87ccc         ELSE
88ccc            snow(i,is) = 0.0
89ccc            qsol(i,is) = 0.0
90ccc            tsol(i,is) = 0.0
91         ENDIF
92c
93         is = is_sic
94         qsol(i,is) = 0.0
95         snow(i,is) = snow(i,is) + snow_fall(i) * dtime * pctsrf(i,is)
96         IF (pctsrf(i,is) .GT. epsfra) THEN
97            subli = MIN(evap(i)*dtime,snow(i,is))
98            snow(i,is) = snow(i,is) - subli
99            fsno = MIN(MAX((tsol(i,is)-RTT)/chasno,0.0),snow(i,is))
100            snow(i,is) = snow(i,is) - fsno
101            tsol(i,is) = tsol(i,is) - fsno*chasno
102c je limite la temperature a RTT-1.8 (il faudrait aussi prendre l'eau de
103c la fonte) (Laurent Li, le 14mars98):
104cIM cf GK   tsol(i,is) = MIN(tsol(i,is),RTT-1.8)
105cIM cf GK : la glace fond a 0C, non pas a -1.8
106            tsol(i,is) = MIN(tsol(i,is),RTT)
107c
108ccc         ELSE
109ccc            snow(i,is) = 0.0
110ccc            tsol(i,is) = 0.0
111         ENDIF
112c
113         agesno(i) = (agesno(i)+ (1.-agesno(i)/50.)*dtime/86400.)
114     .             * EXP(-1.*MAX(0.0,snow_fall(i))*dtime/0.3)
115         agesno(i) = MAX(agesno(i),0.0)
116c
11799999 CONTINUE
118c
119      RETURN
120      END
Note: See TracBrowser for help on using the repository browser.