6 HPROGRAM,KLUOUT,HNAME,KPTS,KLAYER,KLAYER2,PDEF)
49 USE modi_get_surf_mask_n
50 USE modi_interpol_field
70 INTEGER,
INTENT(IN) :: KPATCH
72 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
73 INTEGER,
INTENT(IN) :: KLUOUT
74 INTEGER,
INTENT(IN) :: KPTS
75 CHARACTER(LEN=*),
INTENT(IN) :: HNAME
77 INTEGER,
INTENT(IN),
OPTIONAL :: KLAYER
78 INTEGER,
INTENT(IN),
OPTIONAL :: KLAYER2
80 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(IN) :: PDEF
87 LOGICAL,
DIMENSION(U%NSIZE_NATURE,KPATCH) :: GVEG
88 REAL,
DIMENSION(U%NSIZE_NATURE) :: ZFIELD1_TOT, ZFIELD2_TOT
89 INTEGER,
DIMENSION(U%NSIZE_NATURE) :: IMASK
90 INTEGER,
DIMENSION(U%NSIZE_NATURE) :: NSIZE
91 INTEGER,
DIMENSION(U%NSIZE_NATURE) :: NSIZE_NAT
92 INTEGER,
DIMENSION(U%NSIZE_FULL) :: NSIZE_TOT
93 REAL,
DIMENSION(U%NSIZE_FULL) :: ZFIELD_TOT
94 REAL,
DIMENSION(U%NSIZE_NATURE) :: ZFIELD_NAT
95 REAL,
DIMENSION(U%NSIZE_NATURE,KPATCH) :: ZFIELD
96 INTEGER :: INI, IPATCH, IFULL, INPTS, JI
100 REAL(KIND=JPRB) :: ZHOOK_HANDLE
106 IF (
lhook)
CALL dr_hook(
'INI_VAR_FROM_PATCH',0,zhook_handle)
110 IF (trim(hname)==
'WR')
THEN 112 zfield(:,jp) = npe%AL(jp)%XWR(:)
114 ELSEIF (trim(hname)==
'ICE_STO')
THEN 116 zfield(:,jp) = npe%AL(jp)%XICE_STO(:)
118 ELSEIF (trim(hname)==
'TEMP GRO')
THEN 120 zfield(:,jp) = npe%AL(jp)%XTG(:,klayer)
122 ELSEIF (trim(hname)==
'ALBSNOW')
THEN 124 zfield(:,jp) = npe%AL(jp)%TSNOW%ALB(:)
126 ELSEIF (trim(hname)==
'EMISSNOW')
THEN 128 zfield(:,jp) = npe%AL(jp)%TSNOW%EMIS(:)
130 ELSEIF (trim(hname)==
'TSSNOW')
THEN 132 zfield(:,jp) = npe%AL(jp)%TSNOW%TS(:)
134 ELSEIF (trim(hname)==
'WSNOW')
THEN 136 zfield(:,jp) = npe%AL(jp)%TSNOW%WSNOW(:,klayer)
138 ELSEIF (trim(hname)==
'TEMPSNOW')
THEN 140 zfield(:,jp) = npe%AL(jp)%TSNOW%TEMP(:,klayer)
142 ELSEIF (trim(hname)==
'HEATSNOW')
THEN 144 zfield(:,jp) = npe%AL(jp)%TSNOW%HEAT(:,klayer)
146 ELSEIF (trim(hname)==
'AGESNOW')
THEN 148 zfield(:,jp) = npe%AL(jp)%TSNOW%AGE(:,klayer)
150 ELSEIF (trim(hname)==
'TSNOW')
THEN 152 zfield(:,jp) = npe%AL(jp)%TSNOW%T(:,klayer)
154 ELSEIF (trim(hname)==
'GR1SNOW')
THEN 156 zfield(:,jp) = npe%AL(jp)%TSNOW%GRAN1(:,klayer)
158 ELSEIF (trim(hname)==
'GR2SNOW')
THEN 160 zfield(:,jp) = npe%AL(jp)%TSNOW%GRAN2(:,klayer)
162 ELSEIF (trim(hname)==
'HISTSNOW')
THEN 164 zfield(:,jp) = npe%AL(jp)%TSNOW%HIST(:,klayer)
166 ELSEIF (trim(hname)==
'WG')
THEN 168 zfield(:,jp) = npe%AL(jp)%XWG(:,klayer)
170 ELSEIF (trim(hname)==
'WGI')
THEN 172 zfield(:,jp) = npe%AL(jp)%XWGI(:,klayer)
174 ELSEIF (trim(hname)==
'RESA')
THEN 176 zfield(:,jp) = npe%AL(jp)%XRESA(:)
178 ELSEIF (trim(hname)==
'RHOSNOW')
THEN 180 zfield(:,jp) = npe%AL(jp)%TSNOW%RHO(:,klayer)
182 ELSEIF (trim(hname)==
'AN')
THEN 184 zfield(:,jp) = npe%AL(jp)%XAN(:)
186 ELSEIF (trim(hname)==
'ANDAY')
THEN 188 zfield(:,jp) = npe%AL(jp)%XANDAY(:)
190 ELSEIF (trim(hname)==
'ANFM')
THEN 192 zfield(:,jp) = npe%AL(jp)%XANFM(:)
194 ELSEIF (trim(hname)==
'LE')
THEN 196 zfield(:,jp) = npe%AL(jp)%XLE(:)
198 ELSEIF (trim(hname)==
'RESPBIOM')
THEN 200 zfield(:,jp) = npe%AL(jp)%XRESP_BIOMASS(:,klayer)
202 ELSEIF (trim(hname)==
'BIOMASS')
THEN 204 zfield(:,jp) = npe%AL(jp)%XBIOMASS(:,klayer)
206 ELSEIF (trim(hname)==
'LIGNINST')
THEN 208 zfield(:,jp) = npe%AL(jp)%XLIGNIN_STRUC(:,klayer)
210 ELSEIF (trim(hname)==
'LITTER')
THEN 212 zfield(:,jp) = npe%AL(jp)%XLITTER(:,klayer,klayer2)
214 ELSEIF (trim(hname)==
'SOILCARB')
THEN 216 zfield(:,jp) = npe%AL(jp)%XSOILCARB(:,klayer)
227 WHERE (zfield(:,jp).NE.
xundef) nsize(:)=1
228 WHERE (np%AL(jp)%XPATCH(:)==0.) nsize(:)=-1
236 IF(
PRESENT(pdef))
THEN 238 hprogram,kluout,nsize_tot,zfield_tot,hname,pdef
240 CALL interpol_field(ug, u, hprogram,kluout,nsize_tot,zfield_tot,hname
261 IF (trim(hname)==
'WR')
THEN 267 WHERE(pk%XPATCH(:) /=0. .AND. pk%XPATCH_OLD(:) ==0..AND.pek%XLAI(:
280 zfield1_tot(imask0)=zfield1_tot(imask0)+ pk%XPATCH_OLD(ji) * zfield
291 IF(pk%XPATCH(ji) /=0. .AND. pk%XPATCH_OLD(ji)==0. .AND. gveg(ji,jp
THEN 292 zfield(ji,jp)=zfield1_tot(imask0)
295 zfield2_tot(imask0)=zfield2_tot(imask0)+ pk%XPATCH(ji)*zfield(ji,jp
303 IF (trim(hname)/=
'WG' .AND. trim(hname)/=
'WGI')
THEN 308 IF (zfield2_tot(imask0) > 1.e-12)
THEN 309 zfield(ji,jp)=(zfield1_tot(imask0)/zfield2_tot(imask0))*zfield
316 WHERE(np%AL(jp)%XPATCH(:) ==0.)zfield(:,jp)=
xundef 321 IF (trim(hname)==
'WR')
THEN 323 npe%AL(jp)%XWR(:) = zfield(:,jp)
325 ELSEIF (trim(hname)==
'ICE_STO')
THEN 327 npe%AL(jp)%XICE_STO(:) = zfield(:,jp)
329 ELSEIF (trim(hname)==
'TEMP GRO')
THEN 331 npe%AL(jp)%XTG(:,klayer) = zfield(:,jp)
333 ELSEIF (trim(hname)==
'ALBSNOW')
THEN 335 npe%AL(jp)%TSNOW%ALB(:) = zfield(:,jp)
337 ELSEIF (trim(hname)==
'EMISSNOW')
THEN 339 npe%AL(jp)%TSNOW%EMIS(:) = zfield(:,jp)
341 ELSEIF (trim(hname)==
'TSSNOW')
THEN 343 npe%AL(jp)%TSNOW%TS(:) = zfield(:,jp)
345 ELSEIF (trim(hname)==
'WSNOW')
THEN 347 npe%AL(jp)%TSNOW%WSNOW(:,klayer) = zfield(:,jp)
349 ELSEIF (trim(hname)==
'TEMPSNOW')
THEN 351 npe%AL(jp)%TSNOW%TEMP(:,klayer) = zfield(:,jp)
353 ELSEIF (trim(hname)==
'HEATSNOW')
THEN 355 npe%AL(jp)%TSNOW%HEAT(:,klayer) = zfield(:,jp)
357 ELSEIF (trim(hname)==
'AGESNOW')
THEN 359 npe%AL(jp)%TSNOW%AGE(:,klayer) = zfield(:,jp)
361 ELSEIF (trim(hname)==
'TSNOW')
THEN 363 npe%AL(jp)%TSNOW%T(:,klayer) = zfield(:,jp)
365 ELSEIF (trim(hname)==
'GR1SNOW')
THEN 367 npe%AL(jp)%TSNOW%GRAN1(:,klayer) = zfield(:,jp)
369 ELSEIF (trim(hname)==
'GR2SNOW')
THEN 371 npe%AL(jp)%TSNOW%GRAN2(:,klayer) = zfield(:,jp)
373 ELSEIF (trim(hname)==
'HISTSNOW')
THEN 375 npe%AL(jp)%TSNOW%HIST(:,klayer) = zfield(:,jp)
377 ELSEIF (trim(hname)==
'WG')
THEN 379 npe%AL(jp)%XWG(:,klayer) = zfield(:,jp)
381 ELSEIF (trim(hname)==
'WGI')
THEN 383 npe%AL(jp)%XWGI(:,klayer) = zfield(:,jp)
385 ELSEIF (trim(hname)==
'RESA')
THEN 387 npe%AL(jp)%XRESA(:) = zfield(:,jp)
389 ELSEIF (trim(hname)==
'RHOSNOW')
THEN 391 npe%AL(jp)%TSNOW%RHO(:,klayer) = zfield(:,jp)
393 ELSEIF (trim(hname)==
'AN')
THEN 395 npe%AL(jp)%XAN(:) = zfield(:,jp)
397 ELSEIF (trim(hname)==
'ANDAY')
THEN 399 npe%AL(jp)%XANDAY(:) = zfield(:,jp)
401 ELSEIF (trim(hname)==
'ANFM')
THEN 403 npe%AL(jp)%XANFM(:) = zfield(:,jp)
405 ELSEIF (trim(hname)==
'LE')
THEN 407 npe%AL(jp)%XLE(:) = zfield(:,jp)
409 ELSEIF (trim(hname)==
'RESPBIOM')
THEN 411 npe%AL(jp)%XRESP_BIOMASS(:,klayer) = zfield(:,jp)
413 ELSEIF (trim(hname)==
'BIOMASS')
THEN 415 npe%AL(jp)%XBIOMASS(:,klayer) = zfield(:,jp)
417 ELSEIF (trim(hname)==
'LIGNINST')
THEN 419 npe%AL(jp)%XLIGNIN_STRUC(:,klayer) = zfield(:,jp)
421 ELSEIF (trim(hname)==
'LITTER')
THEN 423 npe%AL(jp)%XLITTER(:,klayer,klayer2) = zfield(:,jp)
425 ELSEIF (trim(hname)==
'SOILCARB')
THEN 427 npe%AL(jp)%XSOILCARB(:,klayer) = zfield(:,jp)
432 IF (
lhook)
CALL dr_hook(
'INI_VAR_FROM_PATCH',1,zhook_handle)
subroutine get_surf_mask_n(DTCO, U, HTYPE, KDIM, KMASK, KLU, KLUOUT)
subroutine ini_var_from_patch(DTCO, UG, U, NP, NPE, KPATCH, HPROGRAM, KLUOUT, HNAME, KPTS, KLAYER, KLAYER2, PDE
subroutine interpol_field(UG, U, HPROGRAM, KLUOUT, KCODE, PFIELD, HFIELD, PDE