11 PFIELD,PCOVER,PDATA,HSFTYPE,HATYPE,OCOVER,KMASK,KPATCH,KNPATCH,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 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK
25 INTEGER,
INTENT(IN) :: KNPATCH
26 INTEGER,
INTENT(IN) :: KPATCH
27 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: PDZ
28 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
33 PFIELD,PCOVER,PDATA,HSFTYPE,HATYPE,OCOVER,KMASK,KNPATCH,KPATCH,PDZ,KDECADE)
45 REAL,
DIMENSION(:),
INTENT(OUT) :: PFIELD
46 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOVER
47 REAL,
DIMENSION(:,:),
INTENT(IN) :: PDATA
48 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
50 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
51 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
52 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK
53 INTEGER,
INTENT(IN) :: KNPATCH
54 INTEGER,
INTENT(IN) :: KPATCH
55 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: PDZ
56 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
62 OCOVER,KMASK,KNPATCH,KPATCH,KDECADE)
75 type(
date_time),
DIMENSION(:),
INTENT(OUT) :: tfield
76 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOVER
77 type(
date_time),
DIMENSION(:,:),
INTENT(IN) :: tdata
78 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
80 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
81 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
82 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK
83 INTEGER,
INTENT(IN) :: KNPATCH
84 INTEGER,
INTENT(IN) :: KPATCH
85 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
93 SUBROUTINE av_pgd_1d_1p (DTCO, PFIELD,PCOVER,PDATA,HSFTYPE,HATYPE,OCOVER,&
94 KMASK, KPATCH, KNPATCH, PDZ, KDECADE)
147 USE modd_data_cover_par
, ONLY : xcdref
168 REAL,
DIMENSION(:),
INTENT(OUT) :: PFIELD
169 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOVER
170 REAL,
DIMENSION(:),
INTENT(IN) :: PDATA
171 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
173 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
174 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
175 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK
176 INTEGER,
INTENT(IN) :: KNPATCH
177 INTEGER,
INTENT(IN) :: KPATCH
178 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: PDZ
179 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
184 INTEGER :: JJ, JI, ID0, IMASK0
188 INTEGER,
DIMENSION(SIZE(PCOVER,2)) :: IMASK
189 REAL,
DIMENSION(SIZE(PFIELD)) :: ZWORK, ZDZ, ZVAL
190 REAL,
DIMENSION(SIZE(PCOVER,2)) :: ZWEIGHT
191 REAL :: ZCOVER_WEIGHT
192 REAL,
DIMENSION(SIZE(PFIELD)) :: ZSUM_COVER_WEIGHT
193 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
199 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD_1P:AV_PGD_1D_1P',0,zhook_handle)
200 IF (
SIZE(pfield)==0 .AND.
lhook)
CALL dr_hook(
'MODI_AV_PGD_1P:AV_PGD_1D_1P' 201 IF (
SIZE(pfield)==0)
RETURN 208 icover=
SIZE(pcover,2)
210 IF (
PRESENT(pdz))
THEN 217 IF (hsftype==
'TRE' .OR. hsftype==
'GRT') pfield(:) = 0.
220 zsum_cover_weight(:)=0.
223 DO jj = 1,
SIZE(ocover)
230 CALL get_weight(dtco,icover,imask,hsftype,zweight)
240 IF (hatype==
'ARI' .OR. hatype==
'INV' .OR. hatype==
'CDN')
THEN 243 IF (zweight(jcover)/=0.)
THEN 247 IF (hatype==
'ARI')
THEN 249 ELSEIF (hatype==
'INV')
THEN 250 zval(:) = 1./pdata(jj)
251 ELSEIF (hatype==
'CDN')
THEN 252 zval(:) = 1./(log(zdz(:)/pdata(jj)))**2
255 DO ji = 1,
SIZE(kmask)
259 IF (pcover(imask0,jcover)/=0.)
THEN 260 zcover_weight = pcover(imask0,jcover) * zweight(jcover)
261 zsum_cover_weight(ji) = zsum_cover_weight(ji) + zcover_weight
262 zwork(ji) = zwork(ji) + zval(ji) * zcover_weight
269 ELSEIF (hatype==
'MAJ')
THEN 271 DO ji = 1,
SIZE(kmask)
275 id0 = maxval(
maxloc(pcover(imask0,:)*zweight(:)))
276 zwork(ji) = pdata(imask(id0))
277 zsum_cover_weight(ji) = zsum_cover_weight(ji) +
sum(pcover(imask0,:)
282 CALL abor1_sfx(
'AV_PGD_1D_1P: (1) AVERAGING TYPE NOT ALLOWED : "'//hatype
'"' 285 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD_1P:AV_PGD_1D_1P',0,zhook_handle)
303 WHERE ( zsum_cover_weight(:) >0. )
304 pfield(:) = zwork(:) / zsum_cover_weight(:)
314 WHERE ( zsum_cover_weight(:) >0. )
315 pfield(:) = zsum_cover_weight(:) / zwork(:)
326 WHERE ( zsum_cover_weight(:) >0. )
327 pfield(:) = zdz(:) * exp( - sqrt(zsum_cover_weight(:)/zwork(:)) )
337 WHERE ( zsum_cover_weight(:) >0. )
344 CALL abor1_sfx(
'AV_PGD_1D_1P: (2) AVERAGING TYPE NOT ALLOWED')
347 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD_1P:AV_PGD_1D_1P_4',1,zhook_handle)
355 SUBROUTINE av_patch_pgd_1d_1p (DTCO, PFIELD,PCOVER,PDATA,HSFTYPE,HATYPE,OCOVER,KMASK,&
356 KNPATCH,KPATCH,PDZ,KDECADE)
412 USE modd_data_cover_par
, ONLY : nvegtype, xcdref
417 USE modi_vegtype_to_patch
432 REAL,
DIMENSION(:),
INTENT(OUT) :: PFIELD
433 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOVER
434 REAL,
DIMENSION(:,:),
INTENT(IN) :: PDATA
435 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
437 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
438 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
439 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK
440 INTEGER,
INTENT(IN) :: KNPATCH
441 INTEGER,
INTENT(IN) :: KPATCH
442 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: PDZ
443 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
454 INTEGER :: JJ, JI, JK
456 REAL :: ZCOVER_WEIGHT
458 REAL,
DIMENSION(SIZE(PFIELD)) :: ZVAL
460 REAL,
DIMENSION(SIZE(PCOVER,2),NVEGTYPE) :: ZWEIGHT
462 REAL,
DIMENSION(SIZE(PFIELD)) :: ZSUM_COVER_WEIGHT_PATCH
464 REAL,
DIMENSION(SIZE(PFIELD)) :: ZWORK
465 REAL,
DIMENSION(SIZE(PFIELD)) :: ZDZ
468 INTEGER,
DIMENSION(SIZE(PCOVER,2)) :: IMASK0
469 INTEGER :: PATCH_LIST(nvegtype)
470 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
477 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD_1P:AV_PATCH_PGD_1D_1P',0,zhook_handle
478 IF (
SIZE(pfield)==0 .AND.
lhook)
CALL dr_hook(
'MODI_AV_PGD_1P:AV_PATCH_PGD_1D_1P' 479 IF (
SIZE(pfield)==0)
RETURN 486 icover=
SIZE(pcover,2)
488 IF (
PRESENT(pdz))
THEN 498 zsum_cover_weight_patch(:) = 0.
505 DO jj = 1,
SIZE(ocover)
529 IF (jp/=kpatch) cycle
531 IF (zweight(jcover,jveg)/=0.)
THEN 533 IF (hatype==
'ARI')
THEN 534 zval(:) = pdata(jj,jveg)
535 ELSEIF (hatype==
'INV')
THEN 536 zval(:) = 1. / pdata(jj,jveg)
537 ELSEIF (hatype==
'CDN')
THEN 539 zval(ji) = 1./(log(zdz(ji)/pdata(jj,jveg)))**2
542 CALL abor1_sfx(
'AV_1PATCH_PGD_1D: (1) AVERAGING TYPE NOT ALLOWED' 549 IF (pcover(imask,jcover)/=0.)
THEN 550 zcover_weight = pcover(imask,jcover) * zweight(jcover,jveg)
578 IF (zsum_cover_weight_patch(ji)>0.) pfield(ji) = zwork(ji) / zsum_cover_weight_patch
589 IF (zsum_cover_weight_patch(ji)>0.) pfield(ji) = zsum_cover_weight_patch
600 IF (zsum_cover_weight_patch(ji)>0.) pfield(ji) = zdz(ji) * exp( - sqrt
606 CALL abor1_sfx(
'AV_1PATCH_PGD_1D_1P: (2) AVERAGING TYPE NOT ALLOWED' 610 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD_1P:AV_1PATCH_PGD_1D_1P',1,zhook_handle
618 OCOVER,KMASK,KNPATCH,KPATCH,KDECADE)
655 USE modd_data_cover_par
, ONLY : nvegtype
657 USE modi_vegtype_to_patch
668 type(
date_time),
DIMENSION(:),
INTENT(OUT) :: tfield
669 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOVER
670 type(
date_time),
DIMENSION(:,:),
INTENT(IN) :: tdata
671 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
673 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
674 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
675 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK
676 INTEGER,
INTENT(IN) :: KNPATCH
677 INTEGER,
INTENT(IN) :: KPATCH
678 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
689 INTEGER,
DIMENSION(SIZE(PCOVER,2),NVEGTYPE) :: IDATA_DOY
690 INTEGER,
DIMENSION(SIZE(PCOVER,1)) :: IDOY
691 REAL,
DIMENSION(365) :: ZCOUNT
692 INTEGER :: JP, IMONTH, IDAY
693 REAL(KIND=JPRB) :: ZHOOK_HANDLE
699 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD_1P:MAJOR_PATCH_PGD_1D_1P',0,zhook_handle
700 IF (
SIZE(tfield)==0 .AND.
lhook)
CALL dr_hook(
'MODI_AV_PGD_1P:MAJOR_PATCH_PGD_1D_1P' 701 IF (
SIZE(tfield)==0)
RETURN 708 tfield(:)%TDATE%YEAR =
nundef 709 tfield(:)%TDATE%MONTH =
nundef 710 tfield(:)%TDATE%DAY =
nundef 715 CALL date2doy(tdata,ocover,idata_doy)
717 DO jp = 1,
SIZE(tfield)
727 DO jcover = 1,
SIZE(pcover,2)
729 IF (idata_doy(jcover,jveg) /=
nundef .AND. pcover(imask,jcover)/
THEN 731 zcount(idata_doy(jcover,jveg)) = zcount(idata_doy(jcover,jveg)
742 IF (any(zcount(:)/=0.)) idoy(jp) =
maxloc(zcount,1)
746 tfield(jp)%TDATE%MONTH = imonth
747 tfield(jp)%TDATE%DAY = iday
748 IF (imonth/=
nundef) tfield(jp)%TIME = 0.
754 IF (
lhook)
CALL dr_hook(
'MODI_AV_PGD_1P:MAJOR_PATCH_PGD_1D_1P',1,zhook_handle
subroutine get_weight_patch(DTCO, KCOVER, KMASK, KDECADE, HSFTYPE, PWEIGHT)
integer function vegtype_to_patch(IVEGTYPE, INPATCH)
subroutine abor1_sfx(YTEXT)
subroutine av_patch_pgd_1d_1p(DTCO, PFIELD, PCOVER, PDATA, HSFTYPE, H
subroutine av_pgd_1d_1p(DTCO, PFIELD, PCOVER, PDATA, HSFTYPE, HATYPE,
integer, parameter nundef
subroutine major_patch_pgd_1d_1p(TFIELD, PCOVER, TDATA, HSFTYPE, HATYP
subroutine get_weight(DTCO, KCOVER, KMASK, HSFTYPE, PWEIGHT)
intent(out) overrides sub arrays one Sort by the least significant key first sum(iindex(1:n))
subroutine date2doy(TPDATA, OCOVER, KDOY)
subroutine doy2date(KDOY, KMONTH, KDAY)