11 USE modd_data_cover_par
, ONLY : ncover, ntype, nvegtype, jpcover, nvegtype_old, nvegtype_ecosg
15 USE modi_read_lecoclimap
18 USE modi_open_aux_io_surf
19 USE modi_close_aux_io_surf
21 USE modi_make_choice_array
23 USE modi_read_pgd_cover_garden
34 HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,&
35 KLUOUT,HISBA,HNAT,HFIELD,KNI,KLAYER, &
36 KPATCH,PSOILGRID,PDEPTH,KVERSION,KWG_LAYER )
47 USE modd_prep_teb_greenroof
, ONLY : ngrid_level, xgrid_soil
49 USE modi_open_aux_io_surf
50 USE modi_close_aux_io_surf
51 USE modi_read_surf_isba_par_n
52 USE modi_convert_cover_isba
53 USE modi_garden_soil_depth
54 USE modi_read_arrange_cover
71 CHARACTER(LEN=28),
INTENT(IN) :: HFILE
72 CHARACTER(LEN=6),
INTENT(IN) :: HFILETYPE
73 CHARACTER(LEN=28),
INTENT(IN) :: HFILEPGD
74 CHARACTER(LEN=6),
INTENT(IN) :: HFILEPGDTYPE
75 INTEGER,
INTENT(IN) :: KLUOUT
76 CHARACTER(LEN=3),
INTENT(IN) :: HISBA
77 CHARACTER(LEN=3),
INTENT(IN) :: HNAT
78 CHARACTER(LEN=7),
INTENT(IN) :: HFIELD
79 INTEGER,
INTENT(IN) :: KNI
80 INTEGER,
INTENT(IN) :: KLAYER
81 INTEGER,
INTENT(IN) :: KPATCH
82 INTEGER,
INTENT(IN) :: KVERSION
83 REAL,
DIMENSION(:),
INTENT(IN) :: PSOILGRID
84 REAL,
DIMENSION(:,:,:),
POINTER :: PDEPTH
85 INTEGER,
DIMENSION(:,:),
INTENT(OUT):: KWG_LAYER
90 CHARACTER(LEN=4 ) :: YLVL
91 CHARACTER(LEN=12) :: YRECFM
92 CHARACTER(LEN=16) :: YRECFM2
93 CHARACTER(LEN=100):: YCOMMENT
94 CHARACTER(LEN=6) :: YSURF
98 INTEGER :: JJ, JI, IEND
102 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: GCOVER
103 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZCOVER
104 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZGROUND_DEPTH
105 REAL,
DIMENSION(:),
ALLOCATABLE :: ZSOILGRID
106 REAL,
DIMENSION(KNI) :: ZHVEG
107 REAL,
DIMENSION(KNI) :: ZLVEG
108 REAL,
DIMENSION(KNI) :: ZNVEG
109 REAL,
DIMENSION(KNI) :: ZPERM
110 CHARACTER(LEN=4) :: YHVEG
111 CHARACTER(LEN=4) :: YLVEG
112 CHARACTER(LEN=4) :: YNVEG
113 INTEGER :: INVEGTYPE_SAVE, IJPCOVER_SAVE
114 LOGICAL :: GECOCLIMAP
116 LOGICAL :: GPAR_GARDEN
117 LOGICAL,
DIMENSION(NVEGTYPE_ECOSG) :: GDATA_DG
118 LOGICAL,
DIMENSION(NVEGTYPE_ECOSG) :: GDATA_GROUND_DEPTH, GDATA_ROOT_DEPTH
121 LOGICAL :: GREAD_OK, GDIM, GDIM2, GWATER_TO_NATURE, GTOWN_TO_ROCK, GGARDEN
122 REAL(KIND=JPRB) :: ZHOOK_HANDLE
127 IF (
lhook)
CALL dr_hook(
'MODE_READ_EXTERN:READ_EXTERN_DEPTH',0,zhook_handle)
132 CALL read_surf(hfilepgdtype,yrecfm,iversion,iresp,hdir=
'-')
135 CALL read_surf(hfilepgdtype,yrecfm,ibugfix,iresp,hdir=
'-')
137 gdim = (iversion>8 .OR. iversion==8 .AND. ibugfix>0)
139 IF (gdim)
CALL read_surf(hfilepgdtype,
'SPLIT_PATCH',gdim2,iresp)
142 IF (hnat==
'NAT')
THEN 148 CALL read_surf(hfilepgdtype,
'PAR_GARDEN',gpar_garden,iresp,hdir=
'-')
149 gecoclimap = .NOT. gpar_garden
150 IF (.NOT.gecoclimap) gecosg = .false.
155 invegtype_save = nvegtype
156 ijpcover_save = jpcover
158 nvegtype = nvegtype_ecosg
161 nvegtype = nvegtype_old
167 ALLOCATE(pdepth(kni,klayer,kpatch))
180 IF (gdim) iend = nvegtype_ecosg
182 IF (hnat==
'NAT' .AND. (iversion>=7 .OR. .NOT.gecoclimap))
THEN 186 gdata_dg(:) = .false.
187 IF (.NOT.gecoclimap) gdata_dg(:) = .true.
188 IF (iversion>=7)
THEN 191 CALL read_surf(hfilepgdtype,yrecfm,gdata_dg(1:iend),iresp,hcomment=ycomment,hdir=
'-')
194 IF (any(gdata_dg(1:iend)))
THEN 198 WRITE(yrecfm,fmt=
'(A6,I2.2)')
'D_DG_L',jl
200 IF (jl<10)
WRITE(yrecfm,fmt=
'(A4,I1.1)')
'D_DG',jl
201 IF (jl>=10)
WRITE(yrecfm,fmt=
'(A4,I2.2)')
'D_DG',jl
204 iversion, ibugfix, gdata_dg, pdepth(:,jl,:),iresp,hdir=
'E')
210 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=2)
THEN 214 IF (.NOT.any(gdata_dg(1:iend)) .AND. hisba==
"3-L")
THEN 216 yrecfm2=
'L_ROOT_DEPTH' 218 CALL read_surf(hfilepgdtype,yrecfm2,gdata_root_depth(1:iend),iresp,hcomment=ycomment,hdir=
'-')
220 IF (any(gdata_root_depth(1:iend)))
THEN 224 yrecfm2=
'D_ROOT_DEPTH' 227 iversion, ibugfix, gdata_root_depth, pdepth(:,2,:),iresp,hdir=
'E')
232 yrecfm2=
'L_GROUND_DEPTH' 233 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm2=
'L_GROUND_DPT' 235 CALL read_surf(hfilepgdtype,yrecfm2,gdata_ground_depth(1:iend),iresp,hcomment=ycomment,hdir=
'-')
237 IF (any(gdata_ground_depth(1:iend)))
THEN 239 ALLOCATE(zground_depth(kni,kpatch))
243 yrecfm2=
'D_GROUND_DEPTH' 244 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm2=
'D_GROUND_DPT' 247 iversion, ibugfix, gdata_ground_depth, zground_depth(:,:),iresp,hdir=
'E')
249 IF (.NOT.any(gdata_dg(1:iend)))
THEN 251 IF (hisba==
"2-L")
THEN 253 pdepth(:,2,:) = zground_depth(:,:)
255 WHERE (zground_depth(:,:)/=
xundef) pdepth(:,1,:) = 0.01
258 ELSEIF (hisba==
"3-L")
THEN 260 pdepth(:,3,:) = zground_depth(:,:)
262 WHERE (zground_depth(:,:)/=
xundef) pdepth(:,1,:) = 0.01
263 IF (any(gdata_root_depth(1:iend))) gread_ok = .true.
265 ELSEIF (hisba==
"DIF")
THEN 267 ALLOCATE(zsoilgrid(klayer))
269 WRITE(ylvl,
'(I4)') jl
270 yrecfm2=
'SOILGRID'//adjustl(ylvl(:len_trim(ylvl)))
271 CALL read_surf(hfilepgdtype,yrecfm,zsoilgrid(jl),iresp)
272 pdepth(:,jl,:) = zsoilgrid(jl)
274 DEALLOCATE(zsoilgrid)
283 IF ( pdepth(jj,jl,jp) <= zground_depth(jj,jp) .AND. zground_depth(jj,jp) <
xundef ) &
284 kwg_layer(jj,jp) = jl
288 DEALLOCATE(zground_depth)
294 ELSE IF (hnat==
'GD' .AND. .NOT.gecoclimap )
THEN 298 CALL read_surf(hfilepgdtype,
'D_TYPE_HVEG',yhveg,iresp,hdir=
'E')
299 CALL read_surf(hfilepgdtype,
'D_TYPE_LVEG',ylveg,iresp,hdir=
'E')
300 CALL read_surf(hfilepgdtype,
'D_TYPE_NVEG',ynveg,iresp,hdir=
'E')
301 CALL read_surf(hfilepgdtype,
'D_FRAC_HVEG',zhveg,iresp,hdir=
'E')
302 CALL read_surf(hfilepgdtype,
'D_FRAC_LVEG',zlveg,iresp,hdir=
'E')
303 CALL read_surf(hfilepgdtype,
'D_FRAC_NVEG',znveg,iresp,hdir=
'E')
305 CALL garden_soil_depth(ynveg,ylveg,yhveg,znveg,zlveg,zhveg,pdepth)
307 ELSEIF (hnat==
'GR' .AND. .NOT.gecoclimap )
THEN 309 pdepth(:, 1,:) = xgrid_soil(ngrid_level - 5)
310 pdepth(:, 2,:) = xgrid_soil(ngrid_level - 4)
311 pdepth(:, 3,:) = xgrid_soil(ngrid_level - 3)
312 pdepth(:, 4,:) = xgrid_soil(ngrid_level - 2)
313 pdepth(:, 5,:) = xgrid_soil(ngrid_level - 1)
314 pdepth(:, 6,:) = xgrid_soil(ngrid_level - 0)
319 IF (gecoclimap .AND. .NOT.gread_ok )
THEN 321 IF (iversion>8 .OR. (iversion==8 .AND. ibugfix>=1))
THEN 323 CALL read_surf(hfiletype,
'WRITE_EXT ',gread_ext,iresp,hdir=
'-')
333 CALL read_surf(hfiletype,yrecfm,iversion,iresp)
335 CALL read_surf(hfiletype,yrecfm,ibugfix,iresp)
336 gdim = (iversion>8 .OR. iversion==8 .AND. ibugfix>0)
338 IF (gdim)
CALL read_surf(hfiletype,
'SPLIT_PATCH',gdim2,iresp)
340 WRITE(ylvl,
'(I4)') jl
341 yrecfm=
'DG'//adjustl(ylvl(:len_trim(ylvl)))
342 CALL make_choice_array(hfiletype, kpatch, gdim2, yrecfm, pdepth(:,jl,:),hdir=
'E')
352 IF (gdim.AND.gecosg)
THEN 353 ALLOCATE(gcover(
sum(ntype)))
355 ALLOCATE(gcover(ncover))
358 CALL old_name(hfilepgdtype,
'COVER_LIST ',yrecfm,hdir=
'-')
359 CALL read_surf(hfilepgdtype,yrecfm,gcover(:),iresp,hdir=
'-')
362 ALLOCATE(zcover(kni,
count(gcover)))
364 ALLOCATE(zcover(0,0))
367 CALL read_surf_cov(hfilepgdtype,yrecfm,zcover(:,:),gcover(:),iresp,hdir=
'E')
378 IF (hnat==
'NAT'.AND.(iversion>7 .OR. (iversion==7 .AND. ibugfix>3)))
THEN 381 CALL read_surf(hfilepgdtype,yrecfm,gperm,iresp,hdir=
'-')
384 CALL read_surf(hfilepgdtype,yrecfm,zperm(:),iresp,hdir=
'E')
389 IF (
SIZE(gcover)/=jpcover)
THEN 396 gwater_to_nature = .false.
397 gtown_to_rock = .false.
402 hisba,io%LTR_ML,1,zcover,gcover,
' ',hnat,psoilgrid=psoilgrid, &
403 pperm=zperm,pdg=pdepth,kwg_layer=kwg_layer, &
404 owater_to_nature=gwater_to_nature, otown_to_rock=gtown_to_rock, &
408 DEALLOCATE(gcover,zcover)
414 nvegtype = invegtype_save
415 jpcover = ijpcover_save
418 IF (
lhook)
CALL dr_hook(
'MODE_READ_EXTERN:READ_EXTERN_DEPTH',1,zhook_handle)
429 HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,&
430 KLUOUT,KNI,HFIELD,HNAME,PFIELD,PDEPTH,OKEY)
442 USE modd_isba_par
, ONLY : xoptimgrid
446 USE modi_isba_soc_parameters
460 CHARACTER(LEN=28),
INTENT(IN) :: HFILE
461 CHARACTER(LEN=6),
INTENT(IN) :: HFILETYPE
462 CHARACTER(LEN=28),
INTENT(IN) :: HFILEPGD
463 CHARACTER(LEN=6),
INTENT(IN) :: HFILEPGDTYPE
464 INTEGER,
INTENT(IN) :: KLUOUT
465 INTEGER,
INTENT(IN) :: KNI
466 CHARACTER(LEN=7),
INTENT(IN) :: HFIELD
467 CHARACTER(LEN=*),
INTENT(IN) :: HNAME
468 REAL,
DIMENSION(:,:,:),
POINTER :: PFIELD
469 REAL,
DIMENSION(:,:,:),
POINTER :: PDEPTH
470 LOGICAL,
OPTIONAL,
INTENT(INOUT) :: OKEY
480 CHARACTER(LEN=12) :: YRECFM
482 CHARACTER(LEN=8) :: YPATCH
484 CHARACTER(LEN=4) :: YLVL
485 CHARACTER(LEN=4) :: YPEDOTF
486 CHARACTER(LEN=3) :: YISBA
487 CHARACTER(LEN=3) :: YNAT
490 INTEGER :: ILAYER, ILAYER_SAVE
500 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZCLAY
501 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZSAND
502 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZCONDSAT
503 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZMPOTSAT
504 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZBCOEF
505 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZSOC_GR
506 REAL,
DIMENSION(:),
ALLOCATABLE :: ZSOILGRID
507 REAL,
DIMENSION(:),
ALLOCATABLE :: ZNAT
509 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWWILT
510 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWFC
511 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWSAT
512 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZPATCH
514 REAL,
DIMENSION(KNI,2) :: ZSOC
516 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWORK, ZFRACSOC
517 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IWG_LAYER
523 REAL,
PARAMETER :: ZWSAT_OM = 0.9
524 REAL,
PARAMETER :: ZMPOT_WWILT = -150.
525 REAL,
PARAMETER :: ZHYDCOND_WFC = 1.157e-9
528 INTEGER :: IBUGFIX, ISIZE
529 LOGICAL :: GDIM, GDIM2
530 LOGICAL :: GDATA_WSAT, GDATA_WWILT, GDATA_WFC, GDATA_CONDSAT, GDATA_MPOTSAT, GDATA_BCOEF, GCALC
532 REAL(KIND=JPRB) :: ZHOOK_HANDLE
534 IF (
lhook)
CALL dr_hook(
'MODE_READ_EXTERN:READ_EXTERN_ISBA',0,zhook_handle)
535 WRITE (kluout,*)
' | Reading ',hfield,
' in externalized file' 540 gteb = (hname(1:3)==
'TWN' .OR. hname(1:3)==
'GD_' .OR. hname(1:3)==
'GR_' &
541 .OR. hname(4:6)==
'GD_' .OR. hname(4:6)==
'GR_')
543 IF (gteb) ggd = (hname(1:3)==
'TWN' .OR. hname(1:3)==
'GD_' .OR. hname(4:6)==
'GD_')
553 CALL read_surf(hfilepgdtype,yrecfm,iversion,iresp,hdir=
'-')
555 CALL read_surf(hfilepgdtype,yrecfm,ibugfix,iresp,hdir=
'-')
557 gdim = (iversion>8 .OR. iversion==8 .AND. ibugfix>0)
568 yrecfm=
'GROUND_LAYER' 571 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN 579 CALL read_surf(hfilepgdtype,yrecfm,ilayer,iresp,hdir=
'-')
585 yrecfm=
'PATCH_NUMBER' 586 CALL read_surf(hfilepgdtype,yrecfm,ipatch,iresp,hdir=
'-')
594 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN 602 CALL read_surf(hfilepgdtype,yrecfm,yisba,iresp,hdir=
'-')
603 IF(yisba==
'DIF'.AND.
PRESENT(okey))
THEN 607 IF (iversion>=7)
THEN 614 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_PEDOTF' 616 CALL read_surf(hfilepgdtype,yrecfm,ypedotf,iresp,hdir=
'-')
627 IF (hfield==
'WG ' .OR. hfield==
'WGI ')
THEN 629 ALLOCATE (zwfc(kni,ilayer))
630 ALLOCATE (zwwilt(kni,ilayer))
631 ALLOCATE (zwsat(kni,ilayer))
632 IF (gteb.AND..NOT.ggd)
THEN 633 ALLOCATE(zbcoef(kni,ilayer))
634 ALLOCATE(zmpotsat(kni,ilayer))
635 ALLOCATE(zcondsat(kni,ilayer))
640 CALL read_surf(hfilepgdtype,yrecfm,gdata_wfc,iresp,hdir=
'E')
643 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_WFC_L',jl
644 CALL read_surf(hfilepgdtype,yrecfm,zwfc(:,jl),iresp,hdir=
'E')
648 CALL read_surf(hfilepgdtype,yrecfm,gdata_wwilt,iresp,hdir=
'E')
649 IF (gdata_wwilt)
THEN 651 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_WWILT_L',jl
652 CALL read_surf(hfilepgdtype,yrecfm,zwwilt(:,jl),iresp,hdir=
'E')
656 CALL read_surf(hfilepgdtype,yrecfm,gdata_wsat,iresp,hdir=
'E')
659 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_WSAT_L',jl
660 CALL read_surf(hfilepgdtype,yrecfm,zwsat(:,jl),iresp,hdir=
'E')
663 IF (gteb.AND..NOT.ggd)
THEN 665 CALL read_surf(hfilepgdtype,yrecfm,gdata_condsat,iresp,hdir=
'E')
666 IF (gdata_condsat)
THEN 668 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_CNDSAT_L',jl
669 CALL read_surf(hfilepgdtype,yrecfm,zcondsat(:,jl),iresp,hdir=
'E')
673 CALL read_surf(hfilepgdtype,yrecfm,gdata_mpotsat,iresp,hdir=
'E')
674 IF (gdata_mpotsat)
THEN 676 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_MPTSAT_L',jl
677 CALL read_surf(hfilepgdtype,yrecfm,zmpotsat(:,jl),iresp,hdir=
'E')
681 CALL read_surf(hfilepgdtype,yrecfm,gdata_bcoef,iresp,hdir=
'E')
682 IF (gdata_bcoef)
THEN 684 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_BCOEF_L',jl
685 CALL read_surf(hfilepgdtype,yrecfm,zbcoef(:,jl),iresp,hdir=
'E')
690 gdata_wwilt = .false.
693 gdata_condsat = .false.
694 gdata_mpotsat = .false.
695 gdata_bcoef = .false.
699 IF (.NOT.(gdata_wwilt.AND.gdata_wfc.AND.gdata_wsat))
THEN 700 IF ((.NOT.gteb.OR.ggd).OR..NOT.(gdata_condsat.AND.gdata_mpotsat.AND.gdata_bcoef)) gcalc = .true.
710 ALLOCATE(zclay(kni,ilayer))
714 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_CLAY' 716 IF (.NOT.gteb.OR.ggd)
THEN 717 CALL read_surf(hfilepgdtype,yrecfm,zclay(:,1),iresp,hdir=
'E')
719 zclay(:,jl) = zclay(:,1)
723 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_CLAY_GR',jl
724 CALL read_surf(hfilepgdtype,yrecfm,zclay(:,jl),iresp,hdir=
'E')
733 ALLOCATE(zsand(kni,ilayer))
737 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_SAND' 739 IF (.NOT.gteb.OR.ggd)
THEN 740 CALL read_surf(hfilepgdtype,yrecfm,zsand(:,1),iresp,hdir=
'E')
742 zsand(:,jl) = zsand(:,1)
746 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_SAND_GR',jl
747 CALL read_surf(hfilepgdtype,yrecfm,zsand(:,jl),iresp,hdir=
'E')
751 IF (gteb.AND..NOT.ggd)
THEN 752 ALLOCATE(zsoc_gr(kni,ilayer))
754 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_OM_GR',jl
755 CALL read_surf(hfilepgdtype,yrecfm,zsoc_gr(:,jl),iresp,hdir=
'E')
768 IF ( (.NOT.gteb).AND.(iversion>7.OR.(iversion==7.AND.ibugfix>3)) &
769 .AND.(yisba==
'DIF').AND.(hfield==
'WG '.OR.hfield==
'WGI ') )
THEN 771 CALL read_surf(hfilepgdtype,yrecfm,gsoc_data,iresp)
774 CALL read_surf(hfilepgdtype,yrecfm,zsoc(:,1),iresp,hdir=
'E')
776 CALL read_surf(hfilepgdtype,yrecfm,zsoc(:,2),iresp,hdir=
'E')
777 WHERE(zsoc(:,:)==
xundef)zsoc(:,:)=0.0
788 IF(yisba==
'DIF')
THEN 789 ALLOCATE(zsoilgrid(ilayer))
791 IF (.NOT.gteb.OR.ggd)
THEN 792 IF (iversion>=8)
THEN 794 WRITE(ylvl,
'(I4)') jl
795 yrecfm=
'SOILGRID'//adjustl(ylvl(:len_trim(ylvl)))
797 yrecfm=
'GD_SGRID'//adjustl(ylvl(:len_trim(ylvl)))
799 CALL read_surf(hfilepgdtype,yrecfm,zsoilgrid(jl),iresp,hdir=
'A')
801 ELSEIF (iversion==7 .AND. ibugfix>=2.AND.ggd)
THEN 804 yrecfm=
'TWN_SOILGRID' 805 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_SOILGRID' 807 CALL read_surf(hfilepgdtype,yrecfm,zsoilgrid,iresp,hdir=
'A')
809 zsoilgrid(1:ilayer) = xoptimgrid(1:ilayer)
812 zsoilgrid(1:ilayer) = xoptimgrid(1:ilayer)
815 ALLOCATE(zsoilgrid(0))
818 ALLOCATE(iwg_layer(kni,ipatch))
825 IF (iversion>=7)
THEN 827 CALL read_surf(hfilepgdtype,
'FRAC_TOWN',znat,iresp,hdir=
'E')
829 CALL read_surf(hfilepgdtype,
'FRAC_NATURE',znat,iresp,hdir=
'E')
839 IF (.NOT.gteb .AND. hfield==
'TG ' .AND. (yisba==
'2-L' .OR. yisba==
'3-L') )
THEN 843 CALL read_surf(hfiletype,yrecfm,gtemp_arp,iresp,hdir=
'-')
846 CALL read_surf(hfiletype,yrecfm,ilayer,iresp,hdir=
'-')
853 IF ((hfield==
'TG ') .AND. (yisba==
'2-L' .OR. yisba==
'3-L'))
THEN 854 ALLOCATE(pdepth(kni,ilayer,nvegtype))
855 DO jvegtype=1,nvegtype
856 pdepth(:,1,jvegtype) = 0.01
857 pdepth(:,2,jvegtype) = 0.40
858 IF (ilayer==3) pdepth(:,3,jvegtype) = 5.00
861 pdepth(:,3,jvegtype) = 1.0
863 pdepth(:,jl,jvegtype) = pdepth(:,jl-1,jvegtype)+1.
878 hfile,hfiletype,hfilepgd,hfilepgdtype, &
879 kluout,yisba,ynat,hfield,kni, &
880 ilayer,ipatch,zsoilgrid,pdepth,iversion,iwg_layer)
884 DEALLOCATE(zsoilgrid)
897 CALL read_surf(hfiletype,yrecfm,iversion,iresp)
899 CALL read_surf(hfiletype,yrecfm,ibugfix,iresp)
900 gdim = (iversion>8 .OR. iversion==8 .AND. ibugfix>0)
902 IF (gdim)
CALL read_surf(hfiletype,
'SPLIT_PATCH',gdim2,iresp)
905 IF(yisba==
'2-L'.OR.yisba==
'3-L')
THEN 918 ALLOCATE(pfield(kni,ilayer,ipatch))
921 WRITE(ylvl,
'(I4)') jl
922 yrecfm=
trim(hname)//adjustl(ylvl(:len_trim(ylvl)))
924 CALL make_choice_array(hfiletype, ipatch, gdim2, yrecfm, pfield(:,jl,:),hdir=
'E',kpatch=0)
926 CALL make_choice_array(hfiletype, ipatch, gdim2, yrecfm, pfield(:,jl,:),hdir=
'E')
932 WHERE (znat(:)==0.) pfield(:,jl,jp) =
xundef 938 IF(yisba==
'3-L')
THEN 941 IF(.NOT.gtemp_arp)pfield(:,3,:)=pfield(:,2,:)
943 pfield(:,3,:)=pfield(:,2,:)
953 IF (hfield==
'WG ' .OR. hfield==
'WGI ')
THEN 960 zwsat(:,jl) =
wsat_func(zclay(:,jl),zsand(:,jl),ypedotf)
961 zwwilt(:,jl) =
wwilt_func(zclay(:,jl),zsand(:,jl),ypedotf)
963 zwfc(:,jl) =
w33_func(zclay(:,jl),zsand(:,jl),ypedotf)
965 zwfc(:,jl) =
wfc_func(zclay(:,jl),zsand(:,jl),ypedotf)
969 IF (gteb.AND..NOT.ggd)
THEN 972 zbcoef(:,jl) =
bcoef_func(zclay(:,jl),zsand(:,jl),ypedotf)
976 WHERE (zwsat(:,jl)/=
xundef)
977 zwsat(:,jl) = zsoc_gr(:,jl)* zwsat_om +(1-zsoc_gr(:,jl))* zwsat(:,jl)
978 zwwilt(:,jl) = exp(((log(-1*zmpot_wwilt)-log(-1*zmpotsat(:,jl))) &
979 / (-1*zbcoef(:,jl)))+log(zwsat(:,jl)))
980 zwfc(:,jl) = exp(((log(zhydcond_wfc)-log(zcondsat(:,jl))) &
981 / (2*zbcoef(:,jl)+3))+log(zwsat(:,jl)))
984 DEALLOCATE(zbcoef,zmpotsat,zcondsat)
1009 ALLOCATE(zwork(kni,ipatch))
1014 CALL read_surf(hfiletype,yrecfm,gsoc,iresp,hdir=
'-')
1017 WHERE(zwork(:,:)==
xundef)zwork(:,:)=0.0
1022 ALLOCATE(ynp%AL(ipatch))
1026 ALLOCATE(pk%NR_P(kni))
1030 ALLOCATE(pk%XPATCH(kni))
1031 pk%XPATCH = zwork(:,jp)
1032 ALLOCATE(pk%XDG(kni,ilayer))
1033 pk%XDG(:,:) = pdepth(:,:,jp)
1034 ALLOCATE(pk%XCONDSAT(kni,ilayer))
1035 pk%XCONDSAT(:,:) = 0.0
1037 ALLOCATE(yk%XBCOEF (kni,ilayer))
1038 ALLOCATE(yk%XMPOTSAT (kni,ilayer))
1039 ALLOCATE(yk%XHCAPSOIL(kni,ilayer))
1040 ALLOCATE(yk%XCONDDRY (kni,ilayer))
1041 ALLOCATE(yk%XCONDSLD (kni,ilayer))
1042 ALLOCATE(yk%XWD0 (kni,ilayer))
1043 ALLOCATE(yk%XKANISO (kni,ilayer))
1044 ALLOCATE(zfracsoc(kni,ilayer))
1046 yk%XMPOTSAT (:,:)=0.0
1047 yk%XHCAPSOIL(:,:)=0.0
1051 yk%XKANISO (:,:)=0.0
1054 zwsat, zwfc, zwwilt, ipatch)
1064 IF(yisba==
'DIF')
THEN 1069 iwork=iwg_layer(ji,jp)
1070 IF(iwork<ilayer)
THEN 1071 DO jl=iwork+1,ilayer
1072 pfield(ji,jl,jp)=pfield(ji,iwork,jp)
1079 IF (hfield==
'WG ')
THEN 1083 IF(pfield(ji,jl,jp)/=
xundef)
THEN 1084 pfield(ji,jl,jp) = max(min(pfield(ji,jl,jp),zwsat(ji,jl)),0.)
1086 pfield(ji,jl,jp) = (pfield(ji,jl,jp) - zwwilt(ji,jl)) / &
1087 (zwfc(ji,jl) - zwwilt(ji,jl))
1092 ELSE IF (hfield==
'WGI ')
THEN 1095 WHERE(pfield(:,jl,jp)/=
xundef)
1096 pfield(:,jl,jp) = pfield(:,jl,jp) / zwsat(:,jl)
1108 DEALLOCATE(iwg_layer)
1111 IF (
lhook)
CALL dr_hook(
'MODE_READ_EXTERN:READ_EXTERN_ISBA',1,zhook_handle)
static const char * trim(const char *name, int *n)
subroutine make_choice_array(HPROGRAM, KNPATCH, ODIM, HRECFM, PWORK, HDIR, KPATCH)
subroutine old_name(HPROGRAM, HRECIN, HRECOUT, HDIR)
subroutine isba_soc_parameters(HRUNOFF, PSOC, K, NP, PFRACSOC, PWSAT, PWFC, PWWILT, KPATCH)
subroutine close_aux_io_surf(HFILE, HFILETYPE)
subroutine read_surf_cov(HPROGRAM, HREC, PFIELD, OFLAG, KRESP, HCOMMENT, HDIR)
subroutine read_lecoclimap(HPROGRAM, OECOCLIMAP, OECOSG, HDIR)
subroutine convert_cover_isba(DTCO, HALBEDO, HISBA, OTR_ML, KDECADE, PCOVER, OCOV
subroutine isba_np_init(YISBA_NP, KPATCH)
subroutine read_extern_depth(U, DTCO, GCP, IO, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, KLUOUT, HISBA, HNAT, HFIELD, KNI, KLAYER, KPATCH, PSOILGRID, PDEPTH, KVERSION, KWG_LAYER)
integer, parameter nundef
subroutine read_pgd_cover_garden(HPROGRAM, OGARDEN)
subroutine read_extern_isba(U, DTCO, GCP, IO, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, KLUOUT, KNI, HFIELD, HNAME, PFIELD, PDEPTH, OKEY)
intent(out) overrides sub arrays one Sort by the least significant key first sum(iindex(1:n))
subroutine read_arrange_cover( HPROGRAM, OWATER_TO_NATURE, OTOWN_TO_
subroutine isba_k_init(YISBA_K)
subroutine open_aux_io_surf(HFILE, HFILETYPE, HMASK, HDIR)
subroutine read_surf_isba_par_n(DTCO, U, GCP, KPATCH, HPROGRAM, H