SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
diag_flaken.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_flake_n (DGF, &
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_FLAKE_n * - diagnostics for lakes
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 !! V.Masson 10/2013 Adds min and max 2m parameters
37 !! Modified 04/2013 P.LeMoigne : cumulated diag & t2m min/max
38 !!------------------------------------------------------------------
39 !
40 
41 !
42 !
44 !
45 USE modd_surf_par, ONLY : xundef
46 !
47 !
48 USE yomhook ,ONLY : lhook, dr_hook
49 USE parkind1 ,ONLY : jprb
50 !
51 IMPLICIT NONE
52 !
53 !* 0.1 declarations of arguments
54 !
55 !
56 TYPE(diag_flake_t), INTENT(INOUT) :: dgf
57 !
58  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
59 !
60 REAL, DIMENSION(:), INTENT(OUT) :: prn ! Net radiation (W/m2)
61 REAL, DIMENSION(:), INTENT(OUT) :: ph ! Sensible heat flux (W/m2)
62 REAL, DIMENSION(:), INTENT(OUT) :: ple ! Total latent heat flux (W/m2)
63 REAL, DIMENSION(:), INTENT(OUT) :: plei ! Sublimation latent heat flux (W/m2)
64 REAL, DIMENSION(:), INTENT(OUT) :: pgflux ! Storage flux (W/m2)
65 REAL, DIMENSION(:), INTENT(OUT) :: pevap ! Total evapotranspiration (kg/m2/s)
66 REAL, DIMENSION(:), INTENT(OUT) :: psubl ! Sublimation (kg/m2/s)
67 REAL, DIMENSION(:), INTENT(OUT) :: pri ! Richardson number (-)
68 REAL, DIMENSION(:), INTENT(OUT) :: pcd ! drag coefficient (W/s2)
69 REAL, DIMENSION(:), INTENT(OUT) :: pch ! transf. coef heat (W/s)
70 REAL, DIMENSION(:), INTENT(OUT) :: pce ! transf. coef vapor (W/s/K)
71 REAL, DIMENSION(:), INTENT(OUT) :: pqs
72 REAL, DIMENSION(:), INTENT(OUT) :: pz0 ! rough. length wind (m)
73 REAL, DIMENSION(:), INTENT(OUT) :: pz0h ! rough. length heat (m)
74 REAL, DIMENSION(:), INTENT(OUT) :: pts ! surface temperature (K)
75 REAL, DIMENSION(:), INTENT(OUT) :: pt2m ! temperature at 2m (K)
76 REAL, DIMENSION(:), INTENT(OUT) :: pq2m ! humidity at 2m (kg/kg)
77 REAL, DIMENSION(:), INTENT(OUT) :: phu2m ! relative humidity at 2m (-)
78 REAL, DIMENSION(:), INTENT(OUT) :: pzon10m ! zonal wind at 10m (m/s)
79 REAL, DIMENSION(:), INTENT(OUT) :: pmer10m ! meridian wind at 10m(m/s)
80 REAL, DIMENSION(:), INTENT(OUT) :: pswd ! incoming short-wave radiation (W/m2)
81 REAL, DIMENSION(:), INTENT(OUT) :: pswu ! upward short-wave radiation (W/m2)
82 REAL, DIMENSION(:), INTENT(OUT) :: plwd ! incoming long-wave radiation (W/m2)
83 REAL, DIMENSION(:), INTENT(OUT) :: plwu ! upward long-wave radiation (W/m2)
84 REAL, DIMENSION(:,:), INTENT(OUT) :: pswbd ! incoming short-wave radiation by spectral band (W/m2)
85 REAL, DIMENSION(:,:), INTENT(OUT) :: pswbu ! upward short-wave radiation by spectral band (W/m2)
86 REAL, DIMENSION(:), INTENT(OUT) :: pfmu ! zonal momentum flux (Pa)
87 REAL, DIMENSION(:), INTENT(OUT) :: pfmv ! meridian momentum flux (Pa)
88 REAL, DIMENSION(:), INTENT(OUT) :: prnc ! Net radiation (J/m2)
89 REAL, DIMENSION(:), INTENT(OUT) :: phc ! Sensible heat flux (J/m2)
90 REAL, DIMENSION(:), INTENT(OUT) :: plec ! Total latent heat flux (J/m2)
91 REAL, DIMENSION(:), INTENT(OUT) :: pleic ! Sublimation latent heat flux (J/m2)
92 REAL, DIMENSION(:), INTENT(OUT) :: pgfluxc ! Storage flux (J/m2)
93 REAL, DIMENSION(:), INTENT(OUT) :: pevapc ! Total evapotranspiration (kg/m2/s)
94 REAL, DIMENSION(:), INTENT(OUT) :: psublc ! Sublimation (kg/m2/s)
95 REAL, DIMENSION(:), INTENT(OUT) :: pswdc ! incoming short wave radiation (J/m2)
96 REAL, DIMENSION(:), INTENT(OUT) :: pswuc ! outgoing short wave radiation (J/m2)
97 REAL, DIMENSION(:), INTENT(OUT) :: plwdc ! incoming long wave radiation (J/m2)
98 REAL, DIMENSION(:), INTENT(OUT) :: plwuc ! outgoing long wave radiation (J/m2)
99 REAL, DIMENSION(:), INTENT(OUT) :: pfmuc ! zonal friction
100 REAL, DIMENSION(:), INTENT(OUT) :: pfmvc ! meridian friction
101 REAL, DIMENSION(:), INTENT(OUT) :: pt2m_min ! Minimum temperature at 2m (K)
102 REAL, DIMENSION(:), INTENT(OUT) :: pt2m_max ! Maximum temperature at 2m (K)
103 REAL, DIMENSION(:), INTENT(OUT) :: phu2m_min! Minimum relative humidity at 2m (-)
104 REAL, DIMENSION(:), INTENT(OUT) :: phu2m_max! Maximum relative humidity at 2m (-)
105 REAL, DIMENSION(:), INTENT(OUT) :: pwind10m ! wind at 10m (m/s)
106 REAL, DIMENSION(:), INTENT(OUT) :: pwind10m_max! Maximum wind at 10m (m/s)
107 REAL(KIND=JPRB) :: zhook_handle
108 !
109 !
110 !* 0.2 declarations of local variables
111 !
112 !-------------------------------------------------------------------------------------
113 !
114 IF (lhook) CALL dr_hook('DIAG_FLAKE_N',0,zhook_handle)
115 IF (dgf%LSURF_BUDGET) THEN
116  prn = dgf%XRN
117  ph = dgf%XH
118  ple = dgf%XLE
119  plei = dgf%XLEI
120  pgflux = dgf%XGFLUX
121  pevap = dgf%XEVAP
122  psubl = dgf%XSUBL
123  pswd = dgf%XSWD
124  pswu = dgf%XSWU
125  plwd = dgf%XLWD
126  plwu = dgf%XLWU
127  pswbd = dgf%XSWBD
128  pswbu = dgf%XSWBU
129  pfmu = dgf%XFMU
130  pfmv = dgf%XFMV
131 END IF
132 !
133 IF (dgf%LSURF_BUDGETC) THEN
134  prnc = dgf%XRNC
135  phc = dgf%XHC
136  plec = dgf%XLEC
137  pleic = dgf%XLEIC
138  pgfluxc = dgf%XGFLUXC
139  pevapc = dgf%XEVAPC
140  psublc = dgf%XSUBLC
141  pswdc = dgf%XSWDC
142  pswuc = dgf%XSWUC
143  plwdc = dgf%XLWDC
144  plwuc = dgf%XLWUC
145  pfmuc = dgf%XFMUC
146  pfmvc = dgf%XFMVC
147 END IF
148 !
149 IF (dgf%N2M>=1 .OR. dgf%LSURF_BUDGET .OR. dgf%LSURF_BUDGETC) pts = dgf%XDIAG_TS
150 !
151 IF (dgf%N2M>=1) THEN
152  pri = dgf%XRI
153  pt2m = dgf%XT2M
154  pt2m_min = dgf%XT2M_MIN
155  pt2m_max = dgf%XT2M_MAX
156  pq2m = dgf%XQ2M
157  phu2m = dgf%XHU2M
158  phu2m_min= dgf%XHU2M_MIN
159  phu2m_max= dgf%XHU2M_MAX
160  pzon10m = dgf%XZON10M
161  pmer10m = dgf%XMER10M
162  pwind10m = dgf%XWIND10M
163  pwind10m_max = dgf%XWIND10M_MAX
164 END IF
165 !
166 IF (dgf%LCOEF) THEN
167  pcd = dgf%XCD
168  pch = dgf%XCH
169  pce = dgf%XCE
170  pz0 = dgf%XZ0
171  pz0h = dgf%XZ0H
172 END IF
173 !
174 IF (dgf%LSURF_VARS) THEN
175  pqs = dgf%XQS
176 ENDIF
177 !
178 IF (lhook) CALL dr_hook('DIAG_FLAKE_N',1,zhook_handle)
179 !
180 !-------------------------------------------------------------------------------------
181 !
182 END SUBROUTINE diag_flake_n
subroutine diag_flake_n(DGF, 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_flaken.F90:6