SURFEX v8.1
General documentation of Surfex
modd_diag_evap_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_NAT - declaration of packed surface parameters for NAT scheme
10 !!
11 !! PURPOSE
12 !! -------
13 !
14 !!
15 !!** IMPLICIT ARGUMENTS
16 !! ------------------
17 !! None
18 !!
19 !! REFERENCE
20 !! ---------
21 !!
22 !! AUTHOR
23 !! ------
24 !! P. Le Moigne *Meteo France*
25 !!
26 !! MODIFICATIONS
27 !! -------------
28 !! Original 07/11/03
29 !! P. Samuelsson 04/2012 MEB
30 !
31 !* 0. DECLARATIONS
32 ! ------------
33 !
34 !
35 USE yomhook ,ONLY : lhook, dr_hook
36 USE parkind1 ,ONLY : jprb
37 !
38 IMPLICIT NONE
39 
41 !------------------------------------------------------------------------------
42 !
43  LOGICAL :: lsurf_evap_budget ! flag for all terms of evaporation
44  LOGICAL :: lwater_budget ! flag for isba water budget including input
45  ! fluxes (rain and snow) and reservoir tendencies
46 !
47 !* variables for each patch
48 !
49  REAL, POINTER, DIMENSION(:) :: xleg ! latent heat of evaporation over the ground (W/m2)
50  REAL, POINTER, DIMENSION(:) :: xlegi ! surface soil ice sublimation (W/m2)
51  REAL, POINTER, DIMENSION(:) :: xlev ! latent heat of evaporation over vegetation (W/m2)
52  REAL, POINTER, DIMENSION(:) :: xles ! latent heat of sublimation over the snow (W/m2)
53  REAL, POINTER, DIMENSION(:) :: xlesl ! latent heat of evaporation over the snow (W/m2)
54  REAL, POINTER, DIMENSION(:) :: xler ! evaporation from canopy water interception (W/m2)
55  REAL, POINTER, DIMENSION(:) :: xletr ! evapotranspiration of the vegetation (W/m2)
56  REAL, POINTER, DIMENSION(:) :: xustar ! friction velocity from snow-free
57 ! ! surface (ISBA-ES:3-L) (m/s
58  REAL, POINTER, DIMENSION(:) :: xsndrift ! blowing snow sublimation (ES or Crocus) (kg/m2/s)
59  REAL, POINTER, DIMENSION(:) :: xrestore ! surface energy budget restore term (W/m2)
60  REAL, POINTER, DIMENSION(:) :: xdrain ! soil drainage flux (kg/m2/s)
61  REAL, POINTER, DIMENSION(:) :: xqsb ! lateral subsurface flux (dif option) (kg/m2/s)
62  REAL, POINTER, DIMENSION(:) :: xrunoff ! sub-grid and supersaturation runoff (kg/m2/s)
63  REAL, POINTER, DIMENSION(:) :: xhort ! sub-grid Horton runoff from the SGH scheme (kg/m2/s)
64  REAL, POINTER, DIMENSION(:) :: xrrveg ! precipitation intercepted by the vegetation (kg/m2/s)
65  REAL, POINTER, DIMENSION(:) :: xmelt ! snow melt (kg/m2/s)
66  REAL, POINTER, DIMENSION(:) :: xmeltadv ! advective energy from snow melt water
67 ! ! (ISBA-ES:3-L) (W/m2)
68  REAL, POINTER, DIMENSION(:) :: xiflood ! Floodplains infiltration (kg/m2/s)
69  REAL, POINTER, DIMENSION(:) :: xpflood ! Precipitation intercepted by the floodplains (kg/m2/s)
70  REAL, POINTER, DIMENSION(:) :: xle_flood ! Floodplains evapotration (W/m2)
71  REAL, POINTER, DIMENSION(:) :: xlei_flood ! Floodplains evapotration (W/m2)
72  REAL, POINTER, DIMENSION(:) :: xiceflux ! ice calving flux (kg/m2)
73  REAL, POINTER, DIMENSION(:) :: xdrip ! dripping from the vegetation reservoir (kg/m2/s)
74  REAL, POINTER, DIMENSION(:) :: xirrig_flux ! irrigation rate (as soil input) (kg/m2/s)
75 !
76  REAL, POINTER, DIMENSION(:) :: xgpp ! Gross Primary Production (kgCO2/m2/s)
77  REAL, POINTER, DIMENSION(:) :: xresp_auto ! Autotrophic respiration (kgCO2/m2/s)
78  REAL, POINTER, DIMENSION(:) :: xresp_eco ! Ecosystem respiration (kgCO2/m2/s)
79 !
80 !
81  REAL, POINTER, DIMENSION(:) :: xlelitter ! MEB: interception evaporation from understory vegetation [W/m2]
82  REAL, POINTER, DIMENSION(:) :: xlelitteri ! MEB: interception evaporation from understory vegetation [W/m2]
83  REAL, POINTER, DIMENSION(:) :: xdriplit !
84  REAL, POINTER, DIMENSION(:) :: xrrlit !
85 !
86  REAL, POINTER, DIMENSION(:) :: xlev_cv ! MEB: total evapotranspiration from vegetation canopy overstory [W/m2]
87  REAL, POINTER, DIMENSION(:) :: xles_cv ! XLESC MEB: total snow sublimation from vegetation canopy overstory [W/m2]
88  REAL, POINTER, DIMENSION(:) :: xletr_cv ! MEB: transpiration from overstory canopy vegetation [W/m2]
89  REAL, POINTER, DIMENSION(:) :: xler_cv ! MEB: interception evaporation from overstory canopy vegetation [W/m2]
90  REAL, POINTER, DIMENSION(:) :: xle_cv ! XLE_V_C MEB: latent heat flux from vegetation canopy overstory [W/m2]
91  REAL, POINTER, DIMENSION(:) :: xh_cv ! H_V_C MEB: sensible heat flux from vegetation canopy overstory [W/m2]
92  REAL, POINTER, DIMENSION(:) :: xmelt_cv ! MEB: snow melt rate from the overstory snow reservoir [kg/m2/s]
93  REAL, POINTER, DIMENSION(:) :: xfrz_cv ! MEB: snow refreeze rate from the overstory snow reservoir [kg/m2/s]
94 !
95  REAL, POINTER, DIMENSION(:) :: xletr_gv ! MEB: transpiration from understory vegetation [W/m2]
96  REAL, POINTER, DIMENSION(:) :: xler_gv ! MEB: interception evaporation from understory vegetation [W/m2]
97  REAL, POINTER, DIMENSION(:) :: xle_gv ! LEG_C MEB: latent heat flux from understory [W/m2]
98  REAL, POINTER, DIMENSION(:) :: xh_gv ! H_G_C MEB: sensible heat flux from understory [W/m2]
99 !
100  REAL, POINTER, DIMENSION(:) :: xle_gn ! LE_N_C MEB: latent heat flux from the snow on the ground [W/m2]
101  ! NOTE total latent heat flux from the snowpack
102  ! possibly includes a contribution from snow covering the canopy
103  REAL, POINTER, DIMENSION(:) :: xevap_gn ! EVAP_N_C MEB: Total evap from snow on the ground to canopy air space [kg/m2/s]
104  REAL, POINTER, DIMENSION(:) :: xh_gn ! H_N_C MEB: sensible heat flux from the snow on the ground [W/m2]
105  ! NOTE total sensible heat flux from the snowpack
106  ! possibly includes a contribution from snow covering the canopy
107  REAL, POINTER, DIMENSION(:) :: xsr_gn ! MEB: snow unloading rate from the overstory reservoir [kg/m2/s]
108  REAL, POINTER, DIMENSION(:) :: xswdown_gn ! MEB: total shortwave radiation transmitted through the canopy
109  ! reaching the snowpack/ground understory [W/m2]
110  REAL, POINTER, DIMENSION(:) :: xlwdown_gn ! MEB: total shortwave radiation transmitted through and emitted by the canopy
111  ! reaching the snowpack/ground understory (explicit part) [W/m2]
112 !
113  REAL, POINTER, DIMENSION(:) :: xevap_g ! EVAP_G_C MEB: Total evap from ground to canopy air space [kg/m2/s]
114  REAL, POINTER, DIMENSION(:) :: xle_ca ! LE_C_A MEB: latent heat flux from canopy air space to the atmosphere [W/m2]
115  ! NOTE total latent heat flux to the atmosphere also possibly
116  ! includes a contribution from snow covering the canopy
117  REAL, POINTER, DIMENSION(:) :: xh_ca ! H_C_A MEB: sensible heat flux from canopy air space to the atmosphere [W/m2]
118  ! NOTE total sensible heat flux to the atmosphere also possibly
119  ! includes a contribution from snow covering the canopy
120 
121 !
122  REAL, POINTER, DIMENSION(:) :: xswup ! MEB: net *total* (surface) upwelling shortwave radiation to atmosphere [W/m2]
123  REAL, POINTER, DIMENSION(:) :: xlwup ! MEB: net *total* (surface) upwelling longwave radiation to atmosphere [W/m2]
124 
125  REAL, POINTER, DIMENSION(:) :: xswnet_v ! MEB: net vegetation canopy shortwave radiation [W/m2]
126  REAL, POINTER, DIMENSION(:) :: xswnet_g ! MEB: net ground shortwave radiation [W/m2]
127  REAL, POINTER, DIMENSION(:) :: xswnet_n ! MEB: net snow shortwave radiation [W/m2]
128  REAL, POINTER, DIMENSION(:) :: xswnet_ns ! MEB: net snow shortwave radiation for *surface* layer
129  ! (i.e. net snow shortwave radiation less absorbed radiation) [W/m2]
130  REAL, POINTER, DIMENSION(:) :: xlwnet_v ! MEB: net vegetation canopy longwave radiation [W/m2]
131  REAL, POINTER, DIMENSION(:) :: xlwnet_g ! MEB: net ground longwave radiation [W/m2]
132  REAL, POINTER, DIMENSION(:) :: xlwnet_n ! MEB: net snow longwave radiation [W/m2]
133 !
134 !
135  REAL, POINTER, DIMENSION(:) :: xdwg ! liquid soil moisture time tendencies (kg/m2/s)
136  REAL, POINTER, DIMENSION(:) :: xdwgi ! solid soil moisture time tendencies (kg/m2/s)
137  REAL, POINTER, DIMENSION(:) :: xdwr ! canopy water time tendencies (kg/m2/s)
138  REAL, POINTER, DIMENSION(:) :: xdswe ! snow water equivalent time tendencies (kg/m2/s)
139  REAL, POINTER, DIMENSION(:) :: xwatbud ! ISBA water budget (kg/m2/s)
140 !
141  REAL, POINTER, DIMENSION(:) :: xrainfall ! input rainfall rate for LWATER_BUDGET (kg/m2/s)
142  REAL, POINTER, DIMENSION(:) :: xsnowfall ! input snowfall rate for LWATER_BUDGET (kg/m2/s)
143 !
144 ! Snowfree diagnostics
145 !
146  REAL, POINTER, DIMENSION(:) :: xrn_sn_fr
147  REAL, POINTER, DIMENSION(:) :: xh_sn_fr
148  REAL, POINTER, DIMENSION(:) :: xlei_sn_fr
149  REAL, POINTER, DIMENSION(:) :: xle_sn_fr
150  REAL, POINTER, DIMENSION(:) :: xgflux_sn_fr
151 !
152  REAL, POINTER, DIMENSION(:) :: xleg_sn_fr
153  REAL, POINTER, DIMENSION(:) :: xlegi_sn_fr
154  REAL, POINTER, DIMENSION(:) :: xlev_sn_fr
155  REAL, POINTER, DIMENSION(:) :: xletr_sn_fr
156  REAL, POINTER, DIMENSION(:) :: xustar_sn_fr
157  REAL, POINTER, DIMENSION(:) :: xler_sn_fr
158 !
159 !------------------------------------------------------------------------------
160 !
161 
162 END TYPE diag_evap_isba_t
163 !
165 !
166 TYPE(diag_evap_isba_t), POINTER :: al(:)=>null()
167 !
168 END TYPE diag_evap_isba_np_t
169 !
170 CONTAINS
171 !
172 SUBROUTINE diag_evap_isba_np_init(YNDIAG_EVAP_ISBA,KPATCH)
173 TYPE(diag_evap_isba_np_t), INTENT(INOUT) :: YNDIAG_EVAP_ISBA
174 INTEGER, INTENT(IN) :: KPATCH
175 INTEGER :: JP
176 REAL(KIND=JPRB) :: ZHOOK_HANDLE
177 IF (lhook) CALL dr_hook("MODD_DIAG_EVAP_ISBA_N:DIAG_EVAP_ISBA_NP_INIT",0,zhook_handle)
178 IF (.NOT.ASSOCIATED(yndiag_evap_isba%AL)) THEN
179  ALLOCATE(yndiag_evap_isba%AL(kpatch))
180  DO jp=1,kpatch
181  CALL diag_evap_isba_init(yndiag_evap_isba%AL(jp))
182  ENDDO
183 ELSE
184  DO jp=1,kpatch
185  CALL diag_evap_isba_init(yndiag_evap_isba%AL(jp))
186  ENDDO
187  DEALLOCATE(yndiag_evap_isba%AL)
188 ENDIF
189 IF (lhook) CALL dr_hook("MODD_DIAG_EVAP_ISBA_N:DIAG_EVAP_ISBA_NP_INIT",1,zhook_handle)
190 END SUBROUTINE diag_evap_isba_np_init
191 !
192 SUBROUTINE diag_evap_isba_init(DE)
193 TYPE(diag_evap_isba_t), INTENT(INOUT) :: DE
194 REAL(KIND=JPRB) :: ZHOOK_HANDLE
195 IF (lhook) CALL dr_hook("MODD_DIAG_EVAP_ISBA_N:DIAG_EVAP_ISBA_INIT",0,zhook_handle)
196  NULLIFY(de%XLEG)
197  NULLIFY(de%XLEGI)
198  NULLIFY(de%XLEV)
199  NULLIFY(de%XLES)
200  NULLIFY(de%XLESL)
201  NULLIFY(de%XLER)
202  NULLIFY(de%XLETR)
203  NULLIFY(de%XUSTAR)
204  NULLIFY(de%XSNDRIFT)
205  NULLIFY(de%XRESTORE)
206  NULLIFY(de%XDRAIN)
207  NULLIFY(de%XQSB)
208  NULLIFY(de%XRUNOFF)
209  NULLIFY(de%XHORT)
210  NULLIFY(de%XRRVEG)
211  NULLIFY(de%XMELT)
212  NULLIFY(de%XMELTADV)
213  NULLIFY(de%XIFLOOD)
214  NULLIFY(de%XPFLOOD)
215  NULLIFY(de%XLE_FLOOD)
216  NULLIFY(de%XLEI_FLOOD)
217 !
218  NULLIFY(de%XICEFLUX)
219 !
220  NULLIFY(de%XLELITTER)
221  NULLIFY(de%XLELITTERI)
222  NULLIFY(de%XDRIPLIT)
223  NULLIFY(de%XRRLIT)
224 
225  NULLIFY(de%XLEV_CV)
226  NULLIFY(de%XLES_CV)
227  NULLIFY(de%XLETR_CV)
228  NULLIFY(de%XLER_CV)
229  NULLIFY(de%XLE_CV)
230  NULLIFY(de%XH_CV)
231  NULLIFY(de%XMELT_CV)
232  NULLIFY(de%XFRZ_CV)
233 
234  NULLIFY(de%XLETR_GV)
235  NULLIFY(de%XLER_GV)
236  NULLIFY(de%XLE_GV)
237  NULLIFY(de%XH_GV)
238 
239  NULLIFY(de%XLE_GN)
240  NULLIFY(de%XEVAP_GN)
241  NULLIFY(de%XH_GN)
242  NULLIFY(de%XSR_GN)
243  NULLIFY(de%XSWDOWN_GN)
244  NULLIFY(de%XLWDOWN_GN)
245 
246  NULLIFY(de%XEVAP_G)
247  NULLIFY(de%XLE_CA)
248  NULLIFY(de%XH_CA)
249 
250  NULLIFY(de%XSWUP)
251  NULLIFY(de%XLWUP)
252 
253  NULLIFY(de%XSWNET_V)
254  NULLIFY(de%XSWNET_G)
255  NULLIFY(de%XSWNET_N)
256  NULLIFY(de%XSWNET_NS)
257  NULLIFY(de%XLWNET_V)
258  NULLIFY(de%XLWNET_G)
259  NULLIFY(de%XLWNET_N)
260 !
261  NULLIFY(de%XDRIP)
262  NULLIFY(de%XIRRIG_FLUX)
263  NULLIFY(de%XGPP)
264  NULLIFY(de%XRESP_AUTO)
265  NULLIFY(de%XRESP_ECO)
266  NULLIFY(de%XDWG)
267  NULLIFY(de%XDWGI)
268  NULLIFY(de%XDWR)
269  NULLIFY(de%XDSWE)
270  NULLIFY(de%XWATBUD)
271 !
272  NULLIFY(de%XRAINFALL)
273  NULLIFY(de%XSNOWFALL)
274 !
275  NULLIFY(de%XRN_SN_FR)
276  NULLIFY(de%XH_SN_FR)
277  NULLIFY(de%XLEI_SN_FR)
278  NULLIFY(de%XLE_SN_FR)
279  NULLIFY(de%XGFLUX_SN_FR)
280  NULLIFY(de%XLEG_SN_FR)
281  NULLIFY(de%XLEGI_SN_FR)
282  NULLIFY(de%XLEV_SN_FR)
283  NULLIFY(de%XLETR_SN_FR)
284  NULLIFY(de%XUSTAR_SN_FR)
285  NULLIFY(de%XLER_SN_FR)
286 
287 de%LSURF_EVAP_BUDGET=.false.
288 de%LWATER_BUDGET=.false.
289 IF (lhook) CALL dr_hook("MODD_DIAG_EVAP_ISBA_N:DIAG_EVAP_ISBA_INIT",1,zhook_handle)
290 END SUBROUTINE diag_evap_isba_init
291 !
292 END MODULE modd_diag_evap_isba_n
subroutine diag_evap_isba_np_init(YNDIAG_EVAP_ISBA, KPATCH)
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15