My Project
 All Classes Files Functions Variables Macros
albsno.F90
Go to the documentation of this file.
1 !
2 ! $Header$
3 !
4 SUBROUTINE 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 
55 END SUBROUTINE albsno