modd_snow_par.F90 Source File


Contents

Source Code


Source Code

!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
!SFX_LIC This is part of the SURFEX software governed by the CeCILL version 2.1
!SFX_LIC version 1. See LICENSE, Licence_CeCILL_V2.1-en.txt and Licence_CeCILL_V2.1-fr.txt  
!SFX_LIC for details. version 1.
!     ######################
      MODULE MODD_SNOW_PAR
!     ######################
!
!!****  *MODD_SNOW_PAR* - declaration of parameters related
!!                          to the snow parameterization
!!
!!    PURPOSE
!!    -------
!       The purpose of this declarative module is to specify  the 
!     parameters related to the surface parameterization of snow.
!
!!
!!**  IMPLICIT ARGUMENTS
!!    ------------------
!!      None 
!!
!!    REFERENCE
!!    ---------
!!      
!!
!!    AUTHOR
!!    ------
!!	V. Masson   *Meteo France*
!!
!!    MODIFICATIONS
!!    -------------
!!      Original       01/2004                    
!! P. Samuelsson  10/2014   MEB complements
!-------------------------------------------------------------------------------
!
!*       0.   DECLARATIONS
!             ------------
!
IMPLICIT NONE
!
!--------------------------------------------------------------------------------
! Snow on the ground: Given in ini_surf_csts and/or in NAM_SURF_CSTS
!--------------------------------------------------------------------------------
!
! Snow emissivity:
!
REAL, SAVE       :: XEMISSN
!
! Minimum and maximum values of the albedo of snow:
!
REAL, SAVE       :: XANSMIN
REAL, SAVE       :: XANSMAX 
!
! Minimum and maximum values of the albedo of permanet snow/ice:
!
REAL, SAVE       :: XAGLAMIN
REAL, SAVE       :: XAGLAMAX
!
! Use recommended settings for snow albedo (FALSE = ISBA default)
! 
LOGICAL,SAVE     :: LMEBREC
!
! Fraction of maximum value of the albedo of snow that is reached for melting
! snow
!
REAL, SAVE       :: XANSFRACMEL
!
! Threeshold temperature above which the snow albedo starts to decrease 
!
REAL, SAVE       :: XTEMPANS
!
! Minimum value of the albedo of snow reached under canopy vegetation:
!
REAL, SAVE       :: XANSMINMEB
! 
! Prescribed ice albedo in 3 spectral bands for glacier simulation with CROCUS scheme.
REAL, SAVE       :: XALBICE1,XALBICE2,XALBICE3
!

! Density threshold for ice detection in CROCUS scheme.
REAL, SAVE       :: XRHOTHRESHOLD_ICE

!for ageing effects
REAL, SAVE      :: XVAGING_NOGLACIER, XVAGING_GLACIER

! percentage of the total pore volume to compute the max liquid water holding capacity
REAL, SAVE      :: XPERCENTAGEPORE

