mHM issueshttps://git.ufz.de/mhm/mhm/-/issues2022-07-07T10:40:24+02:00https://git.ufz.de/mhm/mhm/-/issues/224Container for Namelist2022-07-07T10:40:24+02:00Sebastian MüllerContainer for NamelistIn order to be able to set configurations dynamically, it would be good to have a type representation for namelists.
There could be a abstract type implementation in FORCES to provide a template for namelists and routines to read or set...In order to be able to set configurations dynamically, it would be good to have a type representation for namelists.
There could be a abstract type implementation in FORCES to provide a template for namelists and routines to read or set values.
ATM we have the following namelists defined in mHM:
```
src/common/mo_common_read_config.F90:
108 ! namelist directories
109: namelist /project_description/ project_details, setup_description, simulation_type, &
110 Conventions, contact, mHM_details, history
111: namelist /directories_general/ dirConfigOut, dirCommonFiles, &
112 dir_Morpho, dir_LCover, &
115 ! namelist spatial & temporal resolution, optimization information
116: namelist /mainconfig/ iFlag_cordinate_sys, resolution_Hydrology, nDomains, L0Domain, write_restart, &
117 read_opt_domain_data
118 ! namelist process selection
119: namelist /processSelection/ processCase
120
121 ! namelist for land cover scenes
122: namelist/LCover/nLcoverScene, LCoverYearStart, LCoverYearEnd, LCoverfName
123
src/common_mHM_mRM/mo_common_mHM_mRM_read_config.f90:
86 ! namelist spatial & temporal resolution, otmization information
87: namelist /mainconfig_mhm_mrm/ timestep, resolution_Routing, optimize, &
88 optimize_restart, opti_method, opti_function, &
90 ! namelist for optimization settings
91: namelist /Optimization/ nIterations, seed, dds_r, sa_temp, sce_ngs, &
92 sce_npg, sce_nps, mcmc_opti, mcmc_error_params
93 ! namelist for time settings
94: namelist /time_periods/ warming_Days, eval_Per
95
src/mHM/mo_mhm_read_config.f90:
160 ! namelist directories
161: namelist /directories_mHM/ &
162 inputFormat_meteo_forcings, &
173 ! optional data used for optimization
174: namelist /optional_data/ &
175 dir_soil_moisture, &
184 ! namelist for pan evaporation
185: namelist /panEvapo/evap_coeff
186
187 ! namelist for night-day ratio of precipitation, referenceET and temperature
188: namelist /nightDayRatio/ read_meteo_weights, &
189 fnight_prec, fnight_pet, fnight_temp, fnight_ssrd, fnight_strd
190 ! name list regarding output
191: namelist /NLoutputResults/ &
192 output_deflate_level, &
src/MPR/mo_mpr_read_config.f90:
234 ! namelist directories
235: namelist /directories_MPR/ dir_gridded_LAI
236 ! namelist soil database
237: namelist /soildata/ iFlag_soilDB, tillageDepth, nSoilHorizons_mHM, soil_Depth
238 ! namelist for LAI related data
239: namelist /LAI_data_information/ inputFormat_gridded_LAI, timeStep_LAI_input
240 ! namelist for land cover scenes
241: namelist /LCover_MPR/ fracSealed_cityArea
242
243 ! namelist parameters
244: namelist /interception1/ canopyInterceptionFactor
245: namelist /snow1/snowTreshholdTemperature, degreeDayFactor_forest, degreeDayFactor_impervious, &
246 degreeDayFactor_pervious, increaseDegreeDayFactorByPrecip, maxDegreeDayFactor_forest, &
247 maxDegreeDayFactor_impervious, maxDegreeDayFactor_pervious
248: namelist /soilmoisture1/ orgMatterContent_forest, orgMatterContent_impervious, orgMatterContent_pervious, &
249 PTF_lower66_5_constant, PTF_lower66_5_clay, PTF_lower66_5_Db, PTF_higher66_5_constant, &
253 rootFractionCoefficient_pervious, infiltrationShapeFactor
254: namelist /soilmoisture2/ orgMatterContent_forest, orgMatterContent_impervious, orgMatterContent_pervious, &
255 PTF_lower66_5_constant, PTF_lower66_5_clay, PTF_lower66_5_Db, PTF_higher66_5_constant, &
259 rootFractionCoefficient_pervious, infiltrationShapeFactor, jarvis_sm_threshold_c1
260: namelist /soilmoisture3/ orgMatterContent_forest, orgMatterContent_impervious, orgMatterContent_pervious, &
261 PTF_lower66_5_constant, PTF_lower66_5_clay, PTF_lower66_5_Db, PTF_higher66_5_constant, &
266 rootFractionCoefficient_clay, FCmin_glob, FCdelta_glob, jarvis_sm_threshold_c1
267: namelist /soilmoisture4/ orgMatterContent_forest, orgMatterContent_impervious, orgMatterContent_pervious, &
268 PTF_lower66_5_constant, PTF_lower66_5_clay, PTF_lower66_5_Db, PTF_higher66_5_constant, &
273 rootFractionCoefficient_clay, FCmin_glob, FCdelta_glob
274: namelist /directRunoff1/ imperviousStorageCapacity
275 ! PET is input, LAI driven correction
276: namelist /PETminus1/ PET_a_forest, PET_a_impervious, PET_a_pervious, PET_b, PET_c
277 ! PET is input, aspect driven correction
278: namelist /PET0/ minCorrectionFactorPET, maxCorrectionFactorPET, aspectTresholdPET
279 ! Hargreaves-Samani
280: namelist /PET1/ minCorrectionFactorPET, maxCorrectionFactorPET, aspectTresholdPET, HargreavesSamaniCoeff
281 ! Priestely-Taylor
282: namelist /PET2/ PriestleyTaylorCoeff, PriestleyTaylorLAIcorr
283 ! Penman-Monteith
284: namelist /PET3/ canopyheigth_forest, canopyheigth_impervious, canopyheigth_pervious, displacementheight_coeff, &
285 roughnesslength_momentum_coeff, roughnesslength_heat_coeff, stomatal_resistance
286: namelist /interflow1/ interflowStorageCapacityFactor, interflowRecession_slope, fastInterflowRecession_forest, &
287 slowInterflowRecession_Ks, exponentSlowInterflow
288: namelist /percolation1/ rechargeCoefficient, rechargeFactor_karstic, gain_loss_GWreservoir_karstic
289: namelist /neutrons1/ Desilets_N0, COSMIC_N0, COSMIC_N1, COSMIC_N2, COSMIC_alpha0, COSMIC_alpha1, COSMIC_L30, COSMIC_L31
290 !
291: namelist /geoparameter/ GeoParam
292
src/mRM/mo_mrm_read_config.f90:
111 ! namelist spatial & temporal resolution, optmization information
112: namelist /mainconfig_mrm/ ALMA_convention, &
113 filenameTotalRunoff, varnameTotalRunoff, gw_coupling
114 ! namelist directories
115: namelist /directories_mRM/ dir_Gauges, dir_Total_Runoff, dir_Bankfull_Runoff
116: namelist /evaluation_gauges/ nGaugesTotal, NoGauges_domain, Gauge_id, gauge_filename
117 ! namelist for inflow gauges
118: namelist /inflow_gauges/ nInflowGaugesTotal, NoInflowGauges_domain, InflowGauge_id, &
119 InflowGauge_filename, InflowGauge_Headwater
120 ! name list regarding output
121: namelist /NLoutputResults/ &
122 output_deflate_level_mrm, &
458
459: namelist /routing1/ muskingumTravelTime_constant, muskingumTravelTime_riverLength, &
460 muskingumTravelTime_riverSlope, muskingumTravelTime_impervious, muskingumAttenuation_riverSlope
461: namelist /routing2/ streamflow_celerity
462: namelist /routing3/ slope_factor
463 !
src/mRM/mo_mrm_riv_temp_class.f90:
155 ! namelist for river temperature configuration
156: namelist /config_riv_temp/ &
157 albedo_water, &
```wishlist futureSebastian MüllerSebastian Müllerhttps://git.ufz.de/mhm/mhm/-/issues/112[Enhancement] `global_parameters` class2022-04-28T15:59:34+02:00Sebastian Müller[Enhancement] `global_parameters` classAt the moment the global parameters are an array where all needed parameters are just appended.
This is prone to failure, since you always have to keep track of positions for the parameters of your desired process.
Proposal:
Create a `g...At the moment the global parameters are an array where all needed parameters are just appended.
This is prone to failure, since you always have to keep track of positions for the parameters of your desired process.
Proposal:
Create a `global_parameters` class, where every process can register the parameters, init-values and ranges used in optimization.
These registrations could than be accessed by registration IDs (for example).
The current behavior, to be represented as an array could be provided by a class-method.6.xSebastian MüllerSebastian Müllerhttps://git.ufz.de/mhm/mhm/-/issues/106driver refactoring and OOP2022-04-28T15:59:41+02:00Stephan Thoberdriver refactoring and OOPreorganize global data and methods according to classes for individual processes; adapt driver to new classes.
riv_temp serves as a template.reorganize global data and methods according to classes for individual processes; adapt driver to new classes.
riv_temp serves as a template.6.xSebastian MüllerSebastian Müllerhttps://git.ufz.de/mhm/mhm/-/issues/104[Enhancement] Container for global variables (mHM, mRM)2022-04-28T15:27:45+02:00Sebastian Müller[Enhancement] Container for global variables (mHM, mRM)In order to be future-prove, we should think about organizing global variables in containers to pass them around.In order to be future-prove, we should think about organizing global variables in containers to pass them around.6.x