SURFEX v8.1
General documentation of Surfex
isba_ceb.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 !#########
6 SUBROUTINE isba_ceb(IO, KK, PK, PEK, DK, DEK, DMK, &
7  HIMPLICIT_WIND, PTSTEP, PPEW_A_COEF, &
8  PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF,&
9  PPEQ_B_COEF, PSW_RAD, PLW_RAD, PEXNS, PEXNA, PTA, &
10  PVMOD, PQA, PRR, PSR, PPS, PZREF, PUREF, PDIRCOSZW,&
11  PF5, PFFG_NOSNOW, PFFV_NOSNOW, PRHOA, PCS, &
12  PSOILCONDZ, PSOILHCAPZ, PFROZEN1, PTDEEP_A, &
13  PGRNDFLUX, PFLSN_COR, PSNOW_THRUFAL, PDELTA, PHUGI,&
14  PALBT, PEMIST, PDEEP_FLUX, PUSTAR, PAC_AGG, PHU_AGG )
15 ! ##########################################################################
16 !
17 !
18 !!**** *ISBA_CEB*
19 !!
20 !! PURPOSE
21 !! -------
22 ! Monitor for the calculation of the surface composit energy budget
23 !! call of drag, e_budget, and isba_fluxes
24 !
25 !!** METHOD
26 !! ------
27 !
28 !! EXTERNAL
29 !! --------
30 !!
31 !! IMPLICIT ARGUMENTS
32 !! ------------------
33 !!
34 !!
35 !! REFERENCE
36 !! ---------
37 !!
38 !! Noilhan and Planton (1989)
39 !!
40 !! AUTHOR
41 !! ------
42 !! B. Decharme * Meteo-France *
43 !!
44 !! MODIFICATIONS
45 !! -------------
46 !! Original 10/03/95
47 !! (B. Decharme) 03/16 Bug : limitation of Er for Interception reservoir
48 !! PTSTEP insted of ZTSTEP in drag.F90
49 !-------------------------------------------------------------------------------
50 !
51 !* 0. DECLARATIONS
52 ! ------------
53 !
56 USE modd_diag_n, ONLY : diag_t
59 !
60 USE modd_surf_par, ONLY : xundef
61 !
62 USE modd_surf_atm, ONLY : lcpl_arp
63 !
64 USE modi_drag
65 USE modi_e_budget
66 USE modi_isba_fluxes
67 !
68 USE mode_thermos
69 !
70 USE yomhook ,ONLY : lhook, dr_hook
71 USE parkind1 ,ONLY : jprb
72 !
73 IMPLICIT NONE
74 !
75 !* 0.1 declarations of arguments
76 ! -------------------------
77 !
78 TYPE(isba_options_t), INTENT(INOUT) :: IO
79 TYPE(isba_k_t), INTENT(INOUT) :: KK
80 TYPE(isba_p_t), INTENT(INOUT) :: PK
81 TYPE(isba_pe_t), INTENT(INOUT) :: PEK
82 TYPE(diag_t), INTENT(INOUT) :: DK
83 TYPE(diag_evap_isba_t), INTENT(INOUT) :: DEK
84 TYPE(diag_misc_isba_t), INTENT(INOUT) :: DMK
85 !
86  CHARACTER(LEN=*), INTENT(IN) :: HIMPLICIT_WIND ! wind implicitation option
87 ! ! 'OLD' = direct
88 ! ! 'NEW' = Taylor serie, order 1
89 REAL, INTENT(IN) :: PTSTEP ! timestep of the integration
90 REAL, DIMENSION(:), INTENT(IN) :: PPEW_A_COEF, PPEW_B_COEF, &
91  PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, &
92  PPEQ_B_COEF
93 ! PPEW_A_COEF = A-wind coefficient (m2s/kg)
94 ! PPEW_B_COEF = B-wind coefficient (m/s)
95 ! PPET_A_COEF = A-air temperature coefficient
96 ! PPET_B_COEF = B-air temperature coefficient
97 ! PPEQ_A_COEF = A-air specific humidity coefficient
98 ! PPEQ_B_COEF = B-air specific humidity coefficient
99 !
100 REAL, DIMENSION(:), INTENT(IN) :: PSW_RAD, PLW_RAD
101 ! PSW_RAD = incoming solar radiation
102 ! PLW_RAD = atmospheric infrared radiation
103 
104 REAL, DIMENSION(:), INTENT(IN) :: PEXNA, PEXNS, PTA, PVMOD, PQA, PRR, PSR, PPS
105 ! PEXNA= Exner function near surface atmospheric variables
106 ! PEXNS = Exner function at the surface
107 ! PTA = 2m temperature
108 ! PVMOD = module of the horizontal wind
109 ! NOTE it should be input as >= 1. (m)
110 ! PQA = specific humidity
111 ! PPS = surface pressure
112 ! PRR = rain rate
113 ! PSR = snow rate
114 !
115 REAL, DIMENSION(:), INTENT(IN) :: PZREF, PUREF
116 ! PZREF = reference height of the first
117 ! atmospheric level
118 ! PUREF = reference height of the wind
119 ! NOTE this is different from ZZREF
120 ! ONLY in stand-alone/forced mode,
121 ! NOT when coupled to a model (MesoNH)
122 !
123 REAL, DIMENSION(:), INTENT(IN) :: PF5
124 ! PF5 = water stress function for Hv
125 REAL, DIMENSION(:), INTENT(IN) :: PDIRCOSZW
126 ! PDIRCOSZW = Cosinus of the angle between the normal to the surface and the vertical
127 !
128 REAL, DIMENSION(:), INTENT(IN) :: PFFG_NOSNOW, PFFV_NOSNOW
129 !
130 REAL, DIMENSION(:), INTENT(IN) :: PRHOA
131 ! PRHOA = near-ground air density
132 !
133 REAL, DIMENSION(:), INTENT(IN) :: PCS
134 ! PEMIS = emissivity
135 ! PCS = heat capacity of the snow (K m2 J-1)
136 REAL, DIMENSION(:), INTENT(IN) :: PGRNDFLUX, PFLSN_COR, PSNOW_THRUFAL
137 ! PGRNDFLUX = soil/snow interface flux (W/m2) using
138 ! ISBA-SNOW3L option
139 ! PFLSN_COR = soil/snow interface correction flux to conserve energy (W/m2)
140 ! PSNOW_THRUFAL = snow runoff/melt leaving pack and available
141 ! at the surface for runoff or infiltration
142 ! [kg/(m2 s)]
143 REAL, DIMENSION(:,:), INTENT(IN) :: PSOILCONDZ, PSOILHCAPZ
144 ! PSOILCONDZ= ISBA-DF Soil conductivity profile [W/(m K)]
145 ! PSOILHCAPZ=ISBA-DF Soil heat capacity profile [J/(m3 K)]
146 !
147 REAL, DIMENSION(:), INTENT(IN) :: PFROZEN1
148 ! PFROZEN1 = ice fraction in supurficial soil
149 !
150 REAL, DIMENSION(:), INTENT(IN) :: PTDEEP_A
151 ! PTDEEP_A = Deep soil temperature
152 ! coefficient depending on flux
153 !inout
154 !
155 REAL, DIMENSION(:), INTENT(INOUT) :: PDELTA
156 ! PDELTA = fraction of the foliage covered
157 ! by intercepted water
158 !out
159 !
160 REAL, DIMENSION(:), INTENT(OUT) :: PHUGI
161 ! PHUGI = ground (ice) relative humidity
162 !
163 REAL, DIMENSION(:), INTENT(OUT) :: PALBT, PEMIST
164 ! PALBT = averaged albedo
165 ! PEMIST = averaged emissivity
166 !
167 REAL, DIMENSION(:), INTENT(OUT) :: PDEEP_FLUX ! Heat flux at bottom of ISBA (W/m2)
168 !
169 REAL, DIMENSION(:), INTENT(OUT) :: PUSTAR
170 ! PUSTAR = friction velocity
171 !
172 REAL, DIMENSION(:), INTENT(OUT) :: PAC_AGG ! aggregated aerodynamic conductance
173  ! for evaporative flux calculations
174 REAL, DIMENSION(:), INTENT(OUT) :: PHU_AGG ! aggregated relative humidity
175  ! for evaporative flux calculations
176 !
177 !
178 !* 0.2 declarations of local parameters
179 !
180 REAL, PARAMETER :: ZDEKTH_COR = 0.6
181 ! ZDEKTH_COR = depth over which the correction flux is applied
182 !
183 REAL, PARAMETER :: ZDTG1_COR = 10.0
184 ! ZDTG1_COR = Delta temperature limit to comput the correction flux (K)
185 !
186 !
187 !* 0.3 declarations of local variables
188 !
189 REAL, DIMENSION(SIZE(PTA)) :: ZQSAT ! expression for the saturation specific humidity
190 !
191 REAL, DIMENSION(SIZE(PTA)) :: ZDQSAT ! expression for the saturation specific humidity derivative
192 !
193 REAL, DIMENSION(SIZE(PTA)) :: ZTA_IC, ZQA_IC, ZUSTAR2_IC ! TA, QA and friction updated values
194 ! ! if implicit coupling with atmosphere used.
195 !
196 REAL, DIMENSION(SIZE(PTA)) :: ZLEG_DELTA ! soil evaporation delta fn
197 REAL, DIMENSION(SIZE(PTA)) :: ZLEGI_DELTA ! soil sublimation delta fn
198 !
199 REAL, DIMENSION(SIZE(PTA)) :: ZT2M ! restore temperature before time integration (K)
200 REAL, DIMENSION(SIZE(PTA)) :: ZTSM ! surface temperature before time integration (K)
201 !
202 REAL, DIMENSION(SIZE(PEK%XTG,1),SIZE(PEK%XTG,2)) :: ZFLUX_COR, ZLAYERHCAP
203 ! ZFLUX_COR = correction flux by layer to conserve energy (W/m2)
204 !
205 REAL, DIMENSION(SIZE(PTA)) :: ZGRNDFLUX, ZTOTALHCAP, ZWORK
206 !
207 INTEGER :: INJ, INL, JI, JL
208 LOGICAL :: LEXPLICIT_SNOW
209 !
210 !* 0.4 declarations of local time spliting variables
211 !
212 ! Working arrays for flux averaging over time split
213 !
214 REAL, DIMENSION(SIZE(PTA)) :: ZDEEP_FLUX, ZLE_FLOOD, ZLEI_FLOOD, &
215  ZRN, ZH, ZLE, ZLEG, ZLEV, &
216  ZLES, ZLER, ZLETR, ZEVAP, &
217  ZGFLUX, ZMELTADV, ZMELT, &
218  ZRESTORE, ZLEGI, ZUSTAR2, &
219  ZAC_AGG, ZHU_AGG
220 !
221 REAL, DIMENSION(SIZE(PTA)) :: ZDEEP_FLUX_SUM, ZLE_FLOOD_SUM, ZLEI_FLOOD_SUM, &
222  ZRN_SUM, ZH_SUM, ZLE_SUM, ZLEG_SUM, ZLEV_SUM, &
223  ZLES_SUM, ZLER_SUM, ZLETR_SUM, ZEVAP_SUM, &
224  ZGFLUX_SUM, ZMELTADV_SUM, ZMELT_SUM, &
225  ZRESTORE_SUM, ZLEGI_SUM, ZUSTAR2_SUM, &
226  ZAC_AGG_SUM, ZHU_AGG_SUM
227 !
228 REAL, PARAMETER :: ZTSPLIT = 300. ! s Minimum time tstep required to time-split energy budget
229 INTEGER :: ITSPLIT, JSPLIT
230 REAL :: ZTSTEP, ZNSPLIT
231 !
232 REAL(KIND=JPRB) :: ZHOOK_HANDLE
233 !
234 !-------------------------------------------------------------------------------
235 !
236 IF (lhook) CALL dr_hook('ISBA_CEB',0,zhook_handle)
237 !
238 !-------------------------------------------------------------------------------
239 !
240 !* 1.0 Preliminaries
241 ! -------------
242 !
243 inj=SIZE(pek%XTG,1)
244 inl=SIZE(pek%XTG,2)
245 !
246 !local init
247 !
248 zqsat(:) = xundef
249 zta_ic(:) = xundef
250 zqa_ic(:) = xundef
251 zustar2_ic(:) = xundef
252 zleg_delta(:) = xundef
253 zlegi_delta(:) = xundef
254 zdqsat(:) = xundef
255 !
256 zdeep_flux(:) = xundef
257 zle_flood(:) = xundef
258 zlei_flood(:) = xundef
259 zrn(:) = xundef
260 zh(:) = xundef
261 zle(:) = xundef
262 zleg(:) = xundef
263 zlev(:) = xundef
264 zles(:) = xundef
265 zler(:) = xundef
266 zletr(:) = xundef
267 zevap(:) = xundef
268 zgflux(:) = xundef
269 zmeltadv(:) = xundef
270 zmelt(:) = xundef
271 zrestore(:) = xundef
272 zlegi(:) = xundef
273 zac_agg(:) = xundef
274 zhu_agg(:) = xundef
275 !
276 zustar2_sum(:) = 0.0
277 zevap_sum(:) = 0.0
278 !
279 zrn_sum(:) = 0.0
280 zh_sum(:) = 0.0
281 zgflux_sum(:) = 0.0
282 zle_sum(:) = 0.0
283 !
284 zleg_sum(:) = 0.0
285 zlegi_sum(:) = 0.0
286 zlev_sum(:) = 0.0
287 zles_sum(:) = 0.0
288 zler_sum(:) = 0.0
289 zletr_sum(:) = 0.0
290 zle_flood_sum(:) = 0.0
291 zlei_flood_sum(:) = 0.0
292 !
293 zdeep_flux_sum(:) = 0.0
294 zmeltadv_sum(:) = 0.0
295 zmelt_sum(:) = 0.0
296 zrestore_sum(:) = 0.0
297 zac_agg_sum(:) = 0.0
298 zhu_agg_sum(:) = 0.0
299 !
300 !-------------------------------------------------------------------------------
301 !
302 zgrndflux(: ) = pgrndflux(:)
303 !
304 zflux_cor(:,:) = 0.0
305 !
306 !-------------------------------------------------------------------------------
307 !
308 !* 2.0 Correction flux to conserv energy budget
309 ! ----------------------------------------
310 !
311 lexplicit_snow=(pek%TSNOW%SCHEME == '3-L' .OR. pek%TSNOW%SCHEME == 'CRO')
312 !
313 IF(lexplicit_snow.AND.io%CISBA/='DIF')THEN
314 !
315  zflux_cor(:,1)=pek%XPSN(:)*pflsn_cor(:)
316 !
317 ELSEIF(lexplicit_snow.AND.io%CISBA=='DIF')THEN
318 !
319  zlayerhcap(:,:) = 0.0
320  ztotalhcap(:) = 0.0
321 !
322 ! To conserv energy, the correction flux is distributed at least
323 ! over the first layers of the soil, ZDEKTH_COR. This method prevent
324 ! numerical oscillations especially when explicit snow vanishes
325 !
326  zwork(:) = min(pk%XDG(:,inl),zdekth_cor)
327 !
328  zlayerhcap(:,1)= 1.0/dmk%XCT(:)
329  ztotalhcap(: )= 1.0/dmk%XCT(:)
330  DO jl=2,inl
331  DO ji=1,inj
332  zlayerhcap(ji,jl) = psoilhcapz(ji,jl) * min( pk%XDZG(ji,jl), &
333  max(0.0,zwork(ji)-pk%XDG(ji,jl) +pk%XDZG(ji,jl)) )
334  ztotalhcap(ji ) = ztotalhcap(ji) + zlayerhcap(ji,jl)
335  ENDDO
336  ENDDO
337 !
338  DO jl=1,inl
339  DO ji=1,inj
340  IF(ztotalhcap(ji)>0.0)THEN
341  zflux_cor(ji,jl) = pek%XPSN(ji)*pflsn_cor(ji)*zlayerhcap(ji,jl)/ztotalhcap(ji)
342  ENDIF
343  ENDDO
344  ENDDO
345 !
346 ! The second correction is computed if the delta temperature
347 ! due to snow/soil ground flux is superior to ZDTG1_COR (K)
348 ! Especially relevant when PPSN ~ 1 over vegetated area
349 !
350  zwork(:)=ptstep*dmk%XCT(:)*pek%XPSN(:)*abs(pgrndflux(:))
351 !
352  WHERE(ztotalhcap(:)>0.0.AND.zwork(:)>=zdtg1_cor)
353  zgrndflux(:) = pgrndflux(:)*zlayerhcap(:,1)/ztotalhcap(:)
354  ENDWHERE
355 !
356  DO jl=2,inl
357  DO ji=1,inj
358  IF(ztotalhcap(ji)>0.0.AND.zwork(ji)>=zdtg1_cor)THEN
359  zflux_cor(ji,jl)=zflux_cor(ji,jl)+pek%XPSN(ji)*pgrndflux(ji) &
360  *zlayerhcap(ji,jl)/ztotalhcap(ji)
361  ENDIF
362  ENDDO
363  ENDDO
364 !
365 ENDIF
366 !
367 !-------------------------------------------------------------------------------
368 !
369 IF(lcpl_arp)THEN
370  itsplit = 1
371 ELSE
372  itsplit = max(1,nint(ptstep/ztsplit)) ! number of split-time steps
373 ENDIF
374 !
375 znsplit = REAL(itsplit)
376 !
377 ztstep = ptstep/znsplit ! split time step
378 !
379 !-------------------------------------------------------------------------------
380 !
381 DO jsplit=1,itsplit
382 !
383 ! Save surface and sub-surface temperature values at beginning of time step for
384 ! budget and flux calculations:
385 !
386  ztsm(:) = pek%XTG(:,1)
387  zt2m(:) = pek%XTG(:,2)
388 !
389 !
390 !* 3.0 Aerodynamic drag and heat transfer coefficients
391 ! -----------------------------------------------
392 !
393 ! In DRAG, we use the timestep of ISBA (PTSTEP) and not the split time step (ZTSTEP)
394 ! because diagnostic canopy evaporation (Er) must be consistent with PWR water
395 ! mass to limit negative dripping in hydro_veg
396 !
397  CALL drag(io%CISBA, pek%TSNOW%SCHEME, io%CCPSURF, ptstep, pek%XTG(:,1), pek%XWG(:,1), &
398  pek%XWGI(:,1), pexns, pexna, pta, pvmod, pqa, prr, psr, pps, dmk%XRS, &
399  pek%XVEG, dk%XZ0, dk%XZ0EFF, dk%XZ0H, kk%XWFC(:,1), kk%XWSAT(:,1), &
400  pek%XPSNG, pek%XPSNV, pzref, puref, pdircoszw, pdelta, pf5, pek%XRESA,&
401  dk%XCH, dk%XCD, dk%XCDN, dk%XRI, dk%XHUG, phugi, dmk%XHV, dk%XHU, &
402  pk%XCPS, dk%XQS, kk%XFFG, kk%XFFV, kk%XFF, pffg_nosnow, pffv_nosnow, &
403  zleg_delta, zlegi_delta, pek%XWR, prhoa, pk%XLVTT, pqsat=zqsat )
404 !
405 !* 4.0 Resolution of the surface and soil energy budget
406 ! ------------------------------------------------
407 !
408  CALL e_budget(io, kk, pk, pek, dk, dmk, himplicit_wind, &
409  ztstep, puref, ppew_a_coef, ppew_b_coef, ppet_a_coef, &
410  ppeq_a_coef, ppet_b_coef, ppeq_b_coef, pvmod, ztsm, zt2m, &
411  psw_rad, plw_rad, pta, pqa, pps, prhoa, pexns, pexna, &
412  phugi, zleg_delta, zlegi_delta, zgrndflux, zflux_cor, &
413  psoilcondz, psoilhcapz, palbt, pemist, zqsat, zdqsat, &
414  pfrozen1, ptdeep_a, zta_ic, zqa_ic, zustar2_ic, zdeep_flux, &
415  zrestore )
416 !
417 !* 5.0 Energy and momentum fluxes
418 ! --------------------------
419 !
420 !*******************************************************************************
421 ! WARNING: at this stage, ZALBT and ZEMIST have two different meanings according
422 ! to the ISBA snow-scheme option:
423 ! 'D95' : they represent aggregated (snow + flood + snow-flood-free) albedo and emissivity
424 ! '3-L' : they represent flood + snow-flood-free albedo and emissivity
425 !*******************************************************************************
426 !
427  CALL isba_fluxes(io, kk, pk, pek, dmk, ztstep, &
428  psw_rad, plw_rad, zta_ic, zqa_ic, prhoa, pexns, pexna, &
429  dk%XHUG, phugi, zleg_delta, zlegi_delta, pdelta, pf5, &
430  pcs, ztsm, zt2m, pfrozen1, palbt, pemist, zqsat, zdqsat, &
431  psnow_thrufal, zrn, zh, zle, zleg, zlegi, zlev, zles, &
432  zler, zletr, zevap, zgflux, zmeltadv, zmelt, psoilcondz, &
433  zle_flood, zlei_flood )
434 !
435 !
436 !* 6.0 Aggregated coefficients
437 ! -----------------------
438 !
439 ! Compute aggregated coefficients for evaporation
440 ! Sum(LEV+LEG+LEGI+LES) = ACagg * Lv * RHOA * (HUagg.Qsat - Qa)
441 !
442  zac_agg(:) = 1. / pek%XRESA(:) / pk%XLVTT(:) &
443  * ( pk%XLVTT(:) * pek%XVEG(:) * (1.-pek%XPSNV(:)) * dmk%XHV(:) &
444  + pk%XLVTT(:) *(1.-pek%XVEG(:))* (1.-pek%XPSNG(:)) * (1.-pfrozen1(:)) &
445  + pk%XLSTT(:) *(1.-pek%XVEG(:))* (1.-pek%XPSNG(:)) * pfrozen1(:) &
446  + pk%XLSTT(:) * pek%XPSN (:) )
447 !
448  WHERE(zac_agg(:)>0.0)
449  zhu_agg(:) = 1. / (pek%XRESA(:) * zac_agg(:)) / pk%XLVTT(:) &
450  * ( pk%XLVTT(:)* pek%XVEG(:) *(1.-pek%XPSNV(:)) *dmk%XHV(:) &
451  + pk%XLVTT(:)*(1.-pek%XVEG(:))*(1.-pek%XPSNG(:))*(1.-pfrozen1(:))*dk%XHUG(:) &
452  + pk%XLSTT(:)*(1.-pek%XVEG(:))*(1.-pek%XPSNG(:))* pfrozen1(:) *phugi(:) &
453  + pk%XLSTT(:)* pek%XPSN (:) )
454  ENDWHERE
455 !
456  zustar2_sum(:) = zustar2_sum(:) + zustar2_ic(:)
457 !
458  zevap_sum(:) = zevap_sum(:) + zevap(:)
459 !
460  zrn_sum(:) = zrn_sum(:) + zrn(:)
461  zh_sum(:) = zh_sum(:) + zh(:)
462  zgflux_sum(:) = zgflux_sum(:) + zgflux(:)
463  zle_sum(:) = zle_sum(:) + zle(:)
464 !
465  zleg_sum(:) = zleg_sum(:) + zleg(:)
466  zlegi_sum(:) = zlegi_sum(:) + zlegi(:)
467  zlev_sum(:) = zlev_sum(:) + zlev(:)
468  zles_sum(:) = zles_sum(:) + zles(:)
469  zler_sum(:) = zler_sum(:) + zler(:)
470  zletr_sum(:) = zletr_sum(:) + zletr(:)
471  zle_flood_sum(:) = zle_flood_sum(:) + zle_flood(:)
472  zlei_flood_sum(:) = zlei_flood_sum(:) + zlei_flood(:)
473 !
474  zdeep_flux_sum(:) = zdeep_flux_sum(:) + zdeep_flux(:)
475  zmeltadv_sum(:) = zmeltadv_sum(:) + zmeltadv(:)
476  zmelt_sum(:) = zmelt_sum(:) + zmelt(:)
477  zrestore_sum(:) = zrestore_sum(:) + zrestore(:)
478  zac_agg_sum(:) = zac_agg_sum(:) + zac_agg(:)
479  zhu_agg_sum(:) = zhu_agg_sum(:) + zhu_agg(:)
480 !
481 !-------------------------------------------------------------------------------
482 !
483 ENDDO
484 !
485 pustar(:) = sqrt(zustar2_sum(:)/znsplit)
486 !
487 dk%XEVAP (:) = zevap_sum(:) / znsplit
488 !
489 dk%XRN (:) = zrn_sum(:) / znsplit
490 dk%XH (:) = zh_sum(:) / znsplit
491 dk%XGFLUX (:) = zgflux_sum(:) / znsplit
492 pek%XLE (:) = zle_sum(:) / znsplit
493 !
494 dek%XLEG (:) = zleg_sum(:) / znsplit
495 dek%XLEGI (:) = zlegi_sum(:) / znsplit
496 dek%XLEV (:) = zlev_sum(:) / znsplit
497 dek%XLES (:) = zles_sum(:) / znsplit
498 dek%XLER (:) = zler_sum(:) / znsplit
499 dek%XLETR (:) = zletr_sum(:) / znsplit
500 dek%XLE_FLOOD (:) = zle_flood_sum(:) / znsplit
501 dek%XLEI_FLOOD(:) = zlei_flood_sum(:) / znsplit
502 !
503 pdeep_flux(:) = zdeep_flux_sum(:) / znsplit
504 dek%XMELTADV (:) = zmeltadv_sum(:) / znsplit
505 dek%XMELT (:) = zmelt_sum(:) / znsplit
506 dek%XRESTORE (:) = zrestore_sum(:) / znsplit
507 pac_agg(:) = zac_agg_sum(:) / znsplit
508 phu_agg(:) = zhu_agg_sum(:) / znsplit
509 !
510 !-------------------------------------------------------------------------------
511 !
512 IF (lhook) CALL dr_hook('ISBA_CEB',1,zhook_handle)
513 !
514 !-------------------------------------------------------------------------------
515 !
516 END SUBROUTINE isba_ceb
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
subroutine e_budget(IO, KK, PK, PEK, DK, DMK, HIMPLICIT_WIND, PTSTEP, PUREF, PPEW_A_COEF, PPEW_B_COEF, PPET_
Definition: e_budget.F90:8
logical lhook
Definition: yomhook.F90:15
subroutine isba_ceb(IO, KK, PK, PEK, DK, DEK, DMK, HIMPLICIT_WIND, PTSTEP, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PSW_RAD, PLW_RAD, PEXNS, PEXNA, PTA, PVMOD, PQA, PRR, PSR, PPS, PZREF, PUREF, PDIRCOSZW, PF5, PFFG_NOSNOW, PFFV_NOSNOW, PRHOA, PCS, PSOILCONDZ, PSOILHCAPZ, PFROZEN1, PTDEEP_A, PGRNDFLUX, PFLSN_COR, PSNOW_THRUFAL, PDELTA, PHUGI, PALBT, PEMIST, PDEEP_FLUX, PUSTAR, PAC_AGG, PHU_AGG)
Definition: isba_ceb.F90:15
subroutine isba_fluxes(IO, KK, PK, PEK, DMK, PTSTEP, PSW_RAD, PLW_RAD, PTA, PQA, PRHOA, PEXNS, P
Definition: isba_fluxes.F90:8
subroutine drag(HISBA, HSNOW_ISBA, HCPSURF, PTSTEP, PTG, PWG, PWGI, PEXNS, PEXNA, PTA, PVMOD, PQA, PRR, PSR, PPS, PRS, PVEG, PZ0, PZ0EFF, PZ0H, PWFC, PWSAT, PPSNG, PPSNV, PZREF, PUREF, PDIRCOSZW, PDELTA, PF5, PRA, PCH, PCD, PCDN, PRI, PHUG, PHUGI, PHV, PHU, PCPS, PQS, PFFG, PFFV, PFF, PFFG_NOSNOW, PFFV_NOSNOW, PLEG_DELTA, PLEGI_DELTA, PWR, PRHOA, PLVTT, PQSAT)
Definition: drag.F90:13