SURFEX v8.1
General documentation of Surfex
modd_diag_misc_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_MISC_ISBA - declaration of packed surface parameters for ISBA 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/10/04
29 !! A.L. Gibelin 04/2009 : Add respiration diagnostics
30 !! A.L. Gibelin 05/2009 : Add carbon spinup
31 !! A.L. Gibelin 07/2009 : Suppress RDK and transform GPP as a diagnostic
32 !! B. Decharme 05/2012 : Carbon fluxes in diag_evap
33 !! B. Decharme 07/2012 : New diag for DIF under LSURF_MISC_DIF key
34 !! F2 stress
35 !! Root zone swi, wg and wgi
36 !! swi, wg and wgi comparable to ISBA-FR-DG2 and DG3 layers
37 !! B. Decharme 10/2012 : New diag for DIF
38 !! active layer thickness over permafrost area
39 !! frozen layer thickness over non-permafrost area
40 !! M. Lafaysse 09/2015 : new Crocus-MEPRA outputs
41 !-------------------------------------------------------------------------------
42 !
43 !* 0. DECLARATIONS
44 ! ------------
45 !
46 !
47 !
48 USE yomhook ,ONLY : lhook, dr_hook
49 USE parkind1 ,ONLY : jprb
50 !
51 IMPLICIT NONE
52 
54 !------------------------------------------------------------------------------
55 !
56  LOGICAL :: lsurf_misc_budget ! flag for miscellaneous terms of isba scheme
57  LOGICAL :: lsurf_diag_albedo ! flag to write out diagnostic albedo
58  LOGICAL :: lsurf_misc_dif ! flag for miscellaneous terms of isba-dif scheme
59  LOGICAL :: lprosnow ! flag for Crocus-MEPRA outputs
60  LOGICAL :: lvolumetric_snowliq ! volumetric snow liquid water content (kg m-3)
61 !
62 !* variables for each patch
63 !
64  REAL, POINTER, DIMENSION(:) :: xhv ! Halstead coefficient
65  REAL, POINTER, DIMENSION(:) :: xlai ! leaf average index
66 !
67  REAL, POINTER, DIMENSION(:,:) :: xswi ! Soil wetness index
68  REAL, POINTER, DIMENSION(:,:) :: xtswi ! Total soil wetness index
69  REAL, POINTER, DIMENSION(:) :: xsoil_swi ! Soil wetness index
70  REAL, POINTER, DIMENSION(:) :: xsoil_tswi ! Total Soil wetness index
71  REAL, POINTER, DIMENSION(:) :: xsoil_twg ! Soil water content (liquid+ice) (kg.m-2)
72  REAL, POINTER, DIMENSION(:) :: xsoil_twgi ! Soil ice content (kg.m-2)
73  REAL, POINTER, DIMENSION(:) :: xsoil_wg ! Soil water content (liquid+ice) (m3.m-3)
74  REAL, POINTER, DIMENSION(:) :: xsoil_wgi ! Soil ice content (m3.m-3)
75 !
76  REAL, POINTER, DIMENSION(:) :: xfrd2_tswi ! ISBA-FR-DG2 comparable soil wetness index (DIF option)
77  REAL, POINTER, DIMENSION(:) :: xfrd2_twg ! ISBA-FR-DG2 comparable soil water content (liquid+ice) (DIF option)
78  REAL, POINTER, DIMENSION(:) :: xfrd2_twgi ! ISBA-FR-DG2 comparable soil ice content (DIF option)
79  REAL, POINTER, DIMENSION(:) :: xfrd3_tswi ! ISBA-FR-Deep comparable soil wetness index (DIF option)
80  REAL, POINTER, DIMENSION(:) :: xfrd3_twg ! ISBA-FR-Deep comparable soil water content (liquid+ice) (DIF option)
81  REAL, POINTER, DIMENSION(:) :: xfrd3_twgi ! ISBA-FR-Deep comparable soil ice content (DIF option)
82 !
83  REAL, POINTER, DIMENSION(:) :: xalt ! Active layer thickness in permafrost area
84  REAL, POINTER, DIMENSION(:) :: xflt ! Frozen layer thickness in non-permmafrost area
85 !
86  REAL, POINTER, DIMENSION(:) :: xrnsnow ! net radiative flux from snow (ISBA-ES:3-L) (W/m2)
87  REAL, POINTER, DIMENSION(:) :: xhsnow ! sensible heat flux from snow (ISBA-ES:3-L) (W/m2)
88  REAL, POINTER, DIMENSION(:) :: xhpsnow ! heat release from rainfall (ISBA-ES:3-L) (W/m2)
89  REAL, POINTER, DIMENSION(:) :: xgfluxsnow ! net surface energy flux into snowpack
90 ! ! (ISBA-ES:3-L) (W/m2)
91  REAL, POINTER, DIMENSION(:) :: xustarsnow ! friction velocity over snow
92 ! ! (ISBA-ES:3-L) (m/s)
93  REAL, POINTER, DIMENSION(:) :: xgrndflux ! soil/snow interface heat flux (ISBA-ES:3-L) (W/m2)
94  REAL, POINTER, DIMENSION(:) :: xsrsfc ! snowfall over snowpack (ISBA-ES:3-L) (kg/m2/s)
95  REAL, POINTER, DIMENSION(:) :: xrrsfc ! rainfall over snowpack (ISBA-ES:3-L) (kg/m2/s)
96  REAL, POINTER, DIMENSION(:) :: xcdsnow ! snow drag coefficient (ISBA-ES:3-L) (-)
97  REAL, POINTER, DIMENSION(:) :: xchsnow ! heat turbulent transfer coefficient
98 ! ! (ISBA-ES:3-L) (-)
99  REAL, POINTER, DIMENSION(:,:) :: xsnowdz ! snow layer thicknesses (m)
100  REAL, POINTER, DIMENSION(:,:) :: xsnowdend ! dendricity (Crocus)
101  REAL, POINTER, DIMENSION(:,:) :: xsnowspher ! sphericity (Crocus)
102  REAL, POINTER, DIMENSION(:,:) :: xsnowsize ! grain size (Crocus)
103  REAL, POINTER, DIMENSION(:,:) :: xsnowssa ! snow specific surface area (Crocus)
104  REAL, POINTER, DIMENSION(:,:) :: xsnowtypemepra ! snow grain type (Crocus-MEPRA)
105  REAL, POINTER, DIMENSION(:,:) :: xsnowram ! snow ram resistance (Crocus-MEPRA)
106  REAL, POINTER, DIMENSION(:,:) :: xsnowshear ! snow shear resistance (Crocus-MEPRA)
107 !
108  REAL, POINTER, DIMENSION(:) :: xsnowhmass ! heat content change due to mass
109 ! ! changes in snowpack: for budget
110  REAL, POINTER, DIMENSION(:,:) :: xsnowliq ! snow liquid water profile (ISBA-ES:3-L)
111  REAL, POINTER, DIMENSION(:,:) :: xsnowtemp ! snow temperature profile (ISBA-ES:3-L)
112 !
113  REAL, POINTER, DIMENSION(:) :: xtwsnow ! Total snow reservoir
114  REAL, POINTER, DIMENSION(:) :: xtdsnow ! Total snow height
115  REAL, POINTER, DIMENSION(:) :: xttsnow ! Total snow temperature
116 !
117  REAL, POINTER, DIMENSION(:) :: xsndpt_1dy, xsndpt_3dy, xsndpt_5dy, xsndpt_7dy ! fresh snow depth in 1, 3, 5, 7 days
118  REAL, POINTER, DIMENSION(:) :: xsnswe_1dy, xsnswe_3dy, xsnswe_5dy, xsnswe_7dy! fresh snow water equivalent in 1, 3, 5, 7 days
119  REAL, POINTER, DIMENSION(:) :: xsnram_sonde ! penetration depth of the ram resistance sensor (2 DaN)
120  REAL, POINTER, DIMENSION(:) :: xsn_wetthckn ! Thickness of wet snow at the top of the snowpack
121  REAL, POINTER, DIMENSION(:) :: xsn_refrznthckn ! Thickness of refrozen snow at the top of the snowpack
122 
123  REAL, POINTER, DIMENSION(:) :: xpsng ! Snow fraction over ground, diag at time t
124  REAL, POINTER, DIMENSION(:) :: xpsnv ! Snow fraction over vegetation, diag at time t
125  REAL, POINTER, DIMENSION(:) :: xpsn ! Total Snow fraction, diag at time t
126 !
127  REAL, POINTER, DIMENSION(:) :: xfsat ! Topmodel/dt92 saturated fraction
128 !
129  REAL, POINTER, DIMENSION(:) :: xffg ! Flood fraction over ground, diag at time t
130  REAL, POINTER, DIMENSION(:) :: xffv ! Flood fraction over vegetation, diag at time t
131  REAL, POINTER, DIMENSION(:) :: xff ! Total Flood fraction, diag at time t
132 !
133  REAL, POINTER, DIMENSION(:) :: xseuil ! Irrigation threshold
134 !
135  REAL, POINTER, DIMENSION(:) :: xfapar ! Fapar of vegetation
136  REAL, POINTER, DIMENSION(:) :: xfapir ! Fapir of vegetation
137  REAL, POINTER, DIMENSION(:) :: xdfaparc ! Fapar of vegetation (cumul)
138  REAL, POINTER, DIMENSION(:) :: xdfapirc ! Fapir of vegetation (cumul)
139  REAL, POINTER, DIMENSION(:) :: xfapar_bs ! Fapar of bare soil
140  REAL, POINTER, DIMENSION(:) :: xfapir_bs ! Fapir of bare soil
141  REAL, POINTER, DIMENSION(:) :: xdlai_effc ! Effective LAI (cumul)
142 !
143  REAL, POINTER, DIMENSION(:) :: xcg ! heat capacity of the ground
144  REAL, POINTER, DIMENSION(:) :: xc1 ! coefficients for the moisure
145  REAL, POINTER, DIMENSION(:) :: xc2 ! equation.
146  REAL, POINTER, DIMENSION(:) :: xwgeq ! equilibrium volumetric water
147 ! ! content
148  REAL, POINTER, DIMENSION(:) :: xct ! area-averaged heat capacity
149  REAL, POINTER, DIMENSION(:) :: xrs ! stomatal resistance (s/m)
150 !
151 !------------------------------------------------------------------------------
152 !
153 END TYPE diag_misc_isba_t
154 !
156 !
157 TYPE(diag_misc_isba_t), POINTER :: al(:)=>null()
158 !
159 END TYPE diag_misc_isba_np_t
160 !
161 CONTAINS
162 !
163 SUBROUTINE diag_misc_isba_np_init(YNDIAG_MISC_ISBA,KPATCH)
164 TYPE(diag_misc_isba_np_t), INTENT(INOUT) :: YNDIAG_MISC_ISBA
165 INTEGER, INTENT(IN) :: KPATCH
166 INTEGER :: JP
167 REAL(KIND=JPRB) :: ZHOOK_HANDLE
168 IF (lhook) CALL dr_hook("MODD_DIAG_MISC_ISBA_N:DIAG_MISC_ISBA_NP_INIT",0,zhook_handle)
169 IF (.NOT.ASSOCIATED(yndiag_misc_isba%AL)) THEN
170  ALLOCATE(yndiag_misc_isba%AL(kpatch))
171  DO jp=1,kpatch
172  CALL diag_misc_isba_init(yndiag_misc_isba%AL(jp))
173  ENDDO
174 ELSE
175  DO jp=1,kpatch
176  CALL diag_misc_isba_init(yndiag_misc_isba%AL(jp))
177  ENDDO
178  DEALLOCATE(yndiag_misc_isba%AL)
179 ENDIF
180 IF (lhook) CALL dr_hook("MODD_DIAG_MISC_ISBA_N:DIAG_MISC_ISBA_NP_INIT",1,zhook_handle)
181 END SUBROUTINE diag_misc_isba_np_init
182 !
183 SUBROUTINE diag_misc_isba_init(DMI)
184 TYPE(diag_misc_isba_t), INTENT(INOUT) :: DMI
185 REAL(KIND=JPRB) :: ZHOOK_HANDLE
186 IF (lhook) CALL dr_hook("MODD_DIAG_MISC_ISBA_N:DIAG_MISC_ISBA_INIT",0,zhook_handle)
187  NULLIFY(dmi%XHV)
188  NULLIFY(dmi%XLAI)
189  NULLIFY(dmi%XSWI)
190  NULLIFY(dmi%XTSWI)
191  NULLIFY(dmi%XSOIL_SWI)
192  NULLIFY(dmi%XSOIL_TSWI)
193  NULLIFY(dmi%XSOIL_TWG)
194  NULLIFY(dmi%XSOIL_TWGI)
195  NULLIFY(dmi%XSOIL_WG)
196  NULLIFY(dmi%XSOIL_WGI)
197  NULLIFY(dmi%XFRD2_TWG)
198  NULLIFY(dmi%XFRD2_TWGI)
199  NULLIFY(dmi%XFRD3_TSWI)
200  NULLIFY(dmi%XFRD3_TWG)
201  NULLIFY(dmi%XFRD3_TWGI)
202  NULLIFY(dmi%XALT)
203  NULLIFY(dmi%XFLT)
204  NULLIFY(dmi%XRNSNOW)
205  NULLIFY(dmi%XHSNOW)
206  NULLIFY(dmi%XHPSNOW)
207  NULLIFY(dmi%XGFLUXSNOW)
208  NULLIFY(dmi%XUSTARSNOW)
209  NULLIFY(dmi%XGRNDFLUX)
210  NULLIFY(dmi%XSRSFC)
211  NULLIFY(dmi%XRRSFC)
212  NULLIFY(dmi%XCDSNOW)
213  NULLIFY(dmi%XCHSNOW)
214  NULLIFY(dmi%XSNOWDZ)
215  NULLIFY(dmi%XSNOWDEND)
216  NULLIFY(dmi%XSNOWSPHER)
217  NULLIFY(dmi%XSNOWSIZE)
218  NULLIFY(dmi%XSNOWTYPEMEPRA)
219  NULLIFY(dmi%XSNOWSSA)
220  NULLIFY(dmi%XSNOWRAM)
221  NULLIFY(dmi%XSNOWSHEAR)
222  NULLIFY(dmi%XSNDPT_1DY)
223  NULLIFY(dmi%XSNDPT_3DY)
224  NULLIFY(dmi%XSNDPT_5DY)
225  NULLIFY(dmi%XSNDPT_7DY)
226  NULLIFY(dmi%XSNSWE_1DY)
227  NULLIFY(dmi%XSNSWE_3DY)
228  NULLIFY(dmi%XSNSWE_5DY)
229  NULLIFY(dmi%XSNSWE_7DY)
230  NULLIFY(dmi%XSNRAM_SONDE)
231  NULLIFY(dmi%XSN_REFRZNTHCKN)
232  NULLIFY(dmi%XSN_WETTHCKN)
233  NULLIFY(dmi%XSNOWHMASS)
234  NULLIFY(dmi%XSNOWLIQ)
235  NULLIFY(dmi%XSNOWTEMP)
236  NULLIFY(dmi%XTWSNOW)
237  NULLIFY(dmi%XTDSNOW)
238  NULLIFY(dmi%XTTSNOW)
239  NULLIFY(dmi%XPSNG)
240  NULLIFY(dmi%XPSNV)
241  NULLIFY(dmi%XPSN)
242  NULLIFY(dmi%XFFG)
243  NULLIFY(dmi%XFFV)
244  NULLIFY(dmi%XFF)
245  NULLIFY(dmi%XSEUIL)
246  NULLIFY(dmi%XFAPAR)
247  NULLIFY(dmi%XFAPIR)
248  NULLIFY(dmi%XDFAPARC)
249  NULLIFY(dmi%XDFAPIRC)
250  NULLIFY(dmi%XFAPAR_BS)
251  NULLIFY(dmi%XFAPIR_BS)
252  NULLIFY(dmi%XDLAI_EFFC)
253  NULLIFY(dmi%XCG)
254  NULLIFY(dmi%XC1)
255  NULLIFY(dmi%XC2)
256  NULLIFY(dmi%XWGEQ)
257  NULLIFY(dmi%XCT)
258  NULLIFY(dmi%XRS)
259 dmi%LSURF_MISC_BUDGET=.false.
260 dmi%LSURF_DIAG_ALBEDO=.false.
261 dmi%LSURF_MISC_DIF=.false.
262 IF (lhook) CALL dr_hook("MODD_DIAG_MISC_ISBA_N:DIAG_MISC_ISBA_INIT",1,zhook_handle)
263 END SUBROUTINE diag_misc_isba_init
264 
265 
266 END MODULE modd_diag_misc_isba_n
subroutine diag_misc_isba_init(DMI)
subroutine diag_misc_isba_np_init(YNDIAG_MISC_ISBA, KPATCH)
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15