56 xdata_irrig, xdata_watsup, &
57 xdata_garden, xdata_nature, &
58 xdata_root_depth, xdata_root_depthgv, xdata_ground_depth, &
59 xdata_root_extinction, xdata_root_lin
64 USE modi_ini_var_from_vegtype_data
66 USE yomhook
,ONLY : lhook, dr_hook
67 USE parkind1
,ONLY : jprb
77 TYPE(isba_grid_t
),
INTENT(INOUT) :: ig
78 TYPE(isba_t
),
INTENT(INOUT) :: i
82 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
83 INTEGER,
INTENT(IN) :: kluout
89 REAL,
DIMENSION (SIZE(XDATA_GROUND_DEPTH,1),NVEGTYPE) :: zdata_ground_depth
91 CHARACTER(LEN=3) :: ytree, ynat, yveg, ydif, yroot
92 REAL,
DIMENSION(IG%NDIM,36,NVEGTYPE) :: zwork
93 REAL,
DIMENSION(NVEGTYPE) :: zdef
95 INTEGER :: jtime, jvegtype, jcover
97 REAL(KIND=JPRB) :: zhook_handle
100 IF (lhook) CALL dr_hook(
'EXTRAPOL_FIELDS',0,zhook_handle)
112 IF (.NOT.dti%LDATA_LAI)
THEN
117 IF (
ASSOCIATED(dtco%XDATA_WEIGHT))
DEALLOCATE(dtco%XDATA_WEIGHT)
119 zwork(:,jtime,:),i%XCOVER,xdata_lai(:,jtime,:),yveg,
'ARI',i%LCOVER,kdecade=jtime)
121 WHERE (dti%XPAR_VEGTYPE(:,jvegtype)/=0.) zwork(:,jtime,jvegtype) = 0.
125 DO jvegtype=1,nvegtype
126 IF (any(dti%XPAR_VEGTYPE(:,jvegtype)/=0.) .AND. all(zwork(:,jtime,jvegtype)==xundef))
THEN
128 DO jcover = 1,jpcover
129 IF (dtco%XDATA_VEGTYPE(jcover,jvegtype)>zfrac)
THEN
130 zdef(jvegtype) = xdata_lai(jcover,jtime,jvegtype)
131 zfrac = dtco%XDATA_VEGTYPE(jcover,jvegtype)
140 hprogram,kluout,
'LAI: leaf area index',zwork(:,jtime,:),pdef=zdef)
152 IF (.NOT.dti%LDATA_H_TREE .AND. (i%CPHOTO/=
'NON' .OR. .NOT.dti%LDATA_Z0))
THEN
160 IF (
ASSOCIATED(dtco%XDATA_WEIGHT))
DEALLOCATE(dtco%XDATA_WEIGHT)
162 dti%XPAR_H_TREE,i%XCOVER,xdata_h_tree,ytree,
'ARI',i%LCOVER,kdecade=1)
166 hprogram,kluout,
'H_TREE: height of trees',dti%XPAR_H_TREE,pdef=zdef)
168 dti%LDATA_H_TREE=.true.
176 IF (.NOT.dti%LDATA_DG .AND. .NOT.dti%LDATA_ROOT_DEPTH)
THEN
178 IF(i%CISBA==
'DIF')yroot=ydif
179 IF (
ASSOCIATED(dtco%XDATA_WEIGHT))
DEALLOCATE(dtco%XDATA_WEIGHT)
181 dti%XPAR_ROOT_DEPTH(:,:),i%XCOVER,xdata_root_depth(:,:),ynat,cdgavg,i%LCOVER,kdecade=1)
184 DO jvegtype=1,nvegtype
185 IF (any(dti%XPAR_VEGTYPE(:,jvegtype)/=0.) .AND. all(dti%XPAR_ROOT_DEPTH(:,jvegtype)==xundef))
THEN
187 DO jcover = 1,jpcover
188 IF (dtco%XDATA_VEGTYPE(jcover,jvegtype)>zfrac)
THEN
189 zdef(jvegtype) = xdata_root_depth(jcover,jvegtype)
190 zfrac = dtco%XDATA_VEGTYPE(jcover,jvegtype)
198 hprogram,kluout,
'ROOTDEPTH', dti%XPAR_ROOT_DEPTH(:,:),pdef=zdef)
199 dti%LDATA_ROOT_DEPTH = .true.
203 IF (.NOT.dti%LDATA_DG .AND. .NOT.dti%LDATA_ROOT_DEPTHGV)
THEN
205 IF(i%CISBA==
'DIF')yroot=ydif
206 IF (
ASSOCIATED(dtco%XDATA_WEIGHT))
DEALLOCATE(dtco%XDATA_WEIGHT)
208 dti%XPAR_ROOT_DEPTHGV(:,:),i%XCOVER,xdata_root_depthgv(:,:),ynat,cdgavg,i%LCOVER,kdecade=1)
211 DO jvegtype=1,nvegtype
212 IF (any(dti%XPAR_VEGTYPE(:,jvegtype)/=0.) .AND. all(dti%XPAR_ROOT_DEPTHGV(:,jvegtype)==xundef))
THEN
214 DO jcover = 1,jpcover
215 IF (dtco%XDATA_VEGTYPE(jcover,jvegtype)>zfrac)
THEN
216 zdef(jvegtype) = xdata_root_depthgv(jcover,jvegtype)
217 zfrac = dtco%XDATA_VEGTYPE(jcover,jvegtype)
225 hprogram,kluout,
'ROOTDEPTH', dti%XPAR_ROOT_DEPTHGV(:,:),pdef=zdef)
226 dti%LDATA_ROOT_DEPTHGV = .true.
230 IF (.NOT.dti%LDATA_DG .AND. i%CISBA/=
'2-L' .AND. .NOT.dti%LDATA_GROUND_DEPTH)
THEN
231 zdata_ground_depth(:,:)=xdata_ground_depth(:,:)
232 IF(i%CISBA==
'DIF'.AND.cdgdif==
'ROOT')
THEN
233 DO jvegtype=1,nvegtype
234 IF(jvegtype==nvt_no)
THEN
235 WHERE(xdata_ground_depth(:,jvegtype)/=xundef)
236 zdata_ground_depth(:,jvegtype) = min(1.0,xdata_ground_depth(:,jvegtype))
238 ELSEIF(jvegtype/=nvt_rock.AND.jvegtype/=nvt_snow)
THEN
239 zdata_ground_depth(:,jvegtype) = max(1.0,xdata_root_depth(:,jvegtype))
241 zdata_ground_depth(:,jvegtype) = xdata_root_depth(:,jvegtype)
245 IF (
ASSOCIATED(dtco%XDATA_WEIGHT))
DEALLOCATE(dtco%XDATA_WEIGHT)
247 dti%XPAR_GROUND_DEPTH(:,:),i%XCOVER,zdata_ground_depth(:,:),ynat,cdgavg,i%LCOVER,kdecade=1)
250 DO jvegtype=1,nvegtype
251 IF (any(dti%XPAR_VEGTYPE(:,jvegtype)/=0.) .AND. all(dti%XPAR_GROUND_DEPTH(:,jvegtype)==xundef))
THEN
253 DO jcover = 1,jpcover
254 IF (dtco%XDATA_VEGTYPE(jcover,jvegtype)>zfrac)
THEN
255 zdef(jvegtype) = xdata_ground_depth(jcover,jvegtype)
256 zfrac = dtco%XDATA_VEGTYPE(jcover,jvegtype)
264 hprogram,kluout,
'GROUNDDEPTH', dti%XPAR_GROUND_DEPTH(:,:),pdef=zdef)
265 dti%LDATA_GROUND_DEPTH = .true.
270 IF (.NOT.dti%LDATA_IRRIG)
THEN
274 IF (
ASSOCIATED(dtco%XDATA_WEIGHT))
DEALLOCATE(dtco%XDATA_WEIGHT)
276 zwork(:,jtime,:),i%XCOVER,xdata_irrig,yveg,
'ARI',i%LCOVER,kdecade=jtime)
279 hprogram,kluout,
'IRRIG ', zwork(:,jtime,:), pdef=zdef)
282 CALL
goto_ntime(dti%NTIME,zwork,dti%XPAR_IRRIG)
284 dti%LDATA_IRRIG=.true.
290 IF (.NOT.dti%LDATA_WATSUP)
THEN
294 IF (
ASSOCIATED(dtco%XDATA_WEIGHT))
DEALLOCATE(dtco%XDATA_WEIGHT)
296 zwork(:,jtime,:),i%XCOVER,xdata_watsup,yveg,
'ARI',i%LCOVER,kdecade=jtime)
299 hprogram,kluout,
'WATSUP ', zwork(:,jtime,:), pdef=zdef)
302 CALL
goto_ntime(dti%NTIME,zwork,dti%XPAR_WATSUP)
304 dti%LDATA_WATSUP=.true.
307 IF (lhook) CALL dr_hook(
'EXTRAPOL_FIELDS',1,zhook_handle)
313 INTEGER,
INTENT(IN) :: ktime
314 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: pwork
315 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: ppar_data
318 ppar_data(:,1,:) = sum(pwork(:,:,:),2)/36.
319 ELSEIF (ktime==2)
THEN
320 ppar_data(:,1,:) = (sum(pwork(:,1:8,:),2) + sum(pwork(:,27:36,:),2))/18.
321 ppar_data(:,2,:) = sum(pwork(:,9:26,:),2)/18.
322 ELSEIF (ktime==12)
THEN
324 ppar_data(:,jtime,:) = sum(pwork(:,(jtime-1)*3+1:jtime*3,:),2)/3.
326 ELSEIF (ktime==36)
THEN
327 ppar_data(:,:,:) = pwork(:,:,:)
subroutine ini_var_from_vegtype_data(DTCO, DTI, UG, U, HPROGRAM, ILUOUT, HNAME, PFIELD, PDEF)