72 USE modi_init_io_surf_n
73 USE modi_end_io_surf_n
78 USE modi_read_pgd_isba_par_n
79 USE modi_read_pgd_tsz0_par_n
81 USE yomhook
,ONLY : lhook, dr_hook
82 USE parkind1
,ONLY : jprb
84 USE modi_get_type_dim_n
85 USE modi_read_lecoclimap
91 USE modi_get_surf_mask_n
105 TYPE(isba_grid_t
),
INTENT(INOUT) :: ig
106 TYPE(isba_t
),
INTENT(INOUT) :: i
109 TYPE(sv_t),
INTENT(INOUT) :: sv
111 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
112 LOGICAL,
INTENT(IN) :: oland_use
117 INTEGER,
DIMENSION(:),
POINTER :: imask
119 REAL,
DIMENSION(:,:),
ALLOCATABLE :: zwork
121 CHARACTER(LEN=12) :: yrecfm
122 CHARACTER(LEN=4 ) :: ylvl
128 INTEGER :: iversion, ibugfix
130 INTEGER :: isize_lmeb_patch
132 REAL(KIND=JPRB) :: zhook_handle
138 IF (lhook) CALL dr_hook(
'READ_PGD_ISBA_N',0,zhook_handle)
145 hprogram,yrecfm,iversion,iresp)
149 hprogram,yrecfm,ibugfix,iresp)
158 hprogram,yrecfm,i%CISBA,iresp)
160 IF (iversion>=7)
THEN
166 hprogram,yrecfm,i%CPEDOTF,iresp)
176 hprogram,yrecfm,i%CPHOTO,iresp)
180 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=2)
THEN
184 hprogram,yrecfm,i%LTR_ML,iresp)
192 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
196 hprogram,yrecfm,i%XRM_PATCH,iresp)
204 yrecfm=
'GROUND_LAYER'
206 hprogram,yrecfm,i%NGROUND_LAYER,iresp)
210 IF(i%CISBA==
'DIF')
THEN
211 ALLOCATE(i%XSOILGRID(i%NGROUND_LAYER))
213 IF (iversion>=8)
THEN
214 DO jlayer=1,i%NGROUND_LAYER
215 WRITE(ylvl,
'(I4)') jlayer
216 yrecfm=
'SOILGRID'//adjustl(ylvl(:len_trim(ylvl)))
218 hprogram,yrecfm,i%XSOILGRID(jlayer),iresp)
220 ELSEIF (iversion==7 .AND. ibugfix>=2)
THEN
223 hprogram,yrecfm,i%XSOILGRID,iresp,hdir=
'-')
225 i%XSOILGRID(1:i%NGROUND_LAYER)=xoptimgrid(1:i%NGROUND_LAYER)
228 ALLOCATE(i%XSOILGRID(0))
233 IF (iversion>=6)
THEN
236 hprogram,yrecfm,i%NNBIOMASS,iresp)
238 SELECT CASE (i%CPHOTO)
239 CASE (
'AGS',
'LAI',
'AST',
'LST')
250 yrecfm=
'PATCH_NUMBER'
252 hprogram,yrecfm,i%NPATCH,iresp)
256 ALLOCATE(i%LMEB_PATCH(i%NPATCH))
258 IF (iversion>=8)
THEN
261 CALL
read_surf(hprogram,yrecfm,i%LMEB_PATCH(:),iresp,hdir=
'-')
263 isize_lmeb_patch = count(i%LMEB_PATCH(:))
265 IF (isize_lmeb_patch>0)
THEN
266 yrecfm=
'FORC_MEASURE'
267 CALL
read_surf(hprogram,yrecfm,i%LFORC_MEASURE,iresp)
269 CALL
read_surf(hprogram,yrecfm,i%LMEB_LITTER,iresp)
271 CALL
read_surf(hprogram,yrecfm,i%LMEB_GNDRES,iresp)
274 i%LFORC_MEASURE=.false.
275 i%LMEB_LITTER =.false.
276 i%LMEB_GNDRES =.false.
280 i%LMEB_PATCH(:)=.false.
281 i%LFORC_MEASURE=.false.
282 i%LMEB_LITTER =.false.
283 i%LMEB_GNDRES =.false.
294 ALLOCATE(i%LCOVER(jpcover))
298 ALLOCATE(i%XCOVER(ig%NDIM,count(i%LCOVER)))
300 hprogram,
'COVER',i%XCOVER(:,:),i%LCOVER,iresp)
306 ALLOCATE(i%XZS(ig%NDIM))
309 hprogram,yrecfm,i%XZS(:),iresp)
314 ALLOCATE(ig%XLAT (ig%NDIM))
315 ALLOCATE(ig%XLON (ig%NDIM))
316 ALLOCATE(ig%XMESH_SIZE (ig%NDIM))
317 ALLOCATE(i%XZ0EFFJPDIR(ig%NDIM))
319 hprogram,ig%CGRID,ig%XGRID_PAR,ig%XLAT,ig%XLON,ig%XMESH_SIZE,iresp,i%XZ0EFFJPDIR)
324 ALLOCATE(i%XCLAY(ig%NDIM,i%NGROUND_LAYER))
327 hprogram,yrecfm,i%XCLAY(:,1),iresp)
328 DO jlayer=2,i%NGROUND_LAYER
329 i%XCLAY(:,jlayer)=i%XCLAY(:,1)
334 ALLOCATE(i%XSAND(ig%NDIM,i%NGROUND_LAYER))
337 hprogram,yrecfm,i%XSAND(:,1),iresp)
338 DO jlayer=2,i%NGROUND_LAYER
339 i%XSAND(:,jlayer)=i%XSAND(:,1)
344 IF (iversion>7 .OR. (iversion==7 .AND. ibugfix>=3))
THEN
347 hprogram,yrecfm,i%LSOCP,iresp)
354 ALLOCATE(i%XSOC (ig%NDIM,i%NGROUND_LAYER))
358 hprogram,yrecfm,i%XSOC(:,1),iresp)
361 hprogram,yrecfm,i%XSOC(:,2),iresp)
363 DO jlayer=2,i%NGROUND_LAYER
364 i%XSOC (:,jlayer)=i%XSOC (:,2)
369 ALLOCATE(i%XSOC (0,1))
375 IF (iversion>7 .OR. (iversion==7 .AND. ibugfix>=3))
THEN
378 hprogram,yrecfm,i%LPERM,iresp)
385 ALLOCATE(i%XPERM (ig%NDIM))
389 hprogram,yrecfm,i%XPERM(:),iresp)
393 ALLOCATE(i%XPERM (0))
399 IF (iversion>=8)
THEN
402 hprogram,yrecfm,i%LGW,iresp)
409 ALLOCATE(i%XGW (ig%NDIM))
413 hprogram,yrecfm,i%XGW(:),iresp)
414 WHERE(i%XGW(:)==xundef)i%XGW(:)=0.0
422 IF (iversion>7 .OR. (iversion==7 .AND. ibugfix>=3))
THEN
425 hprogram,yrecfm,i%LNOF,iresp)
432 IF (chi%LCH_NO_FLUX)
THEN
436 ALLOCATE(i%XPH(ig%NDIM))
439 hprogram,yrecfm,i%XPH(:),iresp)
441 ALLOCATE(i%XFERT(ig%NDIM))
444 hprogram,yrecfm,i%XFERT(:),iresp)
447 CALL
abor1_sfx(
"READ_PGD_ISBAn: WITH LCH_NO_FLUX=T, PH AND FERT FIELDS ARE GIVEN AT PGD STEP")
457 ALLOCATE(i%XAOSIP(ig%NDIM))
460 hprogram,yrecfm,i%XAOSIP,iresp)
462 ALLOCATE(i%XAOSIM(ig%NDIM))
465 hprogram,yrecfm,i%XAOSIM,iresp)
467 ALLOCATE(i%XAOSJP(ig%NDIM))
470 hprogram,yrecfm,i%XAOSJP,iresp)
472 ALLOCATE(i%XAOSJM(ig%NDIM))
475 hprogram,yrecfm,i%XAOSJM,iresp)
477 ALLOCATE(i%XHO2IP(ig%NDIM))
480 hprogram,yrecfm,i%XHO2IP,iresp)
482 ALLOCATE(i%XHO2IM(ig%NDIM))
485 hprogram,yrecfm,i%XHO2IM,iresp)
487 ALLOCATE(i%XHO2JP(ig%NDIM))
490 hprogram,yrecfm,i%XHO2JP,iresp)
492 ALLOCATE(i%XHO2JM(ig%NDIM))
495 hprogram,yrecfm,i%XHO2JM,iresp)
499 ALLOCATE(i%XSSO_SLOPE(ig%NDIM))
502 hprogram,yrecfm,i%XSSO_SLOPE,iresp)
506 ALLOCATE(i%XSSO_STDEV(ig%NDIM))
509 hprogram,yrecfm,i%XSSO_STDEV(:),iresp)
513 ALLOCATE(i%XRUNOFFB(ig%NDIM))
516 hprogram,yrecfm,i%XRUNOFFB,iresp)
520 ALLOCATE(i%XWDRAIN(ig%NDIM))
521 IF (iversion<=3)
THEN
526 hprogram,yrecfm,i%XWDRAIN,iresp)
531 IF(i%CRUNOFF==
'SGH ' .AND. iversion>=5)
THEN
535 hprogram,yrecfm,i%LCTI,iresp)
537 IF (.NOT.i%LCTI) CALL
abor1_sfx(
"READ_PGD_ISBA_n:WITH CRUNOFF=SGH, CTI MAPS MUST BE GIVEN TO PGD")
539 ALLOCATE(i%XTI_MIN(ig%NDIM))
540 ALLOCATE(i%XTI_MAX(ig%NDIM))
541 ALLOCATE(i%XTI_MEAN(ig%NDIM))
542 ALLOCATE(i%XTI_STD(ig%NDIM))
543 ALLOCATE(i%XTI_SKEW(ig%NDIM))
547 hprogram,yrecfm,i%XTI_MIN,iresp)
551 hprogram,yrecfm,i%XTI_MAX,iresp)
555 hprogram,yrecfm,i%XTI_MEAN,iresp)
559 hprogram,yrecfm,i%XTI_STD,iresp)
563 hprogram,yrecfm,i%XTI_SKEW,iresp)
567 ALLOCATE(i%XTI_MIN(0))
568 ALLOCATE(i%XTI_MAX(0))
569 ALLOCATE(i%XTI_MEAN(0))
570 ALLOCATE(i%XTI_STD(0))
571 ALLOCATE(i%XTI_SKEW(0))
579 IF (chi%LCH_BIO_FLUX)
THEN
580 ALLOCATE(zwork(u%NSIZE_FULL,1))
584 hprogram,
'FULL ',
'SURF ',
'READ ')
587 ALLOCATE(imask(ig%NDIM))
590 'NATURE',ig%NDIM,imask,ilu,iluout)
591 ALLOCATE(gb%XISOPOT(ig%NDIM))
592 ALLOCATE(gb%XMONOPOT(ig%NDIM))
597 hprogram,yrecfm,zwork,iresp)
603 hprogram,yrecfm,zwork,iresp)
608 hprogram,
'NATURE',
'ISBA ',
'READ ')
612 ALLOCATE(gb%XISOPOT (0))
613 ALLOCATE(gb%XMONOPOT(0))
622 hprogram,i%LECOCLIMAP)
626 hprogram,ig%NDIM,oland_use)
631 IF (lhook) CALL dr_hook(
'READ_PGD_ISBA_N',1,zhook_handle)
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
subroutine read_grid(HPROGRAM, HGRID, PGRID_PAR, PLAT, PLON, PMESH_SIZE, KRESP, PDIR)
subroutine, public read_surf_cov(HPROGRAM, HREC, PFIELD, OFLAG, KRESP, HCOMMENT, HDIR)
subroutine read_pgd_isba_par_n(DTCO, U, DTI, IG, I, HPROGRAM, KSIZE, OLAND_USE, HDIR)
subroutine read_pgd_tsz0_par_n(DTZ, HPROGRAM)
subroutine abor1_sfx(YTEXT)
subroutine get_surf_mask_n(DTCO, U, HTYPE, KDIM, KMASK, KLU, KLUOUT)
subroutine read_lcover(HPROGRAM, OCOVER)
subroutine read_pgd_isba_n(CHI, DTCO, DTI, DTZ, DGU, GB, IG, I, UG, U, SV, HPROGRAM, OLAND_USE)
subroutine end_io_surf_n(HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine read_lecoclimap(HPROGRAM, OECOCLIMAP)