source: LMDZ.3.3/branches/rel-LF/libf/phylmd/hydrol.F @ 558

Last change on this file since 558 was 486, checked in by lmdzadmin, 21 years ago

Phasage avec la version de Ionela
IM/LF

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.1 KB
Line 
1c
2c $Header$
3c
4      SUBROUTINE hydrol(dtime,pctsrf,rain_fall,snow_fall,evap,
5     .                  agesno, tsol,qsol,snow,runoff)
6      IMPLICIT none
7c======================================================================
8c Auteur(s): Z.X. Li (LMD/CNRS)
9c date: 19940414
10c======================================================================
11c
12c Traitement de l'hydrologie du sol
13c ---------------------------------
14c rain_fall: taux de pluie
15c snow_fall: taux de neige
16c agesno: age de la neige
17c evap: taux d'evaporation
18c tsol: temperature du sol
19c qsol: humidite du sol
20c snow: couverture neigeuse
21C
22#include "dimensions.h"
23#include "dimphy.h"
24#include "YOMCST.h"
25#include "indicesol.h"
26c
27      REAL chasno ! epaisseur du sol: 0.15 m
28      PARAMETER (chasno=3.334E+05/(2.3867E+06*0.15))
29      REAL mx_eau_sol
30      PARAMETER (mx_eau_sol=150.0)
31c
32      REAL dtime
33      REAL pctsrf(klon,nbsrf)
34      REAL snow(klon,nbsrf), tsol(klon,nbsrf), qsol(klon,nbsrf)
35      REAL snow_fall(klon), rain_fall(klon), evap(klon)
36      REAL runoff(klon), agesno(klon)
37C
38      INTEGER i, is
39      REAL subli, fsno
40C-----------------------------------------------------------------------
41      DO 99999 i = 1, klon
42c
43         runoff(i) = 0.0
44c
45         is = is_ter
46         snow(i,is) = snow(i,is) + snow_fall(i) * dtime * pctsrf(i,is)
47         IF (pctsrf(i,is) .GT. epsfra) THEN
48            subli = MIN(evap(i)*dtime,snow(i,is))
49            snow(i,is) = snow(i,is) - subli
50            fsno = MIN(MAX((tsol(i,is)-RTT)/chasno,0.0),snow(i,is))
51            snow(i,is) = snow(i,is) - fsno
52            tsol(i,is) = tsol(i,is) - fsno*chasno
53            qsol(i,is) = qsol(i,is) + (rain_fall(i)-evap(i))*dtime
54     .                              + subli + fsno
55            qsol(i,is) = MAX(qsol(i,is),0.0)
56            runoff(i) = runoff(i) + MAX(qsol(i,is)-mx_eau_sol, 0.0)
57     .                            * pctsrf(i,is)
58            qsol(i,is) = MIN(qsol(i,is),mx_eau_sol)
59ccc         ELSE
60ccc            snow(i,is) = 0.0
61ccc            qsol(i,is) = 0.0
62ccc            tsol(i,is) = 0.0
63         ENDIF
64c
65         is = is_lic
66         snow(i,is) = snow(i,is) + snow_fall(i) * dtime * pctsrf(i,is)
67         IF (pctsrf(i,is) .GT. 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
74     .                              + 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)
77     .                            * pctsrf(i,is)
78            qsol(i,is) = MIN(qsol(i,is),mx_eau_sol)
79c je limite la temperature a RTT-1.8 (il faudrait aussi prendre l'eau de
80c la fonte) (Laurent Li, le 14mars98):
81cIM cf GK   tsol(i,is) = MIN(tsol(i,is),RTT-1.8)
82cIM cf GK : la glace fond a 0C, non pas a -1.8
83            tsol(i,is) = MIN(tsol(i,is),RTT)
84c
85ccc         ELSE
86ccc            snow(i,is) = 0.0
87ccc            qsol(i,is) = 0.0
88ccc            tsol(i,is) = 0.0
89         ENDIF
90c
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) .GT. 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
100c je limite la temperature a RTT-1.8 (il faudrait aussi prendre l'eau de
101c la fonte) (Laurent Li, le 14mars98):
102cIM cf GK   tsol(i,is) = MIN(tsol(i,is),RTT-1.8)
103cIM cf GK : la glace fond a 0C, non pas a -1.8
104            tsol(i,is) = MIN(tsol(i,is),RTT)
105c
106ccc         ELSE
107ccc            snow(i,is) = 0.0
108ccc            tsol(i,is) = 0.0
109         ENDIF
110c
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)
114c
11599999 CONTINUE
116c
117      RETURN
118      END
Note: See TracBrowser for help on using the repository browser.