! Height (m) of aged snow in glacier case (allows Pn=1)
!
REAL, SAVE       :: XHGLA
! 
! Coefficient for calculation of snow fraction over vegetation
!
REAL, SAVE       :: XWSNV
!
! Roughness length of pure snow surface (m)
!
REAL, SAVE       :: XZ0SN  
!
! Roughness length for heat of pure snow surface (m)
!
REAL, SAVE       :: XZ0HSN
!
! Roughness length ratio between ice and snow
REAL, SAVE       :: XZ0ICEZ0SNOW
!
! Snow Melt timescale with D95 (s): needed to prevent time step 
! dependence of melt when snow fraction < unity.
!
REAL, SAVE       :: XTAU_SMELT
!
!--------------------------------------------------------------------------------
! Snow on the ground: PARAMETER
!--------------------------------------------------------------------------------
!
! Critical value of the equivalent water content
! of the snow reservoir for snow fractional coverage and albedo computations
!
REAL, PARAMETER       :: XWCRN      = 10.0   ! (kg m-2) Veg (default value)
REAL, PARAMETER       :: XWCRN_EXPL =  1.0   ! (kg m-2) Veg explicit
REAL, PARAMETER       :: XWCRN_ROOF =  1.0   ! (kg m-2)  Roofs 
REAL, PARAMETER       :: XWCRN_ROAD =  1.0   ! (kg m-2)  Roads
REAL, PARAMETER       :: XWCRN_VEG  =  1.0   ! (kg m-2)  Urban veg
!
! Critical value of the total snow depth for ground snow fractional coverage
!
REAL, PARAMETER       :: XDCRN_EXPL = 0.01  ! (m) Veg explicit
!
! Critical value of snow emissivity
!
REAL, PARAMETER       :: XEMCRIN = 0.98
!
! Minimum and maximum values of the albedo of snow:
!
REAL, PARAMETER       :: XANSMIN_ROOF = 0.30 ! (-)   Roofs
REAL, PARAMETER       :: XANSMIN_ROAD = 0.15 ! (-)   Roads
!
REAL, PARAMETER       :: XANSMAX_ROOF = 0.85 ! (-)   Roofs
REAL, PARAMETER       :: XANSMAX_ROAD = 0.85 ! (-)   Roads
!
! Snow aging coefficients (albedo and Force-Restore density):
!
REAL, PARAMETER       :: XANS_TODRY    = 0.008     ! (-) Veg (default value)
REAL, PARAMETER       :: XANS_TODRY_ROOF = 0.008   ! (-)  Roofs
REAL, PARAMETER       :: XANS_TODRY_ROAD = 0.008   ! (-)  Roads
REAL, PARAMETER       :: XANS_TODRY_MEB  = 0.016   ! (-) Surface under canopy vegetation
!
REAL, PARAMETER       :: XANS_T        = 0.240     ! (-) Veg (default value)
REAL, PARAMETER       :: XANS_T_ROOF     = 0.174   ! (-)  Roofs
REAL, PARAMETER       :: XANS_T_ROAD     = 0.174   ! (-)  Roads (alley simul)
REAL, PARAMETER       :: XANS_T_MEB    = 0.480     ! (-) Surface under canopy vegetation
!
! Minimum and maximum values of the density of snow 
! for Force-Restore snow option
!
REAL, PARAMETER       :: XRHOSMIN = 100.       ! (kg m-3)   Veg (Default value)
REAL, PARAMETER       :: XRHOSMIN_ROOF = 100.  ! (kg m-3)   Roofs
REAL, PARAMETER       :: XRHOSMIN_ROAD = 100.  ! (kg m-3)   Roads
!
REAL, PARAMETER       :: XRHOSMAX = 300.       ! (kg m-3)   Veg (Default value)
REAL, PARAMETER       :: XRHOSMAX_ROOF = 300.  ! (kg m-3)   Roofs
REAL, PARAMETER       :: XRHOSMAX_ROAD = 350.  ! (kg m-3)   Roads
!
! Minimum and maximum values of the density of snow 
! for ISBA-ES snow option
!
REAL, PARAMETER       :: XRHOSMIN_ES =  50.  ! (kg m-3)
REAL, PARAMETER       :: XRHOSMAX_ES = 750.  ! (kg m-3)
!
! ISBA-ES Critical snow depth at which snow grid thicknesses constant
!
REAL, PARAMETER       :: XSNOWCRITD = 0.03  ! (m)
!                                       
! ISBA-ES Minimum total snow depth for thermal calculations. 
! Used to prevent numerical problems as snow becomes vanishingly thin. 
!
REAL, PARAMETER      :: XSNOWDMIN = 0.000001  ! (m)
!                                      
! Maximum Richardson number limit for very stable conditions using the ISBA-ES 'RIL' option
!
REAL, PARAMETER       :: X_RI_MAX = 0.20
!                                       
! ISBA-ES Maximum snow liquid water holding capacity (fraction by mass) parameters:
!
REAL, PARAMETER       :: XWSNOWHOLDMAX2   = 0.10  ! (-) 
REAL, PARAMETER       :: XWSNOWHOLDMAX1   = 0.03  ! (-)
REAL, PARAMETER       :: XSNOWRHOHOLD     = 200.0 ! (kg/m3)
!                                       
! ISBA-ES arameters for grain size computation :
!
REAL, PARAMETER       :: XSNOW_AGRAIN = 1.6e-4   ! (m)
REAL, PARAMETER       :: XSNOW_BGRAIN = 1.1e-13  ! (m13/kg4)
REAL, PARAMETER       :: XSNOW_CGRAIN = 0.5e-4   ! (m)
REAL, PARAMETER       :: XDSGRAIN_MAX = 2.796e-3 ! m
!
!--------------------------------------------------------------------------------
! Calibration coefficients for CROCUS and ES albedo computation
!--------------------------------------------------------------------------------
!
REAL, PARAMETER :: XD1 = 1., XD2 = 3., XD3 = 4., XX = 99., &
                   XVALB2 = .96, XVALB3 = 1.58, XVALB4 = .92, XVALB5 = .90, &
                   XVALB6 = 15.4, XVALB7 = 346.3, XVALB8 = 32.31, XVALB9 = .88, &
                   XVALB10 = .200, XVALB11 = .6, XVDIOP1 = 2.3E-3, XVRPRE1 = .5, &
                   XVRPRE2=1.5
