mHM
The mesoscale Hydrological Model
|
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. | |
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 |
COPYING
and COPYING.LESSER
provided with this software. The complete GNU license text can also be found at http://www.gnu.org/licenses/. 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.
[in] | logical :: read_states | indicated whether states have been read from file |
[in] | integer(i4) :: tt | simulation time step |
[in] | real(dp) :: time | current decimal Julian day |
[in] | integer(i4), dimension(:, :) :: processMatrix | mHM process configuration matrix |
[in] | real(dp), dimension(:) :: horizon_depth | Depth of each horizon in mHM |
[in] | integer(i4) :: nCells1 | number of cells in a given domain at level L1 |
[in] | integer(i4) :: nHorizons_mHM | Number of Horizons in mHM |
[in] | real(dp) :: ntimesteps_day | number of time intervals per day, transformed in dp |
[in] | real(dp), dimension(:) :: neutron_integral_AFast | tabular for neutron flux approximation |
[in] | real(dp), dimension(:) :: latitude | latitude on level 1 |
[in] | real(dp), dimension(:) :: evap_coeff | Evaporation 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_weights | multiplicative weights for temperature (deg K) |
[in] | real(dp), dimension(:, :, :) :: pet_weights | multiplicative weights for potential evapotranspiration |
[in] | real(dp), dimension(:, :, :) :: pre_weights | multiplicative weights for precipitation |
[in] | logical :: read_meteo_weights | flag 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(:) :: fSealed1 | fraction of sealed area at scale L1 |
[in,out] | real(dp), dimension(:) :: interc | Interception |
[in,out] | real(dp), dimension(:) :: snowpack | Snowpack |
[in,out] | real(dp), dimension(:) :: sealedStorage | Retention storage of impervious areas |
[in,out] | real(dp), dimension(:, :) :: soilMoisture | Soil moisture of each horizon |
[in,out] | real(dp), dimension(:) :: unsatStorage | Upper soil storage |
[in,out] | real(dp), dimension(:) :: satStorage | Groundwater storage |
[in,out] | real(dp), dimension(:) :: neutrons | Ground 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_soil | actual ET |
[in,out] | real(dp), dimension(:) :: aet_canopy | Real evaporation intensity from canopy |
[in,out] | real(dp), dimension(:) :: aet_sealed | Actual ET from free-water surfaces |
[in,out] | real(dp), dimension(:) :: baseflow | Baseflow |
[in,out] | real(dp), dimension(:, :) :: infiltration | Recharge, infiltration intensity or effective precipitation of each horizon |
[in,out] | real(dp), dimension(:) :: fast_interflow | Fast runoff component |
[in,out] | real(dp), dimension(:) :: melt | Melting snow depth |
[in,out] | real(dp), dimension(:) :: perc | Percolation |
[in,out] | real(dp), dimension(:) :: prec_effect | Effective precipitation depth (snow melt + rain) |
[in,out] | real(dp), dimension(:) :: rain | Rain precipitation depth |
[in,out] | real(dp), dimension(:) :: runoff_sealed | Direct runoff from impervious areas |
[in,out] | real(dp), dimension(:) :: slow_interflow | Slow runoff component |
[in,out] | real(dp), dimension(:) :: snow | Snow precipitation depth |
[in,out] | real(dp), dimension(:) :: throughfall | Throughfall |
[in,out] | real(dp), dimension(:) :: total_runoff | Generated runoff |
[in,out] | real(dp), dimension(:) :: alpha | Exponent for the upper reservoir |
[in,out] | real(dp), dimension(:) :: deg_day_incr | Increase of the Degree-day factor per mm of increase in precipitation |
[in,out] | real(dp), dimension(:) :: deg_day_max | Maximum Degree-day factor |
[in,out] | real(dp), dimension(:) :: deg_day_noprec | Degree-day factor with no precipitation |
[in,out] | real(dp), dimension(:) :: deg_day | Degree-day factor |
[in,out] | real(dp), dimension(:) :: fAsp | [1] PET correction for Aspect at level 1 |
[in,out] | real(dp), dimension(:) :: petLAIcorFactorL1 | PET 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_roots | Fraction of Roots in soil horizon |
[in,out] | real(dp), dimension(:) :: interc_max | Maximum interception |
[in,out] | real(dp), dimension(:) :: karst_loss | Karstic percolation loss |
[in,out] | real(dp), dimension(:) :: k0 | Recession coefficient of the upper reservoir, upper outlet |
[in,out] | real(dp), dimension(:) :: k1 | Recession coefficient of the upper reservoir, lower outlet |
[in,out] | real(dp), dimension(:) :: k2 | Baseflow recession coefficient |
[in,out] | real(dp), dimension(:) :: kp | Percolation coefficient |
[in,out] | real(dp), dimension(:, :) :: soil_moist_FC | Soil moisture below which actual ET is reduced |
[in,out] | real(dp), dimension(:, :) :: soil_moist_sat | Saturation soil moisture for each horizon [mm] |
[in,out] | real(dp), dimension(:, :) :: soil_moist_exponen | Exponential parameter to how non-linear is the soil water retention |
[in,out] | real(dp), dimension(:) :: jarvis_thresh_c1 | jarvis critical value for normalized soil water content |
[in,out] | real(dp), dimension(:) :: temp_thresh | Threshold temperature for snow/rain |
[in,out] | real(dp), dimension(:) :: unsat_thresh | Threshold water depth in upper reservoir |
[in,out] | real(dp), dimension(:) :: water_thresh_sealed | Threshold water depth in impervious areas |
[in,out] | real(dp), dimension(:, :) :: wilting_point | Permanent 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 |
[in] | read_states | indicated whether states have been read from file |
[in] | tt | simulation time step |
[in] | time | current decimal Julian day |
[in] | processmatrix | mHM process configuration matrix |
[in] | horizon_depth | Depth of each horizon in mHM |
[in] | ncells1 | number of cells in a given domain at level L1 |
[in] | nhorizons_mhm | Number of Horizons in mHM |
[in] | c2tstu | unit conversion |
[in] | neutron_integral_afast | tabular for neutron flux approximation |
[in] | evap_coeff | Evaporation coefficent for free-water surface of that current month |
[in] | fsealed1 | fraction of sealed area at scale L1 |
[in,out] | interc | Interception |
[in,out] | sealedstorage | Retention storage of impervious areas |
[in,out] | soilmoisture | Soil moisture of each horizon |
[in,out] | unsatstorage | Upper soil storage |
[in,out] | satstorage | Groundwater storage |
[in,out] | neutrons | Ground 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_soil | actual ET |
[in,out] | aet_canopy | Real evaporation intensity from canopy |
[in,out] | aet_sealed | Actual ET from free-water surfaces |
[in,out] | infiltration | Recharge, infiltration intensity or effective precipitation of each horizon |
[in,out] | fast_interflow | Fast runoff component |
[in,out] | melt | Melting snow depth |
[in,out] | perc | Percolation |
[in,out] | prec_effect | Effective precipitation depth (snow melt + rain) |
[in,out] | rain | Rain precipitation depth |
[in,out] | runoff_sealed | Direct runoff from impervious areas |
[in,out] | slow_interflow | Slow runoff component |
[in,out] | snow | Snow precipitation depth |
[in,out] | total_runoff | Generated runoff |
[in,out] | alpha | Exponent for the upper reservoir |
[in,out] | deg_day_incr | Increase of the Degree-day factor per mm of increase in precipitation |
[in,out] | deg_day_max | Maximum Degree-day factor |
[in,out] | deg_day_noprec | Degree-day factor with no precipitation |
[in,out] | deg_day | Degree-day factor |
[in,out] | frac_roots | Fraction of Roots in soil horizon |
[in,out] | interc_max | Maximum interception |
[in,out] | karst_loss | Karstic percolation loss |
[in,out] | k0 | Recession coefficient of the upper reservoir, upper outlet |
[in,out] | k1 | Recession coefficient of the upper reservoir, lower outlet |
[in,out] | k2 | Baseflow recession coefficient |
[in,out] | kp | Percolation coefficient |
[in,out] | soil_moist_fc | Soil moisture below which actual ET is reduced |
[in,out] | soil_moist_sat | Saturation soil moisture for each horizon [mm] |
[in,out] | soil_moist_exponen | Exponential parameter to how non-linear is the soil water retention |
[in,out] | jarvis_thresh_c1 | jarvis critical value for normalized soil water content |
[in,out] | temp_thresh | Threshold temperature for snow/rain |
[in,out] | unsat_thresh | Threshold water depth in upper reservoir |
[in,out] | water_thresh_sealed | Threshold water depth in impervious areas |
[in,out] | wilting_point | Permanent 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().