/[lmdze]/trunk/phylmd/Interface_surf/albsno.f
ViewVC logotype

Diff of /trunk/phylmd/Interface_surf/albsno.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/libf/phylmd/albsno.f90 revision 68 by guez, Wed Nov 14 16:59:30 2012 UTC trunk/Sources/phylmd/Interface_surf/albsno.f revision 174 by guez, Wed Nov 25 20:14:19 2015 UTC
# Line 1  Line 1 
1  module albsno_m  module albsno_m
2    
3    ! From phylmd/interface_surf.F90,v 1.8 2005/05/25 13:10:09    ! From phylmd/interface_surf.F90, version 1.8 2005/05/25 13:10:09
4    
5    IMPLICIT none    IMPLICIT none
6    
7  contains  contains
8    
9    SUBROUTINE albsno(klon, knon,dtime,agesno,alb_neig_grid, precip_snow)    SUBROUTINE albsno(dtime, agesno, alb_neig, precip_snow)
10    
11      INTEGER :: klon, knon      REAL, intent(in):: dtime
12      INTEGER, PARAMETER :: nvm = 8      REAL, intent(inout):: agesno(:) ! (knon)
13      REAL   :: dtime      real, intent(out):: alb_neig(:) ! (knon)
14      REAL, dimension(klon,nvm) :: veget      real, intent(in):: precip_snow(:) !(knon)
15      REAL, DIMENSION(klon) :: alb_neig_grid, agesno, precip_snow  
16        !------------------------------------------------------------------------
17      INTEGER :: i, nv  
18        ! D\'esert partout:
19      REAL, DIMENSION(nvm),SAVE :: init, decay      alb_neig = 0.55 + 0.3 * EXP(- agesno / 5.)
20      REAL :: as  
21      DATA init /0.55, 0.14, 0.18, 0.29, 0.15, 0.15, 0.14, 0./      ! Modulation en fonction de l'\^age de la neige :
22      DATA decay/0.30, 0.67, 0.63, 0.45, 0.40, 0.14, 0.06, 1./      agesno = max((agesno + (1. - agesno / 50.) * dtime / 86400.) &
23             * EXP(- MAX(0., precip_snow) * dtime / 0.3), 0.)
     veget = 0.  
     veget(:,1) = 1.     ! desert partout  
     DO i = 1, knon  
        alb_neig_grid(i) = 0.0  
     ENDDO  
     DO nv = 1, nvm  
        DO i = 1, knon  
           as = init(nv)+decay(nv)*EXP(-agesno(i)/5.)  
           alb_neig_grid(i) = alb_neig_grid(i) + veget(i,nv)*as  
        ENDDO  
     ENDDO  
     !  
     !! modilation en fonction de l'age de la neige  
     !  
     DO i = 1, knon  
        agesno(i)  = (agesno(i) + (1.-agesno(i)/50.)*dtime/86400.)&  
             &             * EXP(-1.*MAX(0.0,precip_snow(i))*dtime/0.3)  
        agesno(i) =  MAX(agesno(i),0.0)  
     ENDDO  
24    
25    END SUBROUTINE albsno    END SUBROUTINE albsno
26    

Legend:
Removed from v.68  
changed lines
  Added in v.174

  ViewVC Help
Powered by ViewVC 1.1.21