!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. SUBROUTINE INI_SURF_CSTS ! ################## ! !!**** *INI_SURF_CSTS * - routine to initialize all surface parameter as !! emissivity and albedo !! !! PURPOSE !! ------- ! !!** METHOD !! ------ !! The physical constants are set to their default numerical values !! or specified in namelist NAM_SURF_CSTS !! !! !! EXTERNAL !! -------- !! !! !! IMPLICIT ARGUMENTS !! ------------------ !! !! REFERENCE !! --------- !! !! AUTHOR !! ------ !! B. Decharme * Meteo France * !! !! MODIFICATIONS !! ------------- !! Original 08/2009 !! M Lafaysse 05/2014 : snow parameters !! B. Decharme 05/13 : Add NAM_SURF_REPROD_OPER for versions reproductibility !! P. Samuelsson 10/2014 MEB !! B. Decharme 01/16 : Update XCFFV !! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! USE MODD_SURF_PAR, ONLY : XUNDEF USE MODD_SURF_CONF, ONLY : CPROGNAME ! USE MODD_WATER_PAR USE MODD_FLOOD_PAR USE MODD_MEB_PAR, ONLY : XTAU_LW, & XRAGNC_FACTOR, XKDELTA_WR USE MODD_SNOW_PAR, ONLY : XEMISSN, XANSMIN, XANSMAX, & XAGLAMIN, XAGLAMAX, XHGLA, & XWSNV, XZ0SN, XZ0HSN, & XTAU_SMELT, & XALBICE1, XALBICE2, XALBICE3, & XRHOTHRESHOLD_ICE, XZ0ICEZ0SNOW, & XVAGING_NOGLACIER, XVAGING_GLACIER, & XPERCENTAGEPORE, & LMEBREC, & XANSFRACMEL, XTEMPANS, & XANSMINMEB ! USE MODI_GET_LUOUT USE MODI_OPEN_NAMELIST USE MODI_CLOSE_NAMELIST USE MODE_POS_SURF ! USE MODD_REPROD_OPER, ONLY : XEVERG_RSMIN, XEVERG_VEG, & CDGAVG, CIMPLICIT_WIND, & CQSAT, CCHARNOCK, CDGDIF USE MODI_TEST_NAM_VAR_SURF ! USE YOMHOOK ,ONLY : LHOOK, DR_HOOK USE PARKIND1 ,ONLY : JPRB ! IMPLICIT NONE ! INTEGER :: ILUOUT ! unit of output listing file INTEGER :: ILUNAM ! namelist file logical unit LOGICAL :: GFOUND ! true if namelist is found ! LOGICAL :: LREPROD_OPER ! REAL(KIND=JPRB) :: ZHOOK_HANDLE ! NAMELIST/NAM_SURF_CSTS/ XEMISSN, XANSMIN, XANSMAX, XAGLAMIN, XAGLAMAX, & XALBWAT, XALBCOEF_TA96, XALBSCA_WAT, XEMISWAT, & XALBWATICE, XEMISWATICE, XHGLA, XWSNV, XCFFV, & XZ0SN, XZ0HSN, XTAU_SMELT, XALBSEAICE, & XZ0FLOOD, XALBWATSNOW, & LMEBREC, & XANSFRACMEL, XTEMPANS, XANSMINMEB, & XTAU_LW, XRAGNC_FACTOR ! NAMELIST/NAM_SURF_SNOW_CSTS/ XZ0ICEZ0SNOW, XRHOTHRESHOLD_ICE, & XALBICE1, XALBICE2, XALBICE3, & XVAGING_NOGLACIER, XVAGING_GLACIER, & XPERCENTAGEPORE ! NAMELIST/NAM_REPROD_OPER/ LREPROD_OPER, XEVERG_RSMIN, XEVERG_VEG, & CDGAVG, CDGDIF, CIMPLICIT_WIND, CQSAT, & CCHARNOCK ! !------------------------------------------------------------------------------- !* 0. INIT !------------------------------------------------------------------------------- ! IF (LHOOK) CALL DR_HOOK('INI_SURF_CSTS',0,ZHOOK_HANDLE) ! XALBWAT = XUNDEF XALBSEAICE = XUNDEF XALBWATICE = XUNDEF XALBWATSNOW = XUNDEF XEMISWAT = XUNDEF XEMISWATICE = XUNDEF XEMISSN = XUNDEF ! !------------------------------------------------------------------------------- !* 1. Default values !------------------------------------------------------------------------------- ! ! Minimum and maximum values of the albedo of snow: ! XANSMIN = 0.50 ! (-) XANSMAX = 0.85 ! (-) ! ! Minimum and maximum values of the albedo of permanet snow/ice: ! XAGLAMIN = 0.8 ! (-) XAGLAMAX = 0.85 ! (-) ! ! Use recommended settings for snow albedo (FALSE = ISBA default) ! LMEBREC=.FALSE. ! ! Fraction of maximum value of the albedo of snow that is reached for melting ! snow ! XANSFRACMEL = 1.0 ! (-) ! ! Threeshold temperature above which the snow albedo starts to decrease ! XTEMPANS = 274.15 ! (K) ! ! Minimum value of the albedo of snow reached under canopy vegetation: ! XANSMINMEB = 0.30 ! (-) ! ! Height of aged snow in glacier case (allows Pn=1) ! XHGLA = 33.3 !(m) ! ! Coefficient for calculation of snow fraction over vegetation ! XWSNV = 5.0 !(-) ! ! Water direct albedo coefficient (option "TA96") ! XALBCOEF_TA96 = 0.037 ! ! Water diffuse albedo ! XALBSCA_WAT = 0.06 ! Coefficient for calculation of floodplain fraction over vegetation ! XCFFV = 4.0 ! ! Roughness length of pure snow surface (m) ! XZ0SN = 0.001 ! ! Roughness length for heat of pure snow surface (m) ! XZ0HSN = 0.0001 ! ! Snow Melt timescale with D95 (s): needed to prevent time step ! dependence of melt when snow fraction < unity. ! XTAU_SMELT = 300. ! ! Extinction coefficient for view factor for long-wave radiation ! XTAU_LW = 0.5 ! - ! ! MEB resistance increase factor for canopy air sapce. ! If=1, then NO effect. It is generally >=1 ! and is needed because the original parameterization ! does not account for extremely stable conditions, ! such as over a snowpack. ! XRAGNC_FACTOR= 200. ! - ! ! MEB maximum intercepted water fraction (on vegetation) ! XKDELTA_WR = 0.25 ! - ! ! NAM_SURF_SNOW_CSTS ! ! Roughness length ratio between ice and snow XZ0ICEZ0SNOW = 10. ! ! 3 bands spectral albedo for glacier ice (CROCUS) ! Default values from Lejeune et al 2009 (Zongo, Bolivia) XALBICE1 = 0.38 XALBICE2 = 0.23 XALBICE3 = 0.08 ! ! Gerbaux et al 2005 (Saint Sorlin) ! PALBICE1=0.23 ! PALBICE2=0.16 ! PALBICE3=0.05 ! ! Density threshold for ice detection kg.m-3 XRHOTHRESHOLD_ICE = 850. ! ! Parameters for ageing effect on albedo XVAGING_NOGLACIER = 60. XVAGING_GLACIER = 900. ! percentage of the total pore volume to compute the max liquid water holding capacity !Pahaut 1976 XPERCENTAGEPORE = 0.05 ! ! Roughness length for flood (m) ! XZ0FLOOD = 0.0002 !------------------------------------------------------------------------------- ! ! * Reproductibility for SURFEX OPER ! LREPROD_OPER = .FALSE. ! default ! ! * Vegetation parameters for tropical forest ! !XEVERG_RSMIN : old = 250. (Manzi 1993) but observations range ! from 140 to 180. According to Delire et al. (1997) and ! new tests over 6 local sites, 175. is recommended ! Should be the default after check with AROME/ALADIN ! XEVERG_RSMIN = 175. !Rsmin ! !XEVERG_VEG : old = 0.99 (Manzi 1993) but according to Delire et al. (1997) and ! new tests over 6 local sites, 1.0 is recommended because 0.99 ! induces unrealistic bare soil evaporation for Tropical forest ! Should be the default after check with AROME/ALADIN ! XEVERG_VEG = 1.0 !Veg fraction ! ! * Soil depth average ! CDGAVG = 'INV' ! ! * Soil depth with ISBA-DF ! CDGDIF = 'ROOT' ! ! * wind implicitation option ! CIMPLICIT_WIND = 'NEW' ! ! * qsat computation ! CQSAT = 'NEW' ! ! * Charnock parameter ! CCHARNOCK = 'NEW' ! !------------------------------------------------------------------------------- !* 2. User values !------------------------------------------------------------------------------- ! CALL GET_LUOUT(CPROGNAME,ILUOUT) ! CALL OPEN_NAMELIST(CPROGNAME,ILUNAM) ! ! CALL POSNAM(ILUNAM,'NAM_SURF_CSTS',GFOUND,ILUOUT) !IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_SURF_CSTS) ! IF(LMEBREC)THEN ! Fraction of maximum value of the albedo of snow that is reached for melting ! snow ! XANSFRACMEL = 0.85 ! (-) ! ! Threeshold temperature above which the snow albedo starts to decrease ! XTEMPANS = 268.15 ! (K) ! ENDIF ! ! CALL POSNAM(ILUNAM,'NAM_SURF_SNOW_CSTS',GFOUND,ILUOUT) !IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_SURF_SNOW_CSTS) ! !------------------------------------------------------------------------------- !* 3. For Reproductibility !------------------------------------------------------------------------------- ! ! CALL POSNAM(ILUNAM,'NAM_REPROD_OPER',GFOUND,ILUOUT) !IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_REPROD_OPER) ! CALL TEST_NAM_VAR_SURF(ILUOUT,'CDGAVG',CDGAVG,'ARI','INV') CALL TEST_NAM_VAR_SURF(ILUOUT,'CDGDIF',CDGDIF,'SOIL','ROOT') CALL TEST_NAM_VAR_SURF(ILUOUT,'CIMPLICIT_WIND',CIMPLICIT_WIND,'NEW','OLD') CALL TEST_NAM_VAR_SURF(ILUOUT,'CQSAT',CIMPLICIT_WIND,'NEW','OLD') CALL TEST_NAM_VAR_SURF(ILUOUT,'CCHARNOCK',CIMPLICIT_WIND,'NEW','OLD') ! CALL TEST_NAM_VAR_SURF(ILUOUT,'XEVERG_RSMIN',XEVERG_RSMIN,175.0,250.0) CALL TEST_NAM_VAR_SURF(ILUOUT,'XEVERG_VEG',XEVERG_VEG,1.0,0.99) ! IF(LREPROD_OPER)THEN XEVERG_RSMIN = 250. XEVERG_VEG = 0.99 CDGAVG = 'ARI' CQSAT = 'OLD' CCHARNOCK = 'OLD' ENDIF ! ! Water global albedo (option "UNIF") ! IF(XALBWAT==XUNDEF)THEN IF(LREPROD_OPER)THEN XALBWAT = 0.135 ELSE XALBWAT = 0.065 ENDIF ENDIF ! ! Sea ice albedo ! IF(XALBSEAICE==XUNDEF)THEN IF(LREPROD_OPER)THEN XALBSEAICE = 0.85 ELSE XALBSEAICE = 0.71 ENDIF ENDIF ! ! water ice and snow albedo ! IF(XALBWATICE==XUNDEF)THEN IF(LREPROD_OPER)THEN XALBWATICE = 0.85 ELSE XALBWATICE = 0.40 ENDIF ENDIF ! IF(XALBWATSNOW==XUNDEF)THEN IF(LREPROD_OPER)THEN XALBWATSNOW = 0.85 ELSE XALBWATSNOW = 0.60 ENDIF ENDIF ! ! Water emissivity ! IF(XEMISWAT==XUNDEF)THEN IF(LREPROD_OPER)THEN XEMISWAT = 0.98 ELSE XEMISWAT = 0.96 ENDIF ENDIF ! ! Sea ice emissivity ! IF(XEMISWATICE==XUNDEF)THEN IF(LREPROD_OPER)THEN XEMISWATICE = 1.0 ELSE XEMISWATICE = 0.97 ENDIF ENDIF ! ! ! Snow emissivity: ! IF(XEMISSN==XUNDEF)THEN IF(LREPROD_OPER)THEN XEMISSN = 1.0 ELSE XEMISSN = 0.99 ENDIF ENDIF ! !------------------------------------------------------------------------------- ! CALL CLOSE_NAMELIST(CPROGNAME,ILUNAM) ! IF (LHOOK) CALL DR_HOOK('INI_SURF_CSTS',1,ZHOOK_HANDLE) ! !------------------------------------------------------------------------------- ! END SUBROUTINE INI_SURF_CSTS