!
! for ageing effects:
REAL, PARAMETER :: XVPRES1 = 87000.
!
! spectral bands
!
INTEGER, PARAMETER :: NSPEC_BAND_SNOW = 3
!
! for spectral distribution and thickness effects
REAL, PARAMETER :: XVSPEC1 = .71, XVSPEC2 = .21, XVSPEC3 = .08
!
! for thickness effects
REAL, PARAMETER :: XVW1 = .80, XVW2 = .20 , XVD1 = .02, XVD2 = .01
!
!--------------------------------------------------------------------------------
! calibration coefficients for exctinction computation
REAL, PARAMETER :: XVBETA1 = 1.92E-3, XVBETA2 = 40., XVBETA3 = 1.098E-2, &
                   XVBETA4 = 100.,  XVBETA5 = 2000.
!
! ISBA-ES minimum cosinus of zenithal angle
REAL, PARAMETER :: XMINCOSZEN = 0.01
!
!--------------------------------------------------------------------------------
! ISBA-ES Thermal conductivity coefficients from Anderson (1976):
! see Boone, Meteo-France/CNRM Note de Centre No. 70 (2002)
!
REAL, PARAMETER :: XSNOWTHRMCOND1 = 0.02    ! [W/(m K)]
REAL, PARAMETER :: XSNOWTHRMCOND2 = 2.5E-6  ! [W m5/(kg2 K)]
!
! ISBA-ES Thermal conductivity: Implicit vapor diffn effects
! (sig only for new snow OR high altitudes)
! from Sun et al. (1999): based on data from Jordan (1991)
! see Boone, Meteo-France/CNRM Note de Centre No. 70 (2002)
!
REAL, PARAMETER :: XSNOWTHRMCOND_AVAP = -0.06023 ! [W/(m K)]
REAL, PARAMETER :: XSNOWTHRMCOND_BVAP = -2.5425  ! (W/m)
REAL, PARAMETER :: XSNOWTHRMCOND_CVAP = -289.99  ! (K)
!
! Crocus thermal conducitivity coefficient from Yen (1981)
REAL, PARAMETER :: XVRKZ6 = 1.88
!
!--------------------------------------------------------------------------------
! ISBA-ES CROCUS (Pahaut 1976): snowfall density coefficients:
!
REAL, PARAMETER :: XSNOWFALL_A_SN = 109.0  ! kg/m3
REAL, PARAMETER :: XSNOWFALL_B_SN =   6.0  ! kg/(m3 K)
REAL, PARAMETER :: XSNOWFALL_C_SN =  26.0  ! kg/(m7/2 s1/2)
!
! Coefficients for the optimal vertical grid calculation
REAL, PARAMETER :: XDZ1 = 0.01
REAL, PARAMETER :: XDZ2 = 0.0125
REAL, PARAMETER :: XDZ3 = 0.015
REAL, PARAMETER :: XDZ3_BIS = 0.03
REAL, PARAMETER :: XDZ4 = 0.04
REAL, PARAMETER :: XDZ5 = 0.05
REAL, PARAMETER :: XDZ_BASE = 0.02
REAL, PARAMETER :: XDZ_INTERNAL = 0.07
REAL, PARAMETER :: XSCALE_CM = 100.
REAL,DIMENSION(5), PARAMETER :: XDZMAX_INTERNAL = (/0.5,1.,2.,4.,10./)
REAL, PARAMETER :: XDZMIN_TOP_EXTREM = 0.0001
!
! Below this threshold of snowfall, new snowfall are aggregated with surface layer to avoid numerical problems
! (0.03 mm/h)
REAL,PARAMETER :: XSNOWFALL_THRESHOLD = 0.0333/3600.

