SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
modd_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 !######################
7 !######################
8 !
9 !!**** *MODD_DIAG_ISBA - declaration of diagnostics for ISBA scheme
10 !!
11 !! PURPOSE
12 !! -------
13 !
14 !!
15 !!** IMPLICIT ARGUMENTS
16 !! ------------------
17 !! None
18 !!
19 !! REFERENCE
20 !! ---------
21 !!
22 !! AUTHOR
23 !! ------
24 !! V. Masson *Meteo France*
25 !!
26 !! MODIFICATIONS
27 !! -------------
28 !! Original 01/2004
29 !! Modified 01/2006 : sea flux parameterization.
30 !! P. Samuelsson 10/2014 : added min max for XT2M
31 !
32 !* 0. DECLARATIONS
33 ! ------------
34 !
35 !
36 !
37 USE yomhook ,ONLY : lhook, dr_hook
38 USE parkind1 ,ONLY : jprb
39 !
40 IMPLICIT NONE
41 
43 !------------------------------------------------------------------------------
44 !
45  REAL :: XDIAG_TSTEP ! time step for diagnostics writing
46 !
47  INTEGER :: N2M ! flag for 2 meters (and 10 meters) quantities
48  LOGICAL :: L2M_MIN_ZS ! flag for 2 meters quantities evaluated on
49 ! ! the minimum orographyy of the grid
50  LOGICAL :: LSURF_BUDGET ! flag for surface energy budget
51  LOGICAL :: LRAD_BUDGET ! flag for radiative energy budget
52 !
53  LOGICAL :: LCOEF ! flag for transfer coefficients
54  LOGICAL :: LSURF_VARS ! flag for surface variables
55 !
56  LOGICAL :: LPGD ! flag for writing of PGD files
57  LOGICAL :: LPATCH_BUDGET ! flag for patch output
58 !
59 !* variables for each patch
60 !
61  REAL, POINTER, DIMENSION(:,:) :: XRI ! Bulk-Richardson number (-)
62  REAL, POINTER, DIMENSION(:,:) :: XCD ! drag coefficient for wind (W/s2)
63  REAL, POINTER, DIMENSION(:,:) :: XCH ! drag coefficient for heat (W/s)
64  REAL, POINTER, DIMENSION(:,:) :: XCE ! drag coefficient for vapor (W/s/K)
65  REAL, POINTER, DIMENSION(:,:) :: XRN ! net radiation at surface (W/m2)
66  REAL, POINTER, DIMENSION(:,:) :: XH ! sensible heat flux (W/m2)
67  REAL, POINTER, DIMENSION(:,:) :: XLE ! total latent heat flux (W/m2)
68  REAL, POINTER, DIMENSION(:,:) :: XLEI ! sublimation latent heat flux (W/m2)
69  REAL, POINTER, DIMENSION(:,:) :: XGFLUX ! net soil-vegetation flux (W/m2)
70  REAL, POINTER, DIMENSION(:,:) :: XTS ! surface temperature (K)
71  REAL, POINTER, DIMENSION(:,:) :: XTSRAD ! surface radiative temperature (K)
72  REAL, POINTER, DIMENSION(:,:) :: XT2M ! temperature at 2 meters (K)
73  REAL, POINTER, DIMENSION(:,:) :: XT2M_MIN! min temperature at 2 meters (K)
74  REAL, POINTER, DIMENSION(:,:) :: XT2M_MAX! max temperature at 2 meters (K)
75  REAL, POINTER, DIMENSION(:,:) :: XQ2M ! humidity at 2 meters (kg/kg)
76  REAL, POINTER, DIMENSION(:,:) :: XHU2M ! relative humidity at 2 meters (-)
77  REAL, POINTER, DIMENSION(:,:) :: XQS ! humidity at surface (kg/kg)
78  REAL, POINTER, DIMENSION(:,:) :: XZON10M ! zonal wind at 10 meters (m/s)
79  REAL, POINTER, DIMENSION(:,:) :: XMER10M ! meridian wind at 10 meters (m/s)
80  REAL, POINTER, DIMENSION(:,:) :: XWIND10M! wind at 10 meters (m/s)
81  REAL, POINTER, DIMENSION(:,:) :: XLWD ! downward long wave radiation (W/m2)
82  REAL, POINTER, DIMENSION(:,:) :: XLWU ! upward long wave radiation (W/m2)
83  REAL, POINTER, DIMENSION(:,:) :: XSWD ! downward short wave radiation (W/m2)
84  REAL, POINTER, DIMENSION(:,:) :: XSWU ! upward short wave radiation (W/m2)
85  REAL, POINTER, DIMENSION(:,:,:) :: XSWBD ! downward short wave radiation by spectral band (W/m2)
86  REAL, POINTER, DIMENSION(:,:,:) :: XSWBU ! upward short wave radiation by spectral band (W/m2)
87  REAL, POINTER, DIMENSION(:,:) :: XFMU ! horizontal momentum flux zonal (Pa)
88  REAL, POINTER, DIMENSION(:,:) :: XFMV ! horizontal momentum flux meridian (Pa)
89  !
90  REAL, POINTER, DIMENSION(:,:) :: XSWDC ! downward short wave radiation (J/m2)
91  REAL, POINTER, DIMENSION(:,:) :: XSWUC ! upward short wave radiation (J/m2)
92  REAL, POINTER, DIMENSION(:,:) :: XLWDC ! downward long wave radiation (J/m2)
93  REAL, POINTER, DIMENSION(:,:) :: XLWUC ! upward long wave radiation (J/m2)
94  REAL, POINTER, DIMENSION(:,:) :: XFMUC ! horizontal momentum flux zonal (Pa.s)
95  REAL, POINTER, DIMENSION(:,:) :: XFMVC ! horizontal momentum flux meridian (Pa.s)
96  !
97  REAL, POINTER, DIMENSION(:,:) :: XZ0_WITH_SNOW ! roughness length for momentum
98  ! for vegetation and snow (m)
99  REAL, POINTER, DIMENSION(:,:) :: XZ0H_WITH_SNOW ! roughness length for heat
100  ! for vegetation and snow (m)
101  REAL, POINTER, DIMENSION(:,:) :: XZ0EFF ! effective roughness length for heat
102  ! for vegetation and snow (m)
103 !
104 !* averaged variables
105 !
106  REAL, POINTER, DIMENSION(:) :: XAVG_RI ! Bulk-Richardson number (-)
107  REAL, POINTER, DIMENSION(:) :: XAVG_CD ! drag coefficient for wind (W/s2)
108  REAL, POINTER, DIMENSION(:) :: XAVG_CH ! drag coefficient for heat (W/s)
109  REAL, POINTER, DIMENSION(:) :: XAVG_CE ! drag coefficient for vapor (W/s/K)
110  REAL, POINTER, DIMENSION(:) :: XAVG_RN ! net radiation at surface (W/m2)
111  REAL, POINTER, DIMENSION(:) :: XAVG_H ! sensible heat flux (W/m2)
112  REAL, POINTER, DIMENSION(:) :: XAVG_LE ! total latent heat flux (W/m2)
113  REAL, POINTER, DIMENSION(:) :: XAVG_LEI ! sublimation latent heat flux (W/m2)
114  REAL, POINTER, DIMENSION(:) :: XAVG_GFLUX ! net soil-vegetation flux (W/m2)
115  REAL, POINTER, DIMENSION(:) :: XAVG_TS ! surface temperature (K)
116  REAL, POINTER, DIMENSION(:) :: XAVG_T2M ! temperature at 2 meters (K)
117  REAL, POINTER, DIMENSION(:) :: XAVG_T2M_MIN ! Minimum temperature at 2 meters (K)
118  REAL, POINTER, DIMENSION(:) :: XAVG_T2M_MAX ! Maximum temperature at 2 meters (K)
119  REAL, POINTER, DIMENSION(:) :: XAVG_Q2M ! humidity at 2 meters (kg/kg)
120  REAL, POINTER, DIMENSION(:) :: XAVG_HU2M ! relative humidity at 2 meters (-)
121  REAL, POINTER, DIMENSION(:) :: XAVG_HU2M_MIN ! Minimum relative humidity at 2 meters (-)
122  REAL, POINTER, DIMENSION(:) :: XAVG_HU2M_MAX ! Maximum relative humidity at 2 meters (-)
123  REAL, POINTER, DIMENSION(:) :: XAVG_QS ! humidity at surface (kg/kg)
124  REAL, POINTER, DIMENSION(:) :: XAVG_ZON10M ! zonal wind at 10 meters (m/s)
125  REAL, POINTER, DIMENSION(:) :: XAVG_MER10M ! meridian wind at 10 meters (m/s)
126  REAL, POINTER, DIMENSION(:) :: XAVG_WIND10M ! wind at 10 meters (m/s)
127  REAL, POINTER, DIMENSION(:) :: XAVG_WIND10M_MAX ! Maximum wind at 10 meters (m/s)
128  REAL, POINTER, DIMENSION(:) :: XAVG_SFCO2 ! CO2 flux (m/s*kg_CO2/kg_air)
129  REAL, POINTER, DIMENSION(:) :: XAVG_LWD ! downward long wave radiation (W/m2)
130  REAL, POINTER, DIMENSION(:) :: XAVG_LWU ! upward long wave radiation (W/m2)
131  REAL, POINTER, DIMENSION(:) :: XAVG_SWD ! downward short wave radiation (W/m2)
132  REAL, POINTER, DIMENSION(:) :: XAVG_SWU ! upward short wave radiation (W/m2)
133  REAL, POINTER, DIMENSION(:,:) :: XAVG_SWBD ! downward short wave radiation by spectral band (W/m2)
134  REAL, POINTER, DIMENSION(:,:) :: XAVG_SWBU ! upward short wave radiation by spectral band (W/m2)
135  REAL, POINTER, DIMENSION(:) :: XAVG_FMU ! horizontal momentum flux zonal (m2/s2)
136  REAL, POINTER, DIMENSION(:) :: XAVG_FMV ! horizontal momentum flux meridian (m2/s2)
137  REAL, POINTER, DIMENSION(:) :: XAVG_LWDC ! downward long wave radiation (J/m2)
138  REAL, POINTER, DIMENSION(:) :: XAVG_LWUC ! upward long wave radiation (J/m2)
139  REAL, POINTER, DIMENSION(:) :: XAVG_SWDC ! downward short wave radiation (J/m2)
140  REAL, POINTER, DIMENSION(:) :: XAVG_SWUC ! upward short wave radiation (J/m2)
141  REAL, POINTER, DIMENSION(:) :: XAVG_FMUC ! horizontal momentum flux zonal (Pa.s)
142  REAL, POINTER, DIMENSION(:) :: XAVG_FMVC ! horizontal momentum flux meridian (Pa.s)
143 
144  !
145  REAL, POINTER, DIMENSION(:) :: XAVG_Z0 ! roughness length for momentum
146  ! for vegetation and snow (m)
147  REAL, POINTER, DIMENSION(:) :: XAVG_Z0H ! roughness length for heat
148  ! for vegetation and snow (m)
149  REAL, POINTER, DIMENSION(:) :: XAVG_Z0EFF ! effective roughness length for heat
150  ! for vegetation and snow (m)
151 !------------------------------------------------------------------------------
152 !
153 
154 END TYPE diag_isba_t
155 
156 
157 
158  CONTAINS
159 
160 !
161 
162 
163 
164 
165 
166 SUBROUTINE diag_isba_init(YDIAG_ISBA)
167 TYPE(diag_isba_t), INTENT(INOUT) :: ydiag_isba
168 REAL(KIND=JPRB) :: zhook_handle
169 IF (lhook) CALL dr_hook("MODD_DIAG_ISBA_N:DIAG_ISBA_INIT",0,zhook_handle)
170  nullify(ydiag_isba%XRI)
171  nullify(ydiag_isba%XCD)
172  nullify(ydiag_isba%XCH)
173  nullify(ydiag_isba%XCE)
174  nullify(ydiag_isba%XRN)
175  nullify(ydiag_isba%XH)
176  nullify(ydiag_isba%XLE)
177  nullify(ydiag_isba%XLEI)
178  nullify(ydiag_isba%XGFLUX)
179  nullify(ydiag_isba%XTS)
180  nullify(ydiag_isba%XTSRAD)
181  nullify(ydiag_isba%XT2M)
182  nullify(ydiag_isba%XT2M_MIN)
183  nullify(ydiag_isba%XT2M_MAX)
184  nullify(ydiag_isba%XQ2M)
185  nullify(ydiag_isba%XHU2M)
186  nullify(ydiag_isba%XQS)
187  nullify(ydiag_isba%XZON10M)
188  nullify(ydiag_isba%XMER10M)
189  nullify(ydiag_isba%XWIND10M)
190  nullify(ydiag_isba%XLWD)
191  nullify(ydiag_isba%XLWU)
192  nullify(ydiag_isba%XSWD)
193  nullify(ydiag_isba%XSWU)
194  nullify(ydiag_isba%XSWBD)
195  nullify(ydiag_isba%XSWBU)
196  nullify(ydiag_isba%XFMU)
197  nullify(ydiag_isba%XFMV)
198  nullify(ydiag_isba%XSWDC)
199  nullify(ydiag_isba%XSWUC)
200  nullify(ydiag_isba%XLWDC)
201  nullify(ydiag_isba%XLWUC)
202  nullify(ydiag_isba%XFMUC)
203  nullify(ydiag_isba%XFMVC)
204  nullify(ydiag_isba%XZ0_WITH_SNOW)
205  nullify(ydiag_isba%XZ0H_WITH_SNOW)
206  nullify(ydiag_isba%XZ0EFF)
207  nullify(ydiag_isba%XAVG_RI)
208  nullify(ydiag_isba%XAVG_CD)
209  nullify(ydiag_isba%XAVG_CH)
210  nullify(ydiag_isba%XAVG_CE)
211  nullify(ydiag_isba%XAVG_RN)
212  nullify(ydiag_isba%XAVG_H)
213  nullify(ydiag_isba%XAVG_LE)
214  nullify(ydiag_isba%XAVG_LEI)
215  nullify(ydiag_isba%XAVG_GFLUX)
216  nullify(ydiag_isba%XAVG_TS)
217  nullify(ydiag_isba%XAVG_T2M)
218  nullify(ydiag_isba%XAVG_T2M_MIN)
219  nullify(ydiag_isba%XAVG_T2M_MAX)
220  nullify(ydiag_isba%XAVG_Q2M)
221  nullify(ydiag_isba%XAVG_HU2M)
222  nullify(ydiag_isba%XAVG_HU2M_MIN)
223  nullify(ydiag_isba%XAVG_HU2M_MAX)
224  nullify(ydiag_isba%XAVG_QS)
225  nullify(ydiag_isba%XAVG_ZON10M)
226  nullify(ydiag_isba%XAVG_MER10M)
227  nullify(ydiag_isba%XAVG_WIND10M)
228  nullify(ydiag_isba%XAVG_WIND10M_MAX)
229  nullify(ydiag_isba%XAVG_SFCO2)
230  nullify(ydiag_isba%XAVG_LWD)
231  nullify(ydiag_isba%XAVG_LWU)
232  nullify(ydiag_isba%XAVG_SWD)
233  nullify(ydiag_isba%XAVG_SWU)
234  nullify(ydiag_isba%XAVG_SWBD)
235  nullify(ydiag_isba%XAVG_SWBU)
236  nullify(ydiag_isba%XAVG_FMU)
237  nullify(ydiag_isba%XAVG_FMV)
238  nullify(ydiag_isba%XAVG_LWDC)
239  nullify(ydiag_isba%XAVG_LWUC)
240  nullify(ydiag_isba%XAVG_SWDC)
241  nullify(ydiag_isba%XAVG_SWUC)
242  nullify(ydiag_isba%XAVG_FMUC)
243  nullify(ydiag_isba%XAVG_FMVC)
244  nullify(ydiag_isba%XAVG_Z0)
245  nullify(ydiag_isba%XAVG_Z0H)
246  nullify(ydiag_isba%XAVG_Z0EFF)
247 ydiag_isba%XDIAG_TSTEP=0.
248 ydiag_isba%N2M=0
249 ydiag_isba%L2M_MIN_ZS=.false.
250 ydiag_isba%LSURF_BUDGET=.false.
251 ydiag_isba%LRAD_BUDGET=.false.
252 ydiag_isba%LCOEF=.false.
253 ydiag_isba%LSURF_VARS=.false.
254 ydiag_isba%LPGD=.false.
255 ydiag_isba%LPATCH_BUDGET=.false.
256 IF (lhook) CALL dr_hook("MODD_DIAG_ISBA_N:DIAG_ISBA_INIT",1,zhook_handle)
257 END SUBROUTINE diag_isba_init
258 
259 
260 END MODULE modd_diag_isba_n
subroutine diag_isba_init(YDIAG_ISBA)