44 nvalnbr, nvalcount, xvallist, jpvalmax
47 USE modi_get_mesh_index
53 USE yomhook
,ONLY : lhook, dr_hook
54 USE parkind1
,ONLY : jprb
61 INTEGER,
INTENT(IN) :: kluout
62 INTEGER,
INTENT(IN) :: knblines
63 REAL,
DIMENSION(:),
INTENT(IN) :: plat
64 REAL,
DIMENSION(:),
INTENT(IN) :: plon
65 REAL,
DIMENSION(:),
INTENT(IN) :: pvalue
66 REAL,
OPTIONAL,
INTENT(IN) :: pnodata
71 INTEGER,
DIMENSION(NOVMX,SIZE(PLAT)) :: iindex
74 INTEGER :: jloop, jover
78 REAL,
DIMENSION(SIZE(PLAT)) :: zvalue
81 REAL(KIND=JPRB) :: zhook_handle
87 IF (lhook) CALL dr_hook(
'AVERAGE1_MESH',0,zhook_handle)
89 IF (present(pnodata))
THEN
92 CALL
get_mesh_index(kluout,knblines,plat,plon,iindex,zvalue,znodata)
103 DO jloop = 1 ,
SIZE(plat)
110 IF (iindex(jover,jloop)==0) cycle bloop
115 nsize(iindex(jover,jloop))=nsize(iindex(jover,jloop))+1
122 xsumval(iindex(jover,jloop))=xsumval(iindex(jover,jloop))+ pvalue(jloop)
124 xsumval(iindex(jover,jloop))=xsumval(iindex(jover,jloop))+1./pvalue(jloop)
126 xsumval(iindex(jover,jloop))=xsumval(iindex(jover,jloop))+1./(log(xcdref/pvalue(jloop)))**2
129 DO jval=1,nvalnbr(iindex(jover,jloop))
130 IF (abs( xvallist(iindex(jover,jloop),jval) - pvalue(jloop)) < zeps)
THEN
131 nvalcount(iindex(jover,jloop),jval) = nvalcount(iindex(jover,jloop),jval) + 1
136 IF (.NOT. gfound)
THEN
137 IF (nvalnbr(iindex(jover,jloop))==jpvalmax) &
138 CALL
abor1_sfx(
'TOO MANY DIFFERENT VALUES TO AGGREGATE WITH THE MAJORITY RULE')
139 nvalnbr(iindex(jover,jloop)) = nvalnbr(iindex(jover,jloop)) +1
140 jval = nvalnbr(iindex(jover,jloop))
141 nvalcount(iindex(jover,jloop),jval) = 1
142 xvallist(iindex(jover,jloop),jval) = pvalue(jloop)
148 IF (lhook) CALL dr_hook(
'AVERAGE1_MESH',1,zhook_handle)
subroutine get_mesh_index(KLUOUT, KNBLINES, PLAT, PLON, KINDEX, PVALUE, PNODATA, KSSO, KISSOX, KISSOY)
subroutine abor1_sfx(YTEXT)
subroutine average1_mesh(KLUOUT, KNBLINES, PLAT, PLON, PVALUE, PNODATA)