7 HPROGRAM,HFIELD,HAREA,HFILE,HFILETYPE,PUNIF,PFIELD,&
60 USE modd_data_cover_par
, ONLY : ntype, lveg_pres, nvegtype
64 USE modi_interpol_field
74 USE modi_get_surf_mask_n
76 USE modi_get_type_dim_n
87 TYPE(
sso_t),
INTENT(INOUT) :: USS
89 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
90 CHARACTER(LEN=*),
INTENT(IN) :: HFIELD
91 CHARACTER(LEN=3),
INTENT(IN) :: HAREA
97 CHARACTER(LEN=28),
INTENT(IN) :: HFILE
98 CHARACTER(LEN=6),
INTENT(INOUT) :: HFILETYPE
99 REAL,
INTENT(IN) :: PUNIF
100 REAL,
DIMENSION(:,:),
INTENT(OUT):: PFIELD
101 LOGICAL,
OPTIONAL,
INTENT(OUT) :: OPRESENT
102 REAL,
DIMENSION(:,:),
OPTIONAL,
INTENT(IN) :: PVEGTYPE
110 INTEGER,
DIMENSION(:),
POINTER :: IMASK
114 REAL,
DIMENSION(:),
ALLOCATABLE :: ZVEGTYPE
115 INTEGER :: JJ, JT, JTN
116 CHARACTER(LEN=20) :: YFIELD
117 CHARACTER(LEN=6) :: YMASK
119 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZFIELD
120 REAL(KIND=JPRB) :: ZHOOK_HANDLE
135 IF (len_trim(hfile)/=0 .OR. punif/=
xundef)
THEN 137 IF (
PRESENT(opresent)) opresent=.true.
139 IF (hfiletype==
'DIRTYP')
THEN 140 ALLOCATE(zfield(
nl,
sum(ntype)))
142 ALLOCATE(zfield(
nl,1))
168 IF (idim/=
SIZE(pfield,1))
THEN 169 WRITE(iluout,*)
'Wrong dimension of MASK: ',idim,
SIZE(pfield,1)
170 CALL abor1_sfx(
'PGD_FIELDIN: WRONG DIMENSION OF MASK')
173 ALLOCATE(imask(idim))
179 IF (
PRESENT(opresent))
THEN 187 WRITE(iluout,*)
'***********************************************************' 188 WRITE(iluout,*)
'* Error in PGD field preparation of field : ', hfield
189 WRITE(iluout,*)
'* There is no prescribed value and no input file *' 190 WRITE(iluout,*)
'***********************************************************' 192 CALL abor1_sfx(
'PGD_FIELDIN: NO PRESCRIBED VALUE NOR INPUT FILE FOR '/
201 IF (len_trim(hfile)/=0)
THEN 213 ALLOCATE(
nvalnbr(u%NDIM_FULL,1))
221 ALLOCATE(
xall(u%NDIM_FULL,1,1))
226 IF(hfield==
"water depth")
THEN 231 yfield = hfield(1:min(len(hfield),20))
236 hprogram,
'SURF ',hfiletype,
'A_MESH',hfile, &
244 DO jt=1,
SIZE(
nsize,2)
249 WHERE ((u%XTOWN(:)+u%XNATURE(:))==0. .AND.
nsize(:,jt)==0 )
nsize 252 WHERE (u%XTOWN (:)==0. .AND.
nsize(:,jt)==0 )
nsize(:,jt) = -1
255 WHERE (u%XTOWN (:)==0. .AND.
nsize(:,jt)==0 )
nsize(:,jt) = -1
258 WHERE (u%XNATURE(:)==0. .AND.
nsize(:,jt)==0 )
nsize(:,jt) = -1
261 IF (
PRESENT(pvegtype) .AND.
SIZE(
nsize,2)>1)
THEN 264 jtn = jt -
sum(ntype(1:2))
269 IF ( jtn <=
SIZE(pvegtype,2) )
THEN 270 ALLOCATE(zvegtype(u%NSIZE_FULL))
272 WHERE (zvegtype(:)==0. .AND.
nsize(:,jt)==0)
nsize(:,jt) = -
280 WHERE (u%XSEA (:)==0. .AND.
nsize(:,jt)==0 )
nsize(:,jt) = -1
283 WHERE (u%XWATER (:)==0. .AND.
nsize(:,jt)==0 )
nsize(:,jt) = -1
294 DO jt=1,
SIZE(
nsize,2)
296 IF (.NOT.u%LECOSG.AND.jt>nvegtype)
EXIT 299 IF (
SIZE(zfield,2)>1)
THEN 302 IF ( (yfield(1:3)==
'LAI'.OR.yfield(1:10)==
'ALBNIR_VEG'.OR.yfield(1
'ALBVIS_VEG' 303 SIZE(zfield,2)>1.AND.yfield(1:6)==
'H_TREE') )
THEN 305 IF ( (.NOT.u%LECOSG.AND.jt<=3).OR.(u%LECOSG.AND.jt<=
sum(ntype(1:
THEN 311 IF (yfield(1:6)==
'H_TREE')
THEN 312 IF ((.NOT.u%LECOSG.AND.((jt>=7 .AND. jt<=12) .OR. (jt>=18 .AND.
346 ELSEIF (punif/=
xundef)
THEN 357 IF (harea==
'NAT'.AND.
SIZE(zfield,2)>
SIZE(pfield,2).AND.u%LECOSG)
THEN real, dimension(:,:,:), allocatable xvallist
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
integer, dimension(:,:), allocatable nsize_all
real, dimension(:,:,:), allocatable xall
subroutine abor1_sfx(YTEXT)
subroutine get_surf_mask_n(DTCO, U, HTYPE, KDIM, KMASK, KLU, KLUOUT)
integer, dimension(:,:), allocatable nvalnbr
real, dimension(:,:), allocatable xsumval
subroutine get_luout(HPROGRAM, KLUOUT)
intent(out) overrides sub arrays one Sort by the least significant key first sum(iindex(1:n))
integer, dimension(:,:), allocatable nsize
integer, dimension(:,:,:), allocatable nvalcount
subroutine treat_field(UG, U, USS, HPROGRAM, HSCHEME, HFILETYPE, HSUBROUTINE, HFILENAME, HFIELD, PPGDARRAY)
subroutine pgd_fieldin(DTCO, UG, U, USS, HPROGRAM, HFIELD, HAREA, HFILE, HFILETYPE, PUNIF,
integer, parameter jpvalmax
subroutine interpol_field(UG, U, HPROGRAM, KLUOUT, KCODE, PFIELD, HFIELD, PDE