source: LMDZ6/branches/Amaury_dev/libf/phylmd/albsno.F90

Last change on this file was 5137, checked in by abarral, 3 months ago

Put gradsdef.h, tracstoke.h, clesphys.h into modules

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.9 KB
Line 
1
2! $Header$
3
4SUBROUTINE albsno(klon, knon, dtime, agesno, alb_neig_grid, precip_snow)
5  USE lmdz_clesphys
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
36  IF (albsno0>=0.) THEN
37     init(:)=albsno0
38     decay(:)=0.
39  ENDIF
40
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.)&
57               * EXP(-1.*MAX(0.0,precip_snow(i))*dtime/0.3)
58     agesno(i) =  MAX(agesno(i),0.0)
59  ENDDO
60 
61END SUBROUTINE albsno
Note: See TracBrowser for help on using the repository browser.