! The ratio between a new surface layer thickness and the second layer surface thickness is limited to 1/10
REAL,PARAMETER :: XRATIO_NEWLAYER = 0.1

! Coefficients for cases with very thick snowpacks
REAL, PARAMETER :: XDEPTH_THRESHOLD1 = 3.
REAL, PARAMETER :: XDEPTH_THRESHOLD2 = 20.
REAL, PARAMETER :: XDEPTH_SURFACE = 3.
!
! Coefficients for computing the difference in 2 snow layer characteristics
REAL, PARAMETER :: XDIFF_1 = 20.
REAL, PARAMETER :: XDIFF_MAX = 200.
REAL, PARAMETER :: XSCALE_DIFF = 25.
!
! Coeefficients for snow layer splitting
REAL, PARAMETER :: XDZMIN_TOP = 0.01
REAL, PARAMETER :: XDZMIN_TOP_BIS = 0.005
REAL, PARAMETER :: XDZMIN_BOT = 0.02
REAL, PARAMETER :: XSPLIT_COEF = 8.
!
! Coeefficients for snow layer agregation 
REAL, PARAMETER :: XAGREG_COEF_1 = 5.
REAL, PARAMETER :: XAGREG_COEF_2 = 4.5
!
!--------------------------------------------------------------------------------
!
! Calibration coefficients
REAL, PARAMETER :: XVTIME = 48*3600. ! characteristic time for
!compaction and metamorphism by wind drift
!
REAL, PARAMETER :: XVROMAX = 350. !  maximum density for
! drift compaction     UNIT : kg m-3
REAL, PARAMETER :: XVROMIN = 50.  !  minimum density for
! mobility computation UNIT : kg m-3
REAL, PARAMETER :: XVMOB1 = 0.295  !  coefficient for computing
! the mobility index
REAL, PARAMETER :: XVMOB2 = 0.833  !  coefficient for computing
! the mobility index
REAL, PARAMETER :: XVMOB3 = 0.583  !  coefficient for computing
! the mobility index
REAL, PARAMETER :: XVMOB4 = -0.0583 !  coefficient for computing
! the mobility index
REAL, PARAMETER :: XVDRIFT1 = 2.868 !  coefficient for computing
! the drift index
REAL, PARAMETER :: XVDRIFT2 = 0.085 !  coefficient for computing
! the drift index
REAL, PARAMETER :: XVDRIFT3 = 3.25  !  coefficient for computing
! the drift index
REAL, PARAMETER :: XVSIZEMIN = 3.E-4 !  minimum size decrease 
! by drift  UNIT = m
!
! modif_EB pour sublim 
! a pour but de tenir compte du fait que le vent moyen est > rafales
! on en tient compte egalement pour diminuer la duree de l'effet
REAL, PARAMETER :: XCOEF_FF = 1.25 ! coefficient for gust diagnosis from average wind 
REAL, PARAMETER :: XCOEF_EFFECT = 1.0 ! coefficient for impact on density du drift
REAL, PARAMETER :: XQS_REF = 2.E-5 ! valeur de reference de ZQS pour effet neige
!
!--------------------------------------------------------------------------------
!
! ISBA-ES snow grid parameters
!
REAL, PARAMETER, DIMENSION(3)     :: XSGCOEF1  = (/0.25, 0.50, 0.25/) 
REAL, PARAMETER, DIMENSION(2)     :: XSGCOEF2  = (/0.05, 0.34/)       
REAL, PARAMETER, DIMENSION(10)    :: XSGCOEF3  = (/0.025, 0.033, 0.043, &
                                     0.055, 0.071, 0.091, 0.117, 0.150, &
                                     0.193, 0.247/) 
