LCOV - code coverage report
Current view: top level - MPR - mo_mpr_global_variables.f90 (source / functions) Hit Total Coverage
Test: mHM coverage Lines: 0 1 0.0 %
Date: 2024-04-15 17:48:09 Functions: 0 2 0.0 %

          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

Generated by: LCOV version 1.16