7 PFIELD,PVEGTYPE,PDATA,HSFTYPE,HATYPE,KMASK,KNPATCH,KPATCH,PDZ,KDECADE)
60 USE modd_data_cover_par
, ONLY : nvt_tebd, nvt_bone, nvt_trbe, nvt_trbd, nvt_tebe, &
61 nvt_tene, nvt_bobd, nvt_bond, nvt_shrb, nvegtype, &
64 USE modi_vegtype_to_patch
77 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PLAI_IN
78 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PVEG_IN
80 REAL,
DIMENSION(:),
INTENT(OUT) :: PFIELD
81 REAL,
DIMENSION(:,:),
INTENT(IN) :: PVEGTYPE
82 REAL,
DIMENSION(:,:),
INTENT(IN) :: PDATA
83 CHARACTER(LEN=3),
INTENT(IN) :: HSFTYPE
85 CHARACTER(LEN=3),
INTENT(IN) :: HATYPE
86 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK
87 INTEGER,
INTENT(IN) :: KNPATCH
88 INTEGER,
INTENT(IN) :: KPATCH
89 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: PDZ
90 INTEGER,
INTENT(IN),
OPTIONAL :: KDECADE
102 INTEGER :: JJ, JI, JP, IMASK
104 REAL,
DIMENSION(SIZE(PFIELD,1),NVEGTYPE) :: ZWEIGHT
106 REAL,
DIMENSION(SIZE(PFIELD,1)) :: ZSUM_WEIGHT_PATCH
108 REAL,
DIMENSION(SIZE(PFIELD,1)) :: ZWORK
109 REAL,
DIMENSION(SIZE(PFIELD,1)) :: ZDZ
111 REAL,
DIMENSION(31) :: ZCOUNT
112 INTEGER,
DIMENSION(SIZE(PFIELD,1)) :: NMASK
113 INTEGER :: PATCH_LIST(nvegtype)
114 REAL(KIND=JPRB) :: ZHOOK_HANDLE
122 IF (
SIZE(pfield)==0 .AND.
lhook)
CALL dr_hook(
'AV_PGD_PARAM',1,zhook_handle
123 IF (
SIZE(pfield)==0)
RETURN 131 IF (
PRESENT(pdz))
THEN 141 zsum_weight_patch(:)=0.
155 IF (jp/=kpatch) cycle
159 IF (hsftype==
'NAT'.OR.hsftype==
'GRD')
THEN 160 zweight(ji,jv) = pvegtype(imask,jv)
161 ELSEIF (hsftype==
'VEG'.OR.hsftype==
'GRV')
THEN 162 zweight(ji,jv) = pvegtype(imask,jv)*pveg_in(imask,kdecade,jv)
163 ELSEIF (hsftype==
'BAR'.OR.hsftype==
'GRB')
THEN 164 zweight(ji,jv)=pvegtype(imask,jv)*(1.-pveg_in(imask,kdecade,jv))
165 ELSEIF (hsftype==
'DVG'.OR.hsftype==
'GDV')
THEN 166 IF (
sum(plai_in(ji,:,jv)).GT.0.) zweight(ji,jv) = pvegtype(imask,jv
167 ELSEIF (hsftype==
'LAI'.OR.hsftype==
'GRL')
THEN 168 IF (jv>=4) zweight(ji,jv)=pvegtype(imask,jv)*plai_in(imask,kdecade
169 ELSEIF (hsftype==
'TRE'.OR.hsftype==
'GRT')
THEN 170 IF (jv==nvt_tebd.OR.jv==nvt_bone.OR.jv==nvt_trbe.OR.jv==nvt_trbd.OR.
174 CALL abor1_sfx(
'AV_PGD_PARAM_1D: WEIGHTING FUNCTION FOR VEGTYPE NOT ALLOWED' 202 IF (jp/=kpatch) cycle
205 zsum_weight_patch(jj) = zsum_weight_patch(jj) + zweight(jj,jv)
206 zwork(jj) = zwork(jj) + pdata(imask,jv) * zweight(jj,jv)
219 IF (jp/=kpatch) cycle
222 zsum_weight_patch(jj) = zsum_weight_patch(jj)+zweight(jj,jv)
223 IF (pdata(imask,jv).NE.0.)
THEN 224 zwork(jj)= zwork(jj) + 1./ pdata(imask,jv) * zweight(jj,jv)
239 IF (jp/=kpatch) cycle
242 zsum_weight_patch(jj) = zsum_weight_patch(jj)+ zweight(jj,jv)
243 IF (pdata(jj,jv).NE.0.)
THEN 244 zwork(jj)= zwork(jj) + 1./(log(zdz(jj)/ pdata(imask,jv)))**2
257 IF (jp/=kpatch) cycle
259 IF (nint(pdata(imask,jv))/=
nundef) &
260 zcount(nint(pdata(imask,jv))) = zcount(nint(pdata(imask,jv
262 IF (all(zcount(:)==0.))
THEN 265 zwork(jj) = float(
maxloc(zcount,1))
272 CALL abor1_sfx(
'AV_PGD_PARAM_1D: (1) AVERAGING TYPE NOT ALLOWED')
289 IF (zsum_weight_patch(ji)>0.) pfield(ji) = zwork(ji) / zsum_weight_patch
300 IF (zsum_weight_patch(ji)>0.) pfield(ji) = zsum_weight_patch(ji) /
311 IF (zsum_weight_patch(ji)>0.)
THEN 312 pfield(ji) = zdz(ji) * exp( - sqrt(zsum_weight_patch(ji)/zwork(ji
319 pfield(ji) = zwork(ji)
324 CALL abor1_sfx(
'AV_PGD_PARAM: (2) AVERAGING TYPE NOT ALLOWED')
integer function vegtype_to_patch(IVEGTYPE, INPATCH)
subroutine abor1_sfx(YTEXT)
integer, parameter nundef
intent(out) overrides sub arrays one Sort by the least significant key first sum(iindex(1:n))
subroutine av_pgd_param(PLAI_IN, PVEG_IN, PFIELD, PVEGTYPE, PDATA, HSFTYPE, HATYPE, KMAS