Line data Source code
1 : !> \dir MPR
2 : !> \brief \copybrief f_mpr
3 : !> \details \copydetails f_mpr
4 :
5 : !> \defgroup f_mpr MPR - Fortran modules
6 : !> \brief Core modules of MPR.
7 : !> \details These modules provide the core components of the Multiscale Parameter Regionalization scheme of mHM.
8 :
9 : !> \file mo_mpr_global_variables.f90
10 : !> \brief \copybrief mo_mpr_global_variables
11 : !> \details \copydetails mo_mpr_global_variables
12 :
13 : !> \brief Global variables for mpr only
14 : !> \details Global variables used to run MPR for mHM.
15 : !> \authors Robert Schweppe
16 : !> \date Dec 2017
17 : !> \copyright Copyright 2005-\today, the mHM Developers, Luis Samaniego, Sabine Attinger: All rights reserved.
18 : !! mHM is released under the LGPLv3+ license \license_note
19 : !> \ingroup f_mpr
20 : module mo_mpr_global_variables
21 :
22 : use mo_kind, only : i4, dp
23 : use mo_common_types, only: period
24 :
25 : implicit none
26 :
27 : private
28 :
29 : ! ------------------------------------------------------------------
30 : ! SOIL DATA
31 : ! ------------------------------------------------------------------
32 : real(dp), public :: tillageDepth ! [mm] Soil depth down to which organic
33 : ! matter is possible
34 : integer(i4), public :: nSoilTypes ! Number of soil types
35 : integer(i4), public :: iFlag_soilDB ! options to handle different soil databases
36 : integer(i4), public :: nSoilHorizons_mHM ! Number of horizons to model
37 : real(dp), dimension(:), allocatable, public :: HorizonDepth_mHM ! [mm] Horizon depth from surface,
38 : ! positive downwards
39 :
40 : type soilType
41 : ! dim1 = nSoilType (e.g. i=1..72 for BUEK)
42 : ! dim2 = the maximum of nHorizons
43 : ! dim3 = land cover classes
44 : ! input data
45 : integer(i4), dimension(:), allocatable :: id ! Soil Id
46 : integer(i4), dimension(:), allocatable :: nHorizons ! Number of horizons
47 : integer(i4), dimension(:), allocatable :: is_present ! Wether this soil type is present in
48 : ! ! this domain or not
49 : real(dp), dimension(:, :), allocatable :: UD ! [mm] Upper Bound of depth
50 : real(dp), dimension(:, :), allocatable :: LD ! [mm] Lower Bound of depth
51 : real(dp), dimension(:, :), allocatable :: clay ! [%] Clay content
52 : real(dp), dimension(:, :), allocatable :: sand ! [%] Sand content
53 : real(dp), dimension(:, :), allocatable :: DbM ! [g/cm2] Mineral Bulk density
54 : real(dp), dimension(:, :), allocatable :: depth ! [mm] Depth of the soil Horizon
55 : real(dp), dimension(:), allocatable :: RZdepth ! [mm] Total soil depth
56 : real(dp), dimension(:, :, :), allocatable :: Wd ! [1] Weights of mHM Horizons according to
57 : ! ! horizons provided in soil database
58 : integer(i4), dimension(:), allocatable :: nTillHorizons ! [1] Number of tillage horizons
59 :
60 : ! derived soil hydraulic properties
61 : real(dp), dimension(:, :, :), allocatable :: thetaS_Till ! [1] Saturated water content of soil horizons
62 : ! ! tillage depth - f(OM, management)
63 : real(dp), dimension(:, :), allocatable :: thetaS ! [1] Saturated water content of soil horizons
64 : ! ! after tillage depth
65 : real(dp), dimension(:, :, :), allocatable :: Db ! [g/cm2] Bulk density, LUC dependent
66 : ! ! = f( OM, management)
67 : real(dp), dimension(:, :, :), allocatable :: thetaFC_Till ! [1] Field capacity of tillage layers;
68 : ! ! LUC dependent - f(OM, management)
69 : real(dp), dimension(:, :), allocatable :: thetaFC ! [1] Field capacity of deeper layers
70 : real(dp), dimension(:, :, :), allocatable :: thetaPW_Till ! [1] Permament wilting point of tillage layers;
71 : ! ! LUC dependent - f(OM, management)
72 : real(dp), dimension(:, :), allocatable :: thetaPW ! [1] Permanent wilting point of deeper layers
73 : real(dp), dimension(:, :, :), allocatable :: Ks ! [cm/d] Saturated hydaulic conductivity
74 : end type soilType
75 : type(soilType), public :: soilDB ! The soil database
76 :
77 : ! -----------------------------------------------------------------
78 : ! GEOLOGICAL FORMATION data
79 : ! -----------------------------------------------------------------
80 : integer(i4), public :: nGeoUnits ! Number of geological formations
81 : integer(i4), dimension(:), allocatable, public :: GeoUnitList ! List of ids of each geological formations
82 : integer(i4), dimension(:), allocatable, public :: GeoUnitKar ! Id of Karstic formation (0 == does not exist)
83 :
84 : ! -----------------------------------------------------------------
85 : ! Land cover, LAI LUT data
86 : ! -----------------------------------------------------------------
87 : character(256), public :: inputFormat_gridded_LAI ! format of gridded LAI data (nc only)
88 : integer(i4), public :: timeStep_LAI_input ! time step of gridded LAI input
89 : ! LAI data
90 : ! variables used when timeStep_LAI_input == 0
91 : integer(i4), public :: nLAIclass ! Number of LAI classes
92 : integer(i4), public :: nLAI ! Number of LAI slices (a.k.a timestep)
93 : real(dp), dimension(:), allocatable, public :: LAIBoundaries !
94 : integer(i4), public, dimension(:), allocatable :: LAIUnitList ! List of ids of each LAI class in LAILUT
95 : real(dp), public, dimension(:, :), allocatable :: LAILUT ! [m2/m2] Leaf area index for LAIUnit
96 : ! ! dim1=land cover class, dim2=month of year
97 : type(period), dimension(:), allocatable, public :: LAIPer ! time period for LAI_readin
98 : real(dp), public :: fracSealed_cityArea ! fraction of area within city assumed to be
99 : ! ! perfectly sealed [0-1]
100 :
101 : ! -------------------------------------------------------------------
102 : ! L0 DOMAIN description -> <only domain>
103 : ! -------------------------------------------------------------------
104 : ! mHM derived variables
105 : ! dim1 = number grid cells L0
106 : real(dp), public, dimension(:), allocatable :: L0_slope_emp ! Empirical quantiles of slope
107 : !
108 : real(dp), public, dimension(:, :), allocatable :: L0_gridded_LAI ! gridded LAI data used when timeStep_LAI_input<0 or==1
109 : ! ! dim1=number of gridcells, dim2=number LAI timesteps
110 :
111 : real(dp), public, dimension(:), allocatable :: L0_slope ! [%] Slope
112 : real(dp), public, dimension(:), allocatable :: L0_asp ! [degree] Aspect degree
113 : ! [dim1=number grid cells, dim2=Number of soil horizons] note: for iFlag_soilDB=0, dim2=1
114 : integer(i4), public, dimension(:, :), allocatable :: L0_soilId ! soil id (iFlag_soilDB = 0)
115 : integer(i4), public, dimension(:), allocatable :: L0_geoUnit ! Geologic formation (unit)
116 :
117 : ! ------------------------------------------------------------------
118 : ! DIRECTORIES
119 : ! ------------------------------------------------------------------
120 : ! has the dimension of nDomains
121 : character(256), dimension(:), allocatable, public :: dirgridded_LAI ! Directory where gridded LAI is located
122 : ! used when timeStep_LAI_input < 0
123 :
124 : ! Effective parameters
125 : ! dim1 = number grid cells L1
126 : ! dim2 = number model soil horizons or YearMonths or other auxiliary dimension
127 : ! dim3 = number of LCscenes
128 : real(dp), public, dimension(:, :, :), allocatable :: L1_fSealed ! [1] Fraction of sealed area (nCells, nLCscenes)
129 :
130 : real(dp), public, dimension(:, :, :), allocatable :: L1_alpha ! [1] Exponent for the upper reservoir
131 : real(dp), public, dimension(:, :, :), allocatable :: L1_degDayInc ! [d-1 degC-1] Increase of the Degree-day factor
132 : ! ! per mm of increase in precipitation
133 : real(dp), public, dimension(:, :, :), allocatable :: L1_degDayMax ! [mm-1 degC-1] Maximum Degree-day factor
134 : real(dp), public, dimension(:, :, :), allocatable :: L1_degDayNoPre ! [mm-1 degC-1] Degree-day factor with no
135 : ! precipitation.
136 : real(dp), public, dimension(:, :, :), allocatable :: L1_degDay ! [mm d-1degC-1] Degree-day factor.
137 : real(dp), public, dimension(:, :, :), allocatable :: L1_karstLoss ! [1] Karstic percolation loss
138 : real(dp), public, dimension(:, :, :), allocatable :: L1_fAsp ! [1] PET correction for aspect
139 : real(dp), public, dimension(:, :, :), allocatable :: L1_petLAIcorFactor ! [-] PET correction based on LAI (KC by GEUS.dk)
140 :
141 : real(dp), public, dimension(:, :, :), allocatable :: L1_HarSamCoeff ! [1] Hargreaves Samani coeffiecient
142 : real(dp), public, dimension(:, :, :), allocatable :: L1_PrieTayAlpha ! [1] Priestley Taylor coeffiecient
143 : real(dp), public, dimension(:, :, :), allocatable :: L1_aeroResist ! [s m-1] aerodynamical resitance
144 : real(dp), public, dimension(:, :, :), allocatable :: L1_surfResist ! [s m-1] bulk surface resitance
145 : real(dp), public, dimension(:, :, :), allocatable :: L1_fRoots ! [1] Fraction of roots in soil horizons
146 : real(dp), public, dimension(:, :, :), allocatable :: L1_maxInter ! [mm] Maximum interception
147 :
148 : real(dp), public, dimension(:, :, :), allocatable :: L1_kfastFlow ! [d-1] Fast interflow recession coefficient
149 : real(dp), public, dimension(:, :, :), allocatable :: L1_kSlowFlow ! [d-1] Slow interflow recession coefficient
150 : real(dp), public, dimension(:, :, :), allocatable :: L1_kBaseFlow ! [d-1] Baseflow recession coefficient
151 : real(dp), public, dimension(:, :, :), allocatable :: L1_kPerco ! [d-1] percolation coefficient
152 : real(dp), public, dimension(:, :, :), allocatable :: L1_soilMoistFC ! [mm] Soil moisture below which actual ET
153 : ! ! is reduced linearly till PWP
154 : real(dp), public, dimension(:, :, :), allocatable :: L1_soilMoistSat ! [mm] Saturation soil moisture for each horizon [mm]
155 : real(dp), public, dimension(:, :, :), allocatable :: L1_soilMoistExp ! [1] Exponential parameter to how non-linear
156 : ! ! is the soil water retention
157 : real(dp), public, dimension(:, :, :), allocatable :: L1_jarvis_thresh_c1 ![1] jarvis critical value for normalized soil
158 : ! ! water content
159 : real(dp), public, dimension(:, :, :), allocatable :: L1_tempThresh ! [degC] Threshold temperature for snow/rain
160 : real(dp), public, dimension(:, :, :), allocatable :: L1_unsatThresh ! [mm] Threshold waterdepth controlling fast interflow
161 : real(dp), public, dimension(:, :, :), allocatable :: L1_sealedThresh ! [mm] Threshold waterdepth for surface runoff
162 : ! ! in sealed surfaces
163 : real(dp), public, dimension(:, :, :), allocatable :: L1_wiltingPoint ! [mm] Permanent wilting point: below which neither
164 : ! ! plant can take water nor water can drain in
165 : ! >> COSMIC neutron count realated parameters -- only those which are regionlized
166 : !! defined here others are treated as global parameters...
167 : real(dp), public, dimension(:,:,:), allocatable :: L1_No_Count ! N0 COUNT >> in Desilets and COSMIC routines
168 : real(dp), public, dimension(:,:,:), allocatable :: L1_bulkDens ! Bulk density >> in COSMIC routines
169 : real(dp), public, dimension(:,:,:), allocatable :: L1_latticeWater ! lattice water >> in COSMIC routines
170 : real(dp), public, dimension(:,:,:), allocatable :: L1_COSMICL3 ! !COSMIC L3 >> in COSMIC routines
171 :
172 0 : end module mo_mpr_global_variables
|