5.13.2-dev0
mHM
The mesoscale Hydrological Model
Loading...
Searching...
No Matches
mo_mhm Module Reference

Call all main processes of mHM. More...

Functions/Subroutines

subroutine, public mhm (read_states, tt, time, processmatrix, horizon_depth, ncells1, nhorizons_mhm, c2tstu, neutron_integral_afast, evap_coeff, fsealed1, interc, snowpack, sealedstorage, soilmoisture, unsatstorage, satstorage, neutrons, pet_calc, temp_calc, prec_calc, aet_soil, aet_canopy, aet_sealed, baseflow, infiltration, fast_interflow, melt, perc, prec_effect, rain, runoff_sealed, slow_interflow, snow, throughfall, total_runoff, alpha, deg_day_incr, deg_day_max, deg_day_noprec, deg_day, frac_roots, interc_max, karst_loss, k0, k1, k2, kp, soil_moist_fc, soil_moist_sat, soil_moist_exponen, jarvis_thresh_c1, temp_thresh, unsat_thresh, water_thresh_sealed, wilting_point, no_count, bulkdens, latticewater, cosmicl3)
 Pure mHM calculations.
 

Detailed Description

Call all main processes of mHM.

This module calls all processes of mHM for a given configuration. The configuration of the model is stored in the a process matrix. This configuration is specified in the namelist mhm.nml.

The processes are executed in ascending order. At the moment only process 5 and 8 have options.

Currently the following processes are implemented:

Process Name Flag Description
1 interception 1 Maximum interception
2 snow and melting 1 Degree-day
3 soil moisture 1 Feddes equation for ET reduction, Brooks-Corey like
3 soil moisture 2 Jarvis equation for ET reduction, Brooks-Corey like
3 soil moisture 3 Jarvis eq. for ET red. + FC dependency on root frac. coef.
4 direct runoff 1 Linear reservoir exceedance
5 PET -1 PET is input, LAI based correction, dynamic scaling func.
5 PET 0 PET is input, Aspect based correction
5 PET 1 Hargreaves-Samani
5 PET 2 Priestley-Taylor
5 PET 3 Penman-Monteith
6 interflow 1 Nonlinear reservoir with saturation excess
7 percolation and base flow 1 GW linear reservoir
8 routing 0 no routing
8 routing 1 use mRM i.e. Muskingum
8 routing 2 use mRM i.e. adaptive timestep
Changelog
  • Luis Samaniego, Rohini Kumar Dec 2012
    • modularization
  • Luis Samaniego Feb 2013
    • call routine
  • Rohini Kumar Feb 2013
    • MPR call and other pre-requisite variables for this call
  • Rohini Kumar May 2013
    • Error checks
  • Rohini Kumar Jun 2013
    • sealed area correction in total runoff
    • initalization of soil moist. at first timestep
  • Rohini Kumar Aug 2013
    • dynamic LAI option included, and changed within the code made accordingly (e.g., canopy intecpt.)
    • max. canopy interception is estimated outside of MPR call
  • Matthias Zink Feb 2014
    • added PET calculation: Hargreaves-Samani (Process 5)
  • Matthias Zink Mar 2014
    • added inflow from upstream areas
  • Matthias Zink Apr 2014
    • added PET calculation: Priestley-Taylor and Penman-Monteith and its parameterization (Process 5)
  • Rohini Kumar Apr 2014
    • mHM run with a single L0 grid cell, also in the routing mode
  • Stephan Thober Jun 2014
    • added flag for switching of MPR
  • Matthias Cuntz & Juliane Mai Nov 2014
    • LAI input from daily, monthly or yearly files
  • Matthias Zink Dec 2014
    • adopted inflow gauges to ignore headwater cells
  • Stephan Thober Aug 2015
    • moved routing to mRM
  • Rohini Kumar Mar 2016
    • changes for handling multiple soil database options
  • Rohini Kumar Dec 2016
    • changes for reading gridded mean monthly LAI fields
  • Stephan Thober Jan 2017
    • added prescribed weights for tavg and pet
  • Zink M. Demirel C. Mar 2017
    • added Jarvis soil water stress function at SM process(3)
  • M.Cuneyd Demirel & Simon Stisen May 2017
    • added FC dependency on root fraction coef. at SM process(3)
  • M.Cuneyd Demirel & Simon Stisen Jun 2017
    • added PET correction based on LAI at PET process(5)
  • Robert Schweppe, Stephan Thober Nov 2017
    • moved call to MPR to mhm_eval
  • Robert Schweppe Jun 2018
    • refactoring and reformatting
  • Robert Schweppe Nov 2018
    • added c2TSTu for unit conversion (moved here from MPR)
  • Rohini Kumar Oct 2021
    • Neutron count module to mHM integrate into develop branch (5.11.2)
  • Stephan Thober Jan 2022
    • added is_hourly_forcing
  • Sebastian Mueller May 2022
    • added temp_calc and prec_calc for coupling to other models
