11 PFIELD,PCOVER,PDATA,HSFTYPE,HATYPE,OCOVER,PDZ,KDECADE)
17 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PFIELD
18 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PCOVER
19 REAL,
DIMENSION(:),
INTENT(IN) :: PDATA
20 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
22 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
23 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
24 REAL,
DIMENSION(:,:),
INTENT(IN),
OPTIONAL :: PDZ
25 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
30 PFIELD,PCOVER,PDATA,HSFTYPE,HATYPE,OCOVER,PDZ,KDECADE)
36 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: PFIELD
37 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PCOVER
38 REAL,
DIMENSION(:,:),
INTENT(IN) :: PDATA
39 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
41 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
42 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
43 REAL,
DIMENSION(:,:),
INTENT(IN),
OPTIONAL :: PDZ
44 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
49 PFIELD,PCOVER,PDATA,HSFTYPE,HATYPE,OCOVER,PDZ,KDECADE)
55 REAL,
DIMENSION(:),
INTENT(OUT) :: PFIELD
56 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOVER
57 REAL,
DIMENSION(:),
INTENT(IN) :: PDATA
58 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
60 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
61 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
62 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: PDZ
63 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
68 PFIELD,PCOVER,PDATA,HSFTYPE,HATYPE,OCOVER,PDZ,KDECADE)
74 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PFIELD
75 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOVER
76 REAL,
DIMENSION(:,:),
INTENT(IN) :: PDATA
77 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
79 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
80 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
81 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: PDZ
82 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
90 type(
date_time),
DIMENSION(:,:),
INTENT(OUT) :: tfield
91 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOVER
92 type(
date_time),
DIMENSION(:,:),
INTENT(IN) :: tdata
93 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
95 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
96 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
97 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
108 PFIELD,PCOVER,PDATA,HSFTYPE,HATYPE,OCOVER,PDZ,KDECADE)
168 USE modd_data_cover_par
, ONLY : nvt_tebd, nvt_bone, nvt_trbe, xcdref, nvt_trbd, &
169 nvt_tebe, nvt_tene, nvt_bobd, nvt_bond, nvt_shrb
187 REAL,
DIMENSION(:),
INTENT(OUT) :: PFIELD
188 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOVER
189 REAL,
DIMENSION(:),
INTENT(IN) :: PDATA
190 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
192 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
193 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
194 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: PDZ
195 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
200 INTEGER :: JJ, JI, ID0
205 INTEGER,
DIMENSION(SIZE(PCOVER,2)) :: IMASK
206 REAL,
DIMENSION(SIZE(PCOVER,1)) :: ZWORK, ZDZ, ZVAL
207 REAL,
DIMENSION(SIZE(PCOVER,2)) :: ZWEIGHT
208 REAL :: ZCOVER_WEIGHT
209 REAL,
DIMENSION(SIZE(PCOVER,1)) :: ZSUM_COVER_WEIGHT
210 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
216 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PGD_1D_1',0,zhook_handle)
217 IF (
SIZE(pfield)==0 .AND.
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PGD_1D_1',
218 IF (
SIZE(pfield)==0)
RETURN 225 icover=
SIZE(pcover,2)
227 IF (
PRESENT(pdz))
THEN 234 IF (hsftype==
'TRE' .OR. hsftype==
'GRT') pfield(:) = 0.
237 zsum_cover_weight(:)=0.
240 DO jj = 1,
SIZE(ocover)
247 CALL get_weight(dtco,icover,imask,hsftype,zweight)
257 CALL dr_hook(
'MODI_AV_PGD:AV_PGD_1D_1',1,zhook_handle)
259 IF (hatype==
'ARI' .OR. hatype==
'INV' .OR. hatype==
'CDN')
THEN 263 CALL dr_hook(
'MODI_AV_PGD:AV_PGD_1D_2',0,zhook_handle_omp)
267 IF (zweight(jcover)/=0.)
THEN 271 IF (hatype==
'ARI')
THEN 273 ELSEIF (hatype==
'INV')
THEN 274 zval(:) = 1./pdata(jj)
275 ELSEIF (hatype==
'CDN')
THEN 276 zval(:) = 1./(log(zdz(:)/pdata(jj)))**2
279 DO ji = 1,
SIZE(pcover,1)
280 IF (pcover(ji,jcover)/=0.)
THEN 281 zcover_weight = pcover(ji,jcover) * zweight(jcover)
282 zsum_cover_weight(ji) = zsum_cover_weight(ji) + zcover_weight
283 zwork(ji) = zwork(ji) + zval(ji) * zcover_weight
290 CALL dr_hook(
'MODI_AV_PGD:AV_PGD_1D_2',1,zhook_handle_omp)
292 ELSEIF (hatype==
'MAJ')
THEN 295 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PGD_1D_3',0,zhook_handle_omp)
297 DO ji = 1,
SIZE(pcover,1)
298 id0 = maxval(
maxloc(pcover(ji,:)*zweight(:)))
299 zwork(ji) = pdata(imask(id0))
300 zsum_cover_weight(ji) = zsum_cover_weight(ji) +
sum(pcover(ji,:)*zweight
303 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PGD_1D_3',1,zhook_handle_omp)
307 CALL abor1_sfx(
'AV_PGD_1D: (1) AVERAGING TYPE NOT ALLOWED : "'//hatype
'"' 310 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PGD_1D_4',0,zhook_handle)
328 WHERE ( zsum_cover_weight(:) >0. )
329 pfield(:) = zwork(:) / zsum_cover_weight(:)
339 WHERE ( zsum_cover_weight(:) >0. )
340 pfield(:) = zsum_cover_weight(:) / zwork(:)
351 WHERE ( zsum_cover_weight(:) >0. )
352 pfield(:) = zdz(:) * exp( - sqrt(zsum_cover_weight(:)/zwork(:)) )
362 WHERE ( zsum_cover_weight(:) >0. )
369 CALL abor1_sfx(
'AV_PGD_1D: (2) AVERAGING TYPE NOT ALLOWED')
372 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PGD_1D_4',1,zhook_handle)
381 PFIELD,PCOVER,PDATA,HSFTYPE,HATYPE,OCOVER,PDZ,KDECADE)
439 USE modd_data_cover_par
, ONLY : nvt_tebd, nvt_bone, nvt_trbe, nvegtype, xcdref, nvt_trbd, &
440 nvt_tebe, nvt_tene, nvt_bobd, nvt_bond, nvt_shrb
442 USE modi_vegtype_to_patch
459 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PFIELD
460 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOVER
461 REAL,
DIMENSION(:,:),
INTENT(IN) :: PDATA
462 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
464 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
465 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
466 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: PDZ
467 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
480 INTEGER :: JJ, JI, JK
482 REAL :: ZCOVER_WEIGHT
484 INTEGER,
DIMENSION(SIZE(PCOVER,2)) :: IMASK0
485 REAL,
DIMENSION(SIZE(PCOVER,1)) :: ZVAL
487 REAL,
DIMENSION(SIZE(PCOVER,2),NVEGTYPE) :: ZWEIGHT
489 REAL,
DIMENSION(SIZE(PCOVER,1),SIZE(PFIELD,2)) :: ZSUM_COVER_WEIGHT_PATCH
491 REAL,
DIMENSION(SIZE(PCOVER,1),SIZE(PFIELD,2)) :: ZWORK
492 REAL,
DIMENSION(SIZE(PCOVER,1),SIZE(PFIELD,2)) :: ZDZ
494 INTEGER,
DIMENSION(SIZE(PCOVER,1),SIZE(PFIELD,2)) :: IMASK
495 INTEGER,
DIMENSION(SIZE(PFIELD,2)) :: JCOUNT
496 INTEGER :: PATCH_LIST(nvegtype)
497 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
504 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PATCH_PGD_1D_1',0,zhook_handle)
505 IF (
SIZE(pfield)==0 .AND.
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PATCH_PGD_1D_1' 506 IF (
SIZE(pfield)==0)
RETURN 513 icover=
SIZE(pcover,2)
514 ipatch=
SIZE(pfield,2)
516 IF (
PRESENT(pdz))
THEN 528 zsum_cover_weight_patch(:,:) = 0.
530 DO jvegtype=1,nvegtype
535 DO jj = 1,
SIZE(ocover)
542 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PATCH_PGD_1D_1',1,zhook_handle)
543 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PATCH_PGD_1D_2',0,zhook_handle)
554 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PATCH_PGD_1D_2',1,zhook_handle)
557 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PATCH_PGD_1D_3',0,zhook_handle_omp
564 DO jvegtype=1,nvegtype
566 jpatch= patch_list(jvegtype)
568 IF (zweight(jcover,jvegtype)/=0.)
THEN 570 IF (hatype==
'ARI')
THEN 571 zval(:) = pdata(jj,jvegtype)
572 ELSEIF (hatype==
'INV')
THEN 573 zval(:) = 1. / pdata(jj,jvegtype)
574 ELSEIF (hatype==
'CDN')
THEN 575 DO ji=1,
SIZE(pcover,1)
576 zval(ji) = 1./(log(zdz(ji,jpatch)/pdata(jj,jvegtype)))**2
579 CALL abor1_sfx(
'AV_PATCH_PGD_1D: (1) AVERAGING TYPE NOT ALLOWED' 582 DO ji=1,
SIZE(pcover,1)
583 IF (pcover(ji,jcover)/=0.)
THEN 584 zcover_weight = pcover(ji,jcover) * zweight(jcover,jvegtype)
596 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PATCH_PGD_1D_3',1,zhook_handle_omp
599 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PATCH_PGD_1D_4',0,zhook_handle)
608 DO ji=1,
SIZE(pcover,1)
609 IF ( zsum_cover_weight_patch(ji,jpatch) >0.)
THEN 610 jcount(jpatch)=jcount(jpatch)+1
611 imask(jcount(jpatch),jpatch)=ji
633 DO jj=1,jcount(jpatch)
634 ji = imask(jj,jpatch)
635 pfield(ji,jpatch) = zwork(ji,jpatch) / zsum_cover_weight_patch
648 DO jj=1,jcount(jpatch)
649 ji = imask(jj,jpatch)
650 pfield(ji,jpatch) = zsum_cover_weight_patch(ji,jpatch) / zwork(ji
663 DO jj=1,jcount(jpatch)
664 ji = imask(jj,jpatch)
665 pfield(ji,jpatch) = zdz(ji,jpatch) * exp( - sqrt(zsum_cover_weight_patch
672 CALL abor1_sfx(
'AV_PATCH_PGD_1D: (2) AVERAGING TYPE NOT ALLOWED')
676 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PATCH_PGD_1D_4',1,zhook_handle)
685 PFIELD,PCOVER,PDATA,HSFTYPE,HATYPE,OCOVER,PDZ,KDECADE)
742 USE modd_data_cover_par
, ONLY : nvt_tebd, nvt_bone, nvt_trbe, xcdref, nvt_trbd, &
743 nvt_tebe, nvt_tene, nvt_bobd, nvt_bond, nvt_shrb
759 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PFIELD
760 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PCOVER
761 REAL,
DIMENSION(:),
INTENT(IN) :: PDATA
762 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
764 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
765 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
766 REAL,
DIMENSION(:,:),
INTENT(IN),
OPTIONAL :: PDZ
767 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
776 REAL,
DIMENSION(SIZE(PCOVER,1),SIZE(PCOVER,2)) :: ZWORK, ZDZ
778 REAL,
DIMENSION(SIZE(PCOVER,1),SIZE(PCOVER,2)) :: ZCOVER_WEIGHT
780 REAL,
DIMENSION(SIZE(PCOVER,1),SIZE(PCOVER,2)) :: ZSUM_COVER_WEIGHT
781 REAL(KIND=JPRB) :: ZHOOK_HANDLE
787 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PGD_2D',0,zhook_handle)
788 IF (
SIZE(pfield)==0 .AND.
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PGD_2D',1,zhook_handle
789 IF (
SIZE(pfield)==0)
RETURN 798 IF (
PRESENT(pdz))
THEN 807 zsum_cover_weight(:,:)=0.
812 IF (.NOT.ocover(jj)) cycle
821 SELECT CASE (hsftype)
826 zweight=dtco%XDATA_NATURE(jj)
829 zweight=dtco%XDATA_TOWN (jj) * dtco%XDATA_GARDEN(jj)
832 zweight=dtco%XDATA_TOWN (jj)
835 zweight=dtco%XDATA_WATER (jj)
838 zweight=dtco%XDATA_SEA (jj)
841 zweight=dtco%XDATA_TOWN (jj) * dtco%XDATA_BLD(jj)
844 zweight=dtco%XDATA_TOWN (jj) * ( 1. - dtco%XDATA_BLD(jj) )
848 zweight=dtco%XDATA_NATURE(jj) * ( dtco%XDATA_VEGTYPE(jj,nvt_tebd
860 zweight=dtco%XDATA_TOWN (jj) * dtco%XDATA_GARDEN(jj) &
861 * ( dtco%XDATA_VEGTYPE(jj,nvt_tebd) &
862 + dtco%XDATA_VEGTYPE(jj,nvt_trbe) &
863 + dtco%XDATA_VEGTYPE(jj,nvt_trbd) &
864 + dtco%XDATA_VEGTYPE(jj,nvt_tebe) &
865 + dtco%XDATA_VEGTYPE(jj,nvt_tene) &
866 + dtco%XDATA_VEGTYPE(jj,nvt_bobd) &
867 + dtco%XDATA_VEGTYPE(jj,nvt_bond) &
868 + dtco%XDATA_VEGTYPE(jj,nvt_shrb) &
872 CALL abor1_sfx(
'AV_PGD: WEIGHTING FUNCTION NOT ALLOWED')
883 zcover_weight(:,:) = pcover(:,:,jcover) * zweight
885 zsum_cover_weight(:,:) = zsum_cover_weight(:,:) + zcover_weight(:,:)
901 zwork(:,:) = zwork(:,:) + zdata * zcover_weight(:,:)
910 zwork(:,:)= zwork(:,:) + 1./zdata * zcover_weight(:,:)
920 zwork(:,:)= zwork(:,:) + 1./(log(zdz(:,:)/zdata))**2 * zcover_weight
925 CALL abor1_sfx(
'AV_PGD: (1) AVERAGING TYPE NOT ALLOWED')
948 WHERE ( zsum_cover_weight(:,:) >0. )
949 pfield(:,:) = zwork(:,:) / zsum_cover_weight(:,:)
959 WHERE ( zsum_cover_weight(:,:) >0. )
960 pfield(:,:) = zsum_cover_weight(:,:) / zwork(:,:)
971 WHERE ( zsum_cover_weight(:,:) >0. )
972 pfield(:,:) = zdz(:,:) * exp( - sqrt(zsum_cover_weight(:,:)/zwork(
978 CALL abor1_sfx(
'AV_PGD_2D: (2) AVERAGING TYPE NOT ALLOWED')
981 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PGD_2D',1,zhook_handle)
992 PFIELD,PCOVER,PDATA,HSFTYPE,HATYPE,OCOVER,PDZ,KDECADE)
1049 USE modd_data_cover_par
, ONLY : nvt_tebd, nvt_bone, nvt_trbe, nvegtype, xcdref, nvt_trbd, &
1050 nvt_tebe, nvt_tene, nvt_bobd, nvt_bond, nvt_shrb
1052 USE modi_vegtype_to_patch
1069 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: PFIELD
1070 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PCOVER
1071 REAL,
DIMENSION(:,:),
INTENT(IN) :: PDATA
1072 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
1074 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
1075 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
1076 REAL,
DIMENSION(:,:),
INTENT(IN),
OPTIONAL :: PDZ
1077 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
1092 REAL,
DIMENSION(NVEGTYPE) :: ZWEIGHT
1093 REAL,
DIMENSION(SIZE(PCOVER,1),SIZE(PCOVER,2),NVEGTYPE) :: ZCOVER_WEIGHT
1095 REAL,
DIMENSION(SIZE(PCOVER,1),SIZE(PCOVER,2),SIZE(PFIELD,3)):: ZCOVER_WEIGHT_PATCH
1096 REAL,
DIMENSION(SIZE(PCOVER,1),SIZE(PCOVER,2),SIZE(PFIELD,3)):: ZSUM_COVER_WEIGHT_PATCH
1097 REAL,
DIMENSION(NVEGTYPE) :: ZDATA
1099 REAL,
DIMENSION(SIZE(PCOVER,1),SIZE(PCOVER,2),SIZE(PFIELD,3)):: ZWORK
1100 REAL,
DIMENSION(SIZE(PCOVER,1),SIZE(PCOVER,2),SIZE(PFIELD,3)):: ZDZ
1101 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1107 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PATCH_PGD',0,zhook_handle)
1108 IF (
SIZE(pfield)==0 .AND.
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PATCH_PGD' 1109 IF (
SIZE(pfield)==0)
RETURN 1117 ipatch=
SIZE(pfield,3)
1121 IF (
PRESENT(pdz))
THEN 1123 zdz(:,:,jpatch)=pdz(:,:)
1132 zsum_cover_weight_patch(:,:,:)=0.
1138 IF (.NOT.ocover(jj)) cycle
1147 SELECT CASE (hsftype)
1150 DO jvegtype=1,nvegtype
1151 zweight(jvegtype)=dtco%XDATA_NATURE(jj)*dtco%XDATA_VEGTYPE(jj,jvegtype
1155 DO jvegtype=1,nvegtype
1156 zweight(jvegtype)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj)*dtco%XDATA_VEGTYPE
1160 DO jvegtype=1,nvegtype
1161 zweight(jvegtype)=dtco%XDATA_NATURE(jj)*dtco%XDATA_VEGTYPE(jj,jvegtype
1166 DO jvegtype=1,nvegtype
1167 zweight(jvegtype)=dtco%XDATA_NATURE(jj)*dtco%XDATA_VEGTYPE(jj,jvegtype
1172 DO jvegtype=1,nvegtype
1173 zweight(jvegtype)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj)*dtco%XDATA_VEGTYPE
1178 DO jvegtype=1,nvegtype
1179 zweight(jvegtype)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj)*dtco%XDATA_VEGTYPE
1185 DO jvegtype=1,nvegtype
1187 zweight(jvegtype)=dtco%XDATA_NATURE(jj)*dtco%XDATA_VEGTYPE(jj
1192 DO jvegtype=1,nvegtype
1194 zweight(jvegtype)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj)*dtco%XDATA_VEGTYPE
1198 DO jvegtype=1,nvegtype
1199 zweight(jvegtype)=dtco%XDATA_NATURE(jj)*dtco%XDATA_VEGTYPE(jj,jvegtype
1204 DO jvegtype=1,nvegtype
1205 zweight(jvegtype)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj)*dtco%XDATA_VEGTYPE
1211 IF (dtco%XDATA_VEGTYPE(jj,nvt_tebd)>0.)
THEN 1212 zweight(nvt_tebd)=dtco%XDATA_NATURE(jj) * dtco%XDATA_VEGTYPE(jj
1214 IF (dtco%XDATA_VEGTYPE(jj,nvt_bone)>0.)
THEN 1215 zweight(nvt_bone)=dtco%XDATA_NATURE(jj) * dtco%XDATA_VEGTYPE(jj
1217 IF (dtco%XDATA_VEGTYPE(jj,nvt_trbe)>0.)
THEN 1218 zweight(nvt_trbe)=dtco%XDATA_NATURE(jj) * dtco%XDATA_VEGTYPE(jj
1220 IF (dtco%XDATA_VEGTYPE(jj,nvt_trbd)>0.)
THEN 1221 zweight(nvt_trbd)=dtco%XDATA_NATURE(jj) * dtco%XDATA_VEGTYPE(jj
1223 IF (dtco%XDATA_VEGTYPE(jj,nvt_tebe)>0.)
THEN 1224 zweight(nvt_tebe)=dtco%XDATA_NATURE(jj) * dtco%XDATA_VEGTYPE(jj
1226 IF (dtco%XDATA_VEGTYPE(jj,nvt_tene)>0.)
THEN 1227 zweight(nvt_tene)=dtco%XDATA_NATURE(jj) * dtco%XDATA_VEGTYPE(jj
1229 IF (dtco%XDATA_VEGTYPE(jj,nvt_bobd)>0.)
THEN 1230 zweight(nvt_bobd)=dtco%XDATA_NATURE(jj) * dtco%XDATA_VEGTYPE(jj
1232 IF (dtco%XDATA_VEGTYPE(jj,nvt_bond)>0.)
THEN 1233 zweight(nvt_bond)=dtco%XDATA_NATURE(jj) * dtco%XDATA_VEGTYPE(jj
1235 IF (dtco%XDATA_VEGTYPE(jj,nvt_shrb)>0.)
THEN 1236 zweight(nvt_shrb)=dtco%XDATA_NATURE(jj) * dtco%XDATA_VEGTYPE(jj
1241 IF (dtco%XDATA_VEGTYPE(jj,nvt_tebd)>0.)
THEN 1242 zweight(nvt_tebd)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj) * dtco%XDATA_VEGTYPE
1244 IF (dtco%XDATA_VEGTYPE(jj,nvt_bone)>0.)
THEN 1245 zweight(nvt_bone)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj) * dtco%XDATA_VEGTYPE
1247 IF (dtco%XDATA_VEGTYPE(jj,nvt_trbe)>0.)
THEN 1248 zweight(nvt_trbe)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj) * dtco%XDATA_VEGTYPE
1250 IF (dtco%XDATA_VEGTYPE(jj,nvt_trbd)>0.)
THEN 1251 zweight(nvt_trbd)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj) * dtco%XDATA_VEGTYPE
1253 IF (dtco%XDATA_VEGTYPE(jj,nvt_tebe)>0.)
THEN 1254 zweight(nvt_tebe)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj) * dtco%XDATA_VEGTYPE
1256 IF (dtco%XDATA_VEGTYPE(jj,nvt_tene)>0.)
THEN 1257 zweight(nvt_tene)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj) * dtco%XDATA_VEGTYPE
1259 IF (dtco%XDATA_VEGTYPE(jj,nvt_bobd)>0.)
THEN 1260 zweight(nvt_bobd)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj) * dtco%XDATA_VEGTYPE
1262 IF (dtco%XDATA_VEGTYPE(jj,nvt_bond)>0.)
THEN 1263 zweight(nvt_bond)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj) * dtco%XDATA_VEGTYPE
1265 IF (dtco%XDATA_VEGTYPE(jj,nvt_shrb)>0.)
THEN 1266 zweight(nvt_shrb)=dtco%XDATA_TOWN(jj)*dtco%XDATA_GARDEN(jj) * dtco%XDATA_VEGTYPE
1270 CALL abor1_sfx(
'AV_PATCH_PGD: WEIGHTING FUNCTION FOR VEGTYPE NOT ALLOWED' 1281 zcover_weight(:,:,:)=0.
1282 zcover_weight_patch(:,:,:)=0.
1284 DO jvegtype=1,nvegtype
1285 zcover_weight(:,:,jvegtype) = zcover_weight(:,:,jvegtype) +&
1286 pcover(:,:,jcover) * zweight(jvegtype
1295 zsum_cover_weight_patch(:,:,:) = zsum_cover_weight_patch(:,:,:) + zcover_weight_patch
1304 SELECT CASE (hatype)
1313 DO jvegtype=1,nvegtype
1315 zwork(:,:,jpatch) = zwork(:,:,jpatch) + zdata(jvegtype) * zcover_weight
1325 DO jvegtype=1,nvegtype
1327 zwork(:,:,jpatch)= zwork(:,:,jpatch) + 1./ zdata(jvegtype)* zcover_weight
1338 DO jvegtype=1,nvegtype
1340 zwork(:,:,jpatch)= zwork(:,:,jpatch) + 1./(log(zdz(:,:,jpatch)/ zdata
1347 CALL abor1_sfx(
'AV_PATCH_PGD: (1) AVERAGING TYPE NOT ALLOWED')
1360 SELECT CASE (hatype)
1369 WHERE ( zsum_cover_weight_patch(:,:,:) >0. )
1370 pfield(:,:,:) = zwork(:,:,:) / zsum_cover_weight_patch(:,:,:)
1380 WHERE ( zsum_cover_weight_patch(:,:,:) >0. )
1381 pfield(:,:,:) = zsum_cover_weight_patch(:,:,:) / zwork(:,:,:)
1391 WHERE ( zsum_cover_weight_patch(:,:,:) >0. )
1392 pfield(:,:,:) = zdz(:,:,:) * exp( - sqrt(zsum_cover_weight_patch(:
1398 CALL abor1_sfx(
'AV_PATCH_PGD: (2) AVERAGING TYPE NOT ALLOWED')
1401 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:AV_PATCH_PGD',1,zhook_handle)
1445 USE modd_data_cover_par
, ONLY : nvegtype
1447 USE modi_vegtype_to_patch
1459 type(
date_time),
DIMENSION(:,:),
INTENT(OUT) :: tfield
1460 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOVER
1461 type(
date_time),
DIMENSION(:,:),
INTENT(IN) :: tdata
1462 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
1464 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
1465 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
1466 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
1477 INTEGER,
DIMENSION(SIZE(PCOVER,2),NVEGTYPE) :: IDATA_DOY
1478 INTEGER,
DIMENSION(SIZE(PCOVER,1)) :: IDOY
1479 REAL,
DIMENSION(365) :: ZCOUNT
1480 INTEGER :: JP, IMONTH, IDAY
1481 INTEGER :: IPATCH, JPATCH
1482 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1488 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:MAJOR_PATCH_PGD_1D',0,zhook_handle)
1489 IF (
SIZE(tfield)==0 .AND.
lhook)
CALL dr_hook(
'MODI_AV_PGD:MAJOR_PATCH_PGD_1D' 1490 IF (
SIZE(tfield)==0)
RETURN 1497 ipatch=
SIZE(tfield,2)
1499 tfield(:,:)%TDATE%YEAR =
nundef 1500 tfield(:,:)%TDATE%MONTH =
nundef 1501 tfield(:,:)%TDATE%DAY =
nundef 1502 tfield(:,:)%TIME =
xundef 1506 CALL date2doy(tdata,ocover,idata_doy)
1508 DO jp = 1,
SIZE(pcover,1)
1514 DO jvegtype=1,nvegtype
1518 DO jcover = 1,
SIZE(pcover,2)
1520 IF (idata_doy(jcover,jvegtype) /=
nundef .AND. pcover(jp,jcover
THEN 1522 zcount(idata_doy(jcover,jvegtype)) = zcount(idata_doy(jcover
1533 IF (any(zcount(:)/=0.)) idoy(jp) =
maxloc(zcount,1)
1535 CALL doy2date(idoy(jp),imonth,iday)
1537 tfield(jp,jpatch)%TDATE%MONTH = imonth
1538 tfield(jp,jpatch)%TDATE%DAY = iday
1539 IF (imonth/=
nundef) tfield(jp,jpatch)%TIME = 0.
1547 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD:MAJOR_PATCH_PGD_1D',1,zhook_handle)
subroutine get_weight_patch(DTCO, KCOVER, KMASK, KDECADE, HSFTYPE, PWEIGHT)
subroutine av_pgd_2d(DTCO, PFIELD, PCOVER, PDATA, HSFTYPE, HATYPE, OCOVER, PD
subroutine major_patch_pgd_1d(TFIELD, PCOVER, TDATA, HSFTYPE, HATYPE, O
integer function vegtype_to_patch(IVEGTYPE, INPATCH)
subroutine abor1_sfx(YTEXT)
subroutine av_patch_pgd(DTCO, PFIELD, PCOVER, PDATA, HSFTYPE, HATYPE, OCOVER
integer, parameter nundef
subroutine get_weight(DTCO, KCOVER, KMASK, HSFTYPE, PWEIGHT)
real, dimension(:,:,:), allocatable xdata_veg
intent(out) overrides sub arrays one Sort by the least significant key first sum(iindex(1:n))
subroutine date2doy(TPDATA, OCOVER, KDOY)
real, dimension(:,:,:), allocatable xdata_lai
real, dimension(:), allocatable xdata_bld_height
subroutine av_pgd_1d(DTCO, PFIELD, PCOVER, PDATA, HSFTYPE, HATYPE, OCOVER, PD
subroutine av_patch_pgd_1d(DTCO, PFIELD, PCOVER, PDATA, HSFTYPE, HATYPE, OCO
subroutine doy2date(KDOY, KMONTH, KDAY)