1 !SURFEX_LIC Copyright 1994-2014 Meteo-France
2 !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SURFEX_LIC for details. version 1.
5 !#############################################################
6 SUBROUTINE INIT_TEB_VEG_OPTIONS_n(HPROGRAM)
7 !#############################################################
9 !!**** *INIT_TEB_TEB_VEG_n* - routine to initialize ISBA
30 !! A. Lemonsu *Meteo France*
35 !! B. Decharme 07/2011 : read pgd+prep
36 !-------------------------------------------------------------------------------
40 USE MODD_READ_NAMELIST, ONLY : LNAM_READ
42 USE MODD_TYPE_DATE_SURF
45 USE MODD_TEB_VEG_n, ONLY: CROUGH,CISBA,CPEDOTF,LTR_ML,CPHOTO,CRUNOFF,CALBEDO, &
46 CSCOND, CC1DRY, CSOILFRZ, CDIFSFCOND, CSNOWRES, &
47 CRESPSL,NNBIOMASS, CSOC, &
48 CCPSURF, CHORT, CKSAT, CTOPREG, XCGMAX, XCDRAG
50 USE MODD_TEB_GARDEN_n, ONLY: NGROUND_LAYER, XSOILGRID
52 USE MODD_CH_TEB_n, ONLY: LCH_BIO_FLUX
54 USE MODD_DATA_COVER_PAR, ONLY: NVEGTYPE
55 USE MODD_SURF_PAR, ONLY: XUNDEF, NUNDEF
56 USE MODD_DIAG_MISC_TEB_n, ONLY: LSURF_DIAG_ALBEDO
58 USE MODD_ISBA_PAR, ONLY : XOPTIMGRID
60 USE MODN_TEB_n, ONLY : XTSTEP
63 USE MODI_DEFAULT_CH_DEP
64 USE MODI_DEFAULT_CH_BIO_FLUX
65 USE MODI_READ_DEFAULT_TEB_VEG_n
66 USE MODI_READ_TEB_VEG_CONF_n
70 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
71 USE PARKIND1 ,ONLY : JPRB
75 !* 0.1 Declarations of arguments
76 ! -------------------------
78 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
82 !* 0.2 Declarations of local variables
83 ! -------------------------------
85 INTEGER :: IVERSION, IBUGFIX ! surface version
86 INTEGER :: ILUOUT ! unit of output listing file
87 INTEGER :: IRESP ! Error code after redding
88 CHARACTER(LEN=LEN_HREC) :: YRECFM ! Name of the article to be read
92 CHARACTER(LEN=3) :: YRAIN
93 LOGICAL :: GCANOPY_DRAG
98 LOGICAL :: GSPINUPCARBS
99 LOGICAL :: GSPINUPCARBW
102 INTEGER :: INBYEARSPINS
103 INTEGER :: INBYEARSPINW
104 REAL(KIND=JPRB) :: ZHOOK_HANDLE
106 !-------------------------------------------------------------------------------
108 ! Initialisation for IO
110 IF (LHOOK) CALL DR_HOOK('INIT_TEB_VEG_OPTIONS_N',0,ZHOOK_HANDLE)
111 CALL GET_LUOUT(HPROGRAM,ILUOUT)
113 ! Other little things
115 LSURF_DIAG_ALBEDO = .FALSE.
124 ! Definition of default options for ISBA (in MODD_TEB_VEG_n)
125 ! REM - TSTEP, OUT_TSTEP, CANOPY_DRAG are defined as local variables
126 ! because they are already in init_teb.f90 (these options are
127 ! forced to the same values for TEB and urban green areas)
129 CALL DEFAULT_ISBA(XTSTEP, ZOUT_TSTEP, &
130 CROUGH, CRUNOFF, CALBEDO, CSCOND, &
131 CC1DRY, CSOILFRZ, CDIFSFCOND, CSNOWRES, &
132 CCPSURF, XCGMAX, XCDRAG, CKSAT, CSOC, &
133 CTOPREG, YRAIN, CHORT, GFLOOD, GTRIP, &
134 GGLACIER, GCANOPY_DRAG, GVEGUPD, &
135 GSPINUPCARBS, GSPINUPCARBW, &
136 ZSPINMAXS, ZSPINMAXW, &
137 INBYEARSPINS, INBYEARSPINW )
139 CALL DEFAULT_CH_BIO_FLUX(LCH_BIO_FLUX)
142 ! 1.2. Defaults from file header
144 CALL READ_DEFAULT_TEB_VEG_n(HPROGRAM)
146 CALL READ_TEB_VEG_CONF_n(HPROGRAM)
148 !-------------------------------------------------------------------------------
150 !-------------------------------------------------------------------------------
152 ! Initialisation for IO
154 !* 2. Definition of version
155 ! ---------------------
158 CALL READ_SURF(HPROGRAM,YRECFM,IVERSION,IRESP)
161 CALL READ_SURF(HPROGRAM,YRECFM,IBUGFIX,IRESP)
163 !* 2. Initialisation of ISBA options
164 ! ------------------------------
168 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM='GD_ISBA'
169 CALL READ_SURF(HPROGRAM,YRECFM,CISBA,IRESP)
171 IF (IVERSION>=7) THEN
174 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM='GD_PEDOTF'
175 CALL READ_SURF(HPROGRAM,YRECFM,CPEDOTF,IRESP)
182 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM='GD_PHOTO'
183 CALL READ_SURF(HPROGRAM,YRECFM,CPHOTO,IRESP)
186 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM='GD_LAYER'
187 CALL READ_SURF(HPROGRAM,YRECFM,NGROUND_LAYER,IRESP)
189 !* new radiative transfert
191 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=2) THEN
194 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM='GD_TR_ML'
195 CALL READ_SURF(HPROGRAM,YRECFM,LTR_ML,IRESP)
201 !* Reference grid for DIF
203 IF(CISBA=='DIF') THEN
204 ALLOCATE(XSOILGRID(NGROUND_LAYER))
206 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=2) THEN
207 YRECFM='TWN_SOILGRID'
208 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM='GD_SOILGRID'
209 CALL READ_SURF(HPROGRAM,YRECFM,XSOILGRID,IRESP,HDIR='-')
211 XSOILGRID(1:NGROUND_LAYER)=XOPTIMGRID(1:NGROUND_LAYER)
214 ALLOCATE(XSOILGRID(0))
217 !* number of biomass pools
220 IF (CPHOTO=='NIT') NNBIOMASS=3
222 !-------------------------------------------------------------------------------
225 IF (LHOOK) CALL DR_HOOK('INIT_TEB_VEG_OPTIONS_N',1,ZHOOK_HANDLE)
226 END SUBROUTINE INIT_TEB_VEG_OPTIONS_n