SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
init_teb_veg_optionsn.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 !#############################################################
6 SUBROUTINE init_teb_veg_options_n (&
7  cht, dgmto, tgdo, tvg, &
8  hprogram)
9 !#############################################################
10 !
11 !!**** *INIT_TEB_TEB_VEG_n* - routine to initialize ISBA
12 !!
13 !! PURPOSE
14 !! -------
15 !!
16 !!** METHOD
17 !! ------
18 !!
19 !! EXTERNAL
20 !! --------
21 !!
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !! REFERENCE
27 !! ---------
28 !!
29 !!
30 !! AUTHOR
31 !! ------
32 !! A. Lemonsu *Meteo France*
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !! Original 09/2009
37 !! B. Decharme 07/2011 : read pgd+prep
38 !! B. Decharme 04/2013 : delete CTOPREG option (never used)
39 !! water table / surface coupling
40 !-------------------------------------------------------------------------------
41 !
42 !* 0. DECLARATIONS
43 ! ------------
44 !
45 !
46 !
47 !
48 USE modd_ch_teb_n, ONLY : ch_teb_t
52 !
53 USE modd_read_namelist, ONLY : lnam_read
54 !
57 !
58 !
59 
60 
61 USE modd_data_cover_par, ONLY: nvegtype
62 USE modd_surf_par, ONLY: xundef, nundef
63 !
64 USE modd_isba_par, ONLY : xoptimgrid
65 !
66 USE modn_teb_n, ONLY : xtstep
67 !
68 USE modi_default_isba
69 USE modi_default_ch_dep
70 USE modi_default_ch_bio_flux
71 USE modi_read_default_teb_veg_n
72 USE modi_read_teb_veg_conf_n
73 USE modi_get_luout
75 !
76 USE yomhook ,ONLY : lhook, dr_hook
77 USE parkind1 ,ONLY : jprb
78 !
79 IMPLICIT NONE
80 !
81 !* 0.1 Declarations of arguments
82 ! -------------------------
83 !
84 !
85 !
86 !
87 TYPE(ch_teb_t), INTENT(INOUT) :: cht
88 TYPE(diag_misc_teb_options_t), INTENT(INOUT) :: dgmto
89 TYPE(teb_garden_options_t), INTENT(INOUT) :: tgdo
90 TYPE(teb_veg_options_t), INTENT(INOUT) :: tvg
91 !
92  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
93 !
94 !
95 !
96 !* 0.2 Declarations of local variables
97 ! -------------------------------
98 !
99 INTEGER :: iversion, ibugfix ! surface version
100 INTEGER :: iluout ! unit of output listing file
101 INTEGER :: iresp ! Error code after redding
102  CHARACTER(LEN=12) :: yrecfm ! Name of the article to be read
103  CHARACTER(LEN=4 ) :: ylvl
104 !
105 INTEGER :: jlayer ! loop counter on layers
106 !
107 REAL :: zout_tstep
108  CHARACTER(LEN=3) :: yrain
109 LOGICAL :: gcanopy_drag
110 LOGICAL :: gglacier
111 LOGICAL :: gflood
112 LOGICAL :: gwtd
113 LOGICAL :: gvegupd
114 LOGICAL :: gspinupcarbs
115 LOGICAL :: gspinupcarbw
116 REAL :: zspinmaxs
117 REAL :: zspinmaxw
118 REAL :: zco2_start
119 REAL :: zco2_end
120 INTEGER :: inbyearspins
121 INTEGER :: inbyearspinw
122 REAL(KIND=JPRB) :: zhook_handle
123 !
124 !-------------------------------------------------------------------------------
125 !
126 ! Initialisation for IO
127 !
128 IF (lhook) CALL dr_hook('INIT_TEB_VEG_OPTIONS_N',0,zhook_handle)
129  CALL get_luout(hprogram,iluout)
130 !
131 ! Other little things
132 !
133 dgmto%LSURF_DIAG_ALBEDO = .false.
134 !
135 IF (lnam_read) THEN
136  !
137  !* 1. Defaults
138  ! --------
139  !
140  ! 1.1. Hard defaults
141  !
142  ! Definition of default options for ISBA (in MODD_TEB_VEG_n)
143  ! REM - TSTEP, OUT_TSTEP, CANOPY_DRAG are defined as local variables
144  ! because they are already in init_teb.f90 (these options are
145  ! forced to the same values for TEB and urban green areas)
146  !
147  CALL default_isba(xtstep, zout_tstep, &
148  tvg%CROUGH, tvg%CRUNOFF, tvg%CALBEDO, tvg%CSCOND, &
149  tvg%CC1DRY, tvg%CSOILFRZ, tvg%CDIFSFCOND, tvg%CSNOWRES, &
150  tvg%CCPSURF, tvg%XCGMAX, tvg%XCDRAG, tvg%CKSAT, tvg%LSOC, &
151  yrain, tvg%CHORT, gglacier, gcanopy_drag, &
152  gvegupd, gspinupcarbs, gspinupcarbw, &
153  zspinmaxs, zspinmaxw, zco2_start, zco2_end, &
154  inbyearspins, inbyearspinw, tvg%LNITRO_DILU )
155  !
156  CALL default_ch_bio_flux(cht%LCH_BIO_FLUX)
157  !
158 ENDIF
159 ! 1.2. Defaults from file header
160 !
161  CALL read_default_teb_veg_n(cht, tvg, &
162  hprogram)
163 !
164  CALL read_teb_veg_conf_n(cht, tvg, &
165  hprogram)
166 !
167 !-------------------------------------------------------------------------------
168 tvg%CRESPSL = 'DEF'
169 !-------------------------------------------------------------------------------
170 !
171 ! Initialisation for IO
172 !
173 !* 2. Definition of version
174 ! ---------------------
175 !
176 yrecfm='VERSION'
177  CALL read_surf(&
178  hprogram,yrecfm,iversion,iresp)
179 !
180 yrecfm='BUG'
181  CALL read_surf(&
182  hprogram,yrecfm,ibugfix,iresp)
183 !
184 !* 2. Initialisation of ISBA options
185 ! ------------------------------
186 !
187 !
188 yrecfm='TWN_ISBA'
189 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm='GD_ISBA'
190  CALL read_surf(&
191  hprogram,yrecfm,tvg%CISBA,iresp)
192 !
193 IF (iversion>=7) THEN
194  !
195  yrecfm='TWN_PEDOTF'
196  IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm='GD_PEDOTF'
197  CALL read_surf(&
198  hprogram,yrecfm,tvg%CPEDOTF,iresp)
199  !
200 ELSE
201  tvg%CPEDOTF = 'CH78'
202 ENDIF
203 !
204 yrecfm='TWN_PHOTO'
205 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm='GD_PHOTO'
206  CALL read_surf(&
207  hprogram,yrecfm,tvg%CPHOTO,iresp)
208 !
209 yrecfm='TWN_LAYER'
210 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm='GD_LAYER'
211  CALL read_surf(&
212  hprogram,yrecfm,tgdo%NGROUND_LAYER,iresp)
213 !
214 !* new radiative transfert
215 !
216 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=2) THEN
217  !
218  yrecfm='TWN_TR_ML'
219  IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm='GD_TR_ML'
220  CALL read_surf(&
221  hprogram,yrecfm,tvg%LTR_ML,iresp)
222  !
223 ELSE
224  tvg%LTR_ML = .false.
225 ENDIF
226 !
227 !* Reference grid for DIF
228 !
229 IF(tvg%CISBA=='DIF') THEN
230  ALLOCATE(tgdo%XSOILGRID(tgdo%NGROUND_LAYER))
231  tgdo%XSOILGRID=xundef
232  IF (iversion>=8) THEN
233  DO jlayer=1,tgdo%NGROUND_LAYER
234  WRITE(ylvl,'(I4)') jlayer
235  yrecfm='GD_SGRID'//adjustl(ylvl(:len_trim(ylvl)))
236  CALL read_surf(&
237  hprogram,yrecfm,tgdo%XSOILGRID(jlayer),iresp)
238  ENDDO
239  ELSEIF (iversion==7 .AND. ibugfix>=2) THEN
240  yrecfm='TWN_SOILGRID'
241  IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm='GD_SOILGRID'
242  CALL read_surf(&
243  hprogram,yrecfm,tgdo%XSOILGRID,iresp,hdir='-')
244  ELSE
245  tgdo%XSOILGRID(1:tgdo%NGROUND_LAYER)=xoptimgrid(1:tgdo%NGROUND_LAYER)
246  ENDIF
247 ELSE
248  ALLOCATE(tgdo%XSOILGRID(0))
249 ENDIF
250 !
251 !* number of biomass pools
252 !
253 tvg%NNBIOMASS=1
254 IF (tvg%CPHOTO=='NIT') tvg%NNBIOMASS=3
255 !
256 !-------------------------------------------------------------------------------
257 !
258 !
259 IF (lhook) CALL dr_hook('INIT_TEB_VEG_OPTIONS_N',1,zhook_handle)
260 END SUBROUTINE init_teb_veg_options_n
subroutine default_isba(PTSTEP, POUT_TSTEP, HROUGH, HRUNOFF, HALBEDO, HSCOND, HC1DRY, HSOILFRZ, HDIFSFCOND, HSNOWRES, HCPSURF, PCGMAX, PCDRAG, HKSAT, OSOC, HRAIN, HHORT, OGLACIER, OCANOPY_DRAG, OVEGUPD, OSPINUPCARBS, OSPINUPCARBW, PSPINMAXS, PSPINMAXW, PCO2_START, PCO2_END, KNBYEARSPINS, KNBYEARSPINW, ONITRO_DILU)
Definition: default_isba.F90:6
subroutine init_teb_veg_options_n(CHT, DGMTO, TGDO, TVG, HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine read_teb_veg_conf_n(CHT, TVG, HPROGRAM)
subroutine read_default_teb_veg_n(CHT, TVG, HPROGRAM)
subroutine default_ch_bio_flux(OCH_BIO_FLUX)