6 SUBROUTINE isba_fluxes_meb(KK, PK, PEK, DK, DEK, DMK, PRHOA, PLTT, PSIGMA_F,PSIGMA_FN, &
7 PRN_V, PRN_G, PLWNET_V_DTV, PLWNET_V_DTG, PLWNET_V_DTN, &
8 PLWNET_G_DTV, PLWNET_G_DTG, PLWNET_G_DTN, PLWNET_N_DTV, &
9 PLWNET_N_DTG, PLWNET_N_DTN, PTHRMA_TA, PTHRMB_TA, &
10 PTHRMA_TC, PTHRMB_TC, PTHRMA_TG, PTHRMB_TG, PTHRMA_TV, &
11 PTHRMB_TV, PTHRMA_TN, PTHRMB_TN, PQSAT_G, PQSAT_V, &
12 PQSATI_N, PPSNA, PPSNCV, PFROZEN1,PLEG_DELTA, &
13 PLEGI_DELTA, PHUGI, PHVG, PHVN, PFLXC_CA, PFLXC_GV, &
14 PFLXC_VG_C, PFLXC_VN_C, PFLXC_GN, PFLXC_N_A, PFLXC_MOM, &
15 PFLXC_CV, PHVGS, PHVNS, PTG, PDQSAT_G, PDQSAT_V, &
16 PDQSATI_N, PTA_IC, PQA_IC, PDELTA_V, PDELTAT_G, &
17 PDELTAT_V, PDELTAT_N, PSW_UP, PSW_RAD, PLW_RAD, PLW_UP, &
18 PH_N_A, PEVAP_C_A, PEVAP_N_A, PLEG, PLEGI, PLES, PLEL, &
73 USE modd_isba_par
, ONLY : xemissoil, xemisveg
76 USE modi_isba_emis_meb
86 TYPE(
diag_t),
INTENT(INOUT) :: DK
92 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA, PLTT
96 REAL,
DIMENSION(:),
INTENT(IN) :: PSIGMA_F, PSIGMA_FN
98 REAL,
DIMENSION(:),
INTENT(IN) :: PLWNET_V_DTV, PLWNET_V_DTG, PLWNET_V_DTN
102 REAL,
DIMENSION(:),
INTENT(IN) :: PLWNET_G_DTV, PLWNET_G_DTG, PLWNET_G_DTN
106 REAL,
DIMENSION(:),
INTENT(IN) :: PLWNET_N_DTV, PLWNET_N_DTG, PLWNET_N_DTN
110 REAL,
DIMENSION(:),
INTENT(IN) :: PTHRMA_TA, PTHRMB_TA, PTHRMA_TC, PTHRMB_TC
125 REAL,
DIMENSION(:),
INTENT(IN) :: PQSAT_G, PQSAT_V, PQSATI_N
130 REAL,
DIMENSION(:),
INTENT(IN) :: PPSNA, PPSNCV, PFROZEN1
136 REAL,
DIMENSION(:),
INTENT(IN) :: PLEG_DELTA, PLEGI_DELTA, PHUGI, PHVG
141 REAL,
DIMENSION(:),
INTENT(IN) :: PFLXC_CA, PFLXC_GV, PFLXC_VG_C, PFLXC_VN_C
153 REAL,
DIMENSION(:,:),
INTENT(IN) :: PTG
156 REAL,
DIMENSION(:),
INTENT(IN) :: PDQSAT_G, PDQSAT_V, PDQSATI_N
164 REAL,
DIMENSION(:),
INTENT(IN) :: PHVGS, PHVNS
170 REAL,
DIMENSION(:),
INTENT(IN) :: PTA_IC, PQA_IC
174 REAL,
DIMENSION(:),
INTENT(IN) :: PSW_UP, PSW_RAD, PLW_RAD
179 REAL,
DIMENSION(:),
INTENT(IN) :: PDELTA_V
182 REAL,
DIMENSION(:),
INTENT(IN) :: PDELTAT_V, PDELTAT_N, PDELTAT_G
187 REAL,
DIMENSION(:),
INTENT(OUT) :: PRN_V, PRN_G
191 REAL,
DIMENSION(:),
INTENT(OUT) :: PLW_UP
194 REAL,
DIMENSION(:),
INTENT(OUT) :: PH_N_A
197 REAL,
DIMENSION(:),
INTENT(OUT) :: PEVAP_C_A, PEVAP_N_A, PEVAPN
202 REAL,
DIMENSION(:),
INTENT(OUT) :: PLEG, PLEGI, PLES, PLEL
208 REAL,
DIMENSION(:),
INTENT(OUT) :: PEMIS
215 REAL,
DIMENSION(SIZE(PEK%XTV(:))) :: ZWORK
218 REAL,
DIMENSION(SIZE(PEK%XTV(:))) :: ZSAIR, ZSAIRC
222 REAL,
DIMENSION(SIZE(PEK%XTV(:))) :: ZEVAP_CV
225 REAL,
DIMENSION(SIZE(PEK%XTV(:))) :: ZQSATN_V, ZQSATIN_N, ZQSATN_G
233 REAL(KIND=JPRB) :: ZHOOK_HANDLE
239 IF (
lhook)
CALL dr_hook(
'ISBA_FLUXES_MEB',0,zhook_handle)
247 dek%XLWNET_V(:) = dek%XLWNET_V(:) + plwnet_v_dtv(:)*pdeltat_v(:) &
248 + plwnet_v_dtg(:)*pdeltat_g(:) &
249 + plwnet_v_dtn(:)*pdeltat_n(:)
251 dek%XLWNET_G(:) = dek%XLWNET_G(:) + plwnet_g_dtv(:)*pdeltat_v(:) &
252 + plwnet_g_dtg(:)*pdeltat_g(:) &
253 + plwnet_g_dtn(:)*pdeltat_n(:)
255 dek%XLWNET_N(:) = dek%XLWNET_N(:) + plwnet_n_dtv(:)*pdeltat_v(:) &
256 + plwnet_n_dtg(:)*pdeltat_g(:) &
257 + plwnet_n_dtn(:)*pdeltat_n(:)
261 plw_up(:) = plw_rad(:) - (dek%XLWNET_V(:) + dek%XLWNET_G(:) + dek%XLWNET_N
266 CALL isba_emis_meb(pek%XPSN, ppsna, psigma_f, psigma_fn, pek%TSNOW%EMIS
279 dk%XTSRAD(:) = ((plw_up(:) - plw_rad(:)*(1.0-pemis(:)))/(
xstefan*pemis
284 prn_v(:) = dek%XSWNET_V(:) + dek%XLWNET_V(:)
286 prn_g(:) = dek%XSWNET_G(:) + dek%XLWNET_G(:)
288 dmk%XRNSNOW(:) = dek%XSWNET_N(:) + dek%XLWNET_N(:)
293 dk%XRN(:) = prn_g(:) + prn_v(:) + dmk%XRNSNOW(:)
301 zsair(:) = pthrmb_ta(:) + pthrma_ta(:)*pta_ic(:)
302 zsairc(:) = pthrmb_tc(:) + pthrma_tc(:)*pek%XTC(:)
309 dek%XH_CA(:) = pflxc_ca(:) *( zsairc(:)
318 dmk%XHSNOW(:) = dek%XH_GN(:) + ph_n_a(:)
322 dk%XH(:) = dek%XH_CA(:) + ph_n_a(:)
332 zqsatn_g(:) = pqsat_g(:) + pdqsat_g(:) * pdeltat_g(:)
333 zqsatn_v(:) = pqsat_v(:) + pdqsat_v(:) * pdeltat_v(:)
334 zqsatin_n(:) = pqsati_n(:) + pdqsati_n(:) * pdeltat_n(:)
339 zwork(:) = (1.-pek%XPSN(:)-kk%XFF(:)) * pflxc_gv(:)
340 pleg(:) = zwork(:)*pleg_delta(:) *( dk%XHUG(:) *zqsatn_g(:) - pek%XQC
345 zwork(:) = kk%XFF(:) * pflxc_gv(:)*( zqsatn_g(:) - pek%XQC(:) )
346 dek%XLE_FLOOD(:) = zwork(:) * (1.-kk%XFFROZEN(:))*
xlvtt 347 dek%XLEI_FLOOD(:) = zwork(:) * kk%XFFROZEN(:) *
xlstt 351 zevap_cv(:) = (1.-ppsncv(:)) * phvgs(:) * pflxc_cv(:)*( zqsatn_v(:) - pek%XQC
355 dek%XLER_CV(:) = ( (1.-ppsna(:))*pek%XPSN(:) * pflxc_vn_c(:) +
362 dek%XLEV_CV(:) = pltt(:) * zevap_cv(:)
366 dek%XLETR_CV(:) = dek%XLEV_CV(:) - dek%XLER_CV(:)
370 dek%XLES_CV(:) = ppsncv(:) *
xlstt * phvns(:) * pflxc_cv(:)*( zqsatn_v
375 dek%XLE_CV(:) = dek%XLEV_CV(:) + dek%XLES_CV(:)
379 zwork(:) = pflxc_gn(:)*(zqsatin_n(:) - pek%XQC(:))*pek%XPSN(:)*(1
385 dek%XLETR(:) = dek%XLETR_CV(:)
390 dek%XLEV(:) = dek%XLETR(:) + dek%XLER_CV(:)
395 dek%XLER(:) = dek%XLER_CV(:)
399 zwork(:) = pflxc_n_a(:) *( zqsatin_n(:) - pqa_ic(:))* pek%XPSN
403 ples(:) = ( pflxc_gn(:) *( zqsatin_n(:) - pek%XQC(:))* pek%XPSN
407 plel(:) = pltt(:)*(dek%XEVAP_GN(:) + pevap_n_a(:)) - ples(:)
411 pevapn(:) = (plel(:) + ples(:))/pltt(:)
416 dek%XLE_GV(:) = dek%XLE_FLOOD(:) + dek%XLEI_FLOOD(:) + plegi(:) + pleg
422 pevap_c_a(:) = pflxc_ca(:) *( pek%XQC(:) - pqa_ic(:))*(1.0 - pek%XPSN(:)
430 dk%XEVAP(:) = pevap_c_a(:) + pevap_n_a(:)
434 pek%XLE(:) = dk%XEVAP(:)*pltt(:)
438 dk%XLEI(:) = ples(:) + plegi(:) + dek%XLEI_FLOOD(:)
442 dk%XSUBL(:) = dk%XLEI(:)/ pltt(:)
444 IF (
lhook)
CALL dr_hook(
'ISBA_FLUXES_MEB',1,zhook_handle)
subroutine isba_fluxes_meb(KK, PK, PEK, DK, DEK, DMK, PRHOA, PLTT,
subroutine isba_emis_meb(PPSN, PPSNA, PSIGMA_F, PSIGMA_FN, PEMIS_N, PEMIS)