SURFEX v8.1
General documentation of Surfex
init_isban.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_isba_n (DTCO, OREAD_BUDGETC, UG, U, USS, GCP, IM, DTZ,&
7  NDST, SLT, SV, HPROGRAM, HINIT, OLAND_USE, &
8  KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, &
9  PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, &
10  PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, &
11  TPDATE_END, HATMFILE, HATMFILETYPE, HTEST )
12 !#############################################################
13 !
14 !!**** *INIT_ISBA_n* - routine to initialize ISBA
15 !!
16 !! PURPOSE
17 !! -------
18 !!
19 !!** METHOD
20 !! ------
21 !!
22 !! EXTERNAL
23 !! --------
24 !!
25 !!
26 !! IMPLICIT ARGUMENTS
27 !! ------------------
28 !!
29 !! REFERENCE
30 !! ---------
31 !!
32 !!
33 !! AUTHOR
34 !! ------
35 !! V. Masson *Meteo France*
36 !!
37 !! MODIFICATIONS
38 !! -------------
39 !! Original 01/2004
40 !! Modified by P. Le Moigne (11/2004): miscellaneous diagnostics
41 !! Modified by P. Le Moigne (06/2006): seeding and irrigation
42 !! Modified by B. Decharme (2008) : SGH and Flooding scheme
43 !! Modified by B. Decharme (01/2009): optional deep soil temperature as in Arpege
44 !! Modified by R. Hamdi (01/2009): Cp and L
45 !! Modified by B. Decharme (06/2009): read topographic index statistics
46 !! Modified by P. Le Moigne (01/2009): Beljaars sso
47 !! Modified by B. Decharme (08/2009): Active Trip coupling variable if Earth System Model
48 !! A.L. Gibelin 04/09 : change BSLAI_NITRO initialisation
49 !! A.L. Gibelin 04/09 : modifications for CENTURY model
50 !! A.L. Gibelin 06/09 : soil carbon initialisation
51 !! B. Decharme 07/11 : read pgd+prep
52 !! R. Alkama 05/12 : new carbon spinup
53 !! J.Escobar 11/13 : add USE MODI_DEFAULT_CROCUS
54 !! B. Decharme 04/2013 new coupling variables
55 !! P. Samuelsson 10/14 : MEB
56 !!
57 !-------------------------------------------------------------------------------
58 !
59 !* 0. DECLARATIONS
60 ! ------------
61 !
62 USE modd_surfex_n, ONLY : isba_model_t
63 !
66 USE modd_surf_atm_n, ONLY : surf_atm_t
67 USE modd_sso_n, ONLY : sso_t
69 USE modd_data_tsz0_n, ONLY : data_tsz0_t
70 USE modd_dst_n, ONLY : dst_np_t
71 USE modd_slt_n, ONLY : slt_t
72 USE modd_sv_n, ONLY : sv_t
73 !
74 USE modd_type_date_surf, ONLY : date
75 !
89 !
91 USE modd_surf_atm, ONLY : lcpl_gcm
92 USE modd_surf_par, ONLY : xundef, nundef
93 USE modd_agri, ONLY : lagrip
94 !
95 USE mode_tartes, ONLY : init_tartes
97 !
98 USE modd_read_namelist, ONLY : lnam_read
99 !
100 USE modd_co2v_par, ONLY : xmco2, xspin_co2
101 USE modd_csts, ONLY : xmd
102 !
103 USE modi_init_io_surf_n
104 !
105 USE modi_get_luout
106 USE modi_abor1_sfx
107 USE modi_default_isba
108 USE modi_default_ch_dep
109 USE modi_default_ch_bio_flux
110 USE modi_default_diag_isba
111 USE modi_default_crocus
112 USE modi_read_default_isba_n
113 USE modi_read_isba_conf_n
114 USE modi_read_prep_isba_snow
115 USE modi_read_prep_isba_carbon
116 USE modi_read_surf
117 USE modi_prep_ctrl_isba
118 USE modi_read_isba_date
119 USE modi_read_pgd_isba_n
120 USE modi_compute_isba_parameters
121 USE modi_read_nam_prep_isba_n
122 USE modi_ini_data_param
123 !
124 USE modi_set_surfex_filein
125 !
126 USE modi_end_io_surf_n
127 !
128 USE yomhook ,ONLY : lhook, dr_hook
129 USE parkind1 ,ONLY : jprb
130 !
131 IMPLICIT NONE
132 !
133 !* 0.1 Declarations of arguments
134 ! -------------------------
135 !
136 !
137 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
138 LOGICAL, INTENT(IN) :: OREAD_BUDGETC
139 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
140 TYPE(surf_atm_t), INTENT(INOUT) :: U
141 TYPE(sso_t), INTENT(INOUT) :: USS
142 TYPE(grid_conf_proj_t),INTENT(INOUT) :: GCP
143 !
144 TYPE(isba_model_t), INTENT(INOUT) :: IM
145 !
146 TYPE(data_tsz0_t), INTENT(INOUT) :: DTZ
147 TYPE(dst_np_t), INTENT(INOUT) :: NDST
148 TYPE(slt_t), INTENT(INOUT) :: SLT
149 TYPE(sv_t), INTENT(INOUT) :: SV
150 !
151  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
152  CHARACTER(LEN=3), INTENT(IN) :: HINIT ! choice of fields to initialize
153 LOGICAL, INTENT(IN) :: OLAND_USE !
154 INTEGER, INTENT(IN) :: KI ! number of points
155 INTEGER, INTENT(IN) :: KSV ! number of scalars
156 INTEGER, INTENT(IN) :: KSW ! number of short-wave spectral bands
157  CHARACTER(LEN=6), DIMENSION(KSV), INTENT(IN) :: HSV ! name of all scalar variables
158 REAL, DIMENSION(KI), INTENT(IN) :: PCO2 ! CO2 concentration (kg/m3)
159 REAL, DIMENSION(KI), INTENT(IN) :: PRHOA ! air density
160 REAL, DIMENSION(KI), INTENT(IN) :: PZENITH ! solar zenithal angle
161 REAL, DIMENSION(KI), INTENT(IN) :: PAZIM ! solar azimuthal angle (rad from N, clock)
162 REAL, DIMENSION(KSW), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band
163 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PDIR_ALB ! direct albedo for each band
164 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PSCA_ALB ! diffuse albedo for each band
165 REAL, DIMENSION(KI), INTENT(OUT) :: PEMIS ! emissivity
166 REAL, DIMENSION(KI), INTENT(OUT) :: PTSRAD ! radiative temperature
167 REAL, DIMENSION(KI), INTENT(OUT) :: PTSURF ! surface effective temperature (K)
168 !
169 INTEGER, INTENT(IN) :: KYEAR ! current year (UTC)
170 INTEGER, INTENT(IN) :: KMONTH ! current month (UTC)
171 INTEGER, INTENT(IN) :: KDAY ! current day (UTC)
172 REAL, INTENT(IN) :: PTIME ! current time since
173  ! midnight (UTC, s)
174 TYPE(date), INTENT(INOUT) :: TPDATE_END
175 !
176  CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name
177  CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type
178  CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK'
179 !
180 !
181 !* 0.2 Declarations of local variables
182 ! -------------------------------
183 !
184 REAL, DIMENSION(KI) :: ZCO2 ! CO2 concentration (kg/m3)
185 REAL :: ZSPINCO2
186 INTEGER :: ISPINEND
187 !
188 INTEGER :: ILUOUT ! unit of output listing file
189 INTEGER :: IVERSION ! surface version
190 INTEGER :: IRESP ! return code
191 INTEGER :: ISIZE_LMEB_PATCH ! Number of patches where multi-energy balance should be applied
192 !
193  CHARACTER(LEN=3) :: YSNOW_SCHEME
194 INTEGER :: ISNOW_NLAYER, JP
195 !
196 REAL(KIND=JPRB) :: ZHOOK_HANDLE
197 !
198 !-------------------------------------------------------------------------------
199 !
200 ! Initialisation for IO
201 !
202 !
203 IF (lhook) CALL dr_hook('INIT_ISBA_N',0,zhook_handle)
204  CALL get_luout(hprogram,iluout)
205 !
206 IF (htest/='OK') THEN
207  CALL abor1_sfx('INIT_ISBAN: FATAL ERROR DURING ARGUMENT TRANSFER')
208 END IF
209 !
210 ! Other little things
211 !
212 IF (lnam_read) THEN
213  !
214  !* 0. Defaults
215 ! --------
216 
217  ! 0.1. Hard defaults
218  !
219  CALL default_isba(im%O%XTSTEP, im%O%XOUT_TSTEP, &
220  im%O%CRUNOFF, im%O%CSCOND, &
221  im%O%CC1DRY, im%O%CSOILFRZ, im%O%CDIFSFCOND, im%O%CSNOWRES, &
222  im%O%CCPSURF, im%O%XCGMAX, im%O%XCDRAG, im%O%CKSAT, im%O%LSOC, &
223  im%O%CRAIN, im%O%CHORT, im%O%LGLACIER, im%O%LCANOPY_DRAG, &
224  im%O%LVEGUPD, im%O%LSPINUPCARBS, im%O%LSPINUPCARBW, &
225  im%O%XSPINMAXS, im%O%XSPINMAXW, im%O%XCO2_START, im%O%XCO2_END, &
226  im%O%NNBYEARSPINS, im%O%NNBYEARSPINW, im%O%LNITRO_DILU )
227  !
228  CALL default_ch_dep(im%CHI%CCH_DRY_DEP)
229  CALL default_ch_bio_flux(im%CHI%LCH_BIO_FLUX)
230  CALL default_diag_isba(im%ID%O%N2M, im%ID%O%LSURF_BUDGET, im%ID%O%L2M_MIN_ZS, im%ID%O%LRAD_BUDGET, &
231  im%ID%O%LCOEF, im%ID%O%LSURF_VARS, im%ID%DE%LSURF_EVAP_BUDGET, &
232  im%ID%DM%LSURF_MISC_BUDGET, im%ID%DM%LSURF_DIAG_ALBEDO, &
233  im%ID%O%LSURF_BUDGETC, im%ID%DM%LSURF_MISC_DIF, im%ID%O%LPATCH_BUDGET, &
234  im%ID%O%LPGD, im%ID%O%LRESET_BUDGETC, im%ID%DE%LWATER_BUDGET, &
235  im%ID%DM%LPROSNOW,im%ID%DM%LVOLUMETRIC_SNOWLIQ,im%ID%O%XDIAG_TSTEP )
236  !
237  CALL default_crocus(im%O%LSNOWDRIFT, im%O%LSNOWDRIFT_SUBLIM, im%O%LSNOW_ABS_ZENITH, &
238  im%O%CSNOWMETAMO, im%O%CSNOWRAD)
239  !
240 ENDIF
241 !
242 ! 0.2. Defaults from file header
243 !
244  CALL read_default_isba_n(im%CHI, im%ID%DE, im%ID%O, im%ID%DM, im%O, hprogram)
245 !
246  CALL read_isba_conf_n(im%CHI, im%ID%DE, im%ID%O, im%ID%DM, im%O, hprogram)
247 !
248  CALL init_io_surf_n(dtco, u, hprogram,'FULL ','ISBA ','READ ')
249  CALL read_surf(hprogram,'VERSION',iversion,iresp)
250  CALL end_io_surf_n(hprogram)
251 !
252 !* 1. Reading of configuration:
253 ! -------------------------
254 !
255 !* initialization of snow and carbon schemes
256 !
257 im%O%NNBYEARSOLD = 1
258 im%O%NSPINS = 1
259 im%O%NSPINW = 1
260 !
261 IF (hinit=='PRE') THEN
262  CALL read_prep_isba_snow(hprogram,ysnow_scheme,isnow_nlayer)
263 !
264 !* initialization of soil carbon scheme
265 !
266  CALL read_prep_isba_carbon(hprogram,im%O%CRESPSL)
267 !
268  IF (im%O%CRESPSL=='CNT') THEN
269  im%O%NNLITTER = 2
270  im%O%NNLITTLEVS = 2
271  im%O%NNSOILCARB = 3
272  ELSE
273  im%O%NNLITTER = 0
274  im%O%NNLITTLEVS = 0
275  im%O%NNSOILCARB = 0
276  ENDIF
277 
278 ELSEIF (hinit=='ALL') THEN
279  !
280  CALL init_io_surf_n(dtco, u, hprogram,'NATURE','ISBA ','READ ')
281  !
282  IF (iversion<6) THEN
283  im%O%CRESPSL='DEF'
284  ELSE
285  CALL read_surf(hprogram,'RESPSL',im%O%CRESPSL,iresp)
286  CALL read_surf(hprogram,'NLITTER',im%O%NNLITTER,iresp)
287  CALL read_surf(hprogram,'NLITTLEVS',im%O%NNLITTLEVS,iresp)
288  CALL read_surf(hprogram,'NSOILCARB',im%O%NNSOILCARB,iresp)
289  IF(iversion>=7.AND.(im%O%LSPINUPCARBS.OR.im%O%LSPINUPCARBW))THEN
290  CALL read_surf(hprogram,'NBYEARSOLD',im%O%NNBYEARSOLD,iresp)
291  ELSE
292  im%O%NNBYEARSOLD=nundef
293  ENDIF
294  ENDIF
295  !
296  CALL end_io_surf_n(hprogram)
297  !
298 ENDIF
299 !
300 IF (im%O%CISBA/="DIF") THEN
301  im%O%NLAYER_DUN = 2
302  im%O%NLAYER_HORT = 2
303 ENDIF
304 !
305 !-------------------------------------------------------------------------------
306 !
307 !* 2. Physiographic fields
308 ! --------------------
309 !
310 !
311 !* date
312 !
313 SELECT CASE (hinit)
314  CASE ('PGD')
315  im%S%TTIME%TDATE%YEAR = nundef
316  im%S%TTIME%TDATE%MONTH= nundef
317  im%S%TTIME%TDATE%DAY = nundef
318  im%S%TTIME%TIME = xundef
319 
320  CASE ('PRE')
321  CALL prep_ctrl_isba(im%ID%O, im%ID%DE%LSURF_EVAP_BUDGET, im%ID%DM%LSURF_MISC_BUDGET, &
322  im%ID%DM%LSURF_MISC_DIF, iluout)
323  IF (lnam_read) CALL read_nam_prep_isba_n(hprogram)
324  CALL read_isba_date(hprogram, hinit, iluout, hatmfile, hatmfiletype, kyear, kmonth, kday, ptime, im%S%TTIME)
325  tpdate_end = im%S%TTIME%TDATE
326 
327  CASE DEFAULT
328  CALL init_io_surf_n(dtco, u, hprogram,'FULL ','SURF ','READ ')
329  CALL read_surf(hprogram,'DTCUR',im%S%TTIME,iresp)
330  CALL end_io_surf_n(hprogram)
331 END SELECT
332 !
333 !-----------------------------------------------------------------------------------------------------
334 ! READ PGD FILE
335 !-----------------------------------------------------------------------------------------------------
336 !
337 ! initialization for I/O
338 !
339  CALL set_surfex_filein(hprogram,'PGD ') ! change input file name to pgd name
340  CALL init_io_surf_n(dtco, u, hprogram,'NATURE','ISBA ','READ ')
341 !
342 !
343 !* 2.1 Cover, soil and orographic fields:
344 ! ---------------------------------
345 !
346  CALL read_pgd_isba_n(im%CHI, dtco, im%DTV, dtz, im%GB, im%G, im%ISS, im%O, im%S, im%K, &
347  ug, u, uss, gcp, sv, hprogram, oland_use, tpdate_end)
348 !
349 IF (hinit=='PRE') THEN
350  DO jp = 1,im%O%NPATCH
351  im%NPE%AL(jp)%TSNOW%SCHEME = ysnow_scheme
352  im%NPE%AL(jp)%TSNOW%NLAYER = isnow_nlayer
353  ENDDO
354 ENDIF
355 !
356 isize_lmeb_patch=count(im%O%LMEB_PATCH(:))
357 !
358 !
359 !* 2.2 Check:
360 ! ------
361 !
362 IF ( im%O%CPHOTO/='NON' .AND. im%O%NPATCH/=12 .AND. im%O%NPATCH/=19 )THEN
363  CALL abor1_sfx('INIT_ISBAN: INCONSISTENCY BETWEEN CPHOTO AND NPATCH')
364 ENDIF
365 !
366 IF (hinit=='PRE' .AND. ysnow_scheme.NE.'3-L' .AND. ysnow_scheme.NE.'CRO' .AND. im%O%CISBA=='DIF') THEN
367  CALL abor1_sfx("INIT_ISBAN: WITH CISBA = DIF, CSNOW MUST BE 3-L OR CRO")
368 ENDIF
369 IF ( im%O%CPHOTO/='NIT' .AND. im%O%CPHOTO/='NCB' .AND. lagrip) THEN
370  CALL abor1_sfx('INIT_ISBAN: INCONSISTENCY BETWEEN CPHOTO AND LAGRIP')
371 ENDIF
372 IF ( im%O%CPHOTO/='NCB' .AND. im%O%CRESPSL=='CNT') THEN
373  CALL abor1_sfx('INIT_ISBAN: INCONSISTENCY BETWEEN CPHOTO AND CRESPSL')
374 ENDIF
375 IF (hinit=='PRE' .AND. isize_lmeb_patch>0 .AND. ysnow_scheme.NE.'3-L' .AND. ysnow_scheme.NE.'CRO') THEN
376  CALL abor1_sfx("INIT_ISBAN: WITH LMEB_PATCH = TRUE, CSNOW MUST BE 3-L OR CRO")
377 ENDIF
378 IF(im%O%CPHOTO/='NCB'.AND.im%O%LSPINUPCARBW)THEN
379  CALL abor1_sfx('INIT_ISBAN: INCONSISTENCY BETWEEN CPHOTO AND LSPINUPCARBW (if not NCB must be false)')
380 ENDIF
381 IF(im%O%CRESPSL/='CNT'.AND.im%O%LSPINUPCARBS)THEN
382  CALL abor1_sfx('INIT_ISBAN: INCONSISTENCY BETWEEN CRESPSL AND LSPINUPCARBS (if not CNT must be false)')
383 ENDIF
384 IF(im%O%LSPINUPCARBW.AND.REAL(im%o%nnbyearspinw)>REAL(im%o%nnbyearspins)*0.5)then
385  WRITE(iluout,*)'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
386  WRITE(iluout,*)'INIT_ISBAN: INCONSISTENCY BETWEEN NNBYEARSPINW AND NNBYEARSPINS'
387  WRITE(iluout,*)'NNBYEARSPINW MUST BE < TO 0.5 * NNBYEARSPINS'
388  WRITE(iluout,*)'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
389  CALL abor1_sfx('INIT_ISBAN: INCONSISTENCY BETWEEN NNBYEARSPINW AND NNBYEARSPINS')
390 ENDIF
391 IF(im%O%LSPINUPCARBS.AND.(im%O%XCO2_START==xundef.OR.im%O%XCO2_END==xundef))THEN
392  WRITE(iluout,*)'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
393  WRITE(iluout,*)'INIT_ISBAN: INCONSISTENCY BETWEEN LSPINUPCARBS AND XCO2_START OR XCO2_END'
394  WRITE(iluout,*)'FOR ISBA-CC SPINUP XCO2_START AND XCO2_END MUST BE DEFINED'
395  WRITE(iluout,*)'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
396  CALL abor1_sfx('INIT_ISBAN: INCONSISTENCY BETWEEN LSPINUPCARBS AND XCO2_START OR XCO2_END')
397 ENDIF
398 !
399  CALL end_io_surf_n(hprogram)
400  CALL set_surfex_filein(hprogram,'PREP') ! restore input file name
401 !
402 !-------------------------------------------------------------------------------
403 !
404 ! During soil carbon spinup with ISBA-CC:
405 ! (1) grass parameters are attributed to all agricultural PFT with atmospheric CO2 concentration
406 ! fixed to Pre-industrial CO2 consentration XCO2_START
407 ! (2) Atmospheric CO2 concentration rampin up from XCO2_START to XCO2_END
408 !
409 ispinend=im%O%NNBYEARSPINS-nint(im%O%NNBYEARSPINS*xspin_co2)
410 !
411 im%O%LAGRI_TO_GRASS = .false.
412 !
413 IF ( im%O%LSPINUPCARBS .AND. (im%O%NNBYEARSOLD <= ispinend) ) THEN
414 !
415  im%O%LAGRI_TO_GRASS = .true.
416 !
417  CALL ini_data_param(ph_tree=xdata_h_tree,plai=xdata_lai, &
418  palbnir_veg=xdata_albnir_veg, palbvis_veg=xdata_albvis_veg, &
419  palbuv_veg=xdata_albuv_veg, prsmin=xdata_rsmin, &
420  prgl=xdata_rgl, pcv=xdata_cv, pgamma=xdata_gamma, &
421  pgmes=xdata_gmes, pgc=xdata_gc, pbslai=xdata_bslai, &
422  psefold=xdata_sefold, plaimin_out=xdata_laimin, pdmax=xdata_dmax, &
423  pstress=xdata_stress, pf2i=xdata_f2i, pveg_out=xdata_veg, &
424  pgreen=xdata_green, pz0=xdata_z0, pz0_o_z0h=xdata_z0_o_z0h, &
425  pemis_eco=xdata_emis_eco, pwrmax_cf=xdata_wrmax_cf, &
426  proot_lin=xdata_root_lin, proot_extinction=xdata_root_extinction, &
427  psoilrc_so2=xdata_soilrc_so2, psoilrc_o3=xdata_soilrc_o3, pre25=xdata_re25, &
428  pce_nitro=xdata_ce_nitro,pcf_nitro=xdata_cf_nitro,pcna_nitro=xdata_cna_nitro, &
429  pgmes_st=xdata_gmes_st, pgc_st=xdata_gc_st, pbslai_st=xdata_bslai_st, &
430  psefold_st=xdata_sefold_st, pdmax_st=xdata_dmax_st, oagri_to_grass=im%O%LAGRI_TO_GRASS)
431 !
432  zco2(:) = prhoa(:) * im%O%XCO2_START * 1.e-6 * xmco2 / xmd
433 !
434 ELSEIF(im%O%LSPINUPCARBS .AND. (im%O%NNBYEARSOLD > ispinend) .AND. (im%O%NNBYEARSOLD <= im%O%NNBYEARSPINS) )THEN
435 !
436  zspinco2 = im%O%XCO2_START + (im%O%XCO2_END-im%O%XCO2_START) * REAL(IM%O%NNBYEARSOLD - ISPINEND) / &
437  REAL(im%o%nnbyearspins - ispinend)
438 !
439  zco2(:) = prhoa(:) * zspinco2 * 1.e-6 * xmco2 / xmd
440 !
441 ELSE
442 !
443  zco2(:) = pco2(:)
444 !
445 ENDIF
446 !
447 !-----------------------------------------------------------------------------------------------------
448 ! END READ PGD FILE
449 !-----------------------------------------------------------------------------------------------------
450 !
451 !-----------------------------------------------------------------------------------------------------
452 ! Make sure some diags are conputed when coupled with atmosphere
453 !-----------------------------------------------------------------------------------------------------
454 !
455 IF(lcpl_gcm.AND.im%ID%O%LSURF_BUDGET) THEN
456  im%ID%DE%LSURF_EVAP_BUDGET=.true.
457 ENDIF
458 !
459 !-----------------------------------------------------------------------------------------------------
460 !
461 IF (oland_use .OR. hinit=='PGD') THEN
462  IF (lhook) CALL dr_hook('INIT_ISBA_N',1,zhook_handle)
463  RETURN
464 END IF
465 !
466  CALL compute_isba_parameters(dtco, oread_budgetc, ug, u, &
467  im%O, im%DTV, im%SB, im%S, im%G, im%K, im%NK, &
468  im%NG, im%NP, im%NPE, im%NAG, im%NISS, im%ISS, &
469  im%NCHI, im%CHI, im%ID, im%GB, im%NGB, &
470  ndst, slt, sv, hprogram,hinit,oland_use, &
471  ki,ksv,ksw, hsv,zco2,prhoa, &
472  pzenith,psw_bands,pdir_alb,psca_alb, &
473  pemis,ptsrad,ptsurf,htest )
474 !
475 IF ( im%O%CSNOWMETAMO/="B92" ) THEN
476  CALL read_fz06('drdt_bst_fit_60.nc')
477 ENDIF
478 !
479 IF ( im%O%CSNOWRAD=="TAR" .OR. im%O%CSNOWRAD=="TA1" .OR. im%O%CSNOWRAD=="TA2" ) THEN
480  CALL init_tartes()
481 END IF
482 !
483 IF (hinit=='ALL') THEN
484  ysnow_scheme = im%NPE%AL(1)%TSNOW%SCHEME
485  isnow_nlayer = im%NPE%AL(1)%TSNOW%NLAYER
486 ENDIF
487 !
488 IF (.NOT.lsplit_patch) THEN
489 
490  ALLOCATE(im%S%XWORK_WR(ki,im%O%NPATCH))
491  im%S%XWORK_WR(:,:) = xundef
492 
493  ALLOCATE(im%S%XWSN_WR(ki,isnow_nlayer,im%O%NPATCH))
494  ALLOCATE(im%S%XRHO_WR(ki,isnow_nlayer,im%O%NPATCH))
495  ALLOCATE(im%S%XALB_WR(ki,im%O%NPATCH))
496  IF (ysnow_scheme=='3-L' .OR. ysnow_scheme=='CRO') THEN
497  ALLOCATE(im%S%XHEA_WR(ki,isnow_nlayer,im%O%NPATCH))
498  ALLOCATE(im%S%XAGE_WR(ki,isnow_nlayer,im%O%NPATCH))
499  IF (ysnow_scheme=='CRO') THEN
500  ALLOCATE(im%S%XSG1_WR(ki,isnow_nlayer,im%O%NPATCH))
501  ALLOCATE(im%S%XSG2_WR(ki,isnow_nlayer,im%O%NPATCH))
502  ALLOCATE(im%S%XHIS_WR(ki,isnow_nlayer,im%O%NPATCH))
503  ELSE
504  ALLOCATE(im%S%XSG1_WR(0,0,1))
505  ALLOCATE(im%S%XSG2_WR(0,0,1))
506  ALLOCATE(im%S%XHIS_WR(0,0,1))
507  ENDIF
508  ELSE
509  ALLOCATE(im%S%XHEA_WR(0,0,1))
510  ALLOCATE(im%S%XAGE_WR(0,0,1))
511  ENDIF
512 
513  ALLOCATE(im%S%TDATE_WR(ki,im%O%NPATCH))
514 
515 ELSE
516 
517  ALLOCATE(im%S%XWORK_WR(0,1))
518 
519  ALLOCATE(im%S%XWSN_WR(0,0,1))
520  ALLOCATE(im%S%XRHO_WR(0,0,1))
521  ALLOCATE(im%S%XALB_WR(0,1))
522  ALLOCATE(im%S%XHEA_WR(0,0,1))
523  ALLOCATE(im%S%XAGE_WR(0,0,1))
524  ALLOCATE(im%S%XSG1_WR(0,0,1))
525  ALLOCATE(im%S%XSG2_WR(0,0,1))
526  ALLOCATE(im%S%XHIS_WR(0,0,1))
527 
528  ALLOCATE(im%S%TDATE_WR(0,1))
529 
530 ENDIF
531 !
532 IF (lhook) CALL dr_hook('INIT_ISBA_N',1,zhook_handle)
533 !
534 END SUBROUTINE init_isba_n
real, dimension(:,:), allocatable xdata_ce_nitro
real, dimension(:,:), allocatable xdata_albnir_veg
real, dimension(:,:), allocatable xdata_sefold_st
real, dimension(:,:), allocatable xdata_root_lin
subroutine read_pgd_isba_n(CHI, DTCO, DTV, DTZ, GB, IG, ISS, IO,
real, save xmd
Definition: modd_csts.F90:61
real, dimension(:,:), allocatable xdata_albvis_veg
real, dimension(:,:), allocatable xdata_soilrc_so2
real, dimension(:,:,:), allocatable xdata_z0
real, dimension(:,:), allocatable xdata_rgl
real, dimension(:,:), allocatable xdata_gc
real, dimension(:,:), allocatable xdata_dmax
real, dimension(:,:), allocatable xdata_gmes_st
real, dimension(:,:), allocatable xdata_albuv_veg
subroutine set_surfex_filein(HPROGRAM, HMASK)
subroutine default_isba(PTSTEP, POUT_TSTEP,
Definition: default_isba.F90:7
subroutine read_prep_isba_carbon(HPROGRAM, HRESPSL)
subroutine read_default_isba_n(CHI, DE, DGO, DMI, IO, HPROGRAM)
real, dimension(:,:), allocatable xdata_gamma
real, dimension(:,:), allocatable xdata_laimin
real, dimension(:,:), allocatable xdata_gmes
real, dimension(:,:), allocatable xdata_cv
subroutine read_isba_conf_n(CHI, DE, DGO, DMI, IO, HPROGRAM)
subroutine prep_ctrl_isba(DGO, OSURF_EVAP_BUDGET, OSURF_MISC_BUDGET, OSURF_MISC_DIF, KLUOUT)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
real, parameter xundef
real, dimension(:,:), allocatable xdata_z0_o_z0h
subroutine compute_isba_parameters(DTCO, OREAD_BUDGETC, UG, U, IO, DTI, SB, S, IG, K, NK, NIG, NP, NPE, NAG, NISS, ISS, NCHI, CHI, ID, GB, NGB, NDST, SLT, SV, HPROGRAM, HINIT, OLAND_USE, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, HTEST)
real, dimension(:,:), allocatable xdata_bslai
real, dimension(:,:), allocatable xdata_dmax_st
subroutine read_nam_prep_isba_n(HPROGRAM)
subroutine default_diag_isba(K2M, OSURF_BUDGET, O2M_MIN_ZS, ORAD_BUDG
real, dimension(:,:), allocatable xdata_rsmin
subroutine read_prep_isba_snow(HPROGRAM, HSNOW, KSNOW_LAYER, HFILE, HF
integer, parameter jprb
Definition: parkind1.F90:32
real, dimension(:,:), allocatable xdata_bslai_st
subroutine read_isba_date( HPROGRAM, HINIT, KLUOUT, HATMFILE, HATMFILE
integer, parameter nundef
real, dimension(:,:), allocatable xdata_cf_nitro
subroutine read_fz06(HFILE)
real, dimension(:,:), allocatable xdata_wrmax_cf
subroutine default_ch_dep(HCH_DRY_DEP)
subroutine default_crocus(OSNOWDRIFT, OSNOWDRIFT_SUBLIM, OSNOW_ABS_Z
subroutine end_io_surf_n(HPROGRAM)
Definition: end_io_surfn.F90:7
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
real, dimension(:,:,:), allocatable xdata_veg
subroutine init_tartes()
logical lhook
Definition: yomhook.F90:15
real, dimension(:,:), allocatable xdata_h_tree
real, dimension(:,:,:), allocatable xdata_green
real, dimension(:,:,:), allocatable xdata_lai
subroutine init_isba_n(DTCO, OREAD_BUDGETC, UG, U, USS, GCP, IM, DTZ, NDST, SLT, SV, HPROGRAM, HINIT, OLAND_USE, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, TPDATE_END, HATMFILE, HATMFILETYPE, HTEST)
Definition: init_isban.F90:12
real, dimension(:,:), allocatable xdata_soilrc_o3
real, dimension(:,:), allocatable xdata_gc_st
real, dimension(:,:), allocatable xdata_re25
real, dimension(:,:), allocatable xdata_cna_nitro
real, dimension(:,:), allocatable xdata_stress
real, dimension(:,:), allocatable xdata_f2i
real, dimension(:,:,:), allocatable xdata_emis_eco
subroutine init_io_surf_n(DTCO, U, HPROGRAM, HMASK, HSCHEME, HACTION
real, dimension(:,:), allocatable xdata_sefold
real, dimension(:,:), allocatable xdata_root_extinction
subroutine ini_data_param(PLAI, PH_TREE, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PR
static int count
Definition: memory_hook.c:21
subroutine default_ch_bio_flux(OCH_BIO_FLUX)