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