95 use mo_kind,
only : i4, dp
96 use mo_message,
only : message
229 subroutine mhm(read_states, tt, time, processMatrix, horizon_depth, nCells1, nHorizons_mHM, &
230 c2TSTu, neutron_integral_AFast, &
232 fSealed1, interc, snowpack, &
233 sealedStorage, soilMoisture, unsatStorage, satStorage, neutrons, &
234 pet_calc, temp_calc, prec_calc, &
235 aet_soil, aet_canopy, &
236 aet_sealed, baseflow, infiltration, fast_interflow, melt, perc, prec_effect, rain, runoff_sealed, &
237 slow_interflow, snow, throughfall, total_runoff, &
238 alpha, deg_day_incr, deg_day_max, deg_day_noprec, &
239 deg_day, frac_roots, &
240 interc_max, karst_loss, k0, k1, k2, kp, soil_moist_FC, soil_moist_sat, soil_moist_exponen, &
241 jarvis_thresh_c1, temp_thresh, unsat_thresh, water_thresh_sealed, wilting_point, &
242 No_count, bulkDens, latticeWater, COSMICL3)
244 use mo_julian,
only : dec2date
254 logical,
intent(in) :: read_states
257 integer(i4),
intent(in) :: tt
260 real(dp),
intent(in) :: time
263 integer(i4),
dimension(:, :),
intent(in) :: processmatrix
266 real(dp),
dimension(:),
intent(in) :: horizon_depth
269 integer(i4),
intent(in) :: ncells1
272 integer(i4),
intent(in) :: nhorizons_mhm
275 real(dp),
intent(in) :: c2tstu
278 real(dp),
dimension(:),
intent(in) :: neutron_integral_afast
281 real(dp),
dimension(:),
intent(in) :: evap_coeff
284 real(dp),
dimension(:),
intent(in) :: fsealed1
287 real(dp),
dimension(:),
intent(inout) :: interc
290 real(dp),
dimension(:),
intent(inout) :: snowpack
293 real(dp),
dimension(:),
intent(inout) :: sealedstorage
296 real(dp),
dimension(:, :),
intent(inout) :: soilmoisture
299 real(dp),
dimension(:),
intent(inout) :: unsatstorage
302 real(dp),
dimension(:),
intent(inout) :: satstorage
305 real(dp),
dimension(:),
intent(inout) :: neutrons
308 real(dp),
dimension(:),
intent(inout) :: pet_calc
311 real(dp),
dimension(:),
intent(inout) :: temp_calc
314 real(dp),
dimension(:),
intent(inout) :: prec_calc
317 real(dp),
dimension(:, :),
intent(inout) :: aet_soil
320 real(dp),
dimension(:),
intent(inout) :: aet_canopy
323 real(dp),
dimension(:),
intent(inout) :: aet_sealed
326 real(dp),
dimension(:),
intent(inout) :: baseflow
329 real(dp),
dimension(:, :),
intent(inout) :: infiltration
332 real(dp),
dimension(:),
intent(inout) :: fast_interflow
335 real(dp),
dimension(:),
intent(inout) :: melt
338 real(dp),
dimension(:),
intent(inout) :: perc
341 real(dp),
dimension(:),
intent(inout) :: prec_effect
344 real(dp),
dimension(:),
intent(inout) :: rain
347 real(dp),
dimension(:),
intent(inout) :: runoff_sealed
350 real(dp),
dimension(:),
intent(inout) :: slow_interflow
353 real(dp),
dimension(:),
intent(inout) :: snow
356 real(dp),
dimension(:),
intent(inout) :: throughfall
359 real(dp),
dimension(:),
intent(inout) :: total_runoff
362 real(dp),
dimension(:),
intent(inout) :: alpha
365 real(dp),
dimension(:),
intent(inout) :: deg_day_incr
368 real(dp),
dimension(:),
intent(inout) :: deg_day_max
371 real(dp),
dimension(:),
intent(inout) :: deg_day_noprec
374 real(dp),
dimension(:),
intent(inout) :: deg_day
377 real(dp),
dimension(:, :),
intent(inout) :: frac_roots
380 real(dp),
dimension(:),
intent(inout) :: interc_max
383 real(dp),
dimension(:),
intent(inout) :: karst_loss
386 real(dp),
dimension(:),
intent(inout) :: k0
389 real(dp),
dimension(:),
intent(inout) :: k1
392 real(dp),
dimension(:),
intent(inout) :: k2
395 real(dp),
dimension(:),
intent(inout) :: kp
398 real(dp),
dimension(:, :),
intent(inout) :: soil_moist_fc
401 real(dp),
dimension(:, :),
intent(inout) :: soil_moist_sat
404 real(dp),
dimension(:, :),
intent(inout) :: soil_moist_exponen
407 real(dp),
dimension(:),
intent(inout) :: jarvis_thresh_c1
410 real(dp),
dimension(:),
intent(inout) :: temp_thresh
413 real(dp),
dimension(:),
intent(inout) :: unsat_thresh
416 real(dp),
dimension(:),
intent(inout) :: water_thresh_sealed
419 real(dp),
dimension(:, :),
intent(inout) :: wilting_point
422 real(dp),
dimension(:),
intent(inout) :: no_count
423 real(dp),
dimension(:,:),
intent(inout) :: bulkdens
424 real(dp),
dimension(:,:),
intent(inout) :: latticewater
425 real(dp),
dimension(:,:),
intent(inout) :: cosmicl3
433 real(dp),
dimension(size(infiltration, 2)) :: tmp_infiltration
434 real(dp),
dimension(size(soilMoisture, 2)) :: tmp_soilmoisture
435 real(dp),
dimension(size(aet_soil, 2)) :: tmp_aet_soil
440 call dec2date(time, mm = month)
448 if((tt .EQ. 1) .AND. (.not. read_states))
then
449 soilmoisture(:, :) = 0.5_dp * soil_moist_fc(:, :)
460 call canopy_interc(pet_calc(k), interc_max(k), prec_calc(k), &
462 throughfall(k), aet_canopy(k))
464 deg_day_noprec(k) * c2tstu, prec_calc(k), temp_calc(k), temp_thresh(k), throughfall(k), &
467 melt(k), prec_effect(k), rain(k), snow(k))
469 tmp_soilmoisture(:) = soilmoisture(k, :)
470 tmp_infiltration(:) = infiltration(k, :)
473 fsealed1(k), water_thresh_sealed(k), &
474 pet_calc(k), evap_coeff(month), soil_moist_sat(k, :), frac_roots(k, :), &
475 soil_moist_fc(k, :), wilting_point(k, :), soil_moist_exponen(k, :), &
476 jarvis_thresh_c1(k), aet_canopy(k), &
477 prec_effect(k), runoff_sealed(k), sealedstorage(k), &
478 tmp_infiltration(:), tmp_soilmoisture(:), &
479 tmp_aet_soil(:), aet_sealed(k))
481 infiltration(k, :) = tmp_infiltration(:)
482 soilmoisture(k, :) = tmp_soilmoisture(:)
483 aet_soil(k, :) = tmp_aet_soil(:)
484 call runoff_unsat_zone(c2tstu / k1(k), c2tstu / kp(k), c2tstu / k0(k), alpha(k), karst_loss(k), &
485 infiltration(k, nhorizons_mhm), unsat_thresh(k), &
486 satstorage(k), unsatstorage(k), &
487 slow_interflow(k), fast_interflow(k), perc(k))
491 call l1_total_runoff(fsealed1(k), fast_interflow(k), slow_interflow(k), baseflow(k), &
502 if ( processmatrix(10, 1) .EQ. 1 ) &
503 call desiletsn0( soilmoisture(k,1:nhorizons_mhm-1),&
504 horizon_depth(1:nhorizons_mhm-1), &
505 bulkdens(k,1:nhorizons_mhm-1), &
506 latticewater(k,1:nhorizons_mhm-1), no_count(k), &
510 if ( processmatrix(10, 1) .EQ. 2 ) &
511 call cosmic( soilmoisture(k,1:nhorizons_mhm-1), horizon_depth(1:nhorizons_mhm-1),&
512 neutron_integral_afast(:), &
513 interc(k), snowpack(k), &
514 no_count(k), bulkdens(k,1:nhorizons_mhm-1), &
515 latticewater(k,1:nhorizons_mhm-1), cosmicl3(k,1:nhorizons_mhm-1), &
elemental pure subroutine, public canopy_interc(pet, interc_max, precip, interc, throughfall, evap_canopy)
Canopy interception.
Call all main processes of mHM.
Models to predict neutron intensities above soils.
subroutine, public desiletsn0(soilmoisture, horizon_depth, bd, latwater, n0, neutrons)
Calculate neutrons from soil moisture for effective soil layer.
subroutine, public cosmic(soilmoisture, horizons, neutron_integral_afast, interc, snowpack, l1_n0, l1_bulkdens, l1_latticewater, l1_cosmicl3, neutrons)
Calculate neutrons from soil moisture in all layers.
subroutine, public runoff_unsat_zone(k1, kp, k0, alpha, karst_loss, pefec_soil, unsat_thresh, sat_storage, unsat_storage, slow_interflow, fast_interflow, perc)
Runoff generation for the saturated zone.
subroutine, public runoff_sat_zone(k2, sat_storage, baseflow)
Runoff generation for the saturated zone.
subroutine, public l1_total_runoff(fsealed_area_fraction, fast_interflow, slow_interflow, baseflow, direct_runoff, total_runoff)
total runoff accumulation at level 1
Snow melting and accumulation.
subroutine, public snow_accum_melt(deg_day_incr, deg_day_max, deg_day_noprec, prec, temperature, temperature_thresh, thrfall, snow_pack, deg_day, melt, prec_effect, rain, snow)
Snow melting and accumulation.
Soil moisture of the different layers.
subroutine, public soil_moisture(processcase, frac_sealed, water_thresh_sealed, pet, evap_coeff, soil_moist_sat, frac_roots, soil_moist_fc, wilting_point, soil_moist_exponen, jarvis_thresh_c1, aet_canopy, prec_effec, runoff_sealed, storage_sealed, infiltration, soil_moist, aet, aet_sealed)
Soil moisture in different soil horizons.