SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
diag_isban.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_isba_n (DGEI, DGI, &
7  hprogram, &
8  prn, ph, ple, plei, 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  prnc, phc, plec, pgfluxc, pswdc, pswuc, plwdc, &
12  plwuc, pfmuc, pfmvc, pt2m_min, pt2m_max, pleic, &
13  phu2m_min, phu2m_max, pwind10m, pwind10m_max, &
14  pevap, pevapc, psubl, psublc )
15 ! ###############################################################################
16 !
17 !!**** *DIAG_ISBA_n * - Stores ISBA diagnostics
18 !!
19 !! PURPOSE
20 !! -------
21 !
22 !!** METHOD
23 !! ------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !!
29 !! AUTHOR
30 !! ------
31 !! V. Masson
32 !!
33 !! MODIFICATIONS
34 !! -------------
35 !! Original 01/2004
36 !! Modified 01/2006 : sea flux parameterization.
37 !! Modified 08/2009 : new diag
38 ! B. decharme 04/2013 : Add EVAP and SUBL diag
39 !!------------------------------------------------------------------
40 !
41 !
42 !
44 USE modd_diag_isba_n, ONLY : diag_isba_t
45 !
46 USE modd_surf_par, ONLY : xundef
47 !
48 !
49 !
50 USE yomhook ,ONLY : lhook, dr_hook
51 USE parkind1 ,ONLY : jprb
52 !
53 IMPLICIT NONE
54 !
55 !* 0.1 declarations of arguments
56 !
57 !
58 TYPE(diag_evap_isba_t), INTENT(INOUT) :: dgei
59 TYPE(diag_isba_t), INTENT(INOUT) :: dgi
60 !
61  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
62 !
63 REAL, DIMENSION(:), INTENT(OUT) :: prn ! Net radiation (W/m2)
64 REAL, DIMENSION(:), INTENT(OUT) :: ph ! Sensible heat flux (W/m2)
65 REAL, DIMENSION(:), INTENT(OUT) :: ple ! Total latent heat flux (W/m2)
66 REAL, DIMENSION(:), INTENT(OUT) :: plei ! Sublimation latent heat flux (W/m2)
67 REAL, DIMENSION(:), INTENT(OUT) :: pgflux ! Storage flux (W/m2)
68 REAL, DIMENSION(:), INTENT(OUT) :: pevap ! Total evapotranspiration (kg/m2/s)
69 REAL, DIMENSION(:), INTENT(OUT) :: psubl ! Sublimation (kg/m2/s)
70 REAL, DIMENSION(:), INTENT(OUT) :: pri ! Richardson number (-)
71 REAL, DIMENSION(:), INTENT(OUT) :: pcd ! drag coefficient (W/s2)
72 REAL, DIMENSION(:), INTENT(OUT) :: pch ! transf. coef heat (W/s)
73 REAL, DIMENSION(:), INTENT(OUT) :: pce ! transf. coef vapor (W/s/K)
74 REAL, DIMENSION(:), INTENT(OUT) :: pqs
75 REAL, DIMENSION(:), INTENT(OUT) :: pz0 ! rough. length wind (m)
76 REAL, DIMENSION(:), INTENT(OUT) :: pz0h ! rough. length heat (m)
77 REAL, DIMENSION(:), INTENT(OUT) :: pts ! surface temperature (K)
78 REAL, DIMENSION(:), INTENT(OUT) :: pt2m ! temperature at 2m (K)
79 REAL, DIMENSION(:), INTENT(OUT) :: pq2m ! humidity at 2m (kg/kg)
80 REAL, DIMENSION(:), INTENT(OUT) :: phu2m ! relative humidity at 2m (-)
81 REAL, DIMENSION(:), INTENT(OUT) :: pzon10m ! zonal wind at 10m (m/s)
82 REAL, DIMENSION(:), INTENT(OUT) :: pmer10m ! meridian wind at 10m(m/s)
83 REAL, DIMENSION(:), INTENT(OUT) :: pswd ! incoming short-wave radiation (W/m2)
84 REAL, DIMENSION(:), INTENT(OUT) :: pswu ! upward short-wave radiation (W/m2)
85 REAL, DIMENSION(:), INTENT(OUT) :: plwd ! incoming long-wave radiation (W/m2)
86 REAL, DIMENSION(:), INTENT(OUT) :: plwu ! upward long-wave radiation (W/m2)
87 REAL, DIMENSION(:,:), INTENT(OUT) :: pswbd ! incoming short-wave radiation by spectral band (W/m2)
88 REAL, DIMENSION(:,:), INTENT(OUT) :: pswbu ! upward short-wave radiation by spectral band (W/m2)
89 REAL, DIMENSION(:), INTENT(OUT) :: pfmu ! zonal momentum flux (Pa)
90 REAL, DIMENSION(:), INTENT(OUT) :: pfmv ! meridian momentum flux (Pa)
91 REAL, DIMENSION(:), INTENT(OUT) :: prnc ! Net radiation (J/m2)
92 REAL, DIMENSION(:), INTENT(OUT) :: phc ! Sensible heat flux (J/m2)
93 REAL, DIMENSION(:), INTENT(OUT) :: plec ! Total latent heat flux (J/m2)
94 REAL, DIMENSION(:), INTENT(OUT) :: pleic ! Sublimation latent heat flux (J/m2)
95 REAL, DIMENSION(:), INTENT(OUT) :: pgfluxc ! Storage flux (J/m2)
96 REAL, DIMENSION(:), INTENT(OUT) :: pevapc ! Total evapotranspiration (kg/m2/s)
97 REAL, DIMENSION(:), INTENT(OUT) :: psublc ! Sublimation (kg/m2/s)
98 REAL, DIMENSION(:), INTENT(OUT) :: pswdc ! incoming short wave radiation (J/m2)
99 REAL, DIMENSION(:), INTENT(OUT) :: pswuc ! outgoing short wave radiation (J/m2)
100 REAL, DIMENSION(:), INTENT(OUT) :: plwdc ! incoming long wave radiation (J/m2)
101 REAL, DIMENSION(:), INTENT(OUT) :: plwuc ! outgoing long wave radiation (J/m2)
102 REAL, DIMENSION(:), INTENT(OUT) :: pfmuc ! zonal friction
103 REAL, DIMENSION(:), INTENT(OUT) :: pfmvc ! meridian friction
104 REAL, DIMENSION(:), INTENT(OUT) :: pt2m_min ! Minimum temperature at 2m (K)
105 REAL, DIMENSION(:), INTENT(OUT) :: pt2m_max ! Maximum temperature at 2m (K)
106 REAL, DIMENSION(:), INTENT(OUT) :: phu2m_min! Minimum relative humidity at 2m (-)
107 REAL, DIMENSION(:), INTENT(OUT) :: phu2m_max! Maximum relative humidity at 2m (-)
108 REAL, DIMENSION(:), INTENT(OUT) :: pwind10m ! wind at 10m (m/s)
109 REAL, DIMENSION(:), INTENT(OUT) :: pwind10m_max! Maximum wind at 10m (m/s)
110 REAL(KIND=JPRB) :: zhook_handle
111 !
112 !
113 !* 0.2 declarations of local variables
114 !
115 !-------------------------------------------------------------------------------------
116 !
117 IF (lhook) CALL dr_hook('DIAG_ISBA_N',0,zhook_handle)
118 IF (dgi%LSURF_BUDGET) THEN
119  prn = dgi%XAVG_RN
120  ph = dgi%XAVG_H
121  ple = dgi%XAVG_LE
122  plei = dgi%XAVG_LEI
123  pgflux = dgi%XAVG_GFLUX
124  pswd = dgi%XAVG_SWD
125  pswu = dgi%XAVG_SWU
126  plwd = dgi%XAVG_LWD
127  plwu = dgi%XAVG_LWU
128  pswbd = dgi%XAVG_SWBD
129  pswbu = dgi%XAVG_SWBU
130  pfmu = dgi%XAVG_FMU
131  pfmv = dgi%XAVG_FMV
132 END IF
133 !
134 IF (dgei%LSURF_EVAP_BUDGET) THEN
135  pevap = dgei%XAVG_EVAP
136  psubl = dgei%XAVG_SUBL
137 ENDIF
138 !
139 IF (dgei%LSURF_BUDGETC) THEN
140  prnc = dgei%XAVG_RNC
141  phc = dgei%XAVG_HC
142  plec = dgei%XAVG_LEC
143  pleic = dgei%XAVG_LEIC
144  pgfluxc = dgei%XAVG_GFLUXC
145  pevapc = dgei%XAVG_EVAPC
146  psublc = dgei%XAVG_SUBLC
147  pswdc = dgi%XAVG_SWDC
148  pswuc = dgi%XAVG_SWUC
149  plwdc = dgi%XAVG_LWDC
150  plwuc = dgi%XAVG_LWUC
151  pfmuc = dgi%XAVG_FMUC
152  pfmvc = dgi%XAVG_FMVC
153 END IF
154 !
155 IF (dgi%N2M>=1 .OR. dgi%LSURF_BUDGET .OR. dgei%LSURF_BUDGETC) pts = dgi%XAVG_TS
156 !
157 IF (dgi%N2M>=1) THEN
158  pri = dgi%XAVG_RI
159  pt2m = dgi%XAVG_T2M
160  pt2m_min = dgi%XAVG_T2M_MIN
161  pt2m_max = dgi%XAVG_T2M_MAX
162  pq2m = dgi%XAVG_Q2M
163  phu2m = dgi%XAVG_HU2M
164  phu2m_min= dgi%XAVG_HU2M_MIN
165  phu2m_max= dgi%XAVG_HU2M_MAX
166  pzon10m = dgi%XAVG_ZON10M
167  pmer10m = dgi%XAVG_MER10M
168  pwind10m = dgi%XAVG_WIND10M
169  pwind10m_max = dgi%XAVG_WIND10M_MAX
170 END IF
171 !
172 IF (dgi%LCOEF) THEN
173  pcd = dgi%XAVG_CD
174  pch = dgi%XAVG_CH
175  pce = dgi%XAVG_CE
176  pz0 = dgi%XAVG_Z0
177  pz0h = dgi%XAVG_Z0H
178 END IF
179 !
180 IF (dgi%LSURF_VARS) THEN
181  pqs = dgi%XAVG_QS
182 ENDIF
183 !
184 IF (lhook) CALL dr_hook('DIAG_ISBA_N',1,zhook_handle)
185 !
186 !-------------------------------------------------------------------------------------
187 !
188 END SUBROUTINE diag_isba_n
subroutine diag_isba_n(DGEI, DGI, HPROGRAM, PRN, PH, PLE, PLEI, PGFLUX, PRI, PCD, PCH, PCE, PQS, PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M, PSWD, PSWU, PLWD, PLWU, PSWBD, PSWBU, 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_isban.F90:6