7 OCANOPY, PHW, PHT ,PSFCO2, PTRAD)
66 TYPE(
diag_t),
INTENT(INOUT) :: D
67 TYPE(
diag_t),
INTENT(INOUT) :: DC
71 INTEGER,
INTENT(IN) :: KNPATCH
73 LOGICAL,
INTENT(IN) :: OSURF_BUDGETC
74 LOGICAL,
INTENT(IN) :: OCANOPY
76 REAL,
DIMENSION(:),
INTENT(IN) :: PHW
77 REAL,
DIMENSION(:),
INTENT(IN) :: PHT
78 REAL,
DIMENSION(:),
INTENT(IN) :: PSFCO2
79 REAL,
DIMENSION(:),
INTENT(IN) :: PTRAD
83 INTEGER :: JP, JI, IMASK
85 REAL(KIND=JPRB) :: ZHOOK_HANDLE
92 IF (
lhook)
CALL dr_hook(
'AVERAGE_DIAG_ISBA_N',0,zhook_handle)
97 IF (dgo%LSURF_BUDGET)
THEN 105 DO ji = 1,np%AL(jp)%NSIZE_P
106 imask = np%AL(jp)%NR_P(ji)
108 DO jswb =1,
SIZE(d%XSWBD,2)
111 d%XSWBD(imask,jswb) = d%XSWBD(imask,jswb) + np%AL(jp)%XPATCH(ji)
114 d%XSWBU(imask,jswb) = d%XSWBU(imask,jswb) + np%AL(jp)%XPATCH(ji)
123 IF (osurf_budgetc)
THEN 135 DO ji = 1,np%AL(jp)%NSIZE_P
136 imask = np%AL(jp)%NR_P(ji)
138 d%XTS(imask) = d%XTS(imask) + np%AL(jp)%XPATCH(ji) * nd%AL(jp)%XTS(ji
140 d%XALBT(imask) = d%XALBT(imask) + np%AL(jp)%XPATCH(ji) * nd%AL(jp)%XALBT
145 IF (.NOT. ocanopy .AND. dgo%N2M>=1)
THEN 152 DO ji = 1,np%AL(jp)%NSIZE_P
153 imask = np%AL(jp)%NR_P(ji)
156 d%XT2M(imask) = d%XT2M(imask) + np%AL(jp)%XPATCH(ji) * nd%AL(jp)%XT2M
159 d%XQ2M(imask) = d%XQ2M(imask) + np%AL(jp)%XPATCH(ji) * nd%AL(jp)%XQ2M
162 d%XHU2M(imask) = d%XHU2M(imask) + np%AL(jp)%XPATCH(ji) * nd%AL(jp)%XHU2M
173 DO ji = 1,np%AL(jp)%NSIZE_P
174 imask = np%AL(jp)%NR_P(ji)
176 d%XZON10M(imask) = d%XZON10M (imask) + np%AL(jp)%XPATCH(ji) * nd%AL
185 nd%AL(jp)%XT2M_MIN(:) = min(nd%AL(jp)%XT2M_MIN(:),nd%AL(jp)%XT2M(:))
186 nd%AL(jp)%XT2M_MAX(:) = max(nd%AL(jp)%XT2M_MAX(:),nd%AL(jp)%XT2M(:))
189 d%XT2M_MIN(:) = min(d%XT2M_MIN(:),d%XT2M(:))
190 d%XT2M_MAX(:) = max(d%XT2M_MAX(:),d%XT2M(:))
192 d%XHU2M_MIN(:) = min(d%XHU2M_MIN(:),d%XHU2M(:))
193 d%XHU2M_MAX(:) = max(d%XHU2M_MAX(:),d%XHU2M(:))
195 d%XWIND10M_MAX(:) = max(d%XWIND10M_MAX(:),d%XWIND10M(:))
204 d%XSFCO2(:) = psfco2(:)
206 DO ji = 1,np%AL(jp)%NSIZE_P
207 imask = np%AL(jp)%NR_P(ji)
208 d%XRI(imask) = d%XRI(imask) + np%AL(jp)%XPATCH(ji) * nd%AL(jp)%XRI
227 DO ji = 1,np%AL(jp)%NSIZE_P
228 imask = np%AL(jp)%NR_P(ji)
230 d%XCD(imask) = d%XCD(imask) + np%AL(jp)%XPATCH(ji) * nd%AL(jp)%XCD
234 d%XZ0(imask) = d%XZ0(imask) + np%AL(jp)%XPATCH(ji) * &
235 1./(log(phw(imask)/nd%AL(jp)%XZ0 (ji)))**2
236 d%XZ0H(imask) = d%XZ0H(imask) + np%AL(jp)%XPATCH(ji) * &
237 1./(log(pht(imask)/nd%AL(jp)%XZ0H(ji)))**2
238 d%XZ0EFF(imask) = d%XZ0EFF(imask) + np%AL(jp)%XPATCH(ji) * &
239 1./(log(phw(imask)/nd%AL(jp)%XZ0EFF(ji)))**2
244 d%XZ0(:) = phw(:) * exp( - sqrt(1./d%XZ0(:)) )
246 d%XZ0H(:) = pht(:) * exp( - sqrt(1./d%XZ0H(:)) )
248 d%XZ0EFF(:) = phw(:) * exp( - sqrt(1./d%XZ0EFF(:)) )
252 IF (dgo%LSURF_VARS)
THEN 256 DO ji = 1,np%AL(jp)%NSIZE_P
257 imask = np%AL(jp)%NR_P(ji)
260 d%XQS(imask) = d%XQS(imask) + np%AL(jp)%XPATCH(ji) * nd%AL(jp)%XQS
266 IF (
lhook)
CALL dr_hook(
'AVERAGE_DIAG_ISBA_N',1,zhook_handle)
272 TYPE(
diag_t),
INTENT(INOUT) :: DA
275 REAL(KIND=JPRB) :: ZHOOK_HANDLE
276 IF (
lhook)
CALL dr_hook(
'AVERAGE_DIAG_ISBA_N:MAKE_AVERAGE',0,zhook_handle
295 DO ji = 1,np%AL(jp)%NSIZE_P
296 imask = np%AL(jp)%NR_P(ji)
299 da%XRN (imask) = da%XRN (imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
302 da%XH (imask) = da%XH (imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
305 da%XLE (imask) = da%XLE (imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
308 da%XGFLUX(imask) = da%XGFLUX(imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
311 da%XLEI (imask) = da%XLEI (imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
314 da%XEVAP (imask) = da%XEVAP (imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
317 da%XSUBL (imask) = da%XSUBL (imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
320 da%XSWD (imask) = da%XSWD (imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
323 da%XSWU (imask) = da%XSWU (imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
326 da%XLWD (imask) = da%XLWD (imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
329 da%XLWU (imask) = da%XLWU (imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
332 da%XFMU (imask) = da%XFMU (imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
335 da%XFMV (imask) = da%XFMV (imask) + np%AL(jp)%XPATCH(ji) * nda%AL(jp
340 IF (
lhook)
CALL dr_hook(
'AVERAGE_DIAG_ISBA_N:MAKE_AVERAGE',1,zhook_handle
subroutine make_average(PFRAC, PFIELD_IN, PFIELD_OUT, KTILE)
subroutine average_diag_isba_n(DGO, D, DC, ND, NDC, NP, KNPATCH,