[5099] | 1 | |
---|
[782] | 2 | ! $Header$ |
---|
[5099] | 3 | |
---|
[782] | 4 | SUBROUTINE albsno(klon, knon, dtime, agesno, alb_neig_grid, precip_snow) |
---|
[5137] | 5 | USE lmdz_clesphys |
---|
[782] | 6 | |
---|
| 7 | IMPLICIT NONE |
---|
| 8 | |
---|
| 9 | ! Input arguments |
---|
| 10 | !**************************************************************************************** |
---|
| 11 | INTEGER, INTENT(IN) :: klon, knon |
---|
| 12 | REAL, INTENT(IN) :: dtime |
---|
| 13 | REAL, DIMENSION(klon), INTENT(IN) :: precip_snow |
---|
| 14 | |
---|
| 15 | ! In/Output arguments |
---|
| 16 | !**************************************************************************************** |
---|
| 17 | REAL, DIMENSION(klon), INTENT(INOUT) :: agesno |
---|
| 18 | |
---|
| 19 | ! Output arguments |
---|
| 20 | !**************************************************************************************** |
---|
| 21 | REAL, DIMENSION(klon), INTENT(OUT) :: alb_neig_grid |
---|
| 22 | |
---|
| 23 | ! Local variables |
---|
| 24 | !**************************************************************************************** |
---|
| 25 | INTEGER :: i, nv |
---|
| 26 | INTEGER, PARAMETER :: nvm = 8 |
---|
| 27 | REAL :: as |
---|
| 28 | REAL, DIMENSION(klon,nvm) :: veget |
---|
| 29 | REAL, DIMENSION(nvm),SAVE :: init, decay |
---|
| 30 | !$OMP THREADPRIVATE(init, decay) |
---|
| 31 | |
---|
| 32 | DATA init /0.55, 0.14, 0.18, 0.29, 0.15, 0.15, 0.14, 0./ |
---|
| 33 | DATA decay/0.30, 0.67, 0.63, 0.45, 0.40, 0.14, 0.06, 1./ |
---|
| 34 | !**************************************************************************************** |
---|
| 35 | |
---|
[5117] | 36 | IF (albsno0>=0.) THEN |
---|
[1894] | 37 | init(:)=albsno0 |
---|
| 38 | decay(:)=0. |
---|
[5117] | 39 | ENDIF |
---|
[1894] | 40 | |
---|
[782] | 41 | veget = 0. |
---|
| 42 | veget(:,1) = 1. ! desert partout |
---|
| 43 | DO i = 1, knon |
---|
| 44 | alb_neig_grid(i) = 0.0 |
---|
| 45 | ENDDO |
---|
| 46 | DO nv = 1, nvm |
---|
| 47 | DO i = 1, knon |
---|
| 48 | as = init(nv)+decay(nv)*EXP(-agesno(i)/5.) |
---|
| 49 | alb_neig_grid(i) = alb_neig_grid(i) + veget(i,nv)*as |
---|
| 50 | ENDDO |
---|
| 51 | ENDDO |
---|
| 52 | |
---|
| 53 | |
---|
| 54 | ! modilation en fonction de l'age de la neige |
---|
| 55 | DO i = 1, knon |
---|
| 56 | agesno(i) = (agesno(i) + (1.-agesno(i)/50.)*dtime/86400.)& |
---|
[5087] | 57 | * EXP(-1.*MAX(0.0,precip_snow(i))*dtime/0.3) |
---|
[782] | 58 | agesno(i) = MAX(agesno(i),0.0) |
---|
| 59 | ENDDO |
---|
| 60 | |
---|
| 61 | END SUBROUTINE albsno |
---|