6 SUBROUTINE coupling_teb_n (DTCO, DST, SLT, TOP, SB, G, CHT, NT, TPN, TIR, BOP, NB, TD, GDM, GRM, &
7 HPROGRAM, HCOUPLING, PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV,&
8 KSW, PTSUN, PZENITH, PAZIM, PZREF, PUREF, PZS, PU, PV, PQA, PTA, &
9 PRHOA, PSV, PCO2, HSV, PRAIN, PSN, PLW, PDIR_SW, PSCA_SW, &
10 PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, &
11 PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF, &
12 PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, &
78 USE modi_add_forecast_to_date_surf
79 USE modi_diag_inline_teb_n
80 USE modi_cumul_diag_teb_n
92 USE modi_canopy_grid_update
95 USE modi_circumsolar_rad
104 TYPE(
dst_t),
INTENT(INOUT) :: DST
105 TYPE(
slt_t),
INTENT(INOUT) :: SLT
107 TYPE(
ch_teb_t),
INTENT(INOUT) :: CHT
109 TYPE(
grid_t),
INTENT(INOUT) :: G
123 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
124 CHARACTER(LEN=1),
INTENT(IN) :: HCOUPLING
127 INTEGER,
INTENT(IN) :: KYEAR
128 INTEGER,
INTENT(IN) :: KMONTH
129 INTEGER,
INTENT(IN) :: KDAY
130 REAL,
INTENT(IN) :: PTIME
131 INTEGER,
INTENT(IN) :: KI
132 INTEGER,
INTENT(IN) :: KSV
133 INTEGER,
INTENT(IN) :: KSW
134 REAL,
DIMENSION(KI),
INTENT(IN) :: PTSUN
135 REAL,
INTENT(IN) :: PTSTEP
136 REAL,
DIMENSION(KI),
INTENT(IN) :: PZREF
137 REAL,
DIMENSION(KI),
INTENT(IN) :: PUREF
139 REAL,
DIMENSION(KI),
INTENT(IN) :: PTA
140 REAL,
DIMENSION(KI),
INTENT(IN) :: PQA
141 REAL,
DIMENSION(KI),
INTENT(IN) :: PRHOA
142 REAL,
DIMENSION(KI,KSV),
INTENT(IN) :: PSV
145 CHARACTER(LEN=6),
DIMENSION(KSV),
INTENT(IN):: HSV
146 REAL,
DIMENSION(KI),
INTENT(IN) :: PU
147 REAL,
DIMENSION(KI),
INTENT(IN) :: PV
148 REAL,
DIMENSION(KI,KSW),
INTENT(IN) :: PDIR_SW
150 REAL,
DIMENSION(KI,KSW),
INTENT(IN) :: PSCA_SW
152 REAL,
DIMENSION(KSW),
INTENT(IN) :: PSW_BANDS
153 REAL,
DIMENSION(KI),
INTENT(IN) :: PZENITH
154 REAL,
DIMENSION(KI),
INTENT(IN) :: PAZIM
155 REAL,
DIMENSION(KI),
INTENT(IN) :: PLW
157 REAL,
DIMENSION(KI),
INTENT(IN) :: PPS
158 REAL,
DIMENSION(KI),
INTENT(IN) :: PPA
159 REAL,
DIMENSION(KI),
INTENT(IN) :: PZS
160 REAL,
DIMENSION(KI),
INTENT(IN) :: PCO2
161 REAL,
DIMENSION(KI),
INTENT(IN) :: PSN
162 REAL,
DIMENSION(KI),
INTENT(IN) :: PRAIN
165 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFTH
166 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFTQ
167 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFU
168 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFV
169 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFCO2
170 REAL,
DIMENSION(KI,KSV),
INTENT(OUT):: PSFTS
172 REAL,
DIMENSION(KI),
INTENT(OUT) :: PTRAD
173 REAL,
DIMENSION(KI,KSW),
INTENT(OUT):: PDIR_ALB
174 REAL,
DIMENSION(KI,KSW),
INTENT(OUT):: PSCA_ALB
175 REAL,
DIMENSION(KI),
INTENT(OUT) :: PEMIS
177 REAL,
DIMENSION(KI),
INTENT(OUT) :: PTSURF
178 REAL,
DIMENSION(KI),
INTENT(OUT) :: PZ0
179 REAL,
DIMENSION(KI),
INTENT(OUT) :: PZ0H
180 REAL,
DIMENSION(KI),
INTENT(OUT) :: PQSURF
182 REAL,
DIMENSION(KI),
INTENT(IN) :: PPEW_A_COEF
183 REAL,
DIMENSION(KI),
INTENT(IN) :: PPEW_B_COEF
184 REAL,
DIMENSION(KI),
INTENT(IN) :: PPET_A_COEF
185 REAL,
DIMENSION(KI),
INTENT(IN) :: PPEQ_A_COEF
186 REAL,
DIMENSION(KI),
INTENT(IN) :: PPET_B_COEF
187 REAL,
DIMENSION(KI),
INTENT(IN) :: PPEQ_B_COEF
188 CHARACTER(LEN=2),
INTENT(IN) :: HTEST
195 REAL,
DIMENSION(KI) :: ZQA
196 REAL,
DIMENSION(KI) :: ZEXNA
197 REAL,
DIMENSION(KI) :: ZEXNS
198 REAL,
DIMENSION(KI) :: ZWIND
202 REAL,
DIMENSION(KI) :: ZU_CANYON
203 REAL,
DIMENSION(KI) :: ZT_CANYON
204 REAL,
DIMENSION(KI) :: ZQ_CANYON
205 REAL,
DIMENSION(KI) :: ZAVG_T_CANYON
206 REAL,
DIMENSION(KI) :: ZAVG_Q_CANYON
207 REAL,
DIMENSION(KI) :: ZT_CAN
208 REAL,
DIMENSION(KI) :: ZQ_CAN
210 REAL,
DIMENSION(KI) :: ZPEW_A_COEF
211 REAL,
DIMENSION(KI) :: ZPEW_B_COEF
213 REAL,
DIMENSION(KI) :: ZT_LOWCAN
214 REAL,
DIMENSION(KI) :: ZQ_LOWCAN
215 REAL,
DIMENSION(KI) :: ZU_LOWCAN
216 REAL,
DIMENSION(KI) :: ZZ_LOWCAN
218 REAL,
DIMENSION(KI) :: ZPEW_A_COEF_LOWCAN
219 REAL,
DIMENSION(KI) :: ZPEW_B_COEF_LOWCAN
221 REAL,
DIMENSION(KI) :: ZTA
222 REAL,
DIMENSION(KI) :: ZPA
223 REAL,
DIMENSION(KI) :: ZUA
224 REAL,
DIMENSION(KI) :: ZUREF
225 REAL,
DIMENSION(KI) :: ZZREF
227 REAL,
DIMENSION(KI) :: ZDIR_SW
228 REAL,
DIMENSION(KI) :: ZSCA_SW
229 REAL,
DIMENSION(KI) :: ZAVG_SCA_SW
230 REAL,
DIMENSION(KI) :: ZAVG_DIR_SW
231 REAL,
DIMENSION(KI,SIZE(PDIR_SW,2)) :: ZDIR_SWB
232 REAL,
DIMENSION(KI,SIZE(PSCA_SW,2)) :: ZSCA_SWB
235 REAL,
DIMENSION(KI) :: ZLE_WL_A
236 REAL,
DIMENSION(KI) :: ZLE_WL_B
237 REAL,
DIMENSION(KI) :: ZAVG_H_WL
239 REAL,
DIMENSION(KI) :: ZPROD_BLD
240 REAL,
DIMENSION(KI) :: ZHU_BLD
241 REAL,
DIMENSION(KI) :: ZAVG_TI_BLD
242 REAL,
DIMENSION(KI) :: ZAVG_QI_BLD
244 REAL,
DIMENSION(KI) :: ZRN_GRND
245 REAL,
DIMENSION(KI) :: ZH_GRND
246 REAL,
DIMENSION(KI) :: ZLE_GRND
247 REAL,
DIMENSION(KI) :: ZGFLX_GRND
248 REAL,
DIMENSION(KI) :: ZUW_GRND
249 REAL,
DIMENSION(KI) :: ZDUWDU_GRND
250 REAL,
DIMENSION(KI) :: ZAC_GRND
251 REAL,
DIMENSION(KI) :: ZAC_GRND_WAT
252 REAL,
DIMENSION(KI) :: ZEMIT_LW_GRND
253 REAL,
DIMENSION(KI) :: ZREF_SW_GRND
254 REAL,
DIMENSION(KI) :: ZAVG_UW_GRND
255 REAL,
DIMENSION(KI) :: ZAVG_DUWDU_GRND
256 REAL,
DIMENSION(KI) :: ZAVG_H_GRND
257 REAL,
DIMENSION(KI) :: ZAVG_AC_GRND
258 REAL,
DIMENSION(KI) :: ZAVG_AC_GRND_WAT
259 REAL,
DIMENSION(KI) :: ZAVG_E_GRND
260 REAL,
DIMENSION(KI) :: ZAVG_REF_SW_GRND
261 REAL,
DIMENSION(KI) :: ZAVG_EMIT_LW_GRND
263 REAL,
DIMENSION(KI) :: ZLEW_RF
264 REAL,
DIMENSION(KI) :: ZRNSN_RF
265 REAL,
DIMENSION(KI) :: ZHSN_RF
266 REAL,
DIMENSION(KI) :: ZLESN_RF
267 REAL,
DIMENSION(KI) :: ZGSN_RF
268 REAL,
DIMENSION(KI) :: ZMELT_RF
269 REAL,
DIMENSION(KI) :: ZUW_RF
270 REAL,
DIMENSION(KI) :: ZDUWDU_RF
271 REAL,
DIMENSION(KI) :: ZAVG_UW_RF
272 REAL,
DIMENSION(KI) :: ZAVG_DUWDU_RF
273 REAL,
DIMENSION(KI) :: ZAVG_H_RF
274 REAL,
DIMENSION(KI) :: ZAVG_E_RF
276 REAL,
DIMENSION(KI) :: ZLEW_RD
277 REAL,
DIMENSION(KI) :: ZRNSN_RD
278 REAL,
DIMENSION(KI) :: ZHSN_RD
279 REAL,
DIMENSION(KI) :: ZLESN_RD
280 REAL,
DIMENSION(KI) :: ZGSN_RD
281 REAL,
DIMENSION(KI) :: ZMELT_RD
282 REAL,
DIMENSION(KI) :: ZAC_RD
283 REAL,
DIMENSION(KI) :: ZAC_RD_WAT
285 REAL,
DIMENSION(KI) :: ZAC_GD
286 REAL,
DIMENSION(KI) :: ZAC_GD_WAT
287 REAL,
DIMENSION(KI,1):: ZESN_GD
289 REAL,
DIMENSION(KI) :: ZAC_GRF
290 REAL,
DIMENSION(KI) :: ZAC_GRF_WAT
292 REAL,
DIMENSION(KI) :: ZTRAD
293 REAL,
DIMENSION(KI) :: ZEMIS
294 REAL,
DIMENSION(KI,TOP%NTEB_PATCH) :: ZTRAD_PATCH
295 REAL,
DIMENSION(KI,TOP%NTEB_PATCH) :: ZEMIS_PATCH
297 REAL,
DIMENSION(KI) :: ZDIR_ALB
298 REAL,
DIMENSION(KI) :: ZSCA_ALB
299 REAL,
DIMENSION(KI,KSW,TOP%NTEB_PATCH) :: ZDIR_ALB_PATCH
300 REAL,
DIMENSION(KI,KSW,TOP%NTEB_PATCH) :: ZSCA_ALB_PATCH
301 REAL,
DIMENSION(KI) :: ZAVG_DIR_ALB
302 REAL,
DIMENSION(KI) :: ZAVG_SCA_ALB
304 REAL,
DIMENSION(KI) :: ZSFCO2
306 REAL,
DIMENSION(KI) :: ZRI
307 REAL,
DIMENSION(KI) :: ZCD
308 REAL,
DIMENSION(KI) :: ZCDN
309 REAL,
DIMENSION(KI) :: ZCH
310 REAL,
DIMENSION(KI) :: ZRN
311 REAL,
DIMENSION(KI) :: ZH
312 REAL,
DIMENSION(KI) :: ZLE
313 REAL,
DIMENSION(KI) :: ZGFLX
314 REAL,
DIMENSION(KI) :: ZEVAP
316 REAL,
DIMENSION(KI) :: ZAVG_CD
317 REAL,
DIMENSION(KI) :: ZAVG_CDN
318 REAL,
DIMENSION(KI) :: ZAVG_RI
319 REAL,
DIMENSION(KI) :: ZAVG_CH
321 REAL,
DIMENSION(KI) :: ZUSTAR
322 REAL,
DIMENSION(KI) :: ZSFU
323 REAL,
DIMENSION(KI) :: ZSFV
325 REAL,
DIMENSION(KI) :: ZH_TRAFFIC
327 REAL,
DIMENSION(KI) :: ZLE_TRAFFIC
330 REAL :: ZBEGIN_TRAFFIC_TIME
331 REAL :: ZEND_TRAFFIC_TIME
333 REAL,
DIMENSION(KI) :: ZRESA
335 REAL,
DIMENSION(KI) :: ZEMIT_LW_FAC
336 REAL,
DIMENSION(KI) :: ZT_RAD_IND
337 REAL,
DIMENSION(KI) :: ZREF_SW_FAC
339 REAL,
DIMENSION(KI) :: ZAVG_Z0
340 REAL,
DIMENSION(KI) :: ZAVG_RESA
341 REAL,
DIMENSION(KI) :: ZAVG_USTAR
342 REAL,
DIMENSION(KI) :: ZAVG_BLD
343 REAL,
DIMENSION(KI) :: ZAVG_BLD_HEIGHT
344 REAL,
DIMENSION(KI) :: ZAVG_WL_O_HOR
345 REAL,
DIMENSION(KI) :: ZAVG_CAN_HW_RATIO
346 REAL,
DIMENSION(KI) :: ZAVG_H
347 REAL,
DIMENSION(KI) :: ZAVG_LE
348 REAL,
DIMENSION(KI) :: ZAVG_RN
349 REAL,
DIMENSION(KI) :: ZAVG_GFLX
350 REAL,
DIMENSION(KI) :: ZAVG_REF_SW_FAC
351 REAL,
DIMENSION(KI) :: ZAVG_EMIT_LW_FAC
352 REAL,
DIMENSION(KI) :: ZAVG_T_RAD_IND
356 REAL,
DIMENSION(KI) :: ZU_UTCI
358 REAL,
DIMENSION(KI) :: ZALFAU
359 REAL,
DIMENSION(KI) :: ZBETAU
360 REAL,
DIMENSION(KI) :: ZALFAT
361 REAL,
DIMENSION(KI) :: ZBETAT
362 REAL,
DIMENSION(KI) :: ZALFAQ
363 REAL,
DIMENSION(KI) :: ZBETAQ
365 REAL,
DIMENSION(KI) :: ZWAKE
369 REAL,
DIMENSION(KI) :: ZF1_o_B
372 REAL,
DIMENSION(KI) :: ZSFLUX_U
373 REAL,
DIMENSION(KI) :: ZSFLUX_T
374 REAL,
DIMENSION(KI) :: ZSFLUX_Q
375 REAL,
DIMENSION(KI,SB%NLVL) :: ZFORC_U
376 REAL,
DIMENSION(KI,SB%NLVL) :: ZDFORC_UDU
378 REAL,
DIMENSION(KI,SB%NLVL) :: ZFORC_E
379 REAL,
DIMENSION(KI,SB%NLVL) :: ZDFORC_EDE
381 REAL,
DIMENSION(KI,SB%NLVL) :: ZFORC_T
382 REAL,
DIMENSION(KI,SB%NLVL) :: ZDFORC_TDT
384 REAL,
DIMENSION(KI,SB%NLVL) :: ZFORC_Q
385 REAL,
DIMENSION(KI,SB%NLVL) :: ZDFORC_QDQ
387 REAL,
DIMENSION(KI) :: ZLAMBDA_F
388 REAL,
DIMENSION(KI) :: ZLMO
389 REAL,
DIMENSION(KI,SB%NLVL) :: ZL
391 REAL,
DIMENSION(KI) :: ZCOEF
393 REAL :: ZCONVERTFACM0_SLT, ZCONVERTFACM0_DST
394 REAL :: ZCONVERTFACM3_SLT, ZCONVERTFACM3_DST
395 REAL :: ZCONVERTFACM6_SLT, ZCONVERTFACM6_DST
403 INTEGER :: JP, IBEG, IEND
405 REAL(KIND=JPRB) :: ZHOOK_HANDLE
410 IF (
lhook)
CALL dr_hook(
'COUPLING_TEB_N',0,zhook_handle)
411 IF (htest/=
'OK')
THEN 412 CALL abor1_sfx(
'COUPLING_TEBN: FATAL ERROR DURING ARGUMENT TRANSFER')
427 CALL circumsolar_rad(pdir_sw(:,jswb), psca_sw(:,jswb), pzenith, zf1_o_b)
428 zdir_swb(:,jswb) = pdir_sw(:,jswb) + psca_sw(:,jswb) * zf1_o_b
429 zsca_swb(:,jswb) = psca_sw(:,jswb) * (1. - zf1_o_b)
431 DO jj=1,
SIZE(pdir_sw,1)
432 zdir_sw(jj) = zdir_sw(jj) + zdir_swb(jj,jswb)
433 zsca_sw(jj) = zsca_sw(jj) + zsca_swb(jj,jswb)
440 zqa(jj) = pqa(jj) / prhoa(jj)
444 zwind(jj) = sqrt(pu(jj)**2+pv(jj)**2)
449 IF (hcoupling==
'I')
THEN 450 zpew_a_coef = ppew_a_coef
451 zpew_b_coef = ppew_b_coef
461 top%TTIME%TIME = top%TTIME%TIME + ptstep
463 top%TTIME%TDATE%DAY, top%TTIME%TIME)
469 zbegin_traffic_time = 21600.
470 zend_traffic_time = 64800.
472 WHERE( ptsun>zbegin_traffic_time .AND. ptsun<zend_traffic_time )
473 zh_traffic(:) = nt%AL(1)%XH_TRAFFIC (:)
474 zle_traffic(:) = nt%AL(1)%XLE_TRAFFIC (:)
487 DO jp=1,top%NTEB_PATCH
495 IF (top%LCANOPY)
THEN 506 IF(any(sb%XT(:,:) ==
xundef))
THEN 508 sb%XT(:,jlayer) = pta(:)
509 sb%XQ(:,jlayer) = pqa(:)
510 sb%XU(:,jlayer) = 2./
xpi * zwind(:) &
511 * log( ( 2.* nt%AL(1)%XBLD_HEIGHT(:)/3.) / nt%AL(1)%XZ0_TOWN(:)) &
512 / log( (puref(:)+ 2.* nt%AL(1)%XBLD_HEIGHT(:)/3.) / nt%AL(1)%XZ0_TOWN(:))
520 zua(:) = sb%XU(:,sb%NLVL)
521 zta(:) = sb%XT(:,sb%NLVL)
522 zqa(:) = sb%XQ(:,sb%NLVL)/prhoa(:)
523 zpa(:) = sb%XP(:,sb%NLVL)
525 zu_canyon(:) = zua(:)
526 zt_canyon(:) = zta(:)
527 zq_canyon(:) = zqa(:)
528 DO jlayer=1,sb%NLVL-1
531 IF (sb%XZ(ji,jlayer)<zavg_bld_height(ji)/2. .AND. sb%XZ(ji,jlayer+1)>=zavg_bld_height(ji)/2.)
THEN 532 zcoef(ji) = (zavg_bld_height(ji)/2.-sb%XZ(ji,jlayer))/(sb%XZ(ji,jlayer+1)-sb%XZ(ji,jlayer))
533 zu_canyon(ji) = sb%XU(ji,jlayer) + zcoef(ji) * (sb%XU(ji,jlayer+1)-sb%XU(ji,jlayer))
534 zt_canyon(ji) = sb%XT(ji,jlayer) + zcoef(ji) * (sb%XT(ji,jlayer+1)-sb%XT(ji,jlayer))
535 zq_canyon(ji) =(sb%XQ(ji,jlayer) + zcoef(ji) * (sb%XQ(ji,jlayer+1)-sb%XQ(ji,jlayer)))/prhoa(ji)
538 IF (sb%XZ(ji,jlayer)<zavg_bld_height(ji)+1. .AND. sb%XZ(ji,jlayer+1)>=zavg_bld_height(ji)+1.)
THEN 539 zuref(ji) = sb%XZ(ji,jlayer+1) - zavg_bld_height(ji)
540 zzref(ji) = sb%XZ(ji,jlayer+1) - zavg_bld_height(ji)
541 zta(ji) = sb%XT(ji,jlayer+1)
542 zqa(ji) = sb%XQ(ji,jlayer+1)/prhoa(ji)
544 zua(ji) = max(sb%XU(ji,jlayer+1) - 2.*sqrt(sb%XTKE(ji,jlayer+1)) , sb%XU(ji,jlayer+1)/3.)
545 zpa(ji) = sb%XP(ji,jlayer+1)
546 zlmo(ji) = sb%XLMO(ji,jlayer+1)
550 zu_canyon= max(zu_canyon,0.2)
553 zq_lowcan=sb%XQ(:,1) / prhoa(:)
555 WHERE(zpa==
xundef) zpa = ppa
562 zlambda_f(:) = zavg_can_hw_ratio*zavg_bld / (0.5*
xpi)
564 CALL sm10(sb%XZ, zavg_bld_height, zlambda_f, zl)
571 zavg_duwdu_grnd(:) = 0.
573 zavg_duwdu_rf(:) = 0.
580 zavg_ac_grnd_wat(:)= 0.
585 DO jlayer=1,sb%NLVL-1
588 WHERE (sb%XZ(:,jlayer)<=zavg_bld_height(:)+1.) sb%XLMO(:,jlayer) =
xundef 592 CALL teb_canopy(ki, sb, zavg_bld, zavg_bld_height, zavg_wl_o_hor, ppa, prhoa, &
593 zavg_duwdu_grnd, zavg_uw_rf, zavg_duwdu_rf, zavg_h_wl, &
594 zavg_h_rf, zavg_e_rf, zavg_ac_grnd, zavg_ac_grnd_wat, zforc_u, &
595 zdforc_udu, zforc_e, zdforc_ede, zforc_t, zdforc_tdt, zforc_q, &
599 CALL canopy_evol(sb, ki, ptstep, 1, zl, zwind, pta, pqa, ppa, prhoa, &
600 zsflux_u, zsflux_t, zsflux_q, zforc_u, zdforc_udu, &
601 zforc_e, zdforc_ede, zforc_t, zdforc_tdt, zforc_q, &
602 zdforc_qdq, sb%XLM, sb%XLEPS, zavg_ustar, zalfau, &
603 zbetau, zalfat, zbetat, zalfaq, zbetaq)
605 zpew_a_coef_lowcan = - zalfau / prhoa
606 zpew_b_coef_lowcan = zbetau
616 zwake(ji)= 1. + (2./
xpi-1.) * 2. * (zavg_can_hw_ratio(ji)-0.5)
617 zwake(ji)= max(min(zwake(ji),1.),2./
xpi)
622 IF (zavg_bld_height(ji) .GT. 0.)
THEN 623 zu_canyon(ji) = zwake(ji) * exp(-zavg_can_hw_ratio(ji)/4.) * zwind(ji) &
624 * log( ( 2.* zavg_bld_height(ji)/3.) / zavg_z0(ji)) &
625 / log( (puref(ji)+ 2.* zavg_bld_height(ji)/3.) / zavg_z0(ji))
626 zz_lowcan(ji) = zavg_bld_height(ji) / 2.
628 zu_canyon(ji) = zwind(ji)
629 zz_lowcan(ji) = pzref(ji)
634 zu_lowcan = zu_canyon
636 zt_lowcan = nt%AL(1)%XT_CANYON
637 zq_lowcan = nt%AL(1)%XQ_CANYON
638 zt_canyon = nt%AL(1)%XT_CANYON
639 zq_canyon = nt%AL(1)%XQ_CANYON
646 zpew_a_coef_lowcan = 0.
647 zpew_b_coef_lowcan = zu_canyon
660 DO jp = 1,top%NTEB_PATCH
665 IF (top%LCANOPY)
THEN 666 nt%AL(jp)%XT_CANYON(:) = zt_canyon(:)
667 nt%AL(jp)%XQ_CANYON(:) = zq_canyon(:)
672 td%NDMT%AL(jp)%XG_GREENROOF_ROOF(:) = 0.
678 CALL teb_garden(dtco, g, top, nt%AL(jp), bop, nb%AL(jp), tpn, tir, td%NDMT%AL(jp), gdm, grm, jp, &
679 cimplicit_wind, ptsun, zt_can, zq_can, zu_canyon, zt_lowcan, zq_lowcan, &
680 zu_lowcan, zz_lowcan, zpew_a_coef, zpew_b_coef, zpew_a_coef_lowcan, &
681 zpew_b_coef_lowcan, pps, zpa, zexns, zexna, zta, zqa, prhoa, pco2, plw, &
682 zdir_swb, zsca_swb, psw_bands, ksw, pzenith, pazim, prain, psn, zzref, &
683 zuref, zua, zh_traffic, zle_traffic, ptstep, zlew_rf, zlew_rd, zle_wl_a,&
684 zle_wl_b, zrnsn_rf, zhsn_rf, zlesn_rf, zgsn_rf, zmelt_rf, zrnsn_rd, &
685 zhsn_rd, zlesn_rd, zgsn_rd, zmelt_rd, zrn_grnd, zh_grnd, zle_grnd, &
686 zgflx_grnd, zrn, zh, zle, zgflx, zevap, zsfco2, zuw_grnd, &
687 zuw_rf, zduwdu_grnd, zduwdu_rf, zustar, zcd, zcdn, zch, zri, ztrad, &
688 zemis, zdir_alb, zsca_alb, zresa, zac_rd, zac_gd, zac_grf, zac_rd_wat, &
689 zac_gd_wat, zac_grf_wat, kday, zemit_lw_fac, zemit_lw_grnd, zt_rad_ind, &
690 zref_sw_grnd, zref_sw_fac, zhu_bld, ptime, zprod_bld )
694 IF (.NOT. top%LCANOPY)
THEN 704 IF (zwind(jj)>0.)
THEN 705 zcoef(jj) = - prhoa(jj) * zustar(jj)**2 / zwind(jj)
706 zsfu(jj) = zcoef(jj) * pu(jj)
707 zsfv(jj) = zcoef(jj) * pv(jj)
728 DO jswb=1,
SIZE(psw_bands)
729 DO jj=1,
SIZE(zdir_alb)
730 zdir_alb_patch(jj,jswb,jp) = zdir_alb(jj)
731 zsca_alb_patch(jj,jswb,jp) = zsca_alb(jj)
737 zemis_patch(:,jp) = zemis
738 ztrad_patch(:,jp) = ztrad
753 IF (jp==top%NTEB_PATCH) zavg_resa = 1./zavg_resa
759 IF (td%MTO%LSURF_MISC_BUDGET)
THEN 764 CALL cumul_diag_teb_n(td%NDMTC%AL(jp), td%NDMT%AL(jp), gdm%VD%NDEC%AL(jp), gdm%VD%NDE%AL(jp), &
765 grm%VD%NDEC%AL(jp), grm%VD%NDE%AL(jp), top, ptstep)
774 IF (td%O%N2M >0 .AND. td%DUT%LUTCI)
THEN 790 IF (top%LCANOPY)
THEN 798 CALL add_patch_contrib(jp,zavg_h_wl , 0.5*(td%NDMT%AL(jp)%XH_WALL_A+td%NDMT%AL(jp)%XH_WALL_B))
799 CALL add_patch_contrib(jp,zavg_h_rf , (td%NDMT%AL(jp)%XH_ROOF + nt%AL(jp)%XH_INDUSTRY))
806 zac_grnd(:) = (nt%AL(jp)%XROAD(:)*zac_rd(:) + nt%AL(jp)%XGARDEN(:)*zac_gd(:)) / &
807 (nt%AL(jp)%XROAD(:)+nt%AL(jp)%XGARDEN(:))
808 zac_grnd_wat(:) = (nt%AL(jp)%XROAD(:)*zac_rd_wat(:) + nt%AL(jp)%XGARDEN(:)*zac_gd_wat(:)) / &
809 (nt%AL(jp)%XROAD(:)+nt%AL(jp)%XGARDEN(:))
828 IF (top%LCANOPY)
THEN 834 CALL teb_canopy(ki, sb, zavg_bld, zavg_bld_height, zavg_wl_o_hor, ppa, prhoa, &
835 zavg_duwdu_grnd, zavg_uw_rf, zavg_duwdu_rf, zavg_h_wl, &
836 zavg_h_rf, zavg_e_rf, zavg_ac_grnd, zavg_ac_grnd_wat, zforc_u, &
837 zdforc_udu, zforc_e, zdforc_ede, zforc_t, zdforc_tdt, zforc_q, &
844 CALL canopy_evol(sb, ki, ptstep, 2, zl, zwind, pta, pqa, ppa, prhoa, &
845 zsflux_u, zsflux_t, zsflux_q, zforc_u, zdforc_udu, &
846 zforc_e, zdforc_ede, zforc_t, zdforc_tdt, zforc_q, &
847 zdforc_qdq, sb%XLM, sb%XLEPS, zavg_ustar, zalfau, &
848 zbetau, zalfat, zbetat, zalfaq, zbetaq )
856 zavg_z0(:) = min(zavg_z0(:),puref(:)*0.5)
857 zavg_cdn=(
xkarman/log(puref(:)/zavg_z0(:)))**2
861 IF (zwind(jj)>0.)
THEN 862 zcoef(jj) = - prhoa(jj) * zavg_ustar(jj)**2 / zwind(jj)
863 psfu(jj) = zcoef(jj) * pu(jj)
864 psfv(jj) = zcoef(jj) * pv(jj)
865 zavg_cd(jj) = zavg_ustar(jj)**2 / zwind(jj)**2
866 zavg_ri(jj) = -
xg/pta(jj)*zsflux_t(jj)/zavg_ustar(jj)**4
886 CALL average_rad(top%XTEB_PATCH, zdir_alb_patch, zsca_alb_patch, zemis_patch, &
887 ztrad_patch, pdir_alb, psca_alb, pemis, ptrad )
897 pz0h(:) = pz0(:) / 200.
898 pqsurf(:) = nt%AL(1)%XQ_CANYON(:)
904 zavg_ustar(:) = sqrt(sqrt(psfu**2+psfv**2))
907 IF (cht%SVT%NBEQ>0)
THEN 909 ibeg = cht%SVT%NSV_CHSBEG
910 iend = cht%SVT%NSV_CHSEND
912 IF (cht%CCH_DRY_DEP ==
"WES89")
THEN 913 CALL ch_dep_town(zavg_resa, zavg_ustar, pta, ptrad, zavg_wl_o_hor,&
914 psv(:,ibeg:iend), cht%SVT%CSV(ibeg:iend), cht%XDEP(:,1:cht%SVT%NBEQ) )
918 DO jj=1,
SIZE(psfts,1)
919 psfts(jj,ji) = - psv(jj,ji) * cht%XDEP(jj,ji-ibeg+1)
923 IF (cht%SVT%NAEREQ > 0 )
THEN 925 ibeg = cht%SVT%NSV_AERBEG
926 iend = cht%SVT%NSV_AEREND
928 CALL ch_aer_dep(psv(:,ibeg:iend), psfts(:,ibeg:iend), &
929 zavg_ustar, zavg_resa, pta, prhoa)
934 ibeg = cht%SVT%NSV_CHSBEG
935 iend = cht%SVT%NSV_CHSEND
941 ibeg = cht%SVT%NSV_AERBEG
942 iend = cht%SVT%NSV_AEREND
944 IF(ibeg.LT.iend)
THEN 953 IF (cht%SVT%NDSTEQ>0)
THEN 955 zustar(:) = min(zustar(:), 10.)
956 zresa(:) = max(zresa(:), 10.)
958 ibeg = cht%SVT%NSV_DSTBEG
959 iend = cht%SVT%NSV_DSTEND
961 CALL dslt_dep(psv(:,ibeg:iend), psfts(:,ibeg:iend), zustar, zresa, pta, prhoa, &
967 psfts(:,ibeg:iend), &
969 dst%XEMISRADIUS_DST, &
977 IF (cht%SVT%NSLTEQ>0)
THEN 979 ibeg = cht%SVT%NSV_SLTBEG
980 iend = cht%SVT%NSV_SLTEND
982 CALL dslt_dep(psv(:,ibeg:iend), psfts(:,ibeg:iend), zustar, zresa, pta, prhoa, &
988 psfts(:,ibeg:iend), &
990 slt%XEMISRADIUS_SLT, &
1004 pta, ptrad, zqa, ppa, pps, prhoa, pu, pv, zwind, pzref, puref, &
1005 zavg_cd, zavg_cdn, zavg_ri, zavg_ch, zavg_z0, ptrad, pemis, &
1006 pdir_alb, psca_alb, plw, zdir_swb, zsca_swb, psfth, psftq, &
1007 psfu, psfv, psfco2, zavg_rn, zavg_h, zavg_le, zavg_gflx )
1013 IF (.NOT. top%LCANOPY)
THEN 1014 DO jp=1,top%NTEB_PATCH
1015 nt%AL(jp)%XT_CANYON(:) = zavg_t_canyon(:)
1016 nt%AL(jp)%XQ_CANYON(:) = zavg_q_canyon(:)
1024 IF (td%DUT%LUTCI .AND. td%O%N2M >0)
THEN 1026 IF (td%D%XZON10M(jj)/=
xundef)
THEN 1027 zu_utci(jj) = sqrt(td%D%XZON10M(jj)**2+td%D%XMER10M(jj)**2)
1029 zu_utci(jj) = zwind(jj)
1032 CALL utci_teb(nt%AL(1), td%DUT, zavg_ti_bld, zavg_qi_bld, zu_utci, pps, zavg_ref_sw_grnd, &
1033 zavg_ref_sw_fac, zavg_sca_sw, zavg_dir_sw, pzenith, zavg_emit_lw_fac, &
1034 zavg_emit_lw_grnd, plw, zavg_t_rad_ind )
1035 CALL utcic_stress(ptstep,td%DUT%XUTCI_IN ,td%DUT%XUTCIC_IN )
1036 CALL utcic_stress(ptstep,td%DUT%XUTCI_OUTSUN ,td%DUT%XUTCIC_OUTSUN )
1037 CALL utcic_stress(ptstep,td%DUT%XUTCI_OUTSHADE,td%DUT%XUTCIC_OUTSHADE)
1038 ELSE IF (td%DUT%LUTCI)
THEN 1039 td%DUT%XUTCI_IN (:) =
xundef 1040 td%DUT%XUTCI_OUTSUN (:) =
xundef 1041 td%DUT%XUTCI_OUTSHADE (:) =
xundef 1042 td%DUT%XTRAD_SUN (:) =
xundef 1043 td%DUT%XTRAD_SHADE (:) =
xundef 1044 td%DUT%XUTCIC_IN (:,:) =
xundef 1045 td%DUT%XUTCIC_OUTSUN (:,:) =
xundef 1046 td%DUT%XUTCIC_OUTSHADE(:,:) =
xundef 1050 IF (
lhook)
CALL dr_hook(
'COUPLING_TEB_N',1,zhook_handle)
1055 INTEGER,
INTENT(IN) :: JP
1056 REAL,
DIMENSION(:),
INTENT(INOUT) :: PAVG
1057 REAL,
DIMENSION(:),
INTENT(IN) :: PFIELD
1059 IF (jp==1) pavg = 0.
1060 pavg = pavg + top%XTEB_PATCH(:,jp) * pfield(:)
subroutine massflux2momentflux(PFLUX, PRHODREF, PEMISRADIUS, PEMISSIG, KMDE, PCONVERTFACM0, PCONVERTFACM6, PCONVERTFACM3, OVARSIG, ORGFIX)
subroutine cumul_diag_teb_n(DMTC, DMT, GDDEC, GDDE, GRDEC, GRDE, TOP, PTSTEP)
character(len=3) cimplicit_wind
real, parameter xmolarweight_slt
real, parameter xmolarweight_dst
subroutine ch_dep_town(PRESA_TOWN, PUSTAR_TOWN, PTA, PTRAD, PWALL_O_HOR, PSV, HSV, PDEP)
real, parameter xdensity_dst
subroutine ch_aer_dep(PSVT, PFSVT, PUSTAR, PRESA, PTA, PRHODREF)
subroutine sm10(PZ, PBLD_HEIGHT, PLAMBDA_F, PL)
subroutine abor1_sfx(YTEXT)
subroutine canopy_evol(SB, KI, PTSTEP, KIMPL, PZZ, PWIND, PTA, PQA
subroutine teb_garden(DTCO, G, TOP, T, BOP, B, TPN, TIR, DMT, GDM, GRM, KTEB_P, HIMPLICIT_WIND, PTSUN, PT_CAN, PQ_CAN, PU_CAN, PT_LOWCAN, PQ_LOWCAN, PU_LOWCAN, PZ_LOWCAN, PPEW_A_COEF, PPEW_B_COEF, PPEW_A_COEF_LOWCAN, PPEW_B_COEF_LOWCAN, PPS, PPA, PEXNS, PEXNA, PTA, PQA, PRHOA, PCO2, PLW_RAD, PDIR_SW, PSCA_SW, PSW_BANDS, KSW, PZENITH, PAZIM, PRR, PSR, PZREF, PUREF, PVMOD, PH_TRAFFIC, PLE_TRAFFIC, PTSTEP, PLEW_RF, PLEW_RD, PLE_WL_A, PLE_WL_B, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, PMELT_RF, PRNSN_RD, PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RD, PRN_GRND, PH_GRND, PLE_GRND, PGFLX_GRND, PRN_TWN, PH_TWN, PLE_TWN, PGFLX_TWN, PEVAP_TWN, PSFCO2, PUW_GRND, PUW_RF, PDUWDU_GRND, PDUWDU_RF, PUSTAR_TWN, PCD, PCDN, PCH_TWN, PRI_TWN, PTS_TWN, PEMIS_TWN, PDIR_ALB_TWN, PSCA_ALB_TWN, PRESA_TWN, PAC_RD, PAC_GD, PAC_GR, PAC_RD_WAT, PAC_GD_WAT, PAC_GR_WAT, KDAY, PEMIT_LW_FAC, PEMIT_LW_GRND, PT_RAD_IND, PREF_SW_GRND, PREF_SW_FAC, PHU_BLD, PTIME, PPROD_BLD)
subroutine diag_inline_teb_n(DGO, D, SB, T, OCANOPY, PTA, PTS, PQA, PPA, PPS, PRHOA, PZONA, PMERA, PWIND, PHT, PHW, PCD, PCDN, PRI, PCH, PZ0, PTRAD, PEMIS, PDIR_ALB, PSCA_ALB, PLW, PDIR_SW, PSCA_SW, PSFTH, PSFTQ, PSFZON, PSFMER, PSFCO2, PRN, PH, PLE, PGFLUX)
subroutine utci_teb(T, DUT, PTI_BLD, PQI_BLD, PU10, PPS, PREF_SW_GRND, PREF_SW_FAC, PSCA_SW, PDIR_SW, PZENITH, PEMIT_LW_FAC, PEMIT_LW_GRND, PLW_RAD, PTRAD_IN)
subroutine coupling_teb_n(DTCO, DST, SLT, TOP, SB, G, CHT, NT, TPN, TIR, BOP, NB, TD, GDM, GRM, HPROGRAM, HCOUPLING, PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, PAZIM, PZREF, PUREF, PZS, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV, PRAIN, PSN, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST)
subroutine dslt_dep(PSVT, PFSVT, PUSTAR, PRESA, PTA, PRHODREF, PEMISSIG, PEMISRADIUS, KPMODE, PDENSITY, PMOLARWEIGHT, PCONVERTFACM0, PCONVERTFACM6, PCONVERTFACM3, OVARSIG, ORGFIX, HVERMOD)
subroutine add_patch_contrib(JP, PAVG, PFIELD)
subroutine add_forecast_to_date_surf(KYEAR, KMONTH, KDAY, PSEC)
real, parameter xdensity_slt
subroutine average_rad(PFRAC_TILE, PDIR_ALB_TILE, PSCA_ALB_TILE, PEMIS_TILE, PTRAD_TILE,
subroutine canopy_grid_update(KI, PH, PZFORC, SB)
subroutine circumsolar_rad(PDIR_SW, PSCA_SW, PZENITH, PF1_o_B)
subroutine utcic_stress(PTSTEP, PUTCI, PUTCIC)
subroutine teb_canopy(KI, SB, PBLD, PBLD_HEIGHT, PWALL_O_HOR, PPA, PRHOA, PDUWDU_ROAD, PUW_ROOF, PDUWDU_ROOF, PH_WALL, PH_ROOF, PE_ROOF, PAC_ROAD, PAC_ROAD_WAT, PFORC_U, PDFORC_UDU, PFORC_E, PDFORC_EDE, PFORC_T, PDFORC_TDT, PFORC_Q, PDFORC_QDQ)