SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
diag_surf_atmn.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 diag_surf_atm_n (DGEI, DGF, DGL, DGI, DGS, DGU, DGT, DGW, U, USS, &
7  hprogram)
8 ! #################################################################################
9 !
10 !!**** *DIAG_SURF_ATM_n * - Chooses the surface schemes for diagnostics
11 !!
12 !! PURPOSE
13 !! -------
14 !
15 !!** METHOD
16 !! ------
17 !!
18 !! REFERENCE
19 !! ---------
20 !!
21 !!
22 !! AUTHOR
23 !! ------
24 !! V. Masson
25 !!
26 !! MODIFICATIONS
27 !! -------------
28 !! Original 01/2004
29 !! Modified 01/2006 : sea flux parameterization.
30 !! Modified 08/2008 : cumulated fluxes
31 ! B. decharme 04/2013 : Add EVAP and SUBL diag
32 !!------------------------------------------------------------------
33 !
34 
35 !
36 !
37 !
38 !
39 !
40 !
44 USE modd_diag_isba_n, ONLY : diag_isba_t
47 USE modd_diag_teb_n, ONLY : diag_teb_t
49 USE modd_surf_atm_n, ONLY : surf_atm_t
51 !
52 USE modd_surf_conf, ONLY : cprogname
53 USE modd_data_cover_par, ONLY : ntilesfc
54 !
55 USE modi_diag_nature_n
56 USE modi_diag_sea_n
57 USE modi_diag_inland_water_n
58 USE modi_diag_town_n
59 USE modi_average_diag
60 !
61 USE modi_minzs_vert_shift
62 !
63 !
64 USE yomhook ,ONLY : lhook, dr_hook
65 USE parkind1 ,ONLY : jprb
66 !
67 IMPLICIT NONE
68 !
69 !* 0.1 declarations of arguments
70 !
71 !
72 TYPE(diag_evap_isba_t), INTENT(INOUT) :: dgei
73 TYPE(diag_flake_t), INTENT(INOUT) :: dgf
74 TYPE(diag_ideal_t), INTENT(INOUT) :: dgl
75 TYPE(diag_isba_t), INTENT(INOUT) :: dgi
76 TYPE(diag_seaflux_t), INTENT(INOUT) :: dgs
77 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
78 TYPE(diag_teb_t), INTENT(INOUT) :: dgt
79 TYPE(diag_watflux_t), INTENT(INOUT) :: dgw
80 TYPE(surf_atm_t), INTENT(INOUT) :: u
81 TYPE(surf_atm_sso_t), INTENT(INOUT) :: uss
82 !
83  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
84 !
85 !
86 !* 0.2 declarations of local variables
87 !
88 INTEGER :: jtile ! loop on type of surface
89 LOGICAL :: gnature, gtown, gwater, gsea ! .T. if the corresponding surface is represented
90 INTEGER :: jsw ! number of spectral whort wave bands
91 !
92 REAL, DIMENSION(SIZE(U%XSEA),NTILESFC) :: zfrac_tile! fraction of each tile
93 INTEGER, DIMENSION(5) :: ifact
94 REAL(KIND=JPRB) :: zhook_handle
95 !-------------------------------------------------------------------------------------
96 ! Preliminaries: Tile related operations
97 !-------------------------------------------------------------------------------------
98 !
99 IF (lhook) CALL dr_hook('DIAG_SURF_ATM_N',0,zhook_handle)
100  cprogname = hprogram
101 !
102 ! FLAGS for the various surfaces:
103 !
104 gsea = u%NDIM_SEA >0
105 gwater = u%NDIM_WATER >0
106 gtown = u%NDIM_TOWN >0
107 gnature = u%NDIM_NATURE >0
108 !
109 ! Tile counter:
110 !
111 jtile = 0
112 !
113 ! Fractions for each tile:
114 !
115 zfrac_tile(:,:) = 0.0
116 !
117 ! Number of spectral short wave bands for detailed radiation budget
118 jsw = SIZE(dgu%XSWBD_TILE,3)
119 !
120 !
121  CALL get_dims(ifact)
122 !
123 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
124 ! SEA Tile calculations:
125 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
126 !
127 ! first, pack vector...then call ALMA routine
128 !
129 jtile = jtile + 1
130 !
131 IF(gsea)THEN
132 !
133  zfrac_tile(:,jtile) = u%XSEA(:)
134 !
135  CALL treat_surf(jtile,u%NSIZE_SEA,u%NR_SEA,ifact)
136 !
137 ENDIF
138 !
139 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
140 ! INLAND WATER Tile calculations:
141 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
142 !
143 jtile = jtile + 1
144 !
145 IF(gwater)THEN
146 !
147  zfrac_tile(:,jtile) = u%XWATER(:)
148 !
149  CALL treat_surf(jtile,u%NSIZE_WATER,u%NR_WATER,ifact)
150 !
151 ENDIF
152 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
153 ! NATURAL SURFACE Tile calculations:
154 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
155 !
156 jtile = jtile + 1
157 !
158 IF(gnature)THEN
159 !
160  zfrac_tile(:,jtile) = u%XNATURE(:)
161 !
162  CALL treat_surf(jtile,u%NSIZE_NATURE,u%NR_NATURE,ifact)
163 !
164 ENDIF
165 !
166 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
167 ! URBAN Tile calculations:
168 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
169 !
170 jtile = jtile + 1
171 !
172 IF(gtown)THEN
173 !
174  zfrac_tile(:,jtile) = u%XTOWN(:)
175 !
176  CALL treat_surf(jtile,u%NSIZE_TOWN,u%NR_TOWN,ifact)
177 !
178 ENDIF
179 !
180 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
181 ! Grid box average fluxes/properties:
182 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
183 !
184  CALL average_diag(dgu%N2M, dgu%LT2MMW, dgu%LSURF_BUDGET, dgu%LSURF_BUDGETC, dgu%LCOEF, dgu%LSURF_VARS, &
185  zfrac_tile, dgu%XRN_TILE, dgu%XH_TILE, dgu%XLE_TILE, dgu%XLEI_TILE , &
186  dgu%XGFLUX_TILE,dgu%XRI_TILE, dgu%XCD_TILE, dgu%XCH_TILE, dgu%XCE_TILE, &
187  dgu%XT2M_TILE, dgu%XTS_TILE, dgu%XQ2M_TILE, dgu%XHU2M_TILE, &
188  dgu%XZON10M_TILE, dgu%XMER10M_TILE, &
189  dgu%XQS_TILE, dgu%XZ0_TILE, dgu%XZ0H_TILE, &
190  dgu%XSWD_TILE, dgu%XSWU_TILE, dgu%XSWBD_TILE, dgu%XSWBU_TILE, &
191  dgu%XLWD_TILE, dgu%XLWU_TILE, dgu%XFMU_TILE, dgu%XFMV_TILE, &
192  dgu%XRNC_TILE, dgu%XHC_TILE, dgu%XLEC_TILE, dgu%XGFLUXC_TILE, &
193  dgu%XSWDC_TILE, dgu%XSWUC_TILE, dgu%XLWDC_TILE, dgu%XLWUC_TILE, &
194  dgu%XFMUC_TILE, dgu%XFMVC_TILE, dgu%XT2M_MIN_TILE, &
195  dgu%XT2M_MAX_TILE, dgu%XLEIC_TILE, &
196  dgu%XAVG_RN, dgu%XAVG_H, dgu%XAVG_LE, dgu%XAVG_LEI, dgu%XAVG_GFLUX, &
197  dgu%XAVG_RI, dgu%XAVG_CD, dgu%XAVG_CH, dgu%XAVG_CE, &
198  dgu%XAVG_T2M, dgu%XAVG_TS, dgu%XAVG_Q2M, dgu%XAVG_HU2M, &
199  dgu%XAVG_ZON10M, dgu%XAVG_MER10M, &
200  dgu%XAVG_QS, dgu%XAVG_Z0, dgu%XAVG_Z0H, &
201  dgu%XDIAG_UREF, dgu%XDIAG_ZREF, &
202  dgu%XAVG_SWD, dgu%XAVG_SWU, dgu%XAVG_SWBD, dgu%XAVG_SWBU, &
203  dgu%XAVG_LWD, dgu%XAVG_LWU, dgu%XAVG_FMU, dgu%XAVG_FMV, &
204  dgu%XAVG_RNC, dgu%XAVG_HC, dgu%XAVG_LEC, dgu%XAVG_GFLUXC, &
205  dgu%XAVG_SWDC, dgu%XAVG_SWUC, dgu%XAVG_LWDC, dgu%XAVG_LWUC, &
206  dgu%XAVG_FMUC, dgu%XAVG_FMVC, dgu%XAVG_T2M_MIN, &
207  dgu%XAVG_T2M_MAX, dgu%XAVG_LEIC, &
208  dgu%XHU2M_MIN_TILE, dgu%XHU2M_MAX_TILE, dgu%XAVG_HU2M_MIN, &
209  dgu%XAVG_HU2M_MAX, dgu%XWIND10M_TILE, dgu%XWIND10M_MAX_TILE, &
210  dgu%XAVG_WIND10M, dgu%XAVG_WIND10M_MAX, &
211  dgu%XEVAP_TILE, dgu%XEVAPC_TILE, dgu%XAVG_EVAP, dgu%XAVG_EVAPC, &
212  dgu%XSUBL_TILE, dgu%XSUBLC_TILE, dgu%XAVG_SUBL, dgu%XAVG_SUBLC )
213 !
214 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
215 ! Quantities at 2 meters above the minimum orography of the grid mesh
216 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
217 !
218 IF (dgu%L2M_MIN_ZS) CALL get_2m
219 !
220 IF (lhook) CALL dr_hook('DIAG_SURF_ATM_N',1,zhook_handle)
221  CONTAINS
222 !=======================================================================================
223 SUBROUTINE get_2m
224 !
225 REAL, DIMENSION(SIZE(U%XSEA)) :: zps ! surface air pressure
226 REAL, DIMENSION(SIZE(U%XSEA)) :: zrhoa ! surface air density
227 REAL(KIND=JPRB) :: zhook_handle
228 !
229 IF (lhook) CALL dr_hook('DIAG_SURF_ATM_n:GET_2M',0,zhook_handle)
230 !
231  CALL minzs_vert_shift(u%XZS,uss%XMIN_ZS,dgu%XAVG_T2M,dgu%XAVG_Q2M,dgu%XPS,dgu%XRHOA, &
232  dgu%XAVG_T2M_MIN_ZS,dgu%XAVG_Q2M_MIN_ZS,zps,zrhoa)
233 dgu%XAVG_HU2M_MIN_ZS = dgu%XAVG_HU2M
234 !
235 IF (lhook) CALL dr_hook('DIAG_SURF_ATM_n:GET_2M',1,zhook_handle)
236 !
237 END SUBROUTINE get_2m
238 !
239 !=======================================================================================
240 !
241 SUBROUTINE get_dims(KFACT)
242 !
243 IMPLICIT NONE
244 !
245 INTEGER, DIMENSION(5), INTENT(OUT) :: kfact
246 REAL(KIND=JPRB) :: zhook_handle
247 !
248 IF (lhook) CALL dr_hook('DIAG_SURF_ATM_n:GET_DIMS',0,zhook_handle)
249 !
250 kfact(:)=0
251 !
252 IF (dgu%LSURF_BUDGET) kfact(1)=1
253 !
254 IF (dgu%LSURF_BUDGETC) kfact(2)=1
255 !
256 IF (dgu%N2M>=1) kfact(3)=1
257 !
258 IF (dgu%LCOEF) kfact(4)=1
259 !
260 IF (dgu%LSURF_VARS) kfact(5)=1
261 !
262 IF (lhook) CALL dr_hook('DIAG_SURF_ATM_n:GET_DIMS',1,zhook_handle)
263 !
264 END SUBROUTINE get_dims
265 !
266 !=======================================================================================
267 !
268 SUBROUTINE treat_surf(KTILE,KSIZE,KMASK,KFACT)
269 !
270 IMPLICIT NONE
271 !
272 INTEGER, INTENT(IN) :: ktile
273 INTEGER, INTENT(IN) :: ksize
274 INTEGER, DIMENSION(:), INTENT(IN) :: kmask
275 INTEGER, DIMENSION(5), INTENT(IN) :: kfact
276 !
277 REAL, DIMENSION(KSIZE) :: zp_ts ! surface temperature (K)
278 !
279 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_rn ! Net radiation (W/m2)
280 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_h ! sensible heat flux (W/m2)
281 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_le ! total latent heat flux (W/m2)
282 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_lei ! sublimation latent heat flux (W/m2)
283 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_gflux ! storage flux (W/m2)
284 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_evap ! total evapotranspiration (kg/m2/s)
285 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_subl ! sublimation (kg/m2/s)
286 !
287 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_swd ! short wave incoming radiation (W/m2)
288 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_swu ! short wave outgoing radiation (W/m2)
289 REAL, DIMENSION(KSIZE*KFACT(1),JSW*KFACT(1)) :: zp_swbd ! short wave incoming radiation by spectral band (W/m2)
290 REAL, DIMENSION(KSIZE*KFACT(1),JSW*KFACT(1)) :: zp_swbu ! short wave outgoing radiation by spectral band (W/m2)
291 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_lwd ! long wave incoming radiation (W/m2)
292 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_lwu ! long wave outgoing radiation (W/m2)
293 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_fmu ! zonal friction
294 REAL, DIMENSION(KSIZE*KFACT(1)) :: zp_fmv ! meridian friction
295 !
296 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_rnc ! Cumulated Net radiation (W/m2)
297 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_hc ! Cumulated sensible heat flux (W/m2)
298 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_lec ! Cumulated total latent heat flux (W/m2)
299 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_leic ! Cumulated sublimation latent heat flux (W/m2)
300 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_gfluxc ! Cumulated storage flux (W/m2)
301 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_evapc ! Cumulated total evapotranspiration (kg/m2)
302 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_sublc ! Cumulated sublimation (kg/m2)
303 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_swdc ! Cumulated short wave incoming radiation (W/m2)
304 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_swuc ! Cumulated short wave outgoing radiation (W/m2)
305 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_lwdc ! Cumulated long wave incoming radiation (W/m2)
306 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_lwuc ! Cumulated long wave outgoing radiation (W/m2)
307 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_fmuc ! Cumulated zonal friction
308 REAL, DIMENSION(KSIZE*KFACT(2)) :: zp_fmvc ! Cumulated meridian friction
309 !
310 REAL, DIMENSION(KSIZE*KFACT(3)) :: zp_ri ! Richardson number
311 REAL, DIMENSION(KSIZE*KFACT(3)) :: zp_t2m ! air temperature at 2 meters (K)
312 REAL, DIMENSION(KSIZE*KFACT(3)) :: zp_t2m_min ! Minimum air temperature at 2 meters (K)
313 REAL, DIMENSION(KSIZE*KFACT(3)) :: zp_t2m_max ! Maximum air temperature at 2 meters (K)
314 REAL, DIMENSION(KSIZE*KFACT(3)) :: zp_q2m ! air humidity at 2 meters (kg/kg)
315 REAL, DIMENSION(KSIZE*KFACT(3)) :: zp_hu2m ! air relative humidity at 2 meters (-)
316 REAL, DIMENSION(KSIZE*KFACT(3)) :: zp_hu2m_min ! Minimum air relative humidity at 2 meters (-)
317 REAL, DIMENSION(KSIZE*KFACT(3)) :: zp_hu2m_max ! Maximum air relative humidity at 2 meters (-)
318 REAL, DIMENSION(KSIZE*KFACT(3)) :: zp_zon10m ! zonal wind at 10 meters (m/s)
319 REAL, DIMENSION(KSIZE*KFACT(3)) :: zp_mer10m ! meridian wind at 10 meters (m/s)
320 REAL, DIMENSION(KSIZE*KFACT(3)) :: zp_wind10m ! wind at 10 meters (m/s)
321 REAL, DIMENSION(KSIZE*KFACT(3)) :: zp_wind10m_max ! Maximum wind at 10 meters (m/s)
322 !
323 REAL, DIMENSION(KSIZE*KFACT(4)) :: zp_cd ! drag coefficient for wind
324 REAL, DIMENSION(KSIZE*KFACT(4)) :: zp_ch ! drag coefficient for heat
325 REAL, DIMENSION(KSIZE*KFACT(4)) :: zp_ce ! drag coefficient for evaporation
326 REAL, DIMENSION(KSIZE*KFACT(4)) :: zp_z0 ! roughness length for momentum
327 REAL, DIMENSION(KSIZE*KFACT(4)) :: zp_z0h ! roughness length for heat
328 !
329 REAL, DIMENSION(KSIZE*KFACT(5)) :: zp_qs ! specific humidity
330 !
331 INTEGER :: jj, jjsw
332 REAL(KIND=JPRB) :: zhook_handle
333 !
334 IF (lhook) CALL dr_hook('DIAG_SURF_ATM_n:TREAT_SURF',0,zhook_handle)
335 !
336 IF (ktile==1) THEN
337  !
338  CALL diag_sea_n(dgl, dgs, u, &
339  hprogram, &
340  zp_rn, zp_h, zp_le, zp_lei, zp_gflux, &
341  zp_ri, zp_cd, zp_ch, zp_ce, &
342  zp_qs, zp_z0, zp_z0h, &
343  zp_t2m, zp_ts, zp_q2m, zp_hu2m, &
344  zp_zon10m, zp_mer10m, &
345  zp_swd, zp_swu, zp_swbd, zp_swbu, &
346  zp_lwd, zp_lwu, zp_fmu, zp_fmv, &
347  zp_rnc, zp_hc, zp_lec, zp_gfluxc, &
348  zp_swdc, zp_swuc, zp_lwdc, zp_lwuc, &
349  zp_fmuc, zp_fmvc, zp_t2m_min, &
350  zp_t2m_max, zp_leic, zp_hu2m_min, &
351  zp_hu2m_max, zp_wind10m, &
352  zp_wind10m_max, &
353  zp_evap, zp_evapc, zp_subl, zp_sublc )
354  !
355 ELSEIF (ktile==2) THEN
356  !
357  CALL diag_inland_water_n(dgf, dgl, dgw, u, &
358  hprogram, &
359  zp_rn, zp_h, zp_le, zp_lei, zp_gflux,&
360  zp_ri, zp_cd, zp_ch, zp_ce, &
361  zp_qs, zp_z0, zp_z0h, &
362  zp_t2m, zp_ts, zp_q2m, zp_hu2m, &
363  zp_zon10m, zp_mer10m, &
364  zp_swd, zp_swu, zp_swbd, zp_swbu, &
365  zp_lwd, zp_lwu, zp_fmu, zp_fmv, &
366  zp_rnc, zp_hc, zp_lec, zp_gfluxc, &
367  zp_swdc, zp_swuc, zp_lwdc, zp_lwuc, &
368  zp_fmuc, zp_fmvc, zp_t2m_min, &
369  zp_t2m_max, zp_leic, zp_hu2m_min, &
370  zp_hu2m_max, zp_wind10m, &
371  zp_wind10m_max, &
372  zp_evap, zp_evapc, zp_subl, zp_sublc )
373  !
374 ELSEIF (ktile==3) THEN
375  !
376  CALL diag_nature_n(dgei, dgl, dgi, u, &
377  hprogram, &
378  zp_rn, zp_h, zp_le, zp_lei, zp_gflux,&
379  zp_ri, zp_cd, zp_ch, zp_ce, &
380  zp_qs, zp_z0, zp_z0h, &
381  zp_t2m, zp_ts, zp_q2m, zp_hu2m, &
382  zp_zon10m, zp_mer10m, &
383  zp_swd, zp_swu, zp_swbd, zp_swbu, &
384  zp_lwd, zp_lwu, zp_fmu, zp_fmv, &
385  zp_rnc, zp_hc, zp_lec, zp_gfluxc, &
386  zp_swdc, zp_swuc, zp_lwdc, zp_lwuc, &
387  zp_fmuc, zp_fmvc, zp_t2m_min, &
388  zp_t2m_max, zp_leic, zp_hu2m_min, &
389  zp_hu2m_max, zp_wind10m, &
390  zp_wind10m_max, &
391  zp_evap, zp_evapc, zp_subl, zp_sublc )
392  !
393 ELSEIF (ktile==4) THEN
394  !
395  CALL diag_town_n(dgl, dgt, u, &
396  hprogram, &
397  zp_rn, zp_h, zp_le, zp_lei, zp_gflux,&
398  zp_ri, zp_cd, zp_ch, zp_ce, &
399  zp_qs, zp_z0, zp_z0h, &
400  zp_t2m, zp_ts, zp_q2m, zp_hu2m, &
401  zp_zon10m, zp_mer10m, &
402  zp_swd, zp_swu, zp_swbd, zp_swbu, &
403  zp_lwd, zp_lwu, zp_fmu, zp_fmv, &
404  zp_rnc, zp_hc, zp_lec, zp_gfluxc, &
405  zp_swdc, zp_swuc, zp_lwdc, zp_lwuc, &
406  zp_fmuc, zp_fmvc, zp_t2m_min, &
407  zp_t2m_max, zp_leic, zp_hu2m_min, &
408  zp_hu2m_max, zp_wind10m, &
409  zp_wind10m_max, &
410  zp_evap, zp_evapc, zp_subl, zp_sublc )
411  !
412 ENDIF
413 !
414 !----------------------------------------------------------------------
415 IF (dgu%LSURF_BUDGET) THEN
416  DO jj=1,ksize
417  dgu%XRN_TILE (kmask(jj),ktile) = zp_rn(jj)
418  dgu%XH_TILE (kmask(jj),ktile) = zp_h(jj)
419  dgu%XLE_TILE (kmask(jj),ktile) = zp_le(jj)
420  dgu%XLEI_TILE (kmask(jj),ktile) = zp_lei(jj)
421  dgu%XGFLUX_TILE (kmask(jj),ktile) = zp_gflux(jj)
422  dgu%XEVAP_TILE (kmask(jj),ktile) = zp_evap(jj)
423  dgu%XSUBL_TILE (kmask(jj),ktile) = zp_subl(jj)
424  dgu%XSWD_TILE (kmask(jj),ktile) = zp_swd(jj)
425  dgu%XSWU_TILE (kmask(jj),ktile) = zp_swu(jj)
426  dgu%XLWD_TILE (kmask(jj),ktile) = zp_lwd(jj)
427  dgu%XLWU_TILE (kmask(jj),ktile) = zp_lwu(jj)
428  dgu%XFMU_TILE (kmask(jj),ktile) = zp_fmu(jj)
429  dgu%XFMV_TILE (kmask(jj),ktile) = zp_fmv(jj)
430  DO jjsw=1, SIZE(dgu%XSWBD_TILE,3)
431  dgu%XSWBD_TILE (kmask(jj),ktile,jjsw) = zp_swbd(jj,jjsw)
432  dgu%XSWBU_TILE (kmask(jj),ktile,jjsw) = zp_swbu(jj,jjsw)
433  ENDDO
434  ENDDO
435 END IF
436 !
437 IF (dgu%LSURF_BUDGETC) THEN
438  DO jj=1,ksize
439  dgu%XRNC_TILE (kmask(jj),ktile) = zp_rnc(jj)
440  dgu%XHC_TILE (kmask(jj),ktile) = zp_hc(jj)
441  dgu%XLEC_TILE (kmask(jj),ktile) = zp_lec(jj)
442  dgu%XLEIC_TILE (kmask(jj),ktile) = zp_leic(jj)
443  dgu%XGFLUXC_TILE (kmask(jj),ktile) = zp_gfluxc(jj)
444  dgu%XEVAPC_TILE (kmask(jj),ktile) = zp_evapc(jj)
445  dgu%XSUBLC_TILE (kmask(jj),ktile) = zp_sublc(jj)
446  dgu%XSWDC_TILE (kmask(jj),ktile) = zp_swdc(jj)
447  dgu%XSWUC_TILE (kmask(jj),ktile) = zp_swuc(jj)
448  dgu%XLWDC_TILE (kmask(jj),ktile) = zp_lwdc(jj)
449  dgu%XLWUC_TILE (kmask(jj),ktile) = zp_lwuc(jj)
450  dgu%XFMUC_TILE (kmask(jj),ktile) = zp_fmuc(jj)
451  dgu%XFMVC_TILE (kmask(jj),ktile) = zp_fmvc(jj)
452  ENDDO
453 END IF
454 !
455 DO jj=1,ksize
456  dgu%XTS_TILE (kmask(jj),ktile) = zp_ts(jj)
457 ENDDO
458 !
459 IF (dgu%N2M>=1) THEN
460  DO jj=1,ksize
461  dgu%XRI_TILE (kmask(jj),ktile) = zp_ri(jj)
462  dgu%XT2M_TILE (kmask(jj),ktile) = zp_t2m(jj)
463  dgu%XT2M_MIN_TILE (kmask(jj),ktile) = zp_t2m_min(jj)
464  dgu%XT2M_MAX_TILE (kmask(jj),ktile) = zp_t2m_max(jj)
465  dgu%XQ2M_TILE (kmask(jj),ktile) = zp_q2m(jj)
466  dgu%XHU2M_TILE (kmask(jj),ktile) = zp_hu2m(jj)
467  dgu%XHU2M_MIN_TILE(kmask(jj),ktile) = zp_hu2m_min(jj)
468  dgu%XHU2M_MAX_TILE(kmask(jj),ktile) = zp_hu2m_max(jj)
469  dgu%XZON10M_TILE (kmask(jj),ktile) = zp_zon10m(jj)
470  dgu%XMER10M_TILE (kmask(jj),ktile) = zp_mer10m(jj)
471  dgu%XWIND10M_TILE (kmask(jj),ktile) = zp_wind10m(jj)
472  dgu%XWIND10M_MAX_TILE (kmask(jj),ktile) = zp_wind10m_max(jj)
473  ENDDO
474 END IF
475 !
476 IF (dgu%LCOEF) THEN
477  DO jj=1,ksize
478  dgu%XCD_TILE (kmask(jj),ktile) = zp_cd(jj)
479  dgu%XCH_TILE (kmask(jj),ktile) = zp_ch(jj)
480  dgu%XCE_TILE (kmask(jj),ktile) = zp_ce(jj)
481  dgu%XZ0_TILE (kmask(jj),ktile) = zp_z0(jj)
482  dgu%XZ0H_TILE (kmask(jj),ktile) = zp_z0h(jj)
483  ENDDO
484 END IF
485 IF (dgu%LSURF_VARS) THEN
486  DO jj=1,ksize
487  dgu%XQS_TILE (kmask(jj),ktile) = zp_qs(jj)
488  ENDDO
489 END IF
490 !----------------------------------------------------------------------
491 IF (lhook) CALL dr_hook('DIAG_SURF_ATM_n:TREAT_SURF',1,zhook_handle)
492 !
493 END SUBROUTINE treat_surf
494 !=======================================================================================
495 END SUBROUTINE diag_surf_atm_n
subroutine diag_inland_water_n(DGF, DGL, DGW, U, HPROGRAM, PRN, PH, PLE, PLEI, PGFLUX, PRI, PCD, PCH, PCE, PQS, PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M, PSWD, PSWU, PSWBD, PSWBU, PLWD, PLWU, PFMU, PFMV, PRNC, PHC, PLEC, PGFLUXC, PSWDC, PSWUC, PLWDC, PLWUC, PFMUC, PFMVC, PT2M_MIN, PT2M_MAX, PLEIC, PHU2M_MIN, PHU2M_MAX, PWIND10M, PWIND10M_MAX, PEVAP, PEVAPC, PSUBL, PSUBLC)
subroutine get_dims(KFACT)
subroutine diag_sea_n(DGL, DGS, U, HPROGRAM, PRN, PH, PLE, PLEI, PGFLUX, PRI, PCD, PCH, PCE, PQS, PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M, PSWD, PSWU, PSWBD, PSWBU, PLWD, PLWU, PFMU, PFMV, PRNC, PHC, PLEC, PGFLUXC, PSWDC, PSWUC, PLWDC, PLWUC, PFMUC, PFMVC, PT2M_MIN, PT2M_MAX, PLEIC, PHU2M_MIN, PHU2M_MAX, PWIND10M, PWIND10M_MAX, PEVAP, PEVAPC, PSUBL, PSUBLC)
Definition: diag_sean.F90:6
subroutine diag_town_n(DGL, DGT, U, HPROGRAM, PRN, PH, PLE, PLEI, PGFLUX, PRI, PCD, PCH, PCE, PQS, PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M, PSWD, PSWU, PSWBD, PSWBU, PLWD, PLWU, PFMU, PFMV, PRNC, PHC, PLEC, PGFLUXC, PSWDC, PSWUC, PLWDC, PLWUC, PFMUC, PFMVC, PT2M_MIN, PT2M_MAX, PLEIC, PHU2M_MIN, PHU2M_MAX, PWIND10M, PWIND10M_MAX, PEVAP, PEVAPC, PSUBL, PSUBLC)
Definition: diag_townn.F90:6
subroutine get_2m
subroutine minzs_vert_shift(PZS_MOY, PZS_MIN, PTA_2M, PQA_2M, PPA_2M, PRHOA_2M, PTA_2M_MIN, PQA_2M_MIN, PPA_2M_MIN, PRHOA_2M_MIN)
subroutine average_diag(K2M, OT2MMW, OSURF_BUDGET, OSURF_BUDGETC, OCOEF, OSURF_VARS, PFRAC_TILE, PRN_TILE, PH_TILE, PLE_TILE, PLEI_TILE, PGFLUX_TILE, PRI_TILE, PCD_TILE, PCH_TILE, PCE_TILE, PT2M_TILE, PTS_TILE, PQ2M_TILE, PHU2M_TILE, PZON10M_TILE, PMER10M_TILE, PQS_TILE, PZ0_TILE, PZ0H_TILE, PSWD_TILE, PSWU_TILE, PSWBD_TILE, PSWBU_TILE, PLWD_TILE, PLWU_TILE, PFMU_TILE, PFMV_TILE, PRNC_TILE, PHC_TILE, PLEC_TILE, PGFLUXC_TILE, PSWDC_TILE, PSWUC_TILE, PLWDC_TILE, PLWUC_TILE, PFMUC_TILE, PFMVC_TILE, PT2M_MIN_TILE, PT2M_MAX_TILE, PLEIC_TILE, PRN, PH, PLE, PLEI, PGFLUX, PRI, PCD, PCH, PCE, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M, PQS, PZ0, PZ0H, PUREF, PZREF, PSWD, PSWU, PSWBD, PSWBU, PLWD, PLWU, PFMU, PFMV, PRNC, PHC, PLEC, PGFLUXC, PSWDC, PSWUC, PLWDC, PLWUC, PFMUC, PFMVC, PT2M_MIN, PT2M_MAX, PLEIC, PHU2M_MIN_TILE, PHU2M_MAX_TILE, PHU2M_MIN, PHU2M_MAX, PWIND10M_TILE, PWIND10M_MAX_TILE, PWIND10M, PWIND10M_MAX, PEVAP_TILE, PEVAPC_TILE, PEVAP, PEVAPC, PSUBL_TILE, PSUBLC_TILE, PSUBL, PSUBLC)
Definition: average_diag.F90:6
subroutine treat_surf(KMASK, YTYPE)
subroutine diag_surf_atm_n(DGEI, DGF, DGL, DGI, DGS, DGU, DGT, DGW, U, USS, HPROGRAM)
subroutine diag_nature_n(DGEI, DGL, DGI, U, HPROGRAM, PRN, PH, PLE, PLEI, PGFLUX, PRI, PCD, PCH, PCE, PQS, PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M, PSWD, PSWU, PSWBD, PSWBU, PLWD, PLWU, PFMU, PFMV, PRNC, PHC, PLEC, PGFLUXC, PSWDC, PSWUC, PLWDC, PLWUC, PFMUC, PFMVC, PT2M_MIN, PT2M_MAX, PLEIC, PHU2M_MIN, PHU2M_MAX, PWIND10M, PWIND10M_MAX, PEVAP, PEVAPC, PSUBL, PSUBLC)
Definition: diag_naturen.F90:6