source: LMDZ4/trunk/libf/phylmd/albsno.F90 @ 1398

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

Adaptation du code a la nouvelle interface avec les surface de Josefine
LF

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 1.8 KB
Line 
1!
2! $Header$
3!
4SUBROUTINE albsno(klon, knon, dtime, agesno, alb_neig_grid, precip_snow)
5
6  IMPLICIT NONE
7
8! Input arguments
9!****************************************************************************************
10  INTEGER, INTENT(IN)                  :: klon, knon
11  REAL, INTENT(IN)                     :: dtime
12  REAL, DIMENSION(klon), INTENT(IN)    :: precip_snow
13
14! In/Output arguments
15!****************************************************************************************
16  REAL, DIMENSION(klon), INTENT(INOUT) :: agesno
17
18! Output arguments
19!****************************************************************************************
20  REAL, DIMENSION(klon), INTENT(OUT)   :: alb_neig_grid
21
22! Local variables
23!****************************************************************************************
24  INTEGER                              :: i, nv
25  INTEGER, PARAMETER                   :: nvm = 8
26  REAL                                 :: as
27  REAL, DIMENSION(klon,nvm)            :: veget
28  REAL, DIMENSION(nvm),SAVE            :: init, decay
29  !$OMP THREADPRIVATE(init, decay)
30
31  DATA init /0.55, 0.14, 0.18, 0.29, 0.15, 0.15, 0.14, 0./
32  DATA decay/0.30, 0.67, 0.63, 0.45, 0.40, 0.14, 0.06, 1./
33!****************************************************************************************
34
35  veget = 0.
36  veget(:,1) = 1.     ! desert partout
37  DO i = 1, knon
38     alb_neig_grid(i) = 0.0
39  ENDDO
40  DO nv = 1, nvm
41     DO i = 1, knon
42        as = init(nv)+decay(nv)*EXP(-agesno(i)/5.)
43        alb_neig_grid(i) = alb_neig_grid(i) + veget(i,nv)*as
44     ENDDO
45  ENDDO
46 
47
48! modilation en fonction de l'age de la neige
49  DO i = 1, knon
50     agesno(i)  = (agesno(i) + (1.-agesno(i)/50.)*dtime/86400.)&
51          &             * EXP(-1.*MAX(0.0,precip_snow(i))*dtime/0.3)
52     agesno(i) =  MAX(agesno(i),0.0)
53  ENDDO
54 
55END SUBROUTINE albsno
Note: See TracBrowser for help on using the repository browser.