5 SUBROUTINE get_prep_interp(KNP_IN,KNP_OUT,PVEGTYPE,PPATCH_IN,PPATCH_OUT,KMASK_IN)
7 USE modd_data_cover_par
, ONLY : nvegtype
9 USE modi_vegtype_to_patch
16 INTEGER,
INTENT(IN) :: KNP_IN
17 INTEGER,
INTENT(IN) :: KNP_OUT
18 REAL,
DIMENSION(:,:),
INTENT(IN) :: PVEGTYPE
19 REAL,
DIMENSION(:,:),
INTENT(IN) :: PPATCH_IN
20 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PPATCH_OUT
21 INTEGER,
DIMENSION(:,:),
INTENT(IN),
OPTIONAL :: KMASK_IN
23 INTEGER,
DIMENSION(SIZE(PPATCH_OUT,1),SIZE(PPATCH_IN,2)) :: IMASK_IN
24 REAL,
DIMENSION(SIZE(PPATCH_OUT,1),SIZE(PPATCH_OUT,2)) :: ZPATCH_OUT
25 INTEGER :: JP, JVEG, IP_I, IP_O, JI, IMASK, JP2
27 REAL(KIND=JPRB) :: ZHOOK_HANDLE
29 IF (
lhook)
CALL dr_hook(
'GET_PREP_INTERP',0,zhook_handle)
32 IF (
PRESENT(kmask_in))
THEN 33 imask_in(:,:) = kmask_in(:,:)
35 DO ji = 1,
SIZE(imask_in,1)
43 IF (knp_in==nvegtype)
THEN 48 DO ji = 1,
SIZE(imask_in,1)
49 imask = imask_in(ji,ip_o)
50 IF (imask/=0) zpatch_out(imask,jveg) = pvegtype(ji,jveg)
55 ELSEIF (knp_in==knp_out)
THEN 58 DO jp2 = 1,
SIZE(imask_in,2)
59 DO ji = 1,
SIZE(imask_in,1)
60 imask = imask_in(ji,jp2)
61 IF (imask/=0) zpatch_out(imask,jp2) = ppatch_in(ji,jp2)
66 ELSEIF (knp_in<knp_out)
THEN 80 DO ji = 1,
SIZE(imask_in,1)
82 imask = imask_in(ji,ip_o)
83 IF (imask/=0) zpatch_out(imask,ip_i) = zpatch_out(imask,ip_i) + ppatch_in(ji,ip_o)
92 ELSEIF (knp_in>knp_out)
THEN 106 DO ji = 1,
SIZE(imask_in,1)
107 imask = imask_in(ji,ip_o)
108 IF (imask/=0) zpatch_out(imask,ip_i) = ppatch_in(ji,ip_o)
118 ppatch_out(:,:) = zpatch_out(:,:)
120 IF (
lhook)
CALL dr_hook(
'GET_PREP_INTERP',1,zhook_handle)
subroutine get_prep_interp(KNP_IN, KNP_OUT, PVEGTYPE, PPATCH_IN, PPATCH_OUT, KMASK_IN)
integer function vegtype_to_patch(IVEGTYPE, INPATCH)