16 USE mo_kind,
ONLY : i4, dp
17 use mo_message,
only: message, error_message
110 use mo_string_utils,
only : num2str
114 character(*),
intent(in) :: file_namelist
116 integer(i4) :: idomain, domainid
119 character(256),
dimension(maxNoDomains) :: dir_soil_moisture
122 character(256),
dimension(maxNoDomains) :: dir_neutrons
125 character(256),
dimension(maxNoDomains) :: dir_evapotranspiration
128 character(256),
dimension(maxNoDomains) :: dir_tws
131 character(256),
dimension(maxNoDomains) :: dir_spf
133 integer(i4) :: timestep_tws_input
134 integer(i4) :: timestep_et_input
135 integer(i4) :: timestep_sm_input
136 integer(i4) :: timestep_neutrons_input
137 integer(i4) :: timestep_spf_input
138 integer(i4) :: weight_for_optional_data
139 integer(i4) :: snow_water_equivalent_threshold_for_spf
157 case(10 : 13, 15, 17, 27 : 30, 33, 35 : 47)
177 case(10 : 13, 28, 35, 38, 43)
181 l1_smobs(idomain)%dir = dir_soil_moisture(domainid)
182 l1_smobs(idomain)%timeStepInput = timestep_sm_input
186 call error_message(
'***ERROR: Number of soil horizons representative for input soil moisture exceeded', raise=.false.)
187 call error_message(
' defined number of soil horizions: ', adjustl(trim(num2str(
maxnosoilhorizons))),
'!')
198 case(27, 29, 30, 36, 39, 41, 44)
202 l1_etobs(idomain)%dir = dir_evapotranspiration(domainid)
203 l1_etobs(idomain)%timeStepInput = timestep_et_input
211 l1_twsaobs(idomain)%timeStepInput = timestep_tws_input
218 l1_etobs(idomain)%dir = dir_evapotranspiration(domainid)
219 l1_etobs(idomain)%timeStepInput = timestep_et_input
226 l1_twsaobs(idomain)%timeStepInput = timestep_tws_input
233 l1_smobs(idomain)%dir = dir_soil_moisture(domainid)
234 l1_smobs(idomain)%timeStepInput = timestep_sm_input
238 call error_message(
'***ERROR: Number of soil horizons representative for input soil moisture exceeded', raise=.false.)
239 call error_message(
' defined number of soil horizions: ', adjustl(trim(num2str(
maxnosoilhorizons))),
'!')
244 l1_etobs(idomain)%dir = dir_evapotranspiration(domainid)
245 l1_etobs(idomain)%timeStepInput = timestep_et_input
253 l1_spfobs(idomain)%dir = dir_spf(domainid)
254 l1_spfobs(idomain)%timeStepInput = timestep_spf_input
283 call message(
'Following output will be written:')
286 call message(
' NetCDF output precision: double')
288 call message(
' NetCDF output precision: single')
292 call message(
' NetCDF output time reference point: start of time interval')
294 call message(
' NetCDF output time reference point: center of time interval')
296 call message(
' NetCDF output time reference point: end of time interval')
298 call message(
' STATES:')
300 call message(
' interceptional storage (L1_inter) [mm]')
303 call message(
' height of snowpack (L1_snowpack) [mm]')
306 call message(
' soil water content in the single layers (L1_soilMoist) [mm]')
309 call message(
' volumetric soil moisture in the single layers [mm/mm]')
312 call message(
' mean volum. soil moisture averaged over all soil layers [mm/mm]')
315 call message(
' waterdepth in reservoir of sealed areas (L1_sealSTW) [mm]')
318 call message(
' waterdepth in reservoir of unsat. soil zone (L1_unsatSTW) [mm]')
321 call message(
' waterdepth in reservoir of sat. soil zone (L1_satSTW) [mm]')
325 call message(
' ground albedo neutrons (L1_neutrons) [cph]')
328 call message(
' FLUXES:')
330 call message(
' potential evapotranspiration PET (L1_pet) [mm/T]')
333 call message(
' actual evapotranspiration aET (L1_aETCanopy) [mm/T]')
336 call message(
' total discharge generated per cell (L1_total_runoff) [mm/T]')
339 call message(
' direct runoff generated per cell (L1_runoffSeal) [mm/T]')
342 call message(
' fast interflow generated per cell (L1_fastRunoff) [mm/T]')
345 call message(
' slow interflow generated per cell (L1_slowRunoff) [mm/T]')
348 call message(
' baseflow generated per cell (L1_baseflow) [mm/T]')
351 call message(
' groundwater recharge (L1_percol) [mm/T]')
354 call message(
' infiltration (L1_infilSoil) [mm/T]')
357 call message(
' actual evapotranspiration from soil layers (L1_aETSoil) [mm/T]')
360 call message(
' effective precipitation (L1_preEffect) [mm/T]')
363 call message(
' snow melt (L1_melt) [mm/T]')
366 call message(
'FINISHED reading config')
370 call message(
'WARNING: FLUXES and STATES netCDF will be not written since optimization flag is TRUE ')
Provides constants commonly used by mHM, mRM and MPR.
integer(i4), parameter, public maxnodomains
integer(i4), parameter, public nodata_i4
Reading of main model configurations.
subroutine, public common_check_resolution(do_message, allow_subgrid_routing)
check resolution
Provides structures needed by mHM, mRM and/or mpr.
integer(i4), public opti_function
Provides structures needed by mHM, mRM and/or mpr.
type(domain_meta), public domainmeta
integer(i4), dimension(nprocesses, 3), public processmatrix
Provides file names and units for mHM.
character(:), allocatable file_defoutput
file defining mHM's outputs
Main global variables for mHM.
integer(i4) wt_for_optional_data
logical, dimension(noutflxstate) outputflxstate
Define model outputs see "mhm_outputs.nml" dim1 = number of output variables to be written.
type(optidata), dimension(:), allocatable, public l1_twsaobs
this stores L1_tws, the mask, the directory of the observerd data, and the timestepInput of the simul...
logical, public bfi_calc
calculate observed BFI from gauges with Eckhardt filter
type(optidata), dimension(:), allocatable, public l1_neutronsobs
type(optidata), dimension(:), allocatable, public l1_spfobs
integer(i4) swe_threshold_for_spf
type(optidata), dimension(:), allocatable, public l1_smobs
integer(i4) timestep_model_outputs
timestep for writing model outputs
integer(i4) output_deflate_level
deflate level in nc files
logical output_double_precision
output precision in nc files
integer(i4) output_time_reference
time reference point location in output nc files
real(dp), dimension(int(yearmonths, i4)), public evap_coeff
[-] Evap.
integer(i4) nsoilhorizons_sm_input
type(optidata), dimension(:), allocatable, public l1_etobs
real(dp), dimension(:), allocatable, public bfi_obs
given base-flow index per domain
Reading of main model configurations.
subroutine, public mhm_read_config(file_namelist)
Read main configurations for mHM.
Provides MPR specific constants.
integer(i4), parameter, public maxnosoilhorizons
Global variables for mpr only.
integer(i4), public nsoilhorizons_mhm
Module containing all namelists representations.
type(nml_baseflow_config_t), public nml_baseflow_config
'baseflow_config' namelist content
type(nml_panevapo_t), public nml_panevapo
'panevapo' namelist content
type(nml_optional_data_t), public nml_optional_data
'optional_data' namelist content
type(nml_nloutputresults_t), public nml_nloutputresults
'nloutputresults' namelist content