!
! Minimum total snow depth at which surface layer thickness is constant:
!
REAL, PARAMETER                   :: XSNOWTRANS = 0.20                ! (m)
REAL, PARAMETER                   :: XSNOWTRANS1 = 0.40                ! (m)
REAL, PARAMETER                   :: XSNOWTRANS2 = 0.6061                ! (m)
REAL, PARAMETER                   :: XSNOWTRANS3 = 0.7143               ! (m)
REAL, PARAMETER                   :: XSNOWTRANS4 = 0.9259                ! (m)
REAL, PARAMETER                   :: XSNOWTRANS5 = 1.4493                ! (m)
!
!------------------------------------------------------------------------------
!
!Parameters for MEPRA grain type
INTEGER, PARAMETER :: IFR = 0
INTEGER, PARAMETER :: IFR_LB = 1
INTEGER, PARAMETER :: ILB = 2
INTEGER, PARAMETER :: ILB_FIN = 3
INTEGER, PARAMETER :: ILB_ANG = 4
INTEGER, PARAMETER :: IROUL = 5
INTEGER, PARAMETER :: IFIN = 6
INTEGER, PARAMETER :: IFIN_AR = 7
INTEGER, PARAMETER :: IFIN_ANG = 8
INTEGER, PARAMETER :: IPL = 9
INTEGER, PARAMETER :: IPL_GOB = 10
INTEGER, PARAMETER :: IGOB = 11
INTEGER, PARAMETER :: IGEL = 12
INTEGER, PARAMETER :: IGOB_FON = 13
INTEGER, PARAMETER :: IRON_ANG = 14
!
!------------------------------------------------------------------------------
!
! array which describes dendritic grain as a function of dendricity and sphericity
! these 2 variables are discretised in an 10*10 array ( between 0 and 1 by 0.1 step)
INTEGER,DIMENSION(100),PARAMETER :: ICRIS_DEND1D=(/&
             ILB_ANG,ILB_ANG,ILB_ANG,ILB,ILB,ILB,IFR_LB,IFR_LB,IFR,IFR,&
             ILB_ANG,ILB_ANG,ILB_ANG,ILB,ILB,ILB,IFR_LB,IFR_LB,IFR,IFR,&
             ILB_ANG,ILB_ANG,ILB_ANG,ILB,ILB,ILB,IFR_LB,IFR_LB,IFR,IFR,&
             ILB_ANG,ILB_ANG,ILB_ANG,ILB,ILB,ILB,IFR_LB,IFR_LB,IFR,IFR,&
             ILB_ANG,ILB_ANG,ILB_ANG,ILB,ILB,ILB,IFR_LB,IFR_LB,IFR,IFR,&
             ILB_FIN,ILB_FIN,ILB_FIN,ILB,ILB,ILB,IFR_LB,IFR_LB,IFR,IFR,&
             ILB_FIN,ILB_FIN,ILB_FIN,ILB,ILB,ILB,IFR_LB,IFR_LB,IFR,IFR,&
             ILB_FIN,ILB_FIN,ILB_FIN,ILB,ILB,ILB,IFR_LB,IFR_LB,IFR,IFR,&
             ILB_FIN,ILB_FIN,ILB_FIN,ILB,ILB,ILB,IFR_LB,IFR_LB,IFR,IFR,&
             ILB_FIN,ILB_FIN,ILB_FIN,ILB,ILB,ILB,IFR_LB,IFR_LB,IFR,IFR/)

INTEGER,DIMENSION(180),PARAMETER :: ICRIS_NONDEND1D=(/&
            IPL,IPL,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN,IFIN,&
            IPL,IPL,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN,IFIN,&
            IPL,IPL,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN,IFIN,&
            IPL,IPL,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN_ANG,IFIN,IFIN,&
            IPL_GOB,IPL_GOB,IPL_GOB,IPL_GOB,IPL_GOB,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,&
            IGOB,IGOB,IGOB,IGOB,IGOB,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,&
            IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IFIN_AR,IFIN_AR,IFIN_AR,IFIN_AR,IFIN_AR,&
            IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IGEL,IGEL,IGEL,IGEL,IGEL,&
            IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IGEL,IGEL,IGEL,IGEL,IGEL,&
            IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,&
            IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,&
            IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,&
            IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IFIN_AR,IFIN_AR,IFIN_AR,IFIN_AR,IFIN_AR,&
            IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IGEL,IGEL,IGEL,IGEL,IGEL,&
            IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IGEL,IGEL,IGEL,IGEL,IGEL,&
            IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,&
            IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,&
            IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IRON_ANG,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON,IGOB_FON/)
!
END MODULE MODD_SNOW_PAR