SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
diag_naturen.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_nature_n (DGEI, DGL, DGI, U, &
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, pswbd, pswbu, plwd, plwu, 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_NATURE_n * - Chooses the surface schemes for diagnostics over
18 !! natural continental parts
19 !!
20 !! PURPOSE
21 !! -------
22 !
23 !!** METHOD
24 !! ------
25 !!
26 !! REFERENCE
27 !! ---------
28 !!
29 !!
30 !! AUTHOR
31 !! ------
32 !! V. Masson
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !! Original 01/2004
37 !! Modified 01/2006 : sea flux parameterization.
38 !! Modified 08/2009 : new diag
39 ! B. decharme 04/2013 : Add EVAP and SUBL diag
40 ! P. Le Moigne 03/2015 : add diagnostics IDEAL case
41 !!------------------------------------------------------------------
42 !
43 
44 !
45 !
46 !
47 !
50 USE modd_diag_isba_n, ONLY : diag_isba_t
51 USE modd_surf_atm_n, ONLY : surf_atm_t
52 !
53 USE modd_surf_par, ONLY : xundef
54 !
55 USE modi_diag_isba_n
56 USE modi_diag_ideal_n
57 !
58 !
59 USE yomhook ,ONLY : lhook, dr_hook
60 USE parkind1 ,ONLY : jprb
61 !
62 IMPLICIT NONE
63 !
64 !* 0.1 declarations of arguments
65 !
66 !
67 TYPE(diag_evap_isba_t), INTENT(INOUT) :: dgei
68 TYPE(diag_ideal_t), INTENT(INOUT) :: dgl
69 TYPE(diag_isba_t), INTENT(INOUT) :: dgi
70 TYPE(surf_atm_t), INTENT(INOUT) :: u
71 !
72  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
73 !
74 REAL, DIMENSION(:), INTENT(OUT) :: prn ! Net radiation (W/m2)
75 REAL, DIMENSION(:), INTENT(OUT) :: ph ! Sensible heat flux (W/m2)
76 REAL, DIMENSION(:), INTENT(OUT) :: ple ! Total latent heat flux (W/m2)
77 REAL, DIMENSION(:), INTENT(OUT) :: plei ! Sublimation latent heat flux (W/m2)
78 REAL, DIMENSION(:), INTENT(OUT) :: pgflux ! Storage flux (W/m2)
79 REAL, DIMENSION(:), INTENT(OUT) :: pevap ! Total evapotranspiration (kg/m2/s)
80 REAL, DIMENSION(:), INTENT(OUT) :: psubl ! Sublimation (kg/m2/s)
81 REAL, DIMENSION(:), INTENT(OUT) :: pri ! Richardson number (-)
82 REAL, DIMENSION(:), INTENT(OUT) :: pcd ! drag coefficient (W/s2)
83 REAL, DIMENSION(:), INTENT(OUT) :: pch ! transf. coef heat (W/s)
84 REAL, DIMENSION(:), INTENT(OUT) :: pce ! transf. coef vapor (W/s/K)
85 REAL, DIMENSION(:), INTENT(OUT) :: pqs
86 REAL, DIMENSION(:), INTENT(OUT) :: pz0 ! rough. length wind (m)
87 REAL, DIMENSION(:), INTENT(OUT) :: pz0h ! rough. length heat (m)
88 REAL, DIMENSION(:), INTENT(OUT) :: pts ! surface temperature at 2m (K)
89 REAL, DIMENSION(:), INTENT(OUT) :: pt2m ! temperature at 2m (K)
90 REAL, DIMENSION(:), INTENT(OUT) :: pq2m ! humidity at 2m (kg/kg)
91 REAL, DIMENSION(:), INTENT(OUT) :: phu2m ! relative humidity at 2m (-)
92 REAL, DIMENSION(:), INTENT(OUT) :: pzon10m ! zonal wind at 10m (m/s)
93 REAL, DIMENSION(:), INTENT(OUT) :: pmer10m ! meridian wind at 10m(m/s)
94 REAL, DIMENSION(:), INTENT(OUT) :: pswd ! incoming short-wave radiation (W/m2)
95 REAL, DIMENSION(:), INTENT(OUT) :: pswu ! upward short-wave radiation (W/m2)
96 REAL, DIMENSION(:), INTENT(OUT) :: plwd ! incoming long-wave radiation (W/m2)
97 REAL, DIMENSION(:), INTENT(OUT) :: plwu ! upward long-wave radiation (W/m2)
98 REAL, DIMENSION(:,:), INTENT(OUT) :: pswbd ! incoming short-wave radiation by spectral band (W/m2)
99 REAL, DIMENSION(:,:), INTENT(OUT) :: pswbu ! upward short-wave radiation by spectral band (W/m2)
100 REAL, DIMENSION(:), INTENT(OUT) :: pfmu ! zonal momentum flux (Pa)
101 REAL, DIMENSION(:), INTENT(OUT) :: pfmv ! meridian momentum flux (Pa)
102 REAL, DIMENSION(:), INTENT(OUT) :: prnc ! Net radiation (J/m2)
103 REAL, DIMENSION(:), INTENT(OUT) :: phc ! Sensible heat flux (J/m2)
104 REAL, DIMENSION(:), INTENT(OUT) :: plec ! Total latent heat flux (J/m2)
105 REAL, DIMENSION(:), INTENT(OUT) :: pleic ! Sublimation latent heat flux (J/m2)
106 REAL, DIMENSION(:), INTENT(OUT) :: pgfluxc ! Storage flux (J/m2)
107 REAL, DIMENSION(:), INTENT(OUT) :: pevapc ! Total evapotranspiration (kg/m2/s)
108 REAL, DIMENSION(:), INTENT(OUT) :: psublc ! Sublimation (kg/m2/s)
109 REAL, DIMENSION(:), INTENT(OUT) :: pswdc ! incoming short wave radiation (J/m2)
110 REAL, DIMENSION(:), INTENT(OUT) :: pswuc ! outgoing short wave radiation (J/m2)
111 REAL, DIMENSION(:), INTENT(OUT) :: plwdc ! incoming long wave radiation (J/m2)
112 REAL, DIMENSION(:), INTENT(OUT) :: plwuc ! outgoing long wave radiation (J/m2)
113 REAL, DIMENSION(:), INTENT(OUT) :: pfmuc ! zonal friction
114 REAL, DIMENSION(:), INTENT(OUT) :: pfmvc ! meridian friction
115 REAL, DIMENSION(:), INTENT(OUT) :: pt2m_min ! Minimum temperature at 2m (K)
116 REAL, DIMENSION(:), INTENT(OUT) :: pt2m_max ! Maximum temperature at 2m (K)
117 REAL, DIMENSION(:), INTENT(OUT) :: phu2m_min! Minimum relative humidity at 2m (-)
118 REAL, DIMENSION(:), INTENT(OUT) :: phu2m_max! Maximum relative humidity at 2m (-)
119 REAL, DIMENSION(:), INTENT(OUT) :: pwind10m ! wind at 10m (m/s)
120 REAL, DIMENSION(:), INTENT(OUT) :: pwind10m_max! Maximum wind at 10m (m/s)
121 REAL(KIND=JPRB) :: zhook_handle
122 !
123 !
124 !* 0.2 declarations of local variables
125 !
126 !-------------------------------------------------------------------------------------
127 !
128 IF (lhook) CALL dr_hook('DIAG_NATURE_N',0,zhook_handle)
129 IF (u%CNATURE=='ISBA ' .OR. u%CNATURE=='TSZ0 ' ) THEN
130 !
131  CALL diag_isba_n(dgei, dgi, &
132  hprogram, &
133  prn, ph, ple, plei, pgflux, pri, pcd, pch, pce, pqs, &
134  pz0, pz0h, pt2m, pts, pq2m, phu2m, pzon10m, pmer10m, &
135  pswd, pswu, plwd, plwu, pswbd, pswbu, pfmu, pfmv, &
136  prnc, phc, plec, pgfluxc, pswdc, pswuc, plwdc, &
137  plwuc, pfmuc, pfmvc, pt2m_min, pt2m_max, pleic, &
138  phu2m_min, phu2m_max, pwind10m, pwind10m_max, &
139  pevap, pevapc, psubl, psublc )
140 !
141 ELSE IF (u%CNATURE=='FLUX ') THEN
142 !
143  CALL diag_ideal_n(dgl, hprogram, &
144  prn, ph, ple, plei, pgflux, pri, pcd, pch, pce, pqs, &
145  pz0, pz0h, pt2m, pts, pq2m, phu2m, pzon10m, pmer10m, &
146  pswd, pswu, plwd, plwu, pswbd, pswbu, pfmu, pfmv, &
147  prnc, phc, plec, pgfluxc, pswdc, pswuc, plwdc, &
148  plwuc, pfmuc, pfmvc, pt2m_min, pt2m_max, pleic, &
149  phu2m_min, phu2m_max, pwind10m, pwind10m_max, &
150  pevap, pevapc, psubl, psublc )
151 ELSE IF (u%CNATURE=='NONE ') THEN
152  prn = xundef
153  ph = xundef
154  ple = xundef
155  plei = xundef
156  pevap = xundef
157  psubl = xundef
158  pgflux = xundef
159  pri = xundef
160  pcd = xundef
161  pch = xundef
162  pce = xundef
163  pqs = xundef
164  pz0 = xundef
165  pz0h = xundef
166  pts = xundef
167  pt2m = xundef
168  pq2m = xundef
169  phu2m = xundef
170  pzon10m = xundef
171  pmer10m = xundef
172  pswd = xundef
173  pswu = xundef
174  pswbd = xundef
175  pswbu = xundef
176  plwd = xundef
177  plwu = xundef
178  pfmu = xundef
179  pfmv = xundef
180  prnc = xundef
181  phc = xundef
182  plec = xundef
183  pleic = xundef
184  pevapc = xundef
185  psublc = xundef
186  pgfluxc = xundef
187  pswdc = xundef
188  pswuc = xundef
189  plwdc = xundef
190  plwuc = xundef
191  pfmuc = xundef
192  pfmvc = xundef
193  pt2m_min = xundef
194  pt2m_max = xundef
195  phu2m_min= xundef
196  phu2m_max= xundef
197  pwind10m = xundef
198  pwind10m_max = xundef
199 END IF
200 IF (lhook) CALL dr_hook('DIAG_NATURE_N',1,zhook_handle)
201 !
202 !-------------------------------------------------------------------------------------
203 !
204 END SUBROUTINE diag_nature_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
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
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