42 USE modd_data_lake, ONLY : xboundgraddepth_ldb, xboundgradstatus_ldb, &
43 xcentrgraddepth_ldb, ncentrgradstatus_ldb, &
48 USE yomhook
,ONLY : lhook, dr_hook
49 USE parkind1
,ONLY : jprb
56 REAL,
DIMENSION(:),
INTENT(OUT) :: ppgdarray
57 CHARACTER(LEN=1),
INTENT(IN) :: htype
58 INTEGER,
INTENT(IN) :: kstat
63 REAL,
DIMENSION(:),
ALLOCATABLE :: zbound, zcentr
64 REAL :: zfrac, zmax, zpdf, zave
68 REAL(KIND=JPRB) :: zhook_handle
74 IF (lhook) CALL dr_hook(
'AVERAGE2_LDB',0,zhook_handle)
79 ALLOCATE(zbound(
SIZE(xboundgraddepth_ldb)))
80 zbound(:) = xboundgraddepth_ldb(:)
81 ALLOCATE(zcentr(
SIZE(xcentrgraddepth_ldb)))
82 zcentr(:) = xcentrgraddepth_ldb(:)
85 ALLOCATE(zbound(
SIZE(xboundgradstatus_ldb)))
86 zbound(:) = xboundgradstatus_ldb(:)
87 ALLOCATE(zcentr(
SIZE(ncentrgradstatus_ldb)))
88 zcentr(:) = ncentrgradstatus_ldb(:)
91 CALL
abor1_sfx(
"AVERAGE1_LDB: HTYPE NOT SUPPORTED")
96 DO ji = 1,
SIZE(xtng,1)
98 DO jgrad = 1,
SIZE(xtng,2)
99 IF (nsize(ji).NE.0) xtng(ji,jgrad) = xtng(ji,jgrad)/nsize(ji)
103 zfrac = sum(xtng(ji,2:
SIZE(xtng,2)))
110 DO jgrad = 2,
SIZE(xtng,2)
111 zpdf = xtng(ji,jgrad) / (zbound(jgrad)-zbound(jgrad-1))
112 IF (zpdf.GT.zmax)
THEN
118 IF (zfrac.GT.0.)
THEN
119 ppgdarray(ji) = zcentr(igrad_mode)
124 ELSEIF (kstat.EQ.2)
THEN
127 DO jgrad = 2,
SIZE(xtng,2)
128 zave = zave + zcentr(jgrad) * xtng(ji,jgrad)
131 IF (zfrac.LT.0.00001)
THEN
134 ppgdarray(ji) = zave / zfrac
144 IF (lhook) CALL dr_hook(
'AVERAGE2_LDB',1,zhook_handle)
subroutine average2_ldb(PPGDARRAY, HTYPE, KSTAT)
subroutine abor1_sfx(YTEXT)