source: LMDZ5/branches/testing/libf/phylmd/hydrol.F @ 1893

Last change on this file since 1893 was 1795, checked in by Ehouarn Millour, 11 years ago

Version testing basee sur la r1794


Testing release based on r1794

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