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 |
---|