Authors
Luis Samaniego
Date
Dec 2012

Function/Subroutine Documentation

◆ mhm()

subroutine, public mo_mhm::mhm ( logical, intent(in)  read_states,
integer(i4), intent(in)  tt,
real(dp), intent(in)  time,
integer(i4), dimension(:, :), intent(in)  processmatrix,
real(dp), dimension(:), intent(in)  horizon_depth,
integer(i4), intent(in)  ncells1,
integer(i4), intent(in)  nhorizons_mhm,
real(dp), intent(in)  c2tstu,
real(dp), dimension(:), intent(in)  neutron_integral_afast,
real(dp), dimension(:), intent(in)  evap_coeff,
real(dp), dimension(:), intent(in)  fsealed1,
real(dp), dimension(:), intent(inout)  interc,
real(dp), dimension(:), intent(inout)  snowpack,
real(dp), dimension(:), intent(inout)  sealedstorage,
real(dp), dimension(:, :), intent(inout)  soilmoisture,
real(dp), dimension(:), intent(inout)  unsatstorage,
real(dp), dimension(:), intent(inout)  satstorage,
real(dp), dimension(:), intent(inout)  neutrons,
real(dp), dimension(:), intent(inout)  pet_calc,
real(dp), dimension(:), intent(inout)  temp_calc,
real(dp), dimension(:), intent(inout)  prec_calc,
real(dp), dimension(:, :), intent(inout)  aet_soil,
real(dp), dimension(:), intent(inout)  aet_canopy,
real(dp), dimension(:), intent(inout)  aet_sealed,
real(dp), dimension(:), intent(inout)  baseflow,
real(dp), dimension(:, :), intent(inout)  infiltration,
real(dp), dimension(:), intent(inout)  fast_interflow,
real(dp), dimension(:), intent(inout)  melt,
real(dp), dimension(:), intent(inout)  perc,
real(dp), dimension(:), intent(inout)  prec_effect,
real(dp), dimension(:), intent(inout)  rain,
real(dp), dimension(:), intent(inout)  runoff_sealed,
real(dp), dimension(:), intent(inout)  slow_interflow,
real(dp), dimension(:), intent(inout)  snow,
real(dp), dimension(:), intent(inout)  throughfall,
real(dp), dimension(:), intent(inout)  total_runoff,
real(dp), dimension(:), intent(inout)  alpha,
real(dp), dimension(:), intent(inout)  deg_day_incr,
real(dp), dimension(:), intent(inout)  deg_day_max,
real(dp), dimension(:), intent(inout)  deg_day_noprec,
real(dp), dimension(:), intent(inout)  deg_day,
real(dp), dimension(:, :), intent(inout)  frac_roots,
real(dp), dimension(:), intent(inout)  interc_max,
real(dp), dimension(:), intent(inout)  karst_loss,
real(dp), dimension(:), intent(inout)  k0,
real(dp), dimension(:), intent(inout)  k1,
real(dp), dimension(:), intent(inout)  k2,
real(dp), dimension(:), intent(inout)  kp,
real(dp), dimension(:, :), intent(inout)  soil_moist_fc,
real(dp), dimension(:, :), intent(inout)  soil_moist_sat,
real(dp), dimension(:, :), intent(inout)  soil_moist_exponen,
real(dp), dimension(:), intent(inout)  jarvis_thresh_c1,
real(dp), dimension(:), intent(inout)  temp_thresh,
real(dp), dimension(:), intent(inout)  unsat_thresh,
real(dp), dimension(:), intent(inout)  water_thresh_sealed,
real(dp), dimension(:, :), intent(inout)  wilting_point,
real(dp), dimension(:), intent(inout)  no_count,
real(dp), dimension(:,:), intent(inout)  bulkdens,
real(dp), dimension(:,:), intent(inout)  latticewater,
real(dp), dimension(:,:), intent(inout)  cosmicl3 
)

Pure mHM calculations.

Pure mHM calculations. All variables are allocated and initialized. They will be local variables within this call.

Parameters
[in]logical :: read_statesindicated whether states have been read from file
[in]integer(i4) :: ttsimulation time step
[in]real(dp) :: timecurrent decimal Julian day
[in]integer(i4), dimension(:, :) :: processMatrixmHM process configuration matrix
[in]real(dp), dimension(:) :: horizon_depthDepth of each horizon in mHM
[in]integer(i4) :: nCells1number of cells in a given domain at level L1
[in]integer(i4) :: nHorizons_mHMNumber of Horizons in mHM
[in]real(dp) :: ntimesteps_daynumber of time intervals per day, transformed in dp
[in]real(dp), dimension(:) :: neutron_integral_AFasttabular for neutron flux approximation
[in]real(dp), dimension(:) :: latitudelatitude on level 1
[in]real(dp), dimension(:) :: evap_coeffEvaporation coefficent for free-water surface of that current month
[in]real(dp), dimension(:) :: fday_prec[-] day ratio precipitation < 1
[in]real(dp), dimension(:) :: fnight_prec[-] night ratio precipitation < 1
[in]real(dp), dimension(:) :: fday_pet[-] day ratio PET < 1
[in]real(dp), dimension(:) :: fnight_pet[-] night ratio PET < 1
[in]real(dp), dimension(:) :: fday_temp[-] day factor mean temp
[in]real(dp), dimension(:) :: fnight_temp[-] night factor mean temp
[in]real(dp), dimension(:, :, :) :: temp_weightsmultiplicative weights for temperature (deg K)
[in]real(dp), dimension(:, :, :) :: pet_weightsmultiplicative weights for potential evapotranspiration
[in]real(dp), dimension(:, :, :) :: pre_weightsmultiplicative weights for precipitation
[in]logical :: read_meteo_weightsflag whether weights for tavg and pet have read and should be used
[in]real(dp), dimension(:) :: pet_in[mm d-1] Daily potential evapotranspiration (input)
[in]real(dp), dimension(:) :: tmin_in[degc] Daily minimum temperature
[in]real(dp), dimension(:) :: tmax_in[degc] Daily maxumum temperature
[in]real(dp), dimension(:) :: netrad_in[w m2] Daily average net radiation
[in]real(dp), dimension(:) :: absvappres_in[Pa] Daily average absolute vapour pressure
[in]real(dp), dimension(:) :: windspeed_in[m s-1] Daily average wind speed
[in]real(dp), dimension(:) :: prec_in[mm d-1] Daily mean precipitation
[in]real(dp), dimension(:) :: temp_in[degc] Daily average temperature
[in,out]real(dp), dimension(:) :: fSealed1fraction of sealed area at scale L1
[in,out]real(dp), dimension(:) :: intercInterception
[in,out]real(dp), dimension(:) :: snowpackSnowpack
[in,out]real(dp), dimension(:) :: sealedStorageRetention storage of impervious areas
[in,out]real(dp), dimension(:, :) :: soilMoistureSoil moisture of each horizon
[in,out]real(dp), dimension(:) :: unsatStorageUpper soil storage
[in,out]real(dp), dimension(:) :: satStorageGroundwater storage
[in,out]real(dp), dimension(:) :: neutronsGround albedo neutrons
[in,out]real(dp), dimension(:) :: pet_calc[mm TS-1] estimated PET (if PET is input = corrected values (fAsp*PET))
[in,out]real(dp), dimension(:, :) :: aet_soilactual ET
[in,out]real(dp), dimension(:) :: aet_canopyReal evaporation intensity from canopy
[in,out]real(dp), dimension(:) :: aet_sealedActual ET from free-water surfaces
[in,out]real(dp), dimension(:) :: baseflowBaseflow
[in,out]real(dp), dimension(:, :) :: infiltrationRecharge, infiltration intensity or effective precipitation of each horizon
[in,out]real(dp), dimension(:) :: fast_interflowFast runoff component
[in,out]real(dp), dimension(:) :: meltMelting snow depth
[in,out]real(dp), dimension(:) :: percPercolation
[in,out]real(dp), dimension(:) :: prec_effectEffective precipitation depth (snow melt + rain)
[in,out]real(dp), dimension(:) :: rainRain precipitation depth
[in,out]real(dp), dimension(:) :: runoff_sealedDirect runoff from impervious areas
[in,out]real(dp), dimension(:) :: slow_interflowSlow runoff component
[in,out]real(dp), dimension(:) :: snowSnow precipitation depth
[in,out]real(dp), dimension(:) :: throughfallThroughfall
[in,out]real(dp), dimension(:) :: total_runoffGenerated runoff
[in,out]real(dp), dimension(:) :: alphaExponent for the upper reservoir
[in,out]real(dp), dimension(:) :: deg_day_incrIncrease of the Degree-day factor per mm of increase in precipitation
[in,out]real(dp), dimension(:) :: deg_day_maxMaximum Degree-day factor
[in,out]real(dp), dimension(:) :: deg_day_noprecDegree-day factor with no precipitation
[in,out]real(dp), dimension(:) :: deg_dayDegree-day factor
[in,out]real(dp), dimension(:) :: fAsp[1] PET correction for Aspect at level 1
[in,out]real(dp), dimension(:) :: petLAIcorFactorL1PET correction factor based on LAI at level 1
[in,out]real(dp), dimension(:) :: HarSamCoeff[1] PET Hargreaves Samani coefficient at level 1
[in,out]real(dp), dimension(:) :: PrieTayAlpha[1] PET Priestley Taylor coefficient at level 1
[in,out]real(dp), dimension(:) :: aeroResist[s m-1] PET aerodynamical resitance at level 1
[in,out]real(dp), dimension(:) :: surfResist[s m-1] PET bulk surface resitance at level 1
[in,out]real(dp), dimension(:, :) :: frac_rootsFraction of Roots in soil horizon
[in,out]real(dp), dimension(:) :: interc_maxMaximum interception
[in,out]real(dp), dimension(:) :: karst_lossKarstic percolation loss
[in,out]real(dp), dimension(:) :: k0Recession coefficient of the upper reservoir, upper outlet
[in,out]real(dp), dimension(:) :: k1Recession coefficient of the upper reservoir, lower outlet
[in,out]real(dp), dimension(:) :: k2Baseflow recession coefficient
[in,out]real(dp), dimension(:) :: kpPercolation coefficient
[in,out]real(dp), dimension(:, :) :: soil_moist_FCSoil moisture below which actual ET is reduced
[in,out]real(dp), dimension(:, :) :: soil_moist_satSaturation soil moisture for each horizon [mm]
[in,out]real(dp), dimension(:, :) :: soil_moist_exponenExponential parameter to how non-linear is the soil water retention
[in,out]real(dp), dimension(:) :: jarvis_thresh_c1jarvis critical value for normalized soil water content
[in,out]real(dp), dimension(:) :: temp_threshThreshold temperature for snow/rain
[in,out]real(dp), dimension(:) :: unsat_threshThreshold water depth in upper reservoir
[in,out]real(dp), dimension(:) :: water_thresh_sealedThreshold water depth in impervious areas
[in,out]real(dp), dimension(:, :) :: wilting_pointPermanent wilting point for each horizon
[in,out]real(dp), dimension(:) :: No_count
[in,out]real(dp), dimension(:) :: bulkDens
[in,out]real(dp), dimension(:) :: latticeWater
[in,out]real(dp), dimension(:, :) :: COSMICL3
Authors
Luis Samaniego & Rohini Kumar
Date
Dec 2012
Parameters
[in]read_statesindicated whether states have been read from file
[in]ttsimulation time step
[in]timecurrent decimal Julian day
[in]processmatrixmHM process configuration matrix
[in]horizon_depthDepth of each horizon in mHM
[in]ncells1number of cells in a given domain at level L1
[in]nhorizons_mhmNumber of Horizons in mHM
[in]c2tstuunit conversion
[in]neutron_integral_afasttabular for neutron flux approximation
[in]evap_coeffEvaporation coefficent for free-water surface of that current month
[in]fsealed1fraction of sealed area at scale L1
[in,out]intercInterception
[in,out]sealedstorageRetention storage of impervious areas
[in,out]soilmoistureSoil moisture of each horizon
[in,out]unsatstorageUpper soil storage
[in,out]satstorageGroundwater storage
[in,out]neutronsGround albedo neutrons
[in,out]pet_calc[mm TS-1] estimated PET (if PET is input = corrected values (fAsp*PET))
[in,out]temp_calc[degC] temperature for current time step
[in,out]prec_calc[mm TS-1] precipitation for current time step
[in,out]aet_soilactual ET
[in,out]aet_canopyReal evaporation intensity from canopy
[in,out]aet_sealedActual ET from free-water surfaces
[in,out]infiltrationRecharge, infiltration intensity or effective precipitation of each horizon
[in,out]fast_interflowFast runoff component
[in,out]meltMelting snow depth
[in,out]percPercolation
[in,out]prec_effectEffective precipitation depth (snow melt + rain)
[in,out]rainRain precipitation depth
[in,out]runoff_sealedDirect runoff from impervious areas
[in,out]slow_interflowSlow runoff component
[in,out]snowSnow precipitation depth
[in,out]total_runoffGenerated runoff
[in,out]alphaExponent for the upper reservoir
[in,out]deg_day_incrIncrease of the Degree-day factor per mm of increase in precipitation
[in,out]deg_day_maxMaximum Degree-day factor
[in,out]deg_day_noprecDegree-day factor with no precipitation
[in,out]deg_dayDegree-day factor
[in,out]frac_rootsFraction of Roots in soil horizon
[in,out]interc_maxMaximum interception
[in,out]karst_lossKarstic percolation loss
[in,out]k0Recession coefficient of the upper reservoir, upper outlet
[in,out]k1Recession coefficient of the upper reservoir, lower outlet
[in,out]k2Baseflow recession coefficient
[in,out]kpPercolation coefficient
[in,out]soil_moist_fcSoil moisture below which actual ET is reduced
[in,out]soil_moist_satSaturation soil moisture for each horizon [mm]
[in,out]soil_moist_exponenExponential parameter to how non-linear is the soil water retention
[in,out]jarvis_thresh_c1jarvis critical value for normalized soil water content
[in,out]temp_threshThreshold temperature for snow/rain
[in,out]unsat_threshThreshold water depth in upper reservoir
[in,out]water_thresh_sealedThreshold water depth in impervious areas
[in,out]wilting_pointPermanent wilting point for each horizon

Definition at line 229 of file mo_mhm.f90.

References mo_canopy_interc::canopy_interc(), mo_neutrons::cosmic(), mo_neutrons::desiletsn0(), mo_runoff::l1_total_runoff(), mo_runoff::runoff_sat_zone(), mo_runoff::runoff_unsat_zone(), mo_snow_accum_melt::snow_accum_melt(), and mo_soil_moisture::soil_moisture().

Here is the call graph for this function: