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

Last change on this file since 5297 was 766, checked in by Laurent Fairhead, 17 years ago

Merge entre la version V3_conv et le HEAD
YM, JG, LF

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