SURFEX v8.1
General documentation of Surfex
modd_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 !##################
6 MODULE modd_isba_n
7 !##################
8 !
9 !!**** *MODD_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 !! A. Boone *Meteo France*
25 !!
26 !! MODIFICATIONS
27 !! -------------
28 !! Original 20/09/02
29 !! A.L. Gibelin 04/2009 : BIOMASS and RESP_BIOMASS arrays
30 !! A.L. Gibelin 04/2009 : TAU_WOOD for NCB option
31 !! A.L. Gibelin 05/2009 : Add carbon spinup
32 !! A.L. Gibelin 06/2009 : Soil carbon variables for CNT option
33 !! A.L. Gibelin 07/2009 : Suppress RDK and transform GPP as a diagnostic
34 !! A.L. Gibelin 07/2009 : Suppress PPST and PPSTF as outputs
35 !! P. Samuelsson 02/2012 : MEB
36 !! B. Decharme 10/2016 bug surface/groundwater coupling
37 !!
38 !-------------------------------------------------------------------------------
39 !
40 !* 0. DECLARATIONS
41 ! ------------
42 !
45 !
46 USE yomhook ,ONLY : lhook, dr_hook
47 USE parkind1 ,ONLY : jprb
48 !
49 IMPLICIT NONE
50 !
51 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
52 !
53 TYPE ISba_s_t
54 !
55 ! General surface parameters:
56 !
57 REAL, POINTER, DIMENSION(:) :: xzs ! relief (m)
58 REAL, POINTER, DIMENSION(:,:) :: xcover ! fraction of each ecosystem (-)
59 LOGICAL, POINTER, DIMENSION(:):: lcover ! GCOVER(i)=T --> ith cover field is not 0.
60 !
61 ! Topmodel statistics
62 !
63 REAL, POINTER, DIMENSION(:) :: xti_min,xti_max,xti_mean,xti_std,xti_skew
64 !
65 REAL, POINTER, DIMENSION(:,:) :: xsoc ! soil organic carbon content (kg/m2)
66 REAL, POINTER, DIMENSION(:) :: xph ! soil pH
67 REAL, POINTER, DIMENSION(:) :: xfert ! soil fertilisation rate (kgN/ha/h)
68 !
69 !
70 REAL, POINTER, DIMENSION(:) :: xabc ! abscissa needed for integration
71 ! ! of net assimilation and stomatal
72 ! ! conductance over canopy depth (-)
73 REAL, POINTER, DIMENSION(:) :: xpoi ! Gaussian weights for integration
74 ! ! of net assimilation and stomatal
75 ! ! conductance over canopy depth (-)
76 !
77 type(date_time) :: ttime
78 !
79 REAL, POINTER, DIMENSION(:,:) :: xtab_fsat !Satured fraction array
80 REAL, POINTER, DIMENSION(:,:) :: xtab_wtop !Active TOPMODEL-layer array
81 REAL, POINTER, DIMENSION(:,:) :: xtab_qtop !Subsurface flow TOPMODEL array
82 !
83 REAL, POINTER, DIMENSION(:) :: xf_param
84 REAL, POINTER, DIMENSION(:) :: xc_depth_ratio
85 !
86 ! - Coupling with river routing model
87 !
88 REAL, POINTER, DIMENSION(:) :: xcpl_drain ! Surface runoff
89 REAL, POINTER, DIMENSION(:) :: xcpl_runoff ! Deep drainage or gourdwater recharge
90 REAL, POINTER, DIMENSION(:) :: xcpl_iceflux ! Calving flux
91 REAL, POINTER, DIMENSION(:) :: xcpl_eflood ! floodplains evaporation
92 REAL, POINTER, DIMENSION(:) :: xcpl_pflood ! floodplains precipitation interception
93 REAL, POINTER, DIMENSION(:) :: xcpl_iflood ! floodplains infiltration
94 !
95 ! - Random perturbations
96 !
97 REAL, POINTER, DIMENSION(:) :: xpertveg
98 REAL, POINTER, DIMENSION(:) :: xpertlai
99 REAL, POINTER, DIMENSION(:) :: xpertcv
100 REAL, POINTER, DIMENSION(:) :: xpertalb
101 REAL, POINTER, DIMENSION(:) :: xpertz0
102 !
103 REAL, POINTER, DIMENSION(:) :: xtsrad_nat ! patch averaged radiative temperature (K)
104 !
105 REAL, POINTER, DIMENSION(:) :: xemis_nat ! patch averaged emissivity (-)
106 !
107 ! - Assimilation: ENKF
108 !
109 REAL, POINTER, DIMENSION(:,:) :: xfracsoc ! Fraction of organic carbon in each soil layer
110 !
111 REAL, POINTER, DIMENSION(:,:) :: xvegtype
112 !
113 REAL, POINTER, DIMENSION(:,:) :: xpatch ! fraction of each tile/patch (-)
114 !
115 ! Mask and number of grid elements containing patches/tiles:
116 !
117 REAL, POINTER, DIMENSION(:,:,:) :: xvegtype_patch ! fraction of each vegetation type for
118 !
119 REAL, POINTER, DIMENSION(:,:) :: xinnov
120 REAL, POINTER, DIMENSION(:,:) :: xresid
121 !
122 REAL, POINTER, DIMENSION(:,:) :: xwork_wr
123 !
124 REAL, POINTER, DIMENSION(:,:,:) :: xwsn_wr
125 REAL, POINTER, DIMENSION(:,:,:) :: xrho_wr
126 REAL, POINTER, DIMENSION(:,:,:) :: xhea_wr
127 REAL, POINTER, DIMENSION(:,:,:) :: xage_wr
128 REAL, POINTER, DIMENSION(:,:,:) :: xsg1_wr
129 REAL, POINTER, DIMENSION(:,:,:) :: xsg2_wr
130 REAL, POINTER, DIMENSION(:,:,:) :: xhis_wr
131 REAL, POINTER, DIMENSION(:,:,:) :: xt_wr
132 REAL, POINTER, DIMENSION(:,:) :: xalb_wr
133 !
134 TYPE(date_time), POINTER, DIMENSION(:,:) :: tdate_wr
135 !
136 END TYPE isba_s_t
137 !
138 !
139 TYPE ISba_k_t
140 !
141 REAL, POINTER, DIMENSION(:,:) :: xsand ! sand fraction (-)
142 REAL, POINTER, DIMENSION(:,:) :: xclay ! clay fraction (-)
143 !
144 REAL, POINTER, DIMENSION(:) :: xperm ! permafrost distribution (-)
145 !
146 REAL, POINTER, DIMENSION(:) :: xrunoffb ! sub-grid dt92 surface runoff slope parameter (-)
147 REAL, POINTER, DIMENSION(:) :: xwdrain ! continuous drainage parameter (-)
148 !
149 !
150 REAL, POINTER, DIMENSION(:) :: xtdeep ! prescribed deep soil temperature
151 ! ! (optional)
152 REAL, POINTER, DIMENSION(:) :: xgammat ! 'Force-Restore' timescale when using a
153 ! ! prescribed lower boundary temperature (1/days)
154 !
155 REAL, POINTER, DIMENSION(:,:) :: xmpotsat ! matric potential at saturation (m)
156 REAL, POINTER, DIMENSION(:,:) :: xbcoef ! soil water CH78 b-parameter (-)
157 REAL, POINTER, DIMENSION(:,:) :: xwwilt ! wilting point volumetric water content
158 ! ! profile (m3/m3)
159 REAL, POINTER, DIMENSION(:,:) :: xwfc ! field capacity volumetric water content
160 ! ! profile (m3/m3)
161 REAL, POINTER, DIMENSION(:,:) :: xwsat ! porosity profile (m3/m3)
162 !
163 REAL, POINTER, DIMENSION(:) :: xcgsat ! soil thermal inertia coefficient at
164 ! ! saturation
165 REAL, POINTER, DIMENSION(:) :: xc4b ! 'Force-Restore' sub-surface vertical
166 ! ! diffusion coefficient (slope parameter) (-)
167 REAL, POINTER, DIMENSION(:) :: xacoef ! 'Force-Restore' surface vertical
168 ! ! diffusion coefficient (-)
169 REAL, POINTER, DIMENSION(:) :: xpcoef ! 'Force-Restore' surface vertical
170 ! ! diffusion coefficient (-)
171 REAL, POINTER, DIMENSION(:,:) :: xhcapsoil ! soil heat capacity (J/K/m3)
172 REAL, POINTER, DIMENSION(:,:) :: xconddry ! soil dry thermal conductivity (W/m/K)
173 REAL, POINTER, DIMENSION(:,:) :: xcondsld ! soil solids thermal conductivity (W/m/K)
174 !
175 ! - Water table depth coupling
176 !
177 REAL, POINTER, DIMENSION(:) :: xfwtd ! grid-cell fraction of water table rise
178 REAL, POINTER, DIMENSION(:) :: xwtd ! water table depth (negative below soil surface) (m)
179 !
180 ! * Physiographic radiative fields
181 !
182 REAL, POINTER, DIMENSION(:) :: xalbnir_dry ! dry soil near-infra-red albedo (-)
183 REAL, POINTER, DIMENSION(:) :: xalbvis_dry ! dry soil visible albedo (-)
184 REAL, POINTER, DIMENSION(:) :: xalbuv_dry ! dry soil UV albedo (-)
185 REAL, POINTER, DIMENSION(:) :: xalbnir_wet ! wet soil near-infra-red albedo (-)
186 REAL, POINTER, DIMENSION(:) :: xalbvis_wet ! wet soil visible albedo (-)
187 REAL, POINTER, DIMENSION(:) :: xalbuv_wet ! wet soil UV albedo (-)
188 !
189 ! * SGH initializations
190 !
191 REAL, POINTER, DIMENSION(:,:) :: xwd0 ! water content equivalent to TOPMODEL maximum deficit
192 REAL, POINTER, DIMENSION(:,:) :: xkaniso ! Anisotropy coeficient for hydraulic conductivity
193 !
194 REAL, POINTER, DIMENSION(:) :: xmuf ! fraction of the grid cell reached by the rainfall
195 REAL, POINTER, DIMENSION(:) :: xfsat ! Topmodel or dt92 saturated fracti
196 !
197 REAL, POINTER, DIMENSION(:) :: xfflood ! Grid-cell flood fraction
198 REAL, POINTER, DIMENSION(:) :: xpiflood ! flood potential infiltration (kg/m2/s)
199 !
200 ! - Flood scheme
201 !
202 REAL, POINTER, DIMENSION(:) :: xff ! Total Flood fraction
203 REAL, POINTER, DIMENSION(:) :: xffg ! Flood fraction over ground
204 REAL, POINTER, DIMENSION(:) :: xffv ! Flood fraction over vegetation
205 REAL, POINTER, DIMENSION(:) :: xffrozen ! Fraction of frozen floodplains
206 REAL, POINTER, DIMENSION(:) :: xalbf ! Flood albedo
207 REAL, POINTER, DIMENSION(:) :: xemisf ! Flood emissivity
208 !
209 ! - Snow and flood fractions and total albedo at time t: (-)
210 !
211 REAL, POINTER, DIMENSION(:,:) :: xdir_alb_with_snow ! total direct albedo by bands
212 REAL, POINTER, DIMENSION(:,:) :: xsca_alb_with_snow ! total diffuse albedo by bands
213 !
214 REAL, POINTER, DIMENSION(:,:) :: xvegtype
215 !
216 END TYPE isba_k_t
217 !
218 !
219 TYPE ISba_p_t
220 !
221 INTEGER :: nsize_p ! number of sub-patchs/tiles (-)
222 !
223 REAL, POINTER, DIMENSION(:) :: xpatch ! fraction of each tile/patch (-)
224 !
225 ! Mask and number of grid elements containing patches/tiles:
226 !
227 REAL, POINTER, DIMENSION(:,:) :: xvegtype_patch ! fraction of each vegetation type for
228 !
229 INTEGER, POINTER, DIMENSION(:) :: nr_p ! patch/tile mask
230 !
231 REAL, POINTER, DIMENSION(:) :: xpatch_old ! fraction of each tile/patchfor land use (-)
232 !
233 !
234 REAL, POINTER, DIMENSION(:) :: xanmax ! maximum photosynthesis rate (
235 REAL, POINTER, DIMENSION(:) :: xfzero ! ideal value of F, no photo-
236 ! ! respiration or saturation deficit
237 REAL, POINTER, DIMENSION(:) :: xepso ! maximum initial quantum use
238 ! ! efficiency (mg J-1 PAR)
239 REAL, POINTER, DIMENSION(:) :: xgamm ! CO2 conpensation concentration (ppm)
240 REAL, POINTER, DIMENSION(:) :: xqdgamm ! Log of Q10 function for CO2 conpensation
241 ! ! concentration (-)
242 REAL, POINTER, DIMENSION(:) :: xqdgmes ! Log of Q10 function for mesophyll conductance (-)
243 REAL, POINTER, DIMENSION(:) :: xt1gmes ! reference temperature for computing
244 ! ! compensation concentration function for
245 ! ! mesophyll conductance: minimum
246 ! ! temperature (K)
247 REAL, POINTER, DIMENSION(:) :: xt2gmes ! reference temperature for computing
248 ! ! compensation concentration function for
249 ! ! mesophyll conductance: maximum
250 ! ! temperature (K)
251 REAL, POINTER, DIMENSION(:) :: xamax ! leaf photosynthetic capacity (mg m-2 s-1)
252 REAL, POINTER, DIMENSION(:) :: xqdamax ! Log of Q10 function for leaf photosynthetic
253 ! ! capacity (-)
254 REAL, POINTER, DIMENSION(:) :: xt1amax ! reference temperature for computing
255 ! ! compensation concentration function for
256 ! ! leaf photosynthetic capacity: minimum
257 ! ! temperature (K)
258 REAL, POINTER, DIMENSION(:) :: xt2amax ! reference temperature for computing
259 ! ! compensation concentration function for
260 ! ! leaf photosynthetic capacity: maximum
261 ! ! temperature (K)
262 REAL, POINTER, DIMENSION(:) :: xah ! coefficients for herbaceous water stress
263 ! ! response (offensive or defensive) (log(mm/s))
264 REAL, POINTER, DIMENSION(:) :: xbh ! coefficients for herbaceous water stress
265 ! ! response (offensive or defensive)
266 REAL, POINTER, DIMENSION(:) :: xtau_wood ! residence time in woody biomass (s)
267 REAL, POINTER, DIMENSION(:,:) :: xincrease ! biomass increase (kg/m2/day)
268 REAL, POINTER, DIMENSION(:,:) :: xturnover ! turnover rates from biomass to litter (gC/m2/s)
269 !
270 ! *Soil hydraulic characteristics
271 !
272 REAL, POINTER, DIMENSION(:,:) :: xcondsat ! hydraulic conductivity at saturation (m/s)
273 !
274 REAL, POINTER, DIMENSION(:) :: xtauice ! soil freezing characteristic timescale (s)
275 !
276 REAL, POINTER, DIMENSION(:) :: xc1sat ! 'Force-Restore' C1 coefficient at
277 ! ! saturation (-)
278 REAL, POINTER, DIMENSION(:) :: xc2ref ! 'Force-Restore' reference value of C2 (-)
279 REAL, POINTER, DIMENSION(:,:) :: xc3 ! 'Force-Restore' C3 drainage coefficient (m)
280 REAL, POINTER, DIMENSION(:) :: xc4ref ! 'Force-Restore' sub-surface vertical
281 ! ! for lateral drainage ('DIF' option)
282 !
283 REAL, POINTER, DIMENSION(:) :: xbslai_nitro ! biomass/LAI ratio from nitrogen
284 ! ! decline theory (kg/m2)
285 ! * Soil thermal characteristics
286 !
287 REAL, POINTER, DIMENSION(:) :: xcps
288 REAL, POINTER, DIMENSION(:) :: xlvtt
289 REAL, POINTER, DIMENSION(:) :: xlstt
290 !
291 ! * Initialize hydrology
292 !
293  REAL, POINTER, DIMENSION(:) :: xrunoffd ! depth over which sub-grid runoff is
294 ! ! computed: in Force-Restore this is the
295 ! ! total soil column ('2-L'), or root zone
296 ! ! ('3-L'). For the 'DIF' option, it can
297 ! ! be any depth within soil column (m)
298 !
299 REAL, POINTER, DIMENSION(:,:) :: xdzg ! soil layers thicknesses (DIF option)
300 REAL, POINTER, DIMENSION(:,:) :: xdzdif ! distance between consecuative layer mid-points (DIF option)
301 REAL, POINTER, DIMENSION(:,:) :: xsoilwght ! VEG-DIF: weights for vertical
302 ! ! integration of soil water and properties
303 !
304 REAL, POINTER, DIMENSION(:) :: xksat_ice ! hydraulic conductivity at saturation
305 ! over frozen area (m s-1)
306 !
307 REAL, POINTER, DIMENSION(:,:) :: xtopqs ! Topmodel subsurface flow by layer (m/s)
308 !
309 REAL, POINTER, DIMENSION(:,:) :: xdg ! soil layer depth (m)
310 ! ! NOTE: in Force-Restore mode, the
311 ! ! uppermost layer depth is superficial
312 ! ! and is only explicitly used for soil
313 ! ! water phase changes (m)
314 !
315 REAL, POINTER, DIMENSION(:,:) :: xdg_old ! For land use
316 REAL, POINTER, DIMENSION(:) :: xdg2
317 INTEGER, POINTER, DIMENSION(:) :: nwg_layer ! Number of soil moisture layers for DIF
318 REAL, POINTER, DIMENSION(:) :: xdroot ! effective root depth for DIF (m)
319 REAL, POINTER, DIMENSION(:,:) :: xrootfrac ! root fraction profile ('DIF' option)
320 !
321 REAL, POINTER, DIMENSION(:) :: xd_ice ! depth of the soil column for the calculation
322 ! of the frozen soil fraction (m)
323 !
324 REAL, POINTER, DIMENSION(:) :: xh_tree ! height of trees (m)
325 !
326 REAL, POINTER, DIMENSION(:) :: xz0_o_z0h ! ratio of surface roughness lengths
327 ! ! (momentum to heat) (-)
328 !
329 REAL, POINTER, DIMENSION(:) :: xre25 ! Ecosystem respiration parameter (kg/kg.m.s-1)
330 !
331 REAL, POINTER, DIMENSION(:) :: xdmax ! maximum air saturation deficit
332 ! ! tolerate by vegetation
333 ! (kg/kg)
334 !
335 REAL, POINTER, DIMENSION(:,:) :: xred_noise
336 REAL, POINTER, DIMENSION(:,:) :: xincr
337 REAL, POINTER, DIMENSION(:,:,:) :: xho
338 !
339 END TYPE isba_p_t
340 !
341 TYPE ISba_pe_t
342 !
343 ! Prognostic variables:
344 !
345 ! - Soil and vegetation heat and water:
346 !
347 REAL, POINTER, DIMENSION(:,:) :: xwg ! soil volumetric water content profile (m3/m3)
348 REAL, POINTER, DIMENSION(:,:) :: xwgi ! soil liquid water equivalent volumetric
349 ! ! ice content profile (m3/m3)
350 REAL, POINTER, DIMENSION(:) :: xwr ! liquid water retained on the
351 ! ! foliage of the vegetation
352 ! ! canopy (kg/m2)
353 REAL, POINTER, DIMENSION(:,:) :: xtg ! surface and sub-surface soil
354 ! ! temperature profile (K)
355 !
356 ! - Snow Cover:
357 !
358 TYPE(surf_snow) :: tsnow ! snow state:
359 ! ! scheme type/option (-)
360 ! ! number of layers (-)
361 ! ! snow (& liq. water) content (kg/m2)
362 ! ! heat content (J/m2)
363 ! ! temperature (K)
364 ! ! density (kg m-3)
365 !
366 REAL, POINTER, DIMENSION(:) :: xice_sto ! Glacier ice storage reservoir
367 !
368 ! - For multi-energy balance:
369 !
370 REAL, POINTER, DIMENSION(:) :: xwrl ! liquid water retained on litter (kg/m2)
371 REAL, POINTER, DIMENSION(:) :: xwrli ! ice retained on litter (kg/m2)
372 REAL, POINTER, DIMENSION(:) :: xwrvn ! snow retained on the foliage
373 ! ! of the canopy vegetation (kg/m2)
374 REAL, POINTER, DIMENSION(:) :: xtv ! canopy vegetation temperature (K)
375 REAL, POINTER, DIMENSION(:) :: xtl ! litter temperature (K)
376 REAL, POINTER, DIMENSION(:) :: xtc ! canopy air temperature (K)
377 REAL, POINTER, DIMENSION(:) :: xqc ! canopy air specific humidity (kg/kg)
378 !
379 ! * Half prognostic fields
380 !
381 REAL, POINTER, DIMENSION(:) :: xresa ! aerodynamic resistance (s/m)
382 !
383 ! - Vegetation: Ags Prognostic (YPHOTO = 'AST', 'NIT', 'NCB')
384 !
385 REAL, POINTER, DIMENSION(:) :: xan ! net CO2 assimilation (mg/m2/s)
386 REAL, POINTER, DIMENSION(:) :: xanday ! daily net CO2 assimilation (mg/m2)
387 REAL, POINTER, DIMENSION(:) :: xanfm ! maximum leaf assimilation (mg/m2/s)
388 REAL, POINTER, DIMENSION(:) :: xle ! evapotranspiration (W/m2)
389 !
390 REAL, POINTER, DIMENSION(:) :: xfaparc ! Fapar of vegetation (cumul)
391 REAL, POINTER, DIMENSION(:) :: xfapirc ! Fapir of vegetation (cumul)
392 REAL, POINTER, DIMENSION(:) :: xlai_effc ! Effective LAI (cumul)
393 REAL, POINTER, DIMENSION(:) :: xmus ! cos zenithal angle (cumul)
394 !
395 REAL, POINTER, DIMENSION(:,:) :: xresp_biomass ! daily cumulated respiration of
396 ! ! biomass (kg/m2/s)
397 REAL, POINTER, DIMENSION(:,:) :: xbiomass ! biomass of previous day (kg/m2)
398 !
399 ! - Soil carbon (ISBA-CC, YRESPSL = 'CNT')
400 !
401 REAL, POINTER, DIMENSION(:,:,:) :: xlitter ! litter pools (gC/m2)
402 REAL, POINTER, DIMENSION(:,:) :: xsoilcarb ! soil carbon pools (gC/m2)
403 REAL, POINTER, DIMENSION(:,:) :: xlignin_struc ! ratio Lignin/Carbon in structural
404 ! litter (gC/m2)
405 !
406 REAL, POINTER, DIMENSION(:) :: xpsng ! Snow fraction over ground
407 REAL, POINTER, DIMENSION(:) :: xpsnv ! Snow fraction over vegetation
408 REAL, POINTER, DIMENSION(:) :: xpsnv_a ! Snow fraction over vegetation
409 REAL, POINTER, DIMENSION(:) :: xpsn
410 !
411 REAL, POINTER, DIMENSION(:) :: xsnowfree_alb ! snow free albedo (-)
412 REAL, POINTER, DIMENSION(:) :: xsnowfree_alb_veg ! snow free albedo for vegetation (-)
413 REAL, POINTER, DIMENSION(:) :: xsnowfree_alb_soil! snow free albedo for soil
414 !
415 REAL, POINTER, DIMENSION(:) :: xveg ! vegetation cover fraction (-)
416 !
417 REAL, POINTER, DIMENSION(:) :: xlai ! Leaf Area Index (m2/m2)
418 !
419 REAL, POINTER, DIMENSION(:) :: xemis ! surface emissivity (-)
420 REAL, POINTER, DIMENSION(:) :: xz0 ! surface roughness length (m)
421 !
422 REAL, POINTER, DIMENSION(:) :: xrsmin ! minimum stomatal resistance (s/m)
423 REAL, POINTER, DIMENSION(:) :: xgamma ! coefficient for the calculation
424 ! ! of the surface stomatal
425 ! ! resistance
426 REAL, POINTER, DIMENSION(:) :: xwrmax_cf ! coefficient for maximum water
427 ! ! interception
428 ! ! storage capacity on the vegetation (-)
429 REAL, POINTER, DIMENSION(:) :: xrgl ! maximum solar radiation
430 ! ! usable in photosynthesis
431 REAL, POINTER, DIMENSION(:) :: xcv ! vegetation thermal inertia coefficient (K m2/J)
432 REAL, POINTER, DIMENSION(:) :: xlaimin ! minimum LAI (Leaf Area Index) (m2/m2)
433 REAL, POINTER, DIMENSION(:) :: xsefold ! e-folding time for senescence (s)
434 REAL, POINTER, DIMENSION(:) :: xgmes ! mesophyll conductance (m s-1)
435 REAL, POINTER, DIMENSION(:) :: xgc ! cuticular conductance (m s-1)
436 REAL, POINTER, DIMENSION(:) :: xf2i ! critical normilized soil water
437 ! ! content for stress parameterisation
438 REAL, POINTER, DIMENSION(:) :: xbslai ! ratio d(biomass)/d(lai) (kg/m2)
439 !
440 REAL, POINTER, DIMENSION(:) :: xce_nitro ! leaf aera ratio sensitivity to
441 ! ! nitrogen concentration (m2/kg)
442 REAL, POINTER, DIMENSION(:) :: xcf_nitro ! lethal minimum value of leaf area
443 ! ! ratio (m2/kg)
444 REAL, POINTER, DIMENSION(:) :: xcna_nitro ! nitrogen concentration of active
445 ! ! biomass
446 LOGICAL, POINTER, DIMENSION(:) :: lstress ! vegetation response type to water
447 ! ! stress (true:defensive false:offensive) (-)
448 !
449 REAL, POINTER, DIMENSION(:) :: xalbnir_veg ! vegetation near-infra-red albedo (-)
450 REAL, POINTER, DIMENSION(:) :: xalbvis_veg ! vegetation visible albedo (-)
451 REAL, POINTER, DIMENSION(:) :: xalbuv_veg ! vegetation UV albedo (-)
452 !
453 REAL, POINTER, DIMENSION(:) :: xalbnir ! near-infra-red albedo (-)
454 REAL, POINTER, DIMENSION(:) :: xalbvis ! visible albedo (-)
455 REAL, POINTER, DIMENSION(:) :: xalbuv ! UV albedo
456 !
457 REAL, POINTER, DIMENSION(:) :: xgndlitter ! ground litter fraction (-)
458 REAL, POINTER, DIMENSION(:) :: xh_veg ! height of vegetation (m)
459 REAL, POINTER, DIMENSION(:) :: xz0litter ! ground litter roughness length (m)
460 !
461 REAL, POINTER, DIMENSION(:) :: xalbnir_soil ! soil near-infra-red albedo (-)
462 REAL, POINTER, DIMENSION(:) :: xalbvis_soil ! soil visible albedo (-)
463 REAL, POINTER, DIMENSION(:) :: xalbuv_soil ! soil UV albedo
464 !
465 type(date_time), POINTER, DIMENSION(:) :: tseed ! date of seeding
466 type(date_time), POINTER, DIMENSION(:) :: treap ! date of reaping
467 REAL, POINTER, DIMENSION(:) :: xwatsup ! water supply during irrigation process (mm)
468 REAL, POINTER, DIMENSION(:) :: xirrig ! flag for irrigation (irrigation if >0.)
469 !
470 !
471 END TYPE isba_pe_t
472 !
473 TYPE ISba_nk_t
474 !
475 TYPE(isba_k_t), DIMENSION(:), POINTER :: al=>null()
476 !
477 END TYPE isba_nk_t
478 !
479 TYPE ISba_np_t
480 !
481 TYPE(isba_p_t), DIMENSION(:), POINTER :: al=>null()
482 !
483 END TYPE isba_np_t
484 !
485 TYPE ISba_npe_t
486 !
487 TYPE(isba_pe_t), DIMENSION(:), POINTER :: al=>null()
488 !
489 END TYPE isba_npe_t
490 !
491 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
492 !
493 CONTAINS
494 !
495 SUBROUTINE isba_s_init(YISBA_S)
496 TYPE(isba_s_t), INTENT(INOUT) :: YISBA_S
497 REAL(KIND=JPRB) :: ZHOOK_HANDLE
498 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_S_INIT",0,zhook_handle)
499 !
500 NULLIFY(yisba_s%XZS)
501 NULLIFY(yisba_s%XCOVER)
502 NULLIFY(yisba_s%LCOVER)
503 !
504 NULLIFY(yisba_s%XTI_MIN)
505 NULLIFY(yisba_s%XTI_MAX)
506 NULLIFY(yisba_s%XTI_MEAN)
507 NULLIFY(yisba_s%XTI_STD)
508 NULLIFY(yisba_s%XTI_SKEW)
509 !
510 NULLIFY(yisba_s%XSOC)
511 NULLIFY(yisba_s%XPH)
512 NULLIFY(yisba_s%XFERT)
513 !
514 NULLIFY(yisba_s%XABC)
515 NULLIFY(yisba_s%XPOI)
516 !
517 NULLIFY(yisba_s%XFRACSOC)
518 NULLIFY(yisba_s%XTAB_FSAT)
519 NULLIFY(yisba_s%XTAB_WTOP)
520 NULLIFY(yisba_s%XTAB_QTOP)
521 NULLIFY(yisba_s%XF_PARAM)
522 NULLIFY(yisba_s%XC_DEPTH_RATIO)
523 NULLIFY(yisba_s%XCPL_DRAIN)
524 NULLIFY(yisba_s%XCPL_RUNOFF)
525 NULLIFY(yisba_s%XCPL_ICEFLUX)
526 NULLIFY(yisba_s%XCPL_EFLOOD)
527 NULLIFY(yisba_s%XCPL_PFLOOD)
528 NULLIFY(yisba_s%XCPL_IFLOOD)
529 NULLIFY(yisba_s%XPERTVEG)
530 NULLIFY(yisba_s%XPERTLAI)
531 NULLIFY(yisba_s%XPERTCV)
532 NULLIFY(yisba_s%XPERTALB)
533 NULLIFY(yisba_s%XPERTZ0)
534 NULLIFY(yisba_s%XEMIS_NAT)
535 !
536 NULLIFY(yisba_s%XTSRAD_NAT)
537 !
538 NULLIFY(yisba_s%XINNOV)
539 NULLIFY(yisba_s%XRESID)
540 !
541 NULLIFY(yisba_s%XWORK_WR)
542 !
543 NULLIFY(yisba_s%XWSN_WR)
544 NULLIFY(yisba_s%XRHO_WR)
545 NULLIFY(yisba_s%XALB_WR)
546 NULLIFY(yisba_s%XHEA_WR)
547 NULLIFY(yisba_s%XAGE_WR)
548 NULLIFY(yisba_s%XSG1_WR)
549 NULLIFY(yisba_s%XSG2_WR)
550 NULLIFY(yisba_s%XHIS_WR)
551 !
552 NULLIFY(yisba_s%TDATE_WR)
553 !
554 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_S_INIT",1,zhook_handle)
555 END SUBROUTINE isba_s_init
556 !
557 SUBROUTINE isba_k_init(YISBA_K)
558 TYPE(isba_k_t), INTENT(INOUT) :: YISBA_K
559 REAL(KIND=JPRB) :: ZHOOK_HANDLE
560 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_K_INIT",0,zhook_handle)
561 !
562 NULLIFY(yisba_k%XSAND)
563 NULLIFY(yisba_k%XCLAY)
564 NULLIFY(yisba_k%XPERM)
565 NULLIFY(yisba_k%XRUNOFFB)
566 NULLIFY(yisba_k%XWDRAIN)
567 !
568 NULLIFY(yisba_k%XTDEEP)
569 NULLIFY(yisba_k%XGAMMAT)
570 NULLIFY(yisba_k%XMPOTSAT)
571 NULLIFY(yisba_k%XBCOEF)
572 NULLIFY(yisba_k%XWWILT)
573 NULLIFY(yisba_k%XWFC)
574 NULLIFY(yisba_k%XWSAT)
575 NULLIFY(yisba_k%XCGSAT)
576 NULLIFY(yisba_k%XC4B)
577 NULLIFY(yisba_k%XACOEF)
578 NULLIFY(yisba_k%XPCOEF)
579 NULLIFY(yisba_k%XHCAPSOIL)
580 NULLIFY(yisba_k%XCONDDRY)
581 NULLIFY(yisba_k%XCONDSLD)
582 NULLIFY(yisba_k%XFWTD)
583 NULLIFY(yisba_k%XWTD)
584 NULLIFY(yisba_k%XALBNIR_DRY)
585 NULLIFY(yisba_k%XALBVIS_DRY)
586 NULLIFY(yisba_k%XALBUV_DRY)
587 NULLIFY(yisba_k%XALBNIR_WET)
588 NULLIFY(yisba_k%XALBVIS_WET)
589 NULLIFY(yisba_k%XALBUV_WET)
590 NULLIFY(yisba_k%XWD0)
591 NULLIFY(yisba_k%XKANISO)
592 NULLIFY(yisba_k%XMUF)
593 NULLIFY(yisba_k%XFSAT)
594 NULLIFY(yisba_k%XFFLOOD)
595 NULLIFY(yisba_k%XPIFLOOD)
596 NULLIFY(yisba_k%XFF)
597 NULLIFY(yisba_k%XFFG)
598 NULLIFY(yisba_k%XFFV)
599 NULLIFY(yisba_k%XFFROZEN)
600 NULLIFY(yisba_k%XALBF)
601 NULLIFY(yisba_k%XEMISF)
602 NULLIFY(yisba_k%XDIR_ALB_WITH_SNOW)
603 NULLIFY(yisba_k%XSCA_ALB_WITH_SNOW)
604 !
605 NULLIFY(yisba_k%XVEGTYPE)
606 !
607 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_K_INIT",1,zhook_handle)
608 END SUBROUTINE isba_k_init
609 !
610 SUBROUTINE isba_p_init(YISBA_P)
611 TYPE(isba_p_t), INTENT(INOUT) :: YISBA_P
612 REAL(KIND=JPRB) :: ZHOOK_HANDLE
613 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_P_INIT",0,zhook_handle)
614 !
615 yisba_p%NSIZE_P = 0
616 NULLIFY(yisba_p%XPATCH)
617 NULLIFY(yisba_p%XVEGTYPE_PATCH)
618 NULLIFY(yisba_p%NR_P)
619 NULLIFY(yisba_p%XPATCH_OLD)
620 NULLIFY(yisba_p%XANMAX)
621 NULLIFY(yisba_p%XFZERO)
622 NULLIFY(yisba_p%XEPSO)
623 NULLIFY(yisba_p%XGAMM)
624 NULLIFY(yisba_p%XQDGAMM)
625 NULLIFY(yisba_p%XQDGMES)
626 NULLIFY(yisba_p%XT1GMES)
627 NULLIFY(yisba_p%XT2GMES)
628 NULLIFY(yisba_p%XAMAX)
629 NULLIFY(yisba_p%XQDAMAX)
630 NULLIFY(yisba_p%XT1AMAX)
631 NULLIFY(yisba_p%XT2AMAX)
632 NULLIFY(yisba_p%XAH)
633 NULLIFY(yisba_p%XBH)
634 NULLIFY(yisba_p%XTAU_WOOD)
635 NULLIFY(yisba_p%XINCREASE)
636 NULLIFY(yisba_p%XTURNOVER)
637 NULLIFY(yisba_p%XCONDSAT)
638 NULLIFY(yisba_p%XTAUICE)
639 NULLIFY(yisba_p%XC1SAT)
640 NULLIFY(yisba_p%XC2REF)
641 NULLIFY(yisba_p%XC3)
642 NULLIFY(yisba_p%XC4REF)
643 NULLIFY(yisba_p%XCPS)
644 NULLIFY(yisba_p%XLVTT)
645 NULLIFY(yisba_p%XLSTT)
646 NULLIFY(yisba_p%XRUNOFFD)
647 NULLIFY(yisba_p%XDZG)
648 NULLIFY(yisba_p%XDZDIF)
649 NULLIFY(yisba_p%XSOILWGHT)
650 NULLIFY(yisba_p%XKSAT_ICE)
651 NULLIFY(yisba_p%XBSLAI_NITRO)
652 NULLIFY(yisba_p%XTOPQS)
653 !
654 NULLIFY(yisba_p%XDG)
655 NULLIFY(yisba_p%XDG_OLD)
656 NULLIFY(yisba_p%NWG_LAYER)
657 NULLIFY(yisba_p%XDROOT)
658 NULLIFY(yisba_p%XDG2)
659 NULLIFY(yisba_p%XROOTFRAC)
660 NULLIFY(yisba_p%XD_ICE)
661 NULLIFY(yisba_p%XH_TREE)
662 NULLIFY(yisba_p%XZ0_O_Z0H)
663 NULLIFY(yisba_p%XRE25)
664 NULLIFY(yisba_p%XDMAX)
665 !
666 NULLIFY(yisba_p%XRED_NOISE)
667 NULLIFY(yisba_p%XINCR)
668 NULLIFY(yisba_p%XHO)
669 !
670 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_P_INIT",1,zhook_handle)
671 END SUBROUTINE isba_p_init
672 !
673 SUBROUTINE isba_pe_init(YISBA_PE)
674 TYPE(isba_pe_t), INTENT(INOUT) :: YISBA_PE
675 REAL(KIND=JPRB) :: ZHOOK_HANDLE
676 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_PE_INIT",0,zhook_handle)
677 !
678 NULLIFY(yisba_pe%XLAI)
679 NULLIFY(yisba_pe%XVEG)
680 NULLIFY(yisba_pe%XEMIS)
681 NULLIFY(yisba_pe%XZ0)
682 NULLIFY(yisba_pe%XRSMIN)
683 NULLIFY(yisba_pe%XGAMMA)
684 NULLIFY(yisba_pe%XWRMAX_CF)
685 NULLIFY(yisba_pe%XRGL)
686 NULLIFY(yisba_pe%XCV)
687 NULLIFY(yisba_pe%XLAIMIN)
688 NULLIFY(yisba_pe%XSEFOLD)
689 NULLIFY(yisba_pe%XGMES)
690 NULLIFY(yisba_pe%XGC)
691 NULLIFY(yisba_pe%XF2I)
692 NULLIFY(yisba_pe%XBSLAI)
693 NULLIFY(yisba_pe%XCE_NITRO)
694 NULLIFY(yisba_pe%XCF_NITRO)
695 NULLIFY(yisba_pe%XCNA_NITRO)
696 NULLIFY(yisba_pe%LSTRESS)
697 NULLIFY(yisba_pe%XALBNIR_VEG)
698 NULLIFY(yisba_pe%XALBVIS_VEG)
699 NULLIFY(yisba_pe%XALBUV_VEG)
700 NULLIFY(yisba_pe%XALBNIR)
701 NULLIFY(yisba_pe%XALBVIS)
702 NULLIFY(yisba_pe%XALBUV)
703 !
704 NULLIFY(yisba_pe%XGNDLITTER)
705 NULLIFY(yisba_pe%XH_VEG)
706 NULLIFY(yisba_pe%XZ0LITTER)
707 !
708 NULLIFY(yisba_pe%XALBNIR_SOIL)
709 NULLIFY(yisba_pe%XALBVIS_SOIL)
710 NULLIFY(yisba_pe%XALBUV_SOIL)
711 !
712 NULLIFY(yisba_pe%XWATSUP)
713 NULLIFY(yisba_pe%XIRRIG)
714 !
715 NULLIFY(yisba_pe%XWG)
716 NULLIFY(yisba_pe%XWGI)
717 NULLIFY(yisba_pe%XWR)
718 NULLIFY(yisba_pe%XTG)
719 NULLIFY(yisba_pe%XICE_STO)
720 NULLIFY(yisba_pe%XWRL)
721 NULLIFY(yisba_pe%XWRLI)
722 NULLIFY(yisba_pe%XWRVN)
723 NULLIFY(yisba_pe%XTV)
724 NULLIFY(yisba_pe%XTL)
725 NULLIFY(yisba_pe%XTC)
726 NULLIFY(yisba_pe%XQC)
727 NULLIFY(yisba_pe%XRESA)
728 NULLIFY(yisba_pe%XAN)
729 NULLIFY(yisba_pe%XANDAY)
730 NULLIFY(yisba_pe%XANFM)
731 NULLIFY(yisba_pe%XLE)
732 NULLIFY(yisba_pe%XFAPARC)
733 NULLIFY(yisba_pe%XFAPIRC)
734 NULLIFY(yisba_pe%XLAI_EFFC)
735 NULLIFY(yisba_pe%XMUS)
736 NULLIFY(yisba_pe%XRESP_BIOMASS)
737 NULLIFY(yisba_pe%XBIOMASS)
738 NULLIFY(yisba_pe%XLITTER)
739 NULLIFY(yisba_pe%XSOILCARB)
740 NULLIFY(yisba_pe%XLIGNIN_STRUC)
741 NULLIFY(yisba_pe%XPSNG)
742 NULLIFY(yisba_pe%XPSNV)
743 NULLIFY(yisba_pe%XPSNV_A)
744 NULLIFY(yisba_pe%XSNOWFREE_ALB)
745 NULLIFY(yisba_pe%XSNOWFREE_ALB_VEG)
746 NULLIFY(yisba_pe%XSNOWFREE_ALB_SOIL)
747 NULLIFY(yisba_pe%XPSN)
748 !
749 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_PE_INIT",1,zhook_handle)
750 END SUBROUTINE isba_pe_init
751 !
752 SUBROUTINE isba_nk_init(YISBA_NK,KPATCH)
753 TYPE(isba_nk_t), INTENT(INOUT) :: YISBA_NK
754 INTEGER, INTENT(IN) :: KPATCH
755 INTEGER :: JP
756 REAL(KIND=JPRB) :: ZHOOK_HANDLE
757 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_NK_INIT",0,zhook_handle)
758 !
759 IF (ASSOCIATED(yisba_nk%AL)) THEN
760  DO jp = 1,kpatch
761  CALL isba_k_init(yisba_nk%AL(jp))
762  ENDDO
763  DEALLOCATE(yisba_nk%AL)
764 ELSE
765  ALLOCATE(yisba_nk%AL(kpatch))
766  DO jp = 1,kpatch
767  CALL isba_k_init(yisba_nk%AL(jp))
768  ENDDO
769 ENDIF
770 !
771 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_NK_INIT",1,zhook_handle)
772 END SUBROUTINE isba_nk_init
773 !
774 SUBROUTINE isba_np_init(YISBA_NP,KPATCH)
775 TYPE(isba_np_t), INTENT(INOUT) :: YISBA_NP
776 INTEGER, INTENT(IN) :: KPATCH
777 INTEGER :: JP
778 REAL(KIND=JPRB) :: ZHOOK_HANDLE
779 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_NP_INIT",0,zhook_handle)
780 !
781 IF (ASSOCIATED(yisba_np%AL)) THEN
782  DO jp = 1,kpatch
783  CALL isba_p_init(yisba_np%AL(jp))
784  ENDDO
785  DEALLOCATE(yisba_np%AL)
786 ELSE
787  ALLOCATE(yisba_np%AL(kpatch))
788  DO jp = 1,kpatch
789  CALL isba_p_init(yisba_np%AL(jp))
790  ENDDO
791 ENDIF
792 !
793 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_NP_INIT",1,zhook_handle)
794 END SUBROUTINE isba_np_init
795 !
796 SUBROUTINE isba_npe_init(YISBA_NPE,KPATCH)
797 TYPE(isba_npe_t), INTENT(INOUT) :: YISBA_NPE
798 INTEGER, INTENT(IN) :: KPATCH
799 INTEGER :: JP
800 REAL(KIND=JPRB) :: ZHOOK_HANDLE
801 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_NPE_INIT",0,zhook_handle)
802 !
803 IF (ASSOCIATED(yisba_npe%AL)) THEN
804  DO jp = 1,kpatch
805  CALL isba_pe_init(yisba_npe%AL(jp))
806  ENDDO
807  DEALLOCATE(yisba_npe%AL)
808 ELSE
809  ALLOCATE(yisba_npe%AL(kpatch))
810  DO jp = 1,kpatch
811  CALL isba_pe_init(yisba_npe%AL(jp))
812  ENDDO
813 ENDIF
814 !
815 IF (lhook) CALL dr_hook("MODD_ISBA_N:ISBA_NPE_INIT",1,zhook_handle)
816 END SUBROUTINE isba_npe_init
817 
818 END MODULE modd_isba_n
subroutine isba_pe_init(YISBA_PE)
Definition: modd_isban.F90:674
subroutine isba_p_init(YISBA_P)
Definition: modd_isban.F90:611
subroutine isba_nk_init(YISBA_NK, KPATCH)
Definition: modd_isban.F90:753
subroutine isba_npe_init(YISBA_NPE, KPATCH)
Definition: modd_isban.F90:797
integer, parameter jprb
Definition: parkind1.F90:32
subroutine isba_np_init(YISBA_NP, KPATCH)
Definition: modd_isban.F90:775
subroutine isba_s_init(YISBA_S)
Definition: modd_isban.F90:496
logical lhook
Definition: yomhook.F90:15
subroutine isba_k_init(YISBA_K)
Definition: modd_isban.F90:558