7 hprogram,hinit,oland_use, &
10 pzenith,psw_bands,pdir_alb,psca_alb, &
11 pemis,ptsrad,ptsurf, &
77 USE modd_sfx_oasis, ONLY : lcpl_land, lcpl_flood, lcpl_gw, lcpl_calving
86 USE modd_deepsoil, ONLY : lphysdomc, ldeepsoil, xtdeep_cli, xgammat_cli
90 USE modd_sgh_par, ONLY : ndimtab, xice_deph_max, xf_decay
104 USE modi_init_io_surf_n
105 USE modi_allocate_physio
106 USE modi_init_isba_mixpar
107 USE modi_convert_patch_isba
108 USE modi_init_veg_pgd_n
110 USE modi_exp_decay_soil_fr
112 USE modi_soiltemp_arp_par
113 USE modi_end_io_surf_n
117 USE modi_init_isba_landuse
118 USE modi_read_isba_canopy_n
120 USE modi_averaged_albedo_emis_isba
121 USE modi_diag_isba_init_n
122 USE modi_init_surf_topd
123 USE modi_isba_soc_parameters
126 USE modi_isba_to_topd
131 USE yomhook
,ONLY : lhook, dr_hook
132 USE parkind1
,ONLY : jprb
140 TYPE(isba_model_t
),
INTENT(INOUT) :: im
145 TYPE(dst_t),
INTENT(INOUT) :: dst
146 TYPE(slt_t),
INTENT(INOUT) :: slt
147 TYPE(sv_t),
INTENT(INOUT) :: sv
149 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
150 CHARACTER(LEN=3),
INTENT(IN) :: hinit
151 LOGICAL,
INTENT(IN) :: oland_use
152 INTEGER,
INTENT(IN) :: ki
153 INTEGER,
INTENT(IN) :: ksv
154 INTEGER,
INTENT(IN) :: ksw
155 CHARACTER(LEN=6),
DIMENSION(KSV),
INTENT(IN) :: hsv
156 REAL,
DIMENSION(KI),
INTENT(IN) :: pco2
157 REAL,
DIMENSION(KI),
INTENT(IN) :: prhoa
158 REAL,
DIMENSION(KI),
INTENT(IN) :: pzenith
159 REAL,
DIMENSION(KSW),
INTENT(IN) :: psw_bands
160 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: pdir_alb
161 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: psca_alb
162 REAL,
DIMENSION(KI),
INTENT(OUT) :: pemis
163 REAL,
DIMENSION(KI),
INTENT(OUT) :: ptsrad
164 REAL,
DIMENSION(KI),
INTENT(OUT) :: ptsurf
166 CHARACTER(LEN=2),
INTENT(IN) :: htest
172 REAL,
DIMENSION(U%NDIM_FULL) :: zf_param, zc_depth_ratio
174 REAL,
DIMENSION(KI) :: ztsrad_nat
175 REAL,
DIMENSION(KI) :: ztsurf_nat
177 REAL,
DIMENSION(KI,IM%I%NPATCH) :: zwg1
178 REAL,
DIMENSION(KI,IM%I%NPATCH) :: ztg1
180 REAL,
DIMENSION(KI) :: zm, zwork
181 REAL,
DIMENSION(KI,IM%I%NPATCH) :: zf, zpertbuf
183 INTEGER :: idim_full, jl
187 INTEGER :: idecade, idecade2
190 INTEGER :: isize_lmeb_patch
194 REAL(KIND=JPRB) :: zhook_handle
200 IF (lhook) CALL dr_hook(
'COMPUTE_ISBA_PARAMETERS',0,zhook_handle)
203 IF (htest/=
'OK')
THEN
204 CALL
abor1_sfx(
'COMPUTE_ISBA_PARAMETERS: FATAL ERROR DURING ARGUMENT TRANSFER')
215 im%I%CPHOTO, im%I%CISBA, ki, nvegtype, im%I%NGROUND_LAYER, im%I%NPATCH, &
216 im%I%XVEGTYPE, im%I%XLAI, im%I%XVEG, im%I%XZ0, im%I%XEMIS, im%I%XDG, im%I%XD_ICE, &
217 im%I%XRSMIN, im%I%XGAMMA, im%I%XWRMAX_CF, im%I%XRGL, im%I%XCV, &
218 im%I%XZ0_O_Z0H, im%I%XALBNIR_VEG, im%I%XALBVIS_VEG, im%I%XALBUV_VEG, &
219 im%I%XH_TREE, im%I%XRE25, im%I%XLAIMIN, im%I%XBSLAI, im%I%XSEFOLD, &
220 im%I%XGMES, im%I%XGC, im%I%XF2I, im%I%XDMAX, im%I%LSTRESS, &
221 im%I%XCE_NITRO, im%I%XCF_NITRO, im%I%XCNA_NITRO, &
222 im%I%TSEED, im%I%TREAP, im%I%XWATSUP, im%I%XIRRIG, &
223 im%I%XROOTFRAC, im%I%NWG_LAYER, im%I%XDROOT, im%I%XDG2, &
224 im%I%XGNDLITTER,im%I%XRGLGV,im%I%XGAMMAGV,im%I%XRSMINGV, &
225 im%I%XROOTFRACGV,im%I%XWRMAX_CFGV,im%I%XLAIGV,im%I%XZ0LITTER,im%I%XH_VEG )
227 IF (im%I%TTIME%TDATE%MONTH /= nundef)
THEN
228 idecade = 3 * ( im%I%TTIME%TDATE%MONTH - 1 ) + min(im%I%TTIME%TDATE%DAY-1,29) / 10 + 1
236 im%I%CISBA,idecade,idecade2,im%I%XCOVER,im%I%LCOVER,im%I%CPHOTO,
'NAT')
238 isize_lmeb_patch=count(im%I%LMEB_PATCH(:))
239 IF (isize_lmeb_patch>0)
THEN
245 im%I%CISBA,idecade,idecade2,im%I%XCOVER,im%I%LCOVER,im%I%CPHOTO,lagrip, &
246 im%I%LPERM,im%I%LTR_ML,
'NAT',pveg=im%I%XVEG,plai=im%I%XLAI, &
247 prsmin=im%I%XRSMIN,pgamma=im%I%XGAMMA,pwrmax_cf=im%I%XWRMAX_CF, &
248 prgl=im%I%XRGL,pcv=im%I%XCV,psoilgrid=im%I%XSOILGRID, &
249 pdg=im%I%XDG,kwg_layer=im%I%NWG_LAYER,pdroot=im%I%XDROOT,pdg2=im%I%XDG2, &
250 pz0=im%I%XZ0,pz0_o_z0h=im%I%XZ0_O_Z0H, &
251 palbnir_veg=im%I%XALBNIR_VEG,palbvis_veg=im%I%XALBVIS_VEG, &
252 palbuv_veg=im%I%XALBUV_VEG,pemis_eco=im%I%XEMIS, &
253 pvegtype=im%I%XVEGTYPE,prootfrac=im%I%XROOTFRAC, &
254 pgmes=im%I%XGMES,pbslai=im%I%XBSLAI,plaimin=im%I%XLAIMIN, &
255 psefold=im%I%XSEFOLD,pgc=im%I%XGC, &
256 pdmax=im%I%XDMAX,pf2i=im%I%XF2I,ostress=im%I%LSTRESS,ph_tree=im%I%XH_TREE, &
257 pre25=im%I%XRE25,pce_nitro=im%I%XCE_NITRO,pcf_nitro=im%I%XCF_NITRO, &
258 pcna_nitro=im%I%XCNA_NITRO,pd_ice=im%I%XD_ICE,tpseed=im%I%TSEED, &
259 tpreap=im%I%TREAP,pwatsup=im%I%XWATSUP,pirrig=im%I%XIRRIG, &
260 pgndlitter=im%I%XGNDLITTER, &
261 prglgv=im%I%XRGLGV, &
262 pgammagv=im%I%XGAMMAGV,prsmingv=im%I%XRSMINGV, &
263 prootfracgv=im%I%XROOTFRACGV,pwrmax_cfgv=im%I%XWRMAX_CFGV, &
264 plaigv=im%I%XLAIGV,pz0litter=im%I%XZ0LITTER,ph_veg=im%I%XH_VEG )
269 hprogram,
'NATURE', iluout, ki, im%I%NPATCH, im%I%NGROUND_LAYER, &
270 im%I%TTIME%TDATE%MONTH, &
271 im%I%XVEGTYPE, im%I%XPATCH, im%I%XVEGTYPE_PATCH, im%I%NSIZE_NATURE_P, &
272 im%I%NR_NATURE_P, im%I%XRM_PATCH, &
273 ldeepsoil, lphysdomc, xtdeep_cli, xgammat_cli, im%I%XTDEEP, &
274 im%I%XGAMMAT, lagrip, xthreshold, im%AG%NIRRINUM, im%AG%LIRRIDAY, im%AG%LIRRIGATE, &
275 im%AG%XTHRESHOLDSPT, &
276 im%I%CPHOTO, hinit, im%I%LTR_ML, im%I%NNBIOMASS, pco2, prhoa, im%I%XABC, im%I%XPOI, &
277 im%I%XGMES, im%I%XGC, im%I%XDMAX, im%I%XANMAX, im%I%XFZERO, im%I%XEPSO, im%I%XGAMM, im%I%XQDGAMM, &
278 im%I%XQDGMES, im%I%XT1GMES, im%I%XT2GMES, im%I%XAMAX, im%I%XQDAMAX, im%I%XT1AMAX, im%I%XT2AMAX,&
279 im%I%XAH, im%I%XBH, im%I%XTAU_WOOD, im%I%XINCREASE, im%I%XTURNOVER, &
280 ksv, hsv, im%CHI%SVI, im%CHI%CCH_NAMES, im%CHI%CAER_NAMES, &
281 im%CHI%CDSTNAMES, im%CHI%CSLTNAMES, im%CHI%CCHEM_SURF_FILE, &
282 dst%XSFDST, dst%XSFDSTM, slt%XSFSLT, &
283 im%I%XAOSIP, im%I%XAOSIM, im%I%XAOSJP, im%I%XAOSJM, im%I%XHO2IP, im%I%XHO2IM, im%I%XHO2JP, &
284 im%I%XHO2JM, im%I%XZ0, im%I%XZ0EFFIP, im%I%XZ0EFFIM, im%I%XZ0EFFJP, im%I%XZ0EFFJM, im%I%XZ0REL,&
285 im%I%XCLAY, im%I%XSAND, im%I%CPEDOTF, &
286 im%I%XCONDSAT, im%I%XMPOTSAT, im%I%XBCOEF, im%I%XWWILT, im%I%XWFC, im%I%XWSAT, im%I%XWD0, &
287 im%I%XKANISO, im%I%CRUNOFF, &
288 im%I%XTAUICE, im%I%XCGSAT, im%I%XC1SAT, im%I%XC2REF, im%I%XC3, im%I%XC4B, im%I%XACOEF, im%I%XPCOEF, &
289 im%I%XC4REF, im%I%XPCPS, im%I%XPLVTT, im%I%XPLSTT, &
290 im%I%CSCOND, im%I%CISBA, im%I%XHCAPSOIL, im%I%XCONDDRY, im%I%XCONDSLD, im%I%CCPSURF, &
291 im%I%XDG, im%I%XDROOT, im%I%XDG2, im%I%XROOTFRAC, im%I%XRUNOFFD, im%I%XDZG, im%I%XDZDIF, &
292 im%I%XSOILWGHT, im%I%NWG_LAYER, im%I%NLAYER_HORT, im%I%NLAYER_DUN, im%I%XD_ICE, &
293 im%I%XKSAT_ICE, im%I%XALBNIR_DRY, im%I%XALBVIS_DRY, im%I%XALBUV_DRY, &
294 im%I%XALBNIR_WET, im%I%XALBVIS_WET, im%I%XALBUV_WET, im%I%XBSLAI_NITRO, &
295 im%I%XCE_NITRO, im%I%XCNA_NITRO, im%I%XCF_NITRO, im%I%XFWTD, im%I%XWTD )
305 IF(im%I%CISBA==
'DIF')
THEN
307 IF( im%I%CKSAT==
'SGH' )
THEN
308 WRITE(iluout,*)
'THE KSAT EXP PROFILE WITH ISBA-DF IS NOT PHYSIC AND HAS BEEN REMOVED FOR NOW'
309 WRITE(iluout,*)
'A NEW PHYSICAL APPROACH WILL BE DEVELLOPED ACCOUNTING FOR COMPACTION IN ALL '
310 WRITE(iluout,*)
'HYDRODYNAMIC PARAMETERS (WSAT, PSISAT, KSAT, B) AND NOT ONLY IN KSAT '
311 CALL
abor1_sfx(
'CKSAT=SGH is not physic with ISBA-DF and has been removed for now')
315 IF(.NOT.im%I%LSOCP)
THEN
316 WRITE(iluout,*)
'LSOC = T can be activated only if SOC data given in PGD fields'
317 CALL
abor1_sfx(
'LSOC = T can be activated only if SOC data given in PGD fields')
319 ALLOCATE(im%I%XFRACSOC(ki,im%I%NGROUND_LAYER))
320 im%I%XFRACSOC(:,:)=0.0
321 CALL
isba_soc_parameters(im%I%CRUNOFF,im%I%XPATCH,im%I%XDG,im%I%XSOC,im%I%XBCOEF,im%I%XMPOTSAT, &
322 im%I%XCONDSAT,im%I%XWSAT,im%I%XHCAPSOIL,im%I%XCONDDRY, &
323 im%I%XCONDSLD,im%I%XWFC,im%I%XWWILT,im%I%XWD0,im%I%XKANISO,im%I%XFRACSOC )
325 ALLOCATE(im%I%XFRACSOC(0,0))
329 ALLOCATE(im%I%XFRACSOC(0,0))
335 IF( im%I%CRUNOFF==
'SGH ')
THEN
337 ALLOCATE(im%I%XTAB_FSAT(ki,ndimtab))
338 ALLOCATE(im%I%XTAB_WTOP(ki,ndimtab))
339 ALLOCATE(im%I%XTAB_QTOP(ki,ndimtab))
341 im%I%XTAB_FSAT(:,:) = 0.0
342 im%I%XTAB_WTOP(:,:) = 0.0
343 im%I%XTAB_QTOP(:,:) = 0.0
345 IF(hinit/=
'PRE' .AND. .NOT.lassim)
THEN
347 WHERE(im%I%XCLAY(:,1)==xundef.AND.im%I%XTI_MEAN(:)/=xundef) im%I%XTI_MEAN(:)=xundef
350 im%I%CISBA, iluout, im%I%XPATCH, im%I%XRUNOFFD, &
351 im%I%XWD0, im%I%XWSAT, im%I%XTI_MIN, &
352 im%I%XTI_MAX, im%I%XTI_MEAN, im%I%XTI_STD, im%I%XTI_SKEW, &
353 im%I%XSOILWGHT, im%I%XTAB_FSAT, im%I%XTAB_WTOP, &
357 IF (im%I%CKSAT==
'SGH' .AND. im%I%CISBA/=
'DIF')
THEN
361 IF (zm(jilu)/=xundef) zf(jilu,:) = (im%I%XWSAT(jilu,1)-im%I%XWD0(jilu,1))/zm(jilu)
369 IF(im%I%CISBA==
'DIF')
THEN
370 ALLOCATE(im%I%XTOPQS(ki,im%I%NGROUND_LAYER,im%I%NPATCH))
371 im%I%XTOPQS(:,:,:)=0.0
373 ALLOCATE(im%I%XTOPQS(0,0,0))
378 ALLOCATE(im%I%XTAB_FSAT(0,0))
379 ALLOCATE(im%I%XTAB_WTOP(0,0))
380 ALLOCATE(im%I%XTAB_QTOP(0,0))
381 ALLOCATE(im%I%XTOPQS(0,0,0))
387 IF(hinit/=
'PRE'.AND.im%I%CISBA/=
'DIF')
THEN
389 IF(im%I%CKSAT==
'SGH')
THEN
391 WHERE(zf(:,:)==xundef.AND.im%I%XDG(:,2,:)/=xundef)
392 zf(:,:) = 4.0/im%I%XDG(:,2,:)
394 zf(:,:) = min(zf(:,:),xf_decay)
396 ALLOCATE(im%I%XF_PARAM (ki))
397 im%I%XF_PARAM(:) = zf(:,1)
399 DO jpatch=1,im%I%NPATCH
400 IF (im%I%NSIZE_NATURE_P(jpatch) == 0 ) cycle
401 CALL
exp_decay_soil_fr(im%I%CISBA, zf(:,jpatch),im%I%XC1SAT(:,jpatch),im%I%XC2REF(:,jpatch), &
402 im%I%XDG(:,:,jpatch),im%I%XD_ICE(:,jpatch),im%I%XC4REF(:,jpatch), &
403 im%I%XC3(:,:,jpatch),im%I%XCONDSAT(:,:,jpatch),im%I%XKSAT_ICE(:,jpatch))
406 ELSEIF ( im%I%CKSAT==
'EXP' .AND. im%I%CISBA==
'3-L' )
THEN
408 ALLOCATE(im%I%XF_PARAM (ki))
409 im%I%XF_PARAM(:) = xundef
411 IF (hprogram/=
'AROME ' .AND. hprogram/=
'MESONH ')
THEN
413 CALL
open_file(
'ASCII ',nunit,hfile=
'carte_f_dc.txt',hform=
'FORMATTED',haction=
'READ ')
414 DO jilu=1,u%NDIM_FULL
415 READ(nunit,*) zf_param(jilu), zc_depth_ratio(jilu)
420 IF (.NOT.
ALLOCATED(xc_depth_ratio))
ALLOCATE(xc_depth_ratio(ki))
421 xc_depth_ratio(:) = xundef
426 WRITE(iluout,*)
"COMPUTE_ISBA_PARAMETERS: WITH CKSAT=EXP, IN NOT OFFLINE "//&
427 "MODE, TOPMODEL FILE FOR F_PARAM IS NOT READ "
430 DO jpatch=1,im%I%NPATCH
431 WHERE (im%I%XF_PARAM(:)==xundef.AND.im%I%XDG(:,2,jpatch)/=xundef)
432 zf(:,jpatch) = 4.0/im%I%XDG(:,2,jpatch)
434 zf(:,jpatch) = im%I%XF_PARAM(:)
437 zf(:,:) = min(zf(:,:),xf_decay)
439 DO jpatch=1,im%I%NPATCH
440 CALL
exp_decay_soil_fr(im%I%CISBA, zf(:,jpatch),im%I%XC1SAT(:,jpatch),im%I%XC2REF(:,jpatch), &
441 im%I%XDG(:,:,jpatch),im%I%XD_ICE(:,jpatch),im%I%XC4REF(:,jpatch), &
442 im%I%XC3(:,:,jpatch),im%I%XCONDSAT(:,:,jpatch), &
443 im%I%XKSAT_ICE(:,jpatch))
454 IF (hinit ==
'ALL' .AND. im%I%CRESPSL==
'CNT' .AND. im%I%CPHOTO ==
'NCB')
THEN
455 CALL
carbon_init(im%I%NNBIOMASS, im%I%NNLITTER, im%I%NNLITTLEVS, im%I%NNSOILCARB)
460 IF(im%I%CRAIN==
'SGH')
THEN
461 ALLOCATE(im%I%XMUF(ki))
464 ALLOCATE(im%I%XMUF(0))
467 ALLOCATE(im%I%XFSAT(ki))
478 IF(.NOT.im%I%LGLACIER)
THEN
479 CALL
abor1_sfx(
'COMPUTE_ISBA_PARAMETERS: LGLACIER MUST BE ACTIVATED IF LCPL_CALVING')
485 im%I%LCPL_RRM = .false.
486 im%I%LFLOOD = .false.
491 im%I%LCPL_RRM = .true.
493 ALLOCATE(im%I%XCPL_DRAIN (ki))
494 ALLOCATE(im%I%XCPL_RUNOFF(ki))
495 im%I%XCPL_DRAIN (:) = 0.0
496 im%I%XCPL_RUNOFF(:) = 0.0
498 IF(im%I%LGLACIER)
THEN
499 ALLOCATE(im%I%XCPL_ICEFLUX(ki))
500 im%I%XCPL_ICEFLUX(:) = 0.0
502 ALLOCATE(im%I%XCPL_ICEFLUX(0))
507 ALLOCATE(im%I%XCPL_RECHARGE(ki))
508 im%I%XCPL_RECHARGE(:) = 0.0
510 ALLOCATE(im%I%XCPL_RECHARGE(0))
515 ALLOCATE(im%I%XCPL_EFLOOD(ki))
516 ALLOCATE(im%I%XCPL_PFLOOD(ki))
517 ALLOCATE(im%I%XCPL_IFLOOD(ki))
518 im%I%XCPL_EFLOOD(:)= 0.0
519 im%I%XCPL_PFLOOD(:)= 0.0
520 im%I%XCPL_IFLOOD(:)= 0.0
522 ALLOCATE(im%I%XCPL_EFLOOD(0))
523 ALLOCATE(im%I%XCPL_PFLOOD(0))
524 ALLOCATE(im%I%XCPL_IFLOOD(0))
529 ALLOCATE(im%I%XCPL_RUNOFF (0))
530 ALLOCATE(im%I%XCPL_DRAIN (0))
531 ALLOCATE(im%I%XCPL_ICEFLUX (0))
532 ALLOCATE(im%I%XCPL_RECHARGE(0))
533 ALLOCATE(im%I%XCPL_EFLOOD (0))
534 ALLOCATE(im%I%XCPL_PFLOOD (0))
535 ALLOCATE(im%I%XCPL_IFLOOD (0))
539 IF(im%I%LWTD.AND..NOT.im%I%LGW)
THEN
540 WRITE(iluout,*)
'COMPUTE_ISBA_PARAMETERS: Groundwater map is required by SFX - Groundwater coupling '
541 WRITE(iluout,*)
'COMPUTE_ISBA_PARAMETERS: Please check your pgd namelist where this map must be '
542 WRITE(iluout,*)
'COMPUTE_ISBA_PARAMETERS: specified (YGW and YGWFILETYPE, or XUNIF_GW, or LIMP_GW) '
543 CALL
abor1_sfx(
'COMPUTE_ISBA_PARAMETERS: Groundwater map is required by SFX - Groundwater coupling')
549 ALLOCATE(im%I%XFFLOOD (ki))
550 ALLOCATE(im%I%XPIFLOOD(ki))
551 ALLOCATE(im%I%XFF (ki,im%I%NPATCH))
552 ALLOCATE(im%I%XFFG (ki,im%I%NPATCH))
553 ALLOCATE(im%I%XFFV (ki,im%I%NPATCH))
554 ALLOCATE(im%I%XFFROZEN(ki,im%I%NPATCH))
555 ALLOCATE(im%I%XALBF (ki,im%I%NPATCH))
556 ALLOCATE(im%I%XEMISF (ki,im%I%NPATCH))
566 ALLOCATE(im%I%XFFLOOD (0))
567 ALLOCATE(im%I%XPIFLOOD (0))
568 ALLOCATE(im%I%XFF (0,0))
569 ALLOCATE(im%I%XFFG (0,0))
570 ALLOCATE(im%I%XFFV (0,0))
571 ALLOCATE(im%I%XFFROZEN(0,0))
572 ALLOCATE(im%I%XALBF (0,0))
573 ALLOCATE(im%I%XEMISF (0,0))
582 hprogram,im%I%LTEMP_ARP,im%I%NTEMPLAYER_ARP)
591 IF (hinit/=
'ALL' .AND. hinit/=
'SOD')
THEN
592 IF (lhook) CALL dr_hook(
'COMPUTE_ISBA_PARAMETERS',1,zhook_handle)
598 IF (cassim_isba==
"ENKF ")
THEN
605 hprogram,
'NATURE',
'ISBA ',
'READ ')
613 IF (hinit/=
'ALL')
THEN
615 IF (lhook) CALL dr_hook(
'COMPUTE_ISBA_PARAMETERS',1,zhook_handle)
619 IF (hinit==
'PRE' .AND. im%I%TSNOW%SCHEME.NE.
'3-L' .AND. im%I%TSNOW%SCHEME.NE.
'CRO' .AND. im%I%CISBA==
'DIF')
THEN
620 CALL
abor1_sfx(
"INIT_ISBAN: WITH CISBA = DIF, CSNOW MUST BE 3-L OR CRO")
647 ALLOCATE(im%I%XDIR_ALB_WITH_SNOW(ki,ksw,im%I%NPATCH))
648 ALLOCATE(im%I%XSCA_ALB_WITH_SNOW(ki,ksw,im%I%NPATCH))
649 im%I%XDIR_ALB_WITH_SNOW = 0.0
650 im%I%XSCA_ALB_WITH_SNOW = 0.0
652 CALL
init_veg_n(im%I%NPATCH, ki, im%I%LCANOPY, im%I%CROUGH, im%I%LAGRI_TO_GRASS, im%I%TSNOW, &
653 im%I%CPHOTO, im%DTI%LIMP_VEG, im%DTI%LIMP_Z0, im%DTI%LIMP_EMIS, &
654 im%I%XLAIMIN, im%I%XH_TREE, im%I%XVEGTYPE_PATCH, im%I%XLAI, &
655 im%I%XZ0, im%I%XVEG, im%I%XEMIS, &
656 im%I%LTR_ML, im%I%XFAPARC, im%I%XFAPIRC, im%I%XLAI_EFFC, im%I%XMUS, &
657 im%I%XALBNIR_SOIL, im%I%XALBVIS_SOIL, im%I%XALBUV_SOIL, im%I%XALBNIR, &
658 im%I%XALBVIS, im%I%XALBUV, &
659 im%DGMI%LSURF_DIAG_ALBEDO, im%I%XPSN, im%I%XPSNG, im%I%XPSNV, im%I%XPSNV_A, &
660 pdir_alb, psca_alb, pemis, ptsrad )
662 DO jpatch=1,im%I%NPATCH
663 zwg1(:,jpatch) = im%I%XWG(:,1,jpatch)
664 ztg1(:,jpatch) = im%I%XTG(:,1,jpatch)
668 im%I%CISBA,idecade,idecade2,im%I%XCOVER,im%I%LCOVER,&
669 im%I%CPHOTO,lagrip,im%I%LPERM,im%I%LTR_ML,
'NAT', &
671 palbnir_soil=im%I%XALBNIR_SOIL, &
672 palbvis_soil=im%I%XALBVIS_SOIL, &
673 palbuv_soil=im%I%XALBUV_SOIL )
676 IF(im%I%LPERTSURF)
THEN
679 hprogram,
'VEG',im%I%XVEG(:,:),iresp)
680 ALLOCATE(im%I%XPERTVEG(ki))
681 im%I%XPERTVEG(:)=im%I%XVEG(:,1)
684 hprogram,
'LAI',im%I%XLAI(:,:),iresp)
685 ALLOCATE(im%I%XPERTLAI(ki))
686 im%I%XPERTLAI(:)=im%I%XLAI(:,1)
689 hprogram,
'CV',im%I%XCV(:,:),iresp)
690 ALLOCATE(im%I%XPERTCV(ki))
691 im%I%XPERTCV(:)=im%I%XCV(:,1)
694 hprogram,
'PERTALB',zpertbuf(:,:),iresp)
695 ALLOCATE(im%I%XPERTALB(ki))
696 im%I%XPERTALB(:)=zpertbuf(:,1)
697 WHERE(im%I%XALBNIR_VEG(:,1)/=xundef) im%I%XALBNIR_VEG(:,1) = im%I%XALBNIR_VEG(:,1) *( 1.+ im%I%XPERTALB(:) )
698 WHERE(im%I%XALBVIS_VEG(:,1)/=xundef) im%I%XALBVIS_VEG(:,1) = im%I%XALBVIS_VEG(:,1) *( 1.+ im%I%XPERTALB(:) )
699 WHERE(im%I%XALBUV_VEG(:,1)/=xundef) im%I%XALBUV_VEG(:,1) = im%I%XALBUV_VEG(:,1) *( 1.+ im%I%XPERTALB(:) )
700 WHERE(im%I%XALBNIR_SOIL(:,1)/=xundef) im%I%XALBNIR_SOIL(:,1)= im%I%XALBNIR_SOIL(:,1)*( 1.+ im%I%XPERTALB(:) )
701 WHERE(im%I%XALBVIS_SOIL(:,1)/=xundef) im%I%XALBVIS_SOIL(:,1)= im%I%XALBVIS_SOIL(:,1)*( 1.+ im%I%XPERTALB(:) )
702 WHERE(im%I%XALBUV_SOIL(:,1)/=xundef) im%I%XALBUV_SOIL(:,1) = im%I%XALBUV_SOIL(:,1) *( 1.+ im%I%XPERTALB(:) )
705 hprogram,
'PERTZ0LAND',zpertbuf(:,:),iresp)
706 ALLOCATE(im%I%XPERTZ0(ki))
707 im%I%XPERTZ0(:)=zpertbuf(:,1)
708 WHERE(im%I%XZ0(:,1)/=xundef) im%I%XZ0(:,1) =im%I%XZ0(:,1) *( 1.+ im%I%XPERTZ0(:) )
709 WHERE(im%I%XZ0EFFIP(:,1)/=xundef) im%I%XZ0EFFIP(:,1)=im%I%XZ0EFFIP(:,1)*( 1.+ im%I%XPERTZ0(:) )
710 WHERE(im%I%XZ0EFFIM(:,1)/=xundef) im%I%XZ0EFFIM(:,1)=im%I%XZ0EFFIM(:,1)*( 1.+ im%I%XPERTZ0(:) )
711 WHERE(im%I%XZ0EFFJP(:,1)/=xundef) im%I%XZ0EFFJP(:,1)=im%I%XZ0EFFJP(:,1)*( 1.+ im%I%XPERTZ0(:) )
712 WHERE(im%I%XZ0EFFJM(:,1)/=xundef) im%I%XZ0EFFJM(:,1)=im%I%XZ0EFFJM(:,1)*( 1.+ im%I%XPERTZ0(:) )
721 ALLOCATE(im%I%XEMIS_NAT (ki))
722 im%I%XEMIS_NAT (:) = xundef
725 im%I%LFLOOD, im%I%CALBEDO, pzenith, &
726 im%I%XVEG,im%I%XZ0,im%I%XLAI, &
727 im%I%LMEB_PATCH,im%I%XGNDLITTER,im%I%XZ0LITTER,im%I%XLAIGV, &
728 im%I%XH_VEG, im%I%XTV, &
732 im%I%XALBNIR_VEG,im%I%XALBVIS_VEG,im%I%XALBUV_VEG, &
733 im%I%XALBNIR_SOIL,im%I%XALBVIS_SOIL,im%I%XALBUV_SOIL, &
736 im%I%XALBNIR,im%I%XALBVIS,im%I%XALBUV, &
737 pdir_alb, psca_alb, &
738 im%I%XEMIS_NAT,ztsrad_nat,ztsurf_nat )
740 pemis = im%I%XEMIS_NAT
749 IF(im%I%NPATCH<=1) im%DGI%LPATCH_BUDGET=.false.
752 im%CHI, im%DGEI, im%DGI, im%DGMI, dgu, im%GB, im%I, &
758 hprogram,u%NDIM_FULL)
765 IF (lhook) CALL dr_hook(
'COMPUTE_ISBA_PARAMETERS',1,zhook_handle)
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
subroutine isba_soc_parameters(HRUNOFF, PPATCH, PDG, PSOC, PBCOEF, PMPOTSAT, PCONDSAT, PWSAT, PHCAPSOIL, PCONDDRY, PCONDSLD, PWFC, PWWILT, PWD0, PANISO, PFRACSOC)
subroutine init_top(I, HISBA, KLUOUT, PPATCH, PRUNOFFD, PWD0, PWSAT, PTI_MIN, PTI_MAX, PTI_MEAN, PTI_STD, PTI_SKEW, PSOILWGHT, PTAB_FSAT, PTAB_WTOP, PTAB_QTOP, PM)
subroutine init_isba_mixpar(DTCO, DTI, IG, I, HISBA, KDECADE, KDECADE2, PCOVER, OCOVER, HPHOTO, HSFTYPE)
subroutine init_isba_landuse(DTCO, IG, I, UG, U, HPROGRAM)
subroutine init_veg_n(KPATCH, KI, OCANOPY, HROUGH, OAGRI_TO_GRASS, TPSNOW, HPHOTO, OIMP_VEG, OIMP_Z0, OIMP_EMIS, PLAIMIN, PH_TREE, PVEGTYPE_PATCH, PLAI, PZ0, PVEG, PEMIS, OTR_ML, PFAPARC, PFAPIRC, PLAI_EFFC, PMUS, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL, PALBNIR, PALBVIS, PALBUV, OSURF_DIAG_ALBEDO, PPSN, PPSNG, PPSNV, PPSNV_A, PDIR_ALB, PSCA_ALB, PEMIS_OUT, PTSRAD)
subroutine init_surf_topd(DGEI, I, UG, U, HPROGRAM, KI)
subroutine soiltemp_arp_par(I, HPROGRAM, OTEMP_ARP, KTEMPLAYER_ARP)
subroutine read_isba_n(DTCO, I, U, HPROGRAM)
subroutine abor1_sfx(YTEXT)
subroutine fix_meb_veg(DTI, IG, I, KPATCH)
subroutine carbon_init(KNBIOMASS, KNLITTER, KNLITTLEVS, KNSOILCARB)
subroutine close_file(HPROGRAM, KUNIT)
subroutine end_io_surf_n(HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine init_veg_pgd_n(CHI, DTCO, DST, I, SLT, U, HPROGRAM, HSURF, KLUOUT, KI, KPATCH, KGROUND_LAYER, KMONTH, PVEGTYPE, PPATCH, PVEGTYPE_PATCH, KSIZE_NATURE_P, KR_NATURE_P, PRM_PATCH, ODEEPSOIL, OPHYSDOMC, PTDEEP_CLI, PGAMMAT_CLI, PTDEEP, PGAMMAT, OAGRIP, PTHRESHOLD, KIRRINUM, OIRRIDAY, OIRRIGATE, PTHRESHOLDSPT, HPHOTO, HINIT, OTR_ML, KNBIOMASS, PCO2, PRHOA, PABC, PPOI, PGMES, PGC, PDMAX, PANMAX, PFZERO, PEPSO, PGAMM, PQDGAMM, PQDGMES, PT1GMES, PT2GMES, PAMAX, PQDAMAX, PT1AMAX, PT2AMAX, PAH, PBH, PTAU_WOOD, PINCREASE, PTURNOVER, KSV, HSV, YSV, HCH_NAMES, HAER_NAMES, HDSTNAMES, HSLTNAMES, HCHEM_SURF_FILE, PSFDST, PSFDSTM, PSFSLT, PAOSIP, PAOSIM, PAOSJP, PAOSJM, PHO2IP, PHO2IM, PHO2JP, PHO2JM, PZ0, PZ0EFFIP, PZ0EFFIM, PZ0EFFJP, PZ0EFFJM, PZ0REL, PCLAY, PSAND, HPEDOTF, PCONDSAT, PMPOTSAT, PBCOEF, PWWILT, PWFC, PWSAT, PWD0, PKANISO, HRUNOFF, PTAUICE, PCGSAT, PC1SAT, PC2REF, PC3, PC4B, PACOEF, PPCOEF, PC4REF, PPCPS, PPLVTT, PPLSTT, HSCOND, HISBA, PHCAPSOIL, PCONDDRY, PCONDSLD, HCPSURF, PDG, PDROOT, PDG2, PROOTFRAC, PRUNOFFD, PDZG, PDZDIF, PSOILWGHT, KWG_LAYER, KLAYER_HORT, KLAYER_DUN, PD_ICE, PKSAT_ICE, PALBNIR_DRY, PALBVIS_DRY, PALBUV_DRY, PALBNIR_WET, PALBVIS_WET, PALBUV_WET, PBSLAI_NITRO, PCE_NITRO, PCNA_NITRO, PCF_NITRO, PFWTD, PWTD)
subroutine read_isba_canopy_n(DTCO, ICP, I, U, HPROGRAM)
subroutine exp_decay_soil_fr(HISBA, PF, PC1SAT, PC2REF, PD_G, PD_ICE, PC4REF, PC3, PCONDSAT, PKSAT_ICE)
subroutine diag_isba_init_n(CHI, DGEI, DGI, DGMI, DGU, GB, I, HPROGRAM, KLU, KSW)
subroutine init_random_seed()
subroutine averaged_albedo_emis_isba(I, OFLOOD, HALBEDO, PZENITH, PVEG, PZ0, PLAI, OMEB_PATCH, PGNDLITTER, PZ0LITTER, PLAIGV, PH_VEG, PTV, PTG1, PPATCH, PSW_BANDS, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL, PEMIS_ECO, TPSNOW, PALBNIR_ECO, PALBVIS_ECO, PALBUV_ECO, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, PDIR_SW, PSCA_SW)
subroutine compute_isba_parameters(DTCO, DGU, UG, U, IM, DST, SLT, SV, HPROGRAM, HINIT, OLAND_USE, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, HTEST)
subroutine convert_patch_isba(DTCO, DTI, I, HISBA, KDECADE, KDECADE2, PCOVER, OCOVER, HPHOTO, OAGRIP, OPERM, OTR_ML, HSFTYPE, PVEG, PLAI, PRSMIN, PGAMMA, PWRMAX_CF, PRGL, PCV, PSOILGRID, PDG, KWG_LAYER, PDROOT, PDG2, PZ0, PZ0_O_Z0H, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PEMIS_ECO, PVEGTYPE, PROOTFRAC, PGMES, PBSLAI, PLAIMIN, PSEFOLD, PGC, PDMAX, PF2I, OSTRESS, PH_TREE, PRE25, PCE_NITRO, PCF_NITRO, PCNA_NITRO, PD_ICE, PWG1, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL, TPSEED, TPREAP, PWATSUP, PIRRIG, PGNDLITTER, PRGLGV, PGAMMAGV, PRSMINGV, PROOTFRACGV, PWRMAX_CFGV, PLAIGV, PZ0LITTER, PH_VEG)
subroutine open_file(HPROGRAM, KUNIT, HFILE, HFORM, HACTION, HACCESS, KRECL)
subroutine allocate_physio(I, HPHOTO, HISBA, KLU, KVEGTYPE, KGROUND_LAYER, KPATCH, PVEGTYPE, PLAI, PVEG, PZ0, PEMIS, PDG, PD_ICE, PRSMIN, PGAMMA, PWRMAX_CF, PRGL, PCV, PZ0_O_Z0H, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PH_TREE, PRE25, PLAIMIN, PBSLAI, PSEFOLD, PGMES, PGC, PF2I, PDMAX, OSTRESS, PCE_NITRO, PCF_NITRO, PCNA_NITRO, PTSEED, PTREAP, PWATSUP, PIRRIG, PROOTFRAC, KWG_LAYER, PDROOT, PDG2, PGNDLITTER, PRGLGV, PGAMMAGV, PRSMINGV, PROOTFRACGV, PWRMAX_CFGV, PLAIGV, PZ0LITTER, PH_VEG)