SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
diag_tebn.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_teb_n (DGT, &
7  hprogram, &
8  prn, ph, ple, pgflux, pri, pcd, pch, pce, pqs, &
9  pz0, pz0h, pt2m, pts, pq2m, phu2m, pzon10m, pmer10m, &
10  pswd, pswu, plwd, plwu, pswbd, pswbu, pfmu, pfmv, &
11  pt2m_min, pt2m_max, phu2m_min, phu2m_max, &
12  pwind10m, pwind10m_max )
13 ! ###############################################################################
14 !
15 !!**** *DIAG_TEB_n * - diagnostics for TEB
16 !!
17 !! PURPOSE
18 !! -------
19 !
20 !!** METHOD
21 !! ------
22 !!
23 !! REFERENCE
24 !! ---------
25 !!
26 !!
27 !! AUTHOR
28 !! ------
29 !! V. Masson
30 !!
31 !! MODIFICATIONS
32 !! -------------
33 !! Original 01/2004
34 ! B. decharme 04/2013 : Add Ts diag
35 !!------------------------------------------------------------------
36 !
37 !
38 !
39 USE modd_diag_teb_n, ONLY : diag_teb_t
40 !
41 USE modd_surf_par, ONLY : xundef
42 !
43 !
44 USE yomhook ,ONLY : lhook, dr_hook
45 USE parkind1 ,ONLY : jprb
46 !
47 IMPLICIT NONE
48 !
49 !* 0.1 declarations of arguments
50 !
51 !
52 TYPE(diag_teb_t), INTENT(INOUT) :: dgt
53 !
54  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
55 !
56 REAL, DIMENSION(:), INTENT(OUT) :: prn ! Net radiation (W/m2)
57 REAL, DIMENSION(:), INTENT(OUT) :: ph ! Sensible heat flux (W/m2)
58 REAL, DIMENSION(:), INTENT(OUT) :: ple ! Latent heat flux (W/m2)
59 REAL, DIMENSION(:), INTENT(OUT) :: pgflux ! Storage flux (W/m2)
60 REAL, DIMENSION(:), INTENT(OUT) :: pri ! Richardson number (-)
61 REAL, DIMENSION(:), INTENT(OUT) :: pcd ! drag coefficient (W/s2)
62 REAL, DIMENSION(:), INTENT(OUT) :: pch ! transf. coef heat (W/s)
63 REAL, DIMENSION(:), INTENT(OUT) :: pce ! transf. coef vapor (W/s/K)
64 REAL, DIMENSION(:), INTENT(OUT) :: pz0 ! rough. length wind (m)
65 REAL, DIMENSION(:), INTENT(OUT) :: pqs
66 REAL, DIMENSION(:), INTENT(OUT) :: pz0h ! rough. length heat (m)
67 REAL, DIMENSION(:), INTENT(OUT) :: pts ! surface temperature (K)
68 REAL, DIMENSION(:), INTENT(OUT) :: pt2m ! temperature at 2m (K)
69 REAL, DIMENSION(:), INTENT(OUT) :: pq2m ! humidity at 2m (kg/kg)
70 REAL, DIMENSION(:), INTENT(OUT) :: phu2m ! relative humidity at 2m (-)
71 REAL, DIMENSION(:), INTENT(OUT) :: pzon10m ! zonal wind at 10m (m/s)
72 REAL, DIMENSION(:), INTENT(OUT) :: pmer10m ! meridian wind at 10m(m/s)
73 REAL, DIMENSION(:), INTENT(OUT) :: pswd ! incoming short-wave radiation (W/m2)
74 REAL, DIMENSION(:), INTENT(OUT) :: pswu ! upward short-wave radiation (W/m2)
75 REAL, DIMENSION(:), INTENT(OUT) :: plwd ! incoming long-wave radiation (W/m2)
76 REAL, DIMENSION(:), INTENT(OUT) :: plwu ! upward long-wave radiation (W/m2)
77 REAL, DIMENSION(:,:), INTENT(OUT) :: pswbd ! incoming short-wave radiation by spectral band (W/m2)
78 REAL, DIMENSION(:,:), INTENT(OUT) :: pswbu ! upward short-wave radiation by spectral band (W/m2)
79 REAL, DIMENSION(:), INTENT(OUT) :: pfmu ! zonal momentum flux (m2/s2)
80 REAL, DIMENSION(:), INTENT(OUT) :: pfmv ! meridian momentum flux (m2/s2)
81 REAL, DIMENSION(:), INTENT(OUT) :: pt2m_min ! Minimum temperature at 2m (K)
82 REAL, DIMENSION(:), INTENT(OUT) :: pt2m_max ! Maximum temperature at 2m (K)
83 REAL, DIMENSION(:), INTENT(OUT) :: phu2m_min! Minimum relative humidity at 2m (-)
84 REAL, DIMENSION(:), INTENT(OUT) :: phu2m_max! Maximum relative humidity at 2m (-)
85 REAL, DIMENSION(:), INTENT(OUT) :: pwind10m ! wind at 10m (m/s)
86 REAL, DIMENSION(:), INTENT(OUT) :: pwind10m_max! Maximum wind at 10m (m/s)
87 REAL(KIND=JPRB) :: zhook_handle
88 !
89 !
90 !* 0.2 declarations of local variables
91 !
92 !-------------------------------------------------------------------------------------
93 !
94 IF (lhook) CALL dr_hook('DIAG_TEB_N',0,zhook_handle)
95 IF (dgt%LSURF_BUDGET) THEN
96  prn = dgt%XRN
97  ph = dgt%XH
98  ple = dgt%XLE
99  pgflux = dgt%XGFLUX
100  pswd = dgt%XSWD
101  pswu = dgt%XSWU
102  plwd = dgt%XLWD
103  plwu = dgt%XLWU
104  pswbd = dgt%XSWBD
105  pswbu = dgt%XSWBU
106  pfmu = dgt%XFMU
107  pfmv = dgt%XFMV
108 END IF
109 !
110 IF (dgt%N2M>=1 .OR. dgt%LSURF_BUDGET) pts = dgt%XDIAG_TS
111 !
112 IF (dgt%N2M>=1) THEN
113  pri = dgt%XRI
114  pt2m = dgt%XT2M
115  pt2m_min = dgt%XT2M_MIN
116  pt2m_max = dgt%XT2M_MAX
117  pq2m = dgt%XQ2M
118  phu2m = dgt%XHU2M
119  phu2m_min= dgt%XHU2M_MIN
120  phu2m_max= dgt%XHU2M_MAX
121  pzon10m = dgt%XZON10M
122  pmer10m = dgt%XMER10M
123  pwind10m = dgt%XWIND10M
124  pwind10m_max = dgt%XWIND10M_MAX
125 END IF
126 !
127 IF (dgt%LCOEF) THEN
128  pcd = dgt%XCD
129  pch = dgt%XCH
130  pce = dgt%XCE
131  pz0 = dgt%XZ0
132  pz0h = dgt%XZ0H
133 END IF
134 !
135 IF (dgt%LSURF_VARS) THEN
136  pqs = dgt%XQS
137 ENDIF
138 !
139 IF (lhook) CALL dr_hook('DIAG_TEB_N',1,zhook_handle)
140 !
141 !-------------------------------------------------------------------------------------
142 !
143 END SUBROUTINE diag_teb_n
subroutine diag_teb_n(DGT, HPROGRAM, PRN, PH, PLE, PGFLUX, PRI, PCD, PCH, PCE, PQS, PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M, PSWD, PSWU, PLWD, PLWU, PSWBD, PSWBU, PFMU, PFMV, PT2M_MIN, PT2M_MAX, PHU2M_MIN, PHU2M_MAX, PWIND10M, PWIND10M_MAX)
Definition: diag_tebn.F90:6