HYPE
Loading...
Searching...
No Matches
model_test_routines Module Reference

Data Types

type  testexternalinternaltype
type  testexternaltype
type  testcasetype
type  testprocesstype
interface  data_is_within_tolerance

Functions/Subroutines

subroutine, public stop_simulation_and_finalize_tests (errnum, errtext)
subroutine, public setup_for_hype_tests (funit, fname, onoff, level)
subroutine, public finalize_hype_tests ()
subroutine, public check_output_ranges (idt)
subroutine, public propagate_external_msg (external_id, msg_type, msg, vdata)
subroutine check_external_tests (status)
subroutine, public run_hype_observation_tests (status)
subroutine, public run_hype_tests (status)
subroutine check_observations (status)
subroutine count_data_negative_in_file (filepath, twotimefound, ncols, nskip, ns, oindex, miss, numneg, negfound)
subroutine count_data_missing_in_file (filepath, twotimefound, ncols, nskip, ns, oindex, nummiss, missfound)
subroutine check_xobs_validity (funit, infile, nskip, ncols, status)
subroutine check_info_generic (status)
subroutine check_geodata_generic (status)
subroutine check_geoclass_generic (status)
subroutine check_mgmtdata_generic (status)
subroutine check_branchdata_generic (status)
subroutine check_outregion_generic (status)
subroutine check_lakedata_generic (status)
subroutine check_damdata_generic (status)
logical function valid_dam_purpose (current_dam)
subroutine check_generic (status)
subroutine check_evaporation (status)
integer function find_petmodels_used (petmodels_used, petmodels_used_size)
subroutine log_petmodels_used (funit, petmodels_used, num_petmodels_used)
logical function valid_petmodel_options (current_petmodel)
logical function check_actual_soil_evapotranspiration ()
subroutine check_atmospheric_deposition (status)
subroutine check_soil_water (status)
logical function valid_frozensoil_options (current_frozensoilmodel)
logical function valid_infiltration_options (current_infiltrationmodel)
logical function valid_surfacerunoff_options (current_surfacerunoffmodel)
subroutine check_snow (status)
logical function valid_snowfall_options (current_snowfallmodel)
logical function valid_snowfalldistribution_options (current_snowfalldistmodel)
logical function valid_snowmelt_options (current_snowmeltmodel)
logical function valid_snowevap_options (current_snowevapmodel)
logical function valid_evap_options (current_evapmodel)
logical function valid_snowdensity_options (current_snowdensitymodel)
logical function valid_snowheat_options (current_snowheatmodel)
subroutine check_glaciers (status)
logical function valid_glacierini_options (current_glacierinimodel)
subroutine check_rivers (status)
subroutine check_valid_river_rating_curve_data (ret)
logical function valid_lakeriverice_options (current_lakerivericemodel)
subroutine check_lakes (status)
logical function valid_swtemperature_options (current_swtemperaturemodel)
logical function valid_connectivity_options (current_connectivitymodel)
subroutine check_rating_curves (status)
subroutine check_regvol (status)
subroutine check_floodplains (status)
logical function valid_floodplain_options (current_floodplainmodel)
subroutine check_river_wetlands (status)
subroutine check_irrigation (status)
subroutine check_pointsourcedata (status)
subroutine check_general_deep (status)
subroutine check_reggrw ()
subroutine check_aquifers (status)
logical function valid_deepgroundwater_options (current_deepgroundwatermodel)
subroutine check_nutrient_sources (status)
subroutine check_veg_soil_surface (status)
logical function valid_growthstart_options (current_growthstartmodel)
logical function valid_erosion_options (current_erosionmodel)
logical function check_erosion_on (current_erosionmodel)
logical function check_eroded_filtering_delay ()
logical function check_plant_uptake ()
subroutine check_nutrient_soil (status)
subroutine check_soil_leakage_as_input (status)
subroutine check_sediment_sedresusp (status)
logical function valid_sedresusp_model (sedrespmodel)
subroutine check_siltation (status)
logical function valid_siltation_model (siltationmodel)
subroutine check_file_existence (io_result, filename, test_id, test_process)
subroutine check_param (io_result, tolerance, test_id, test_process, force)
subroutine check_input (io_result, vector, tolerance, test_id, test_process, force)
subroutine check_forcing_exist (io_result, force_param, test_id, test_process)
subroutine add_generic_result (test_result, test_id, test_process, name)
subroutine print_testresult_logical (name_string, return_logical, prefix, suffix)
subroutine add_testcase (test_id, test_process)
subroutine clear_tests (test_process)
subroutine print_test_process (process)
subroutine uncheck_testcase (test_id, test_process)
subroutine print_extended (test_id)
subroutine print_param (modpar_index)
subroutine print_input (line)
subroutine print_forcing (name)
subroutine print_generic (name)
logical function real_check_tolerance (vector, tolerance)
subroutine int_data_is_within_tolerance (vector, aimed_value, tolerance_min, tolerance_max, num_tolerance, retval)
subroutine real_data_is_within_tolerance (vector, aimed_value, tolerance_min, tolerance_max, num_tolerance, retval)

Variables

integer, parameter t_temperature_precipition = 1
integer, parameter t_evaporation = 2
integer, parameter t_soil_water = 3
integer, parameter t_snow_routines = 4
integer, parameter t_rivers = 5
integer, parameter t_lakes = 6
integer, parameter t_floodplains = 7
integer, parameter t_glaciers = 8
integer, parameter t_aquifers = 9
integer, parameter t_reg_grw = 10
integer, parameter t_info_generic = 11
integer, parameter t_geodata_generic = 12
integer, parameter t_geoclass_generic = 13
integer, parameter t_lakedata_generic = 14
integer, parameter t_damdata_generic = 15
integer, parameter t_mgmtdata_generic = 16
integer, parameter t_outregion_generic = 17
integer, parameter t_observation = 18
integer, parameter t_generic = 19
integer, parameter t_wetland = 20
integer, parameter t_nut_source = 21
integer, parameter t_pointsource = 22
integer, parameter t_veg_soil_surface = 23
integer, parameter t_nutrient_soil = 24
integer, parameter t_atmdep = 25
integer, parameter t_soilleakage = 26
integer, parameter t_irrigation = 27
integer, parameter t_siltation = 28
integer, parameter t_branchdata_generic = 29
integer, parameter t_sedresusp = 30
integer, parameter nof_test_processes = 30
integer, parameter, public e_lakedata = 1
integer, parameter, public e_geodata = 2
integer, parameter, public e_damdata = 3
integer, parameter, public e_flooddata = 4
integer, parameter, public e_mgmtdata = 5
integer, parameter, public e_forckey = 6
integer, parameter, public e_par = 7
integer, parameter, public e_update = 8
integer, parameter, public e_model_base_conf_ok = 9
integer, parameter, public e_branchdata = 10
integer, parameter, public e_aquiferdata = 11
integer, parameter, public e_glacierdata = 12
integer, parameter, public e_pointsourcedata = 13
integer, parameter, public e_leakagedata = 14
integer, parameter, public e_cropdata = 15
integer, parameter, public e_info_file = 16
integer, parameter, public e_set_outvar_for_var = 17
integer, parameter, public e_outregions = 18
integer, parameter, public e_otest = 19
integer, parameter, public e_output_range_violation = 20
integer, parameter, public e_rrcdata = 21
integer, parameter, public e_atmdepdata = 22
integer, parameter, public e_npsdata = 23
integer, parameter nof_external_tests = 23
character(len=32), dimension(1:nof_external_testsexternal_test_names
integer, parameter, public e_error = 1
integer, parameter, public e_warning = 2
integer, parameter, public e_info = 3
integer, parameter nof_external_msg_types = 3
integer, parameter a_tobs = n_max_par + 1
integer, parameter a_tminobs = n_max_par + 2
integer, parameter a_tmaxobs = n_max_par + 3
integer, parameter a_swobs = n_max_par + 4
integer, parameter a_rhobs = n_max_par + 5
integer, parameter a_uobs = n_max_par + 6
integer, parameter a_sfobs = n_max_par + 7
integer, parameter a_elevation = n_max_par + 8
integer, parameter a_latitude = n_max_par + 9
integer, parameter a_area = n_max_par + 10
integer, parameter a_ldfastlake = n_max_par + 11
integer, parameter a_grwtolake = n_max_par + 12
integer, parameter a_modeloptionrange = n_max_par + 13
integer, parameter a_snalbrange = n_max_par + 14
integer, parameter a_wcwpwcfcwcep = n_max_par + 15
integer, parameter a_aquiferdata = n_max_par + 16
integer, parameter a_cropdata = n_max_par + 17
integer, parameter a_flooddata = n_max_par + 18
integer, parameter a_t2sim = n_max_par + 19
integer, parameter a_sum_macratesrrate = n_max_par + 20
integer, parameter a_sum_macratesrrate2 = n_max_par + 21
integer, parameter a_latitude_defined = n_max_par + 22
integer, parameter a_sowlimit = n_max_par + 23
integer, parameter a_daylimit = n_max_par + 24
integer, parameter a_firstday = n_max_par + 25
integer, parameter a_percdelay = n_max_par + 26
integer, parameter a_aqarea = n_max_par + 27
integer, parameter a_porosity = n_max_par + 28
integer, parameter a_retrate = n_max_par + 29
integer, parameter a_inivol = n_max_par + 30
integer, parameter a_basedepth = n_max_par + 31
integer, parameter a_parregion2 = n_max_par + 32
integer, parameter a_recievefrac = n_max_par + 33
integer, parameter a_rrcscorr = n_max_par + 34
integer, parameter a_eroindex = n_max_par + 35
integer, parameter a_slope = n_max_par + 36
integer, parameter a_noftimesteps = n_max_par + 37
integer, parameter a_bdaterange = n_max_par + 38
integer, parameter a_edaterange = n_max_par + 39
integer, parameter a_cdaterange = n_max_par + 40
integer, parameter a_timemapduplicates = n_max_par + 41
integer, parameter a_basinarea = n_max_par + 42
integer, parameter a_basinslcfrac = n_max_par + 43
integer, parameter a_subidrange = n_max_par + 44
integer, parameter a_basinslope = n_max_par + 45
integer, parameter a_basinrivlen = n_max_par + 46
integer, parameter a_basinpospart = n_max_par + 47
integer, parameter a_basinpartsum = n_max_par + 48
integer, parameter a_basinodepth = n_max_par + 49
integer, parameter a_basinidepth = n_max_par + 50
integer, parameter a_slcforolake = n_max_par + 51
integer, parameter a_abstrwitholake = n_max_par + 52
integer, parameter a_linkmain = n_max_par + 53
integer, parameter a_linksecondary = n_max_par + 54
integer, parameter a_nclass = n_max_par + 55
integer, parameter a_classdataluse = n_max_par + 56
integer, parameter a_classdatasoil = n_max_par + 57
integer, parameter a_multiple_classes = n_max_par + 58
integer, parameter a_soildepth = n_max_par + 59
integer, parameter a_inc_soildepth = n_max_par + 60
integer, parameter a_tobselev = n_max_par + 61
integer, parameter a_forcings_stationid = n_max_par + 62
integer, parameter a_iforc_no_neg_or_no_miss = n_max_par + 63
integer, parameter a_consistent_forcing = n_max_par + 64
integer, parameter a_no_neg_value = n_max_par + 65
integer, parameter a_timeperiod_forcing = n_max_par + 66
integer, parameter a_irrigation_subid = n_max_par + 67
integer, parameter a_lakeriverice_class = n_max_par + 68
integer, parameter a_buffer = n_max_par + 69
integer, parameter a_closewater = n_max_par + 70
integer, parameter a_erosionon = n_max_par + 71
integer, parameter a_ccmax1 = n_max_par + 72
integer, parameter a_ccmax2 = n_max_par + 73
integer, parameter a_gcmax1 = n_max_par + 74
integer, parameter a_gcmax2 = n_max_par + 75
integer, parameter a_uptake1 = n_max_par + 76
integer, parameter a_uptake2 = n_max_par + 77
integer, parameter a_uptake3 = n_max_par + 78
integer, parameter a_uptakeupper = n_max_par + 79
integer, parameter a_uptakeratio = n_max_par + 80
integer, parameter a_bd2 = n_max_par + 81
integer, parameter a_bd3 = n_max_par + 82
integer, parameter a_bd5 = n_max_par + 83
integer, parameter a_scr_part = n_max_par + 84
integer, parameter a_scr_exist = n_max_par + 85
integer, parameter a_wcwp_gt_zero = n_max_par + 86
integer, parameter a_allirr_subbasins = n_max_par + 87
integer, parameter a_file_exist = n_max_par + 88
integer, parameter a_soilleakage = n_max_par + 89
integer, parameter a_fertday1 = n_max_par + 90
integer, parameter a_fertday2 = n_max_par + 91
integer, parameter a_manday1 = n_max_par + 92
integer, parameter a_manday2 = n_max_par + 93
integer, parameter a_fertdown1 = n_max_par + 94
integer, parameter a_fertdown2 = n_max_par + 95
integer, parameter a_mandown1 = n_max_par + 96
integer, parameter a_mandown2 = n_max_par + 97
integer, parameter a_fertnamount1 = n_max_par + 98
integer, parameter a_fertnamount2 = n_max_par + 99
integer, parameter a_mannamount1 = n_max_par + 100
integer, parameter a_mannamount2 = n_max_par + 101
integer, parameter a_fertpamount1 = n_max_par + 102
integer, parameter a_fertpamount2 = n_max_par + 103
integer, parameter a_manpamount1 = n_max_par + 104
integer, parameter a_manpamount2 = n_max_par + 105
integer, parameter a_resdayno = n_max_par + 106
integer, parameter a_resdown = n_max_par + 107
integer, parameter a_resfast = n_max_par + 108
integer, parameter a_resnamount = n_max_par + 109
integer, parameter a_respamount = n_max_par + 110
integer, parameter a_volloc = n_max_par + 111
integer, parameter a_locconcnp = n_max_par + 112
integer, parameter a_basinindep = n_max_par + 113
integer, parameter a_basinindep2 = n_max_par + 114
integer, parameter a_basinindep3 = n_max_par + 115
integer, parameter a_damregvol = n_max_par + 116
integer, parameter a_damqprod = n_max_par + 117
integer, parameter a_damlimprod = n_max_par + 118
integer, parameter a_damqamp = n_max_par + 119
integer, parameter a_damqinfmin = n_max_par + 120
integer, parameter a_damexpxx = n_max_par + 121
integer, parameter a_basinregion = n_max_par + 122
integer, parameter a_nofprintsteps = n_max_par + 123
integer, parameter a_consistent_observation = n_max_par + 124
integer, parameter a_branchdefined = n_max_par + 125
integer, parameter a_lrwet_area = n_max_par + 126
integer, parameter a_mrwet_area = n_max_par + 127
integer, parameter a_lrwet_depth = n_max_par + 128
integer, parameter a_mrwet_depth = n_max_par + 129
integer, parameter a_lrwet_part = n_max_par + 130
integer, parameter a_mrwet_part = n_max_par + 131
integer, parameter a_lrwet_inflow = n_max_par + 132
integer, parameter a_mrwet_inflow = n_max_par + 133
integer, parameter a_iwet_area = n_max_par + 134
integer, parameter a_owet_area = n_max_par + 135
integer, parameter a_signfig = n_max_par + 136
integer, parameter a_regvol1 = n_max_par + 137
integer, parameter a_linklbinternal = n_max_par + 138
integer, parameter a_linklbsecondout = n_max_par + 139
integer, parameter a_winddir = n_max_par + 140
integer, parameter a_uwobs = n_max_par + 141
integer, parameter a_vwobs = n_max_par + 142
integer, parameter a_rrc1 = n_max_par + 143
integer, parameter a_rrc2 = n_max_par + 144
integer, parameter a_rrc3 = n_max_par + 145
integer, parameter a_rrc4 = n_max_par + 146
integer, parameter a_rrc5 = n_max_par + 147
integer, parameter a_outregionid = n_max_par + 148
integer, parameter a_outregionsubid = n_max_par + 149
integer, parameter a_lakeriverice_thpo = n_max_par + 150
integer, parameter a_rurlocarea = n_max_par + 151
integer, parameter a_consistent_pstimeinfo = n_max_par + 152
integer, parameter a_exist_pstimefile = n_max_par + 153
integer, parameter a_missing_pstime_forcing = n_max_par + 154
integer, parameter a_weightsub = n_max_par + 155
integer, parameter a_lksfarea = n_max_par + 156
integer, parameter a_lksficatch = n_max_par + 157
integer, parameter a_sum_lksficatch = n_max_par + 158
integer, parameter a_sum_lksfarea = n_max_par + 159
integer, parameter a_aqpassivedepth = n_max_par + 160
integer, parameter a_aqtopdepth = n_max_par + 161
integer, parameter a_aqpassivevol = n_max_par + 162
integer, parameter a_irrigation_gwpart = n_max_par + 163
integer, parameter a_irrigation_swpart = n_max_par + 164
integer, parameter a_irrigation_loceff = n_max_par + 165
integer, parameter a_irrigation_regeff = n_max_par + 166
integer, parameter a_irr_regsrc = n_max_par + 167
integer, parameter a_irrdam_reg = n_max_par + 168
integer, parameter a_irrdam_loc = n_max_par + 169
integer, parameter a_irrigation_type = n_max_par + 170
integer, parameter a_watertr_subid = n_max_par + 171
integer, parameter a_watertr_rcv = n_max_par + 172
integer, parameter a_watertr_no_dwtr = n_max_par + 173
integer, parameter a_numsubst = n_max_par + 174
integer, parameter a_regvol2 = n_max_par + 175
integer, parameter a_clay = n_max_par + 176
integer, parameter a_sand = n_max_par + 177
integer, parameter a_silt = n_max_par + 178
integer, parameter a_claysandsilt = n_max_par + 179
integer, parameter a_flushing = n_max_par + 180
integer, parameter a_flushing2 = n_max_par + 181
integer, parameter a_flushing3 = n_max_par + 182
integer, parameter a_dddambuild = n_max_par + 183
integer, parameter a_lddambuild = n_max_par + 184
integer, parameter a_rivvel = n_max_par + 185
integer, parameter a_damp = n_max_par + 186
integer, parameter a_crop_defined = n_max_par + 187
integer, parameter a_crop2_defined = n_max_par + 188
integer, parameter a_rurlocleak = n_max_par + 189
integer, parameter a_locloadnp = n_max_par + 190
integer, parameter a_regvol3 = n_max_par + 191
integer, parameter a_branch_multi = n_max_par + 192
integer, parameter a_branch_model = n_max_par + 193
integer, parameter a_flushing4 = n_max_par + 194
integer, parameter a_flushing5 = n_max_par + 195
integer, parameter a_flushing6 = n_max_par + 196
integer, parameter a_hdsdep1 = n_max_par + 197
integer, parameter a_hdsdep2 = n_max_par + 198
integer, parameter a_xcoord_def = n_max_par + 199
integer, parameter a_ycoord_def = n_max_par + 200
integer, parameter a_atmdepwater = n_max_par + 201
integer, parameter a_mancamount1 = n_max_par + 202
integer, parameter a_mancamount2 = n_max_par + 203
integer, parameter a_rrcs_set = n_max_par + 204
integer, parameter a_lb_floodplain = n_max_par + 205
integer, parameter max_testcases = n_max_par + 205
integer, parameter max_testcases_per_process = 64
character(len=32), dimension(n_max_par+1:max_testcasestesting_names
integer, parameter p_parameter = 1
integer, parameter p_input = 2
integer, parameter p_forcing = 3
integer, parameter p_generic = 4
integer, parameter eq_zero = 1
integer, parameter ne_zero = 2
integer, parameter gt_zero = 3
integer, parameter lt_zero = 4
integer, parameter ge_zero = 5
integer, parameter le_zero = 6
integer, parameter gt_zero_and_lt_one = 7
integer, parameter ge_zero_and_lt_one = 8
integer, parameter gt_zero_and_le_one = 9
integer, parameter ge_zero_and_le_one = 10
integer, parameter gt_minus_one_and_lt_plus_one = 11
integer, parameter ge_minus_one_and_le_plus_one = 12
integer, parameter gt_minus_one = 13
integer, parameter ge_minus_one = 14
integer, parameter plus_minus_90 = 15
integer, parameter plus_minus_180 = 16
integer, parameter one_plus_minus_point_1_percent = 17
integer, parameter ge_lowest_natural_point = 18
integer, parameter ge_zero_and_le_hundred = 19
integer, parameter ge_zero_and_le_366 = 20
integer, parameter gt_zero_and_lt_366 = 21
integer, parameter ge_one = 22
integer, parameter ge_one_and_le_three = 23
integer, parameter eq_missing_value = 24
integer, parameter nof_test_tolerances = 24
character(len=32), dimension(nof_test_tolerancestesting_tolerances
type(testexternaltype), dimension(nof_external_testsexternal_tests
type(testcasetype), dimension(max_testcasesall_test_cases
type(testprocesstype), dimension(max_testcases_per_process, nof_test_processestests_c2_process
integer funit_used = 0
integer printout_level = 0
integer onoff_option = 0
logical error_halt = .TRUE.
logical force_test = .FALSE.

Detailed Description

Module for writing test cases to a log file.

Function/Subroutine Documentation

◆ add_generic_result()

subroutine model_test_routines::add_generic_result ( logical, intent(in) test_result,
integer, intent(in) test_id,
integer, intent(in) test_process,
character(len=*), intent(in), optional name )
private

Add generic test result to test case and add test case to test process.

Parameters
[in]test_resultInput logical for result
[in]test_idThe index parameter specifying test case
[in]test_processProcess assigned to this test case
[in]nameName to describe the generic test to show when printed
Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_testcase()

subroutine model_test_routines::add_testcase ( integer, intent(in) test_id,
integer, intent(in) test_process )
private

Add test case to a specific test process.

Parameters
[in]test_idcurrent test case ID
[in]test_processcurrent test process
Here is the caller graph for this function:

◆ check_actual_soil_evapotranspiration()

logical function model_test_routines::check_actual_soil_evapotranspiration
private

Check and test actual soil evapotranspiration.

Test
Check soil temperature reduction of evaporation, if used (tredA>0.0) parameters checked if positive/valid
Test
Check parameters for actual soil evaporation (lp,t1evap,epotdist) valid.
Test
Check evaporation model options valid
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_aquifers()

subroutine model_test_routines::check_aquifers ( integer, intent(inout) status)
private

Check aquifers.

Checking AquiferData and model option settings

Parameters
[in,out]statusnumber of errors
Test
Check aquifer depth/volume parameters consistent
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_atmospheric_deposition()

subroutine model_test_routines::check_atmospheric_deposition ( integer, intent(inout) status)
private

Check and test atmospheric deposition.

Parameters
[in,out]statusReturn status
Test
Check atmospheric nitrogen deposition input not negative
Test
Check atmospheric phosphorus deposition parameters not negative
Test
Check water classes is of vegtype water for atmospheric deposition
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_branchdata_generic()

subroutine model_test_routines::check_branchdata_generic ( integer, intent(inout) status)
private

Generic BranchData tests.

Checks input data in file BranchData

Parameters
[in,out]statusReturn status
Test
Check that internal branches in multi-basin lakes have no ambigous input.
Test
Check that all branches source are in model set-up. TO LATE
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_damdata_generic()

subroutine model_test_routines::check_damdata_generic ( integer, intent(inout) status)
private

Generic DamData tests TODO: The damdata tests are not complete. Need to be looked into.

Parameters
[in,out]statusReturn status
Test
Checks for positive regulation volume, production flow amplitude between zero and one, and minimum production flow not negative.
Test
Check that production flow is given in some form; If qprod1<=0 then require qinfmed>=0, if qprod1>0 then require qprod2>=0.
Test
Check if reduced production flow (limqprod) at low water levels is correctly given (0-1).
Test
Check dam build before removed
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_eroded_filtering_delay()

logical function model_test_routines::check_eroded_filtering_delay
private

Check and test filtering of eroded material and release pool.

Test
Check GeoData input (buffer, closewater) and parameters (bufffilt, innerfilt, otherfilt, macrofilt) used for filtering
Test
Check parameters for temporary delay of SS and PP from surface runoff and tile drains (pprelmax, pprelexp) greater or equal to zero
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_erosion_on()

logical function model_test_routines::check_erosion_on ( integer, intent(in) current_erosionmodel)
private

Check if erosion is simulated, parameter values can be used to turn it off. If on more tests are needed.

Parameters
[in]current_erosionmodelerosionmodel to be tested for valid options

Check parameters for turning off erosion model

Erosion model 0: Erosion on : MAX(soilcoh) != 0.0 AND MAX(soilerod) != 0.0 --> OK

Erosion model 1: Erosion on : MAX(erodsoil) != 0.0 AND MAX(erodluse) != 0.0 --> OK

Erosion model 2: Erosion on : MAX(eroindex) > 0.0 --> OK

Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_evaporation()

subroutine model_test_routines::check_evaporation ( integer, intent(inout) status)
private

Check and test evaporation options.

Parameters
[in,out]statusReturn status

Find all petmodels used in model set up

Test
For each petmodel present in model check its needed input
Test
Check actual soil evaporation input and parameters valid; specifics elsewhere
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_external_tests()

subroutine model_test_routines::check_external_tests ( integer, intent(inout) status)
private

Check the external tests if any where propagated.

Parameters
[in,out]statusReturn status
Here is the caller graph for this function:

◆ check_file_existence()

subroutine model_test_routines::check_file_existence ( logical, intent(inout) io_result,
character(len=*), intent(in) filename,
integer, intent(in) test_id,
integer, intent(in) test_process )
private

Check existence of model file and add to test cases and test process.

Parameters
[in,out]io_resultInput and Output logical for "AND" result
[in]filenameThe filename to test
[in]test_idThe index parameter specifying test case
[in]test_processProcess assigned to this test case
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_floodplains()

subroutine model_test_routines::check_floodplains ( integer, intent(inout) status)
private

Check and test floodplains options.

Parameters
[in,out]statusReturn status
Test
Check and test floodplain options: specifics elsewhere
Test
Check for mixing of floodplain and multibasinlakes. This is not handled.
Test
Check floodplain model: FloodData file exist and tracer evaporation behaviour valid (t1evap>=0,<=1)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_forcing_exist()

subroutine model_test_routines::check_forcing_exist ( logical, intent(inout) io_result,
integer, intent(in) force_param,
integer, intent(in) test_id,
integer, intent(in) test_process )
private

Check forcing data present (file exist) and add the test case to the test process. Return the logical AND result.

Parameters
[in,out]io_resultInput and Output logical for "AND" result
[in]force_paramThe forcing parameter to test
[in]test_idThe index parameter specifying test case
[in]test_processProcess assigned to this test case
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_general_deep()

subroutine model_test_routines::check_general_deep ( integer, intent(inout) status)
private

Check genearal deep process model option.

Checking model option settings

Parameters
[in,out]statusnumber of errors
Test
Check and test groundwater model options: specifics elsewhere
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_generic()

subroutine model_test_routines::check_generic ( integer, intent(inout) status)
private

Generic tests.

The generic tests include tests that doesn't belong to any specific setup file or tests of a more general nature.

Parameters
[in,out]statusReturn status
Test
Check modeloptions within range: The modeloptions are checked for illegal choices of numbers
Test
Check snow albedo parameter ranges: The snalbmin shall always be less than snalbmax as well as they shall never be a negative value.
Test
Check soil water holding capacities: wcfc,wcwp and wcep between zero and one.
Test
Check that for all soil types and for their soillayers the sum of wilting point, field capacity and effective porosity are within the range greater than zero to less than or equal to one
Test
Check that region is larger than zero
Test
Check that each class with area that has a crop (and secondary crop) has information about that crop in CropData
Test
Check that soil temperature is calculated (parameters set) for WQ-simulations.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_geoclass_generic()

subroutine model_test_routines::check_geoclass_generic ( integer, intent(inout) status)
private

Generic GeoClass tests.

The GeoClass tests include tests of the GeoClass.txt

Parameters
[in,out]statusReturn status
Test
Check that the number of slc-classes are greater than zero
Test
Check landuse code greater than zero
Test
Check soil type code greater than zero
Test
Check that there is only one class defined for each special class: ilake, olake, glacier, mriver, lriver, iwet, owet.
Test
Check soildepth: Check that all layers have an increasing depths (last layer can have the same depth as previous one)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_geodata_generic()

subroutine model_test_routines::check_geodata_generic ( integer, intent(inout) status)
private

Generic GeoData tests.

Parameters
[in,out]statusReturn status
Test
Check that at least some subbasins have area greater than zero
Test
Check that if subbasin area is positive, slc-fraction are given.
Test
Check subid range to be between one and max_subid
Test
Check subbasin slope greater or equal to zero
Todo
Add the check of lake regions for NPC simulation
Test
Check river length greater or equal to zero
Test
Check the sum of the slc fractions to be 1 with a tolerance of plus minus 0.1 percent
Test
Check that each and everyone of the slcs' fractions are greater or equal to zero
Test
Check that each secondary crop fraction is between zero and one.
Test
Check that lake depths, both ilake and olake, are positive.
Test
Check abstractions; no abstractions when no lakes are simulated
Test
Check abstractions; outlet lake present when water is abstracted from that lake.
Test
Check subbasin linkage (main and branch) and subbasin calculation order.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_glaciers()

subroutine model_test_routines::check_glaciers ( integer, intent(inout) status)
private

Check and test glacier options.

Parameters
[in,out]statusReturn status
Test
All glaciers in GeoData have index set
Test
Glacier parameters for volume-area relationship positive
Test
Glacier initialsation model option valid.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_info_generic()

subroutine model_test_routines::check_info_generic ( integer, intent(inout) status)
private

Generic info tests.

The info tests include tests of the info.txt

Parameters
[in,out]statusReturn status
Test
Check simulation period: positive number of time steps, output time steps and proper dates.
Test
Check timeoutput and mapoutput variables for duplicates:
Test
Check significant figures for rounding error of missing value (<4 signfigures):
Test
Check that subbasin weights set for flag weightsub:
Test
Check substances for duplicates:
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_input()

subroutine model_test_routines::check_input ( logical, intent(inout) io_result,
real, dimension(:), intent(in) vector,
integer, intent(in) tolerance,
integer, intent(in) test_id,
integer, intent(in) test_process,
logical, intent(in), optional force )
private

If the test is forced or not tested before, check the array input values against chosen tolerance and add the test case to the test process. Return the logical AND result.

Parameters
[in,out]io_resultInput and Output logical for "AND" result
[in]vectorThe data vector to be tested
[in]toleranceThe tolerance to test against
[in]test_idThe index parameter specifying test case
[in]test_processProcess assigned to this test case
[in]forceforce the test eventhough already tested
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_irrigation()

subroutine model_test_routines::check_irrigation ( integer, intent(inout) status)
private

Check irrigation.

Parameters
[in,out]statuserror number
Test
Check that all irrigated subbasins are present in MgmtData.txt
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_lakedata_generic()

subroutine model_test_routines::check_lakedata_generic ( integer, intent(inout) status)
private

Generic LakeData tests.

Parameters
[in,out]statusReturn status
Test
Check lakebasin internal outlet linkage (only main).
Test
Check lakebasin secondary outlet linkage.
Test
Check dam build before removed
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_lakes()

subroutine model_test_routines::check_lakes ( integer, intent(inout) status)
private

Check and test lakes options.

Parameters
[in,out]statusReturn status
Test
Check for valid surface water temperature model options
Test
Check for valid ilake connectivity model options
Test
Check that lakes with two outlets have a branch defined
Test
Check that lakes and dams have rating curve set (if needed)
Test
Check that lakes and dams have larger depth than regulation depth
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_mgmtdata_generic()

subroutine model_test_routines::check_mgmtdata_generic ( integer, intent(inout) status)
private

Generic MgmtData tests.

Checks input data in file MgmtData

Parameters
[in,out]statusReturn status
Test
Check that input data are given for all irrigated subbasins (subids).
Test
Check that input data are given for all irrigated subbasins (gw_part,local_eff).
Test
Check that all irrigated subbasins are present in MgmtData.txt (move to check_irrigation!)
Test
Check that input data (region_eff) are given for all subbasins irrigated by regional source.
Test
Check that a defined regional source is in the model set-up
Test
Check that input data are given for all subbasins (subids,reciever).
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_nutrient_soil()

subroutine model_test_routines::check_nutrient_soil ( integer, intent(inout) status)
private

Check vegetation and soil surface processes.

Parameters
[in,out]statusReturn status
Test
Check and test initial values set larger or larger and equal to zero.
Test
Check soil denitrification parameters larger or equal to zero.
Test
Check and test parameters for nutrient soil pool transformations.
Test
Check and test parameters for nutrient percolation
Test
Check and test parameters for nutrient phosphorus balance.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_nutrient_sources()

subroutine model_test_routines::check_nutrient_sources ( integer, intent(inout) status)
private

Check nutrient sources; fertilization, plant residues and rural household effluents.

Parameters
[in,out]statusReturn status
Test
Check fertilization input: day of application >0, amount of fertilization >=0, fraction ploughed dow to second soil layer between 0 and 1, period length of application between 0 and 366.
Test
Check application of plant residues: day of application >=0, amount >=0, fraction ploughed down and fraction of fast degrading type between 0 and 1.
Test
Check non point source/local rural household source: flow not negative, landarea present, nutrient concentration not negative (N and P)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_observations()

subroutine model_test_routines::check_observations ( integer, intent(inout) status)
private

Check forcing data and other observations.

Checking ForcKey and coupling between subbasin and observations

Parameters
[in,out]statuserror number
Test
Check ForcKey: checking temperature elevations higher than lowest natural point
Test
Check Pobs, Tobs, TMINobs, TMAXobs, RHobs, SFobs, SWobs, Uobs, UWobs, VWobs: checking station ids, timeperiods, consistency and missing or other negative illegal values if file is present
Test
Check Pobs, Tobs, TMINobs, TMAXobs, RHobs, SFobs, SWobs, Uobs, UWobs, VWobs: checking station ids, timeperiods, consistency and missing or other negative illegal values if file is present
Test
Check Qobs: checking timeperiods and positive values if file is present
Test
Check Xoms: checking stations, timeperiods and positive values if file is present
Test
Check Wobs: checking stations and timeperiods if file is present
Test
Check Xobs: checking timeperiods and geodata connections if file is present
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_output_ranges()

subroutine, public model_test_routines::check_output_ranges ( integer, intent(in) idt)

Check output ranges.

Parameters
[in]idtcurrent timestep index

Do not do any output testing if not allocated

Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_outregion_generic()

subroutine model_test_routines::check_outregion_generic ( integer, intent(inout) status)
private

Generic Outregions tests.

Parameters
[in,out]statusReturn status
Test
Check that subid and outregid do not overlap
Test
Check that subids/outregid in outregion exist (are set)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_param()

subroutine model_test_routines::check_param ( logical, intent(inout) io_result,
integer, intent(in) tolerance,
integer, intent(in) test_id,
integer, intent(in) test_process,
logical, intent(in), optional force )
private

If the test is forced or not tested before, check the model parameter values against chosen tolerance and add the test case to the test process. Return the logical AND result.

Parameters
[in,out]io_resultInput and Output logical for "AND" result
[in]toleranceThe tolerance to test against
[in]test_idHYPE model parameter index specifying the current test case
[in]test_processProcess assigned to this test case
[in]forceforce the test eventhough already tested
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_plant_uptake()

logical function model_test_routines::check_plant_uptake
private

Check and test plant uptake parameters larger or equal to zero, secondary crops given as input and wilting point above zero.

Test
Check fraction of area given for secondary crops
Test
Check wilting point water volume larger than zero.
Test
Check CropData input for beginning and end of growing season, plant uptake (fraction from upper soil layer and NP-relation) as well as parameters for plant uptake set.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_pointsourcedata()

subroutine model_test_routines::check_pointsourcedata ( integer, intent(inout) status)
private

Check point source data.

Checking PointSourceData and time series of point sources

Parameters
[in,out]statuserror number
Test
Check PSTimeSeries: checking file and subid present
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_rating_curves()

subroutine model_test_routines::check_rating_curves ( integer, intent(inout) status)
private

Check that lakes and dams have rating curve set (if needed).

Parameters
[in,out]statusReturn status

Check that lakes and dams have rating curve set (if needed, i.e. if wmin=missing)

Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_reggrw()

subroutine model_test_routines::check_reggrw
private

Check regional groundwater flow model.

Printing results of model option test

Test
Check and test groundwater model options: specifics elsewhere
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_regvol()

subroutine model_test_routines::check_regvol ( integer, intent(inout) status)
private

Check that lakes and dams have larger volume than the regulation volume.

Parameters
[in,out]statusReturn status
Test
Check regulation volume: Regulation volume and varying threshold checked against lake depth
Test
Check regulation settings: regvol and deltaw0 cannot be used together
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_river_wetlands()

subroutine model_test_routines::check_river_wetlands ( integer, intent(inout) status)
private

Check and test river wetlands for nutrient retention.

Parameters
[in,out]statusReturn status
Test
Check river wetlands for correct input (area, depth and inflow part)
Test
Check class wetlands for correct input (area only so far)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_rivers()

subroutine model_test_routines::check_rivers ( integer, intent(inout) status)
private

Check and test river options.

Parameters
[in,out]statusReturn status
Test
Check river flow model options: specifics elsewhere
Test
Check lake river ice model options: specifics elsewhere
Test
Check parameters and input data for hydraulic geometry. Parameters hygeomf, hygeomm, hygeomc, hygeomg positive.
Test
Check river rating curve data. Coefficients of rating curve positive.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_sediment_sedresusp()

subroutine model_test_routines::check_sediment_sedresusp ( integer, intent(inout) status)
private

Check and test sediment river sedimentation and resuspension.

Parameters
[in,out]statusReturn status
Test
Check sedresusp model valid
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_siltation()

subroutine model_test_routines::check_siltation ( integer, intent(inout) status)
private

Check and test sediment siltation and flushing.

Parameters
[in,out]statusReturn status
Test
Check siltation model valid
Test
Check that lakes in LakeData has increasing flushing interval (simple lakes)
Test
Test
Check that lakes in LakeData has correct mode (simple lakes)
Test
Check multi-basin lake flushing interval is increasing (except for dayno which may be around new year).
Test
Test
Check that lakes in LakeData has correct mode (multi-basin lakes)
Test
Check that reservoirs in DamData has increasing flushing interval (dam)
Test
Test
Check that reservoirs in DamData has correct mode (dam)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_snow()

subroutine model_test_routines::check_snow ( integer, intent(inout) status)
private

Check and test snow routine options.

Parameters
[in,out]statusReturn status
Test
Check snowfall model options; forcing data exist or threshold parameters set to calculate fraction of precipitation.
Test
Check snowfall distribution model options; forcing data exist or threshold parameters set to calculate fraction of precipitation.
Test
Check snowmelt model options; specifics elsewhere
Test
Check snow evaporation model options; parameters set.
Test
Check snow density model options; specifics elsewhere
Test
Check snow heat model options; parameters set
Test
Check snow model: snow liquid fraction parameters set
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_soil_leakage_as_input()

subroutine model_test_routines::check_soil_leakage_as_input ( integer, intent(inout) status)
private

Check vegetation and soil surface processes.

Parameters
[in,out]statusReturn status
Test
Check that soil leakage input is greater or equal to zero (not for T2 though)
Test
Check that soil leakage input is greater or equal to zero (not for T2 though) For modeloption soilleakage 3 only the data of the first year is checked.
Test
Check that soil leakage input is greater or equal to zero (not for T2 though) or missing
Test
Check that soil leakage input is greater or equal to zero (not for T2 though) or missing
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_soil_water()

subroutine model_test_routines::check_soil_water ( integer, intent(inout) status)
private

Check and test soil water options.

Parameters
[in,out]statusReturn status
Test
Check and test infiltration model options: specifics elsewhere
Test
Check and test surfacerunoff model options: specifics elsewhere
Test
Check and test frozen soil model options: specifics elsewhere
Test
Check parameters for soil runoff (rrcs1,rrcs2,rrcs3,trrcs).
Test
Check any runoff coefficient larger than zero
Test
Check parameters for soil temperature (deepmem, surfmem larger than one timestep/day), and positive depth relationship (depthrel).
Test
Check that soil temperature is calculated (parameters set) for WQ-simulations.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_valid_river_rating_curve_data()

subroutine model_test_routines::check_valid_river_rating_curve_data ( logical, intent(inout) ret)
private

Check river rating curve data for valid combinations.

Test
Check positive rating curve coefficients (rate,exp)
Test
Check positive rating curve coefficients (rate,exp)
Test
Check positive rating curve coefficients (rate,exp) and consistent sections
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_veg_soil_surface()

subroutine model_test_routines::check_veg_soil_surface ( integer, intent(inout) status)
private

Check vegetation and soil surface processes.

Parameters
[in,out]statusReturn status
Test
Check and test specified growthstart model for valid options: specific test specified elsewhere
Test
Check plant uptake parameters larger or equal to zero, secondary crops given as input and wilting point above zero.
Test
Check if erosion is simulated: parameters can be used to turn it off
Test
Check specified erosion model for valid options
Test
Check filtering of eroded material (and in future release pool): specific test specified elsewhere
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_xobs_validity()

subroutine model_test_routines::check_xobs_validity ( integer, intent(in) funit,
character (len=*), intent(in) infile,
integer, intent(in) nskip,
integer, intent(in) ncols,
integer, intent(out) status )
private

Opens a file with observations, reads which variables it contains and checks for corrsponding indexes and ids. Used for Xobs.txt.

Parameters
[in]funitFile unit for file
[in]infileName of file to be read
[in]nskipTotal number of comment rows
[in]ncolsTotal number of columns
[out]statuserror number
Here is the call graph for this function:
Here is the caller graph for this function:

◆ clear_tests()

subroutine model_test_routines::clear_tests ( integer, intent(in), optional test_process)
private

Clear test processes from test cases Remove all test cases from a given test process and reset these test cases OR remove all test cases from all test processes and all external test.

Parameters
[in]test_processClear test cases for this process only, if specified

Clear testcases from specified test process

Clear all test processes of test cases

Clear all external tests

Here is the caller graph for this function:

◆ count_data_missing_in_file()

subroutine model_test_routines::count_data_missing_in_file ( character(len=*), intent(in) filepath,
logical, intent(in) twotimefound,
integer, intent(in) ncols,
integer, intent(in) nskip,
integer, intent(in) ns,
integer, dimension(ns), intent(in) oindex,
integer, dimension(ns), intent(out) nummiss,
integer, intent(out) missfound )
private

Check and count for missing data in file. Used for forcing data files; Tobs.txt, TMINobs.txt and TMAXobs.txt.

Parameters
[in]filepathFile
[in]twotimefoundFlag for time format: read as one or two strings
[in]ncolsNumber of data columns in file
[in]nskipNumber of rows to skip
[in]nsNumber of subbasins, basemodel
[in]oindexIndex for columns used in model set-up
[out]nummissNumber of missing values per subbasin
[out]missfoundCode for found missing data

Algoritm
Set default output

Load forcing data

Count missing values

Check if missing values found among the used data

Here is the caller graph for this function:

◆ count_data_negative_in_file()

subroutine model_test_routines::count_data_negative_in_file ( character(len=*), intent(in) filepath,
logical, intent(in) twotimefound,
integer, intent(in) ncols,
integer, intent(in) nskip,
integer, intent(in) ns,
integer, dimension(ns), intent(in) oindex,
integer, intent(in) miss,
integer, dimension(ns), intent(out) numneg,
integer, intent(out) negfound )
private

Check for negative data in file maybe also for missing values (Pobs.txt, Qobs.txt).

Parameters
[in]filepathFile
[in]twotimefoundFlag for time format: read as one or two strings
[in]ncolsNumber of data columns in file
[in]nskipNumber of rows to skip
[in]nsNumber of subbasins, basemodel
[in]oindexIndex for columns used in model set-up
[in]missFlag for including missing values, 0=count, 1=ignore
[out]numnegNumber of negative values per subbasin
[out]negfoundCode for found negative data

Algoritm
Set default output

Load observation data

Count negative data

Check if negative values found among the used data

Here is the caller graph for this function:

◆ finalize_hype_tests()

subroutine, public model_test_routines::finalize_hype_tests

Finalize tests by closing file, clear all test results and inform of halt cause.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ find_petmodels_used()

integer function model_test_routines::find_petmodels_used ( integer, dimension(:), intent(out) petmodels_used,
integer, intent(in) petmodels_used_size )
private

find petmodels used

Parameters
[out]petmodels_usedwill hold models found in basins petmodel array
[in]petmodels_used_sizesize of the petmodels_used array
Here is the call graph for this function:
Here is the caller graph for this function:

◆ int_data_is_within_tolerance()

subroutine model_test_routines::int_data_is_within_tolerance ( integer, dimension(:), intent(in) vector,
integer, intent(in) aimed_value,
integer, intent(in) tolerance_min,
integer, intent(in) tolerance_max,
integer, intent(out) num_tolerance,
logical, intent(out) retval )
private

Check that data is within tolerance Integer.

Parameters
[in]vectorData vector that is being checked
[in]aimed_valueValue specifying a wanted value
[in]tolerance_minValue specifying how far below wanted value is ok
[in]tolerance_maxValue specifying how far above wanted value is ok
[out]num_toleranceValue specifying how many values in vector is within tolerance
[out]retvalValue specifying if vector is within tolerance

◆ log_petmodels_used()

subroutine model_test_routines::log_petmodels_used ( integer, intent(in) funit,
integer, dimension(:), intent(in) petmodels_used,
integer, intent(in) num_petmodels_used )
private

Write petmodels found to the log file.

Parameters
[in]funitFile unit of log-file
[in]petmodels_usedwill hold petmodels used
[in]num_petmodels_usednumber of used petmodels
Here is the caller graph for this function:

◆ print_extended()

subroutine model_test_routines::print_extended ( integer, intent(in) test_id)
private

Print extended information for a test case. The print out is different for different kinds of tests; hype parameter, input, forcing or generic.

Parameters
[in]test_idThe test case id
Here is the call graph for this function:
Here is the caller graph for this function:

◆ print_forcing()

subroutine model_test_routines::print_forcing ( character(len=*), intent(in) name)
private

Print extended information of forcing test cases.

Parameters
[in]nameThe name
Here is the caller graph for this function:

◆ print_generic()

subroutine model_test_routines::print_generic ( character(len=*), intent(in) name)
private

Print extended information of generic test cases.

Parameters
[in]nameThe name
Here is the caller graph for this function:

◆ print_input()

subroutine model_test_routines::print_input ( character(len=*), intent(in) line)
private

Print extended information of input test cases.

Parameters
[in]linename and interval of input variable
Here is the caller graph for this function:

◆ print_param()

subroutine model_test_routines::print_param ( integer, intent(in) modpar_index)
private

Print extended information of parameter test cases.

Parameters
[in]modpar_indexThe parameter modpar index
Here is the caller graph for this function:

◆ print_test_process()

subroutine model_test_routines::print_test_process ( integer, intent(in) process)
private

Finalises the test process by printing the number of failed "logical" test cases.

Also prints the details of all the test cases included, their status and if extended printout also parameters and value intervals.

Parameters
[in]processCurrent process
Here is the call graph for this function:
Here is the caller graph for this function:

◆ print_testresult_logical()

subroutine model_test_routines::print_testresult_logical ( character(len=*), intent(in) name_string,
logical, intent(in) return_logical,
character(len=*), optional prefix,
character(len=*), optional suffix )
private

Print name of a (group of) test cases and if it passed or failed.

This output gives an overview of where failed test cases can be found. More details on which test cases failed are given with higher level of printout. The test cases to be printed as a logical unit are defined in the code. Test cases forming a group for a logical unit is also defined in the code.

Parameters
[in]name_stringThe name of the (group of) test cases
[in]return_logicalThe logical result of the (group of) test cases
prefixSpecify a prefix string to the name if wanted
suffixSpecify a suffix string otherwise it becomes "with parameter, ..."
Here is the caller graph for this function:

◆ propagate_external_msg()

subroutine, public model_test_routines::propagate_external_msg ( integer, intent(in) external_id,
integer, intent(in) msg_type,
character(len=*), intent(in) msg,
integer, dimension(:), intent(in), optional vdata )

Propagate message (and data if wanted) from an external test. This function can be called multiple times on the same external id.

Here is the caller graph for this function:

◆ real_check_tolerance()

logical function model_test_routines::real_check_tolerance ( real, dimension(:), intent(in) vector,
integer, intent(in) tolerance )
private

Check if all values of real array are within tolerance.

Parameters
[in]vectorThe vector to be tested
[in]toleranceThe tolerance parameter
Here is the call graph for this function:
Here is the caller graph for this function:

◆ real_data_is_within_tolerance()

subroutine model_test_routines::real_data_is_within_tolerance ( real, dimension(:), intent(in) vector,
real, intent(in) aimed_value,
real, intent(in) tolerance_min,
real, intent(in) tolerance_max,
integer, intent(out) num_tolerance,
logical, intent(out) retval )
private

Check that data is within tolerance Real.

Parameters
[in]vectorData vector that is being checked
[in]aimed_valueValue specifying a wanted value
[in]tolerance_minValue specifying how far below wanted value is ok
[in]tolerance_maxValue specifying how far above wanted value is ok
[out]num_toleranceValue specifying how many values in vector is within tolerance
[out]retvalValue specifying if vector is within tolerance

◆ run_hype_observation_tests()

subroutine, public model_test_routines::run_hype_observation_tests ( integer, intent(out) status)

Runs tests for hype forcing data and other observations, and prints the result.

Parameters
[out]statuserror number
Here is the call graph for this function:
Here is the caller graph for this function:

◆ run_hype_tests()

subroutine, public model_test_routines::run_hype_tests ( integer, intent(out) status)

Runs tests for hype and prints the result in file.

Parameters
[out]statuserror number
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setup_for_hype_tests()

subroutine, public model_test_routines::setup_for_hype_tests ( integer, intent(in), optional funit,
character(len=*), intent(in), optional fname,
integer, intent(in), optional onoff,
integer, intent(in), optional level )

Setup for tests by setting flags according to given input in info-file to perform chosen test options and opens file for output of test results.

Parameters
[in]funitUsed funit
[in]fnameUsed filename
[in]onoffTests onoff option
[in]levellevel for debug printouts
Here is the caller graph for this function:

◆ stop_simulation_and_finalize_tests()

subroutine, public model_test_routines::stop_simulation_and_finalize_tests ( integer, intent(in) errnum,
character(len=*), intent(in), optional errtext )

Stop the simulation and be sure to print external tests to test file.

This function should be used if errors are encountered before the actual test module with all its test have been running. External text output is then guaranteed to end up in the test file before stop.

Parameters
[in]errnumError number
[in]errtextError text
Here is the call graph for this function:
Here is the caller graph for this function:

◆ uncheck_testcase()

subroutine model_test_routines::uncheck_testcase ( integer, intent(in) test_id,
integer, intent(in) test_process )
private

Remove a previously checked test case from a test process.

Parameters
[in]test_idThe index parameter specifying test case
[in]test_processProcess assigned to this test case
Here is the caller graph for this function:

◆ valid_connectivity_options()

logical function model_test_routines::valid_connectivity_options ( integer, intent(in) current_connectivitymodel)
private

Check and test specified swtemperature model for valid options.

Parameters
[in]current_connectivitymodelconnectivity to be tested for valid options
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_dam_purpose()

logical function model_test_routines::valid_dam_purpose ( integer, intent(in) current_dam)
private

Check and test dam purpose for valid options.

Parameters
[in]current_dampetmodel to be tested for valid options
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_deepgroundwater_options()

logical function model_test_routines::valid_deepgroundwater_options ( integer, intent(in) current_deepgroundwatermodel)
private

Check and test specified deepgroundwater model for valid options; both regional groundwater routine and aquifers.

Parameters
[in]current_deepgroundwatermodeldeepgroundwatermodel to be tested for valid options
Test
Check deep groundwater percolation parameters (rcgrw,rcgrwst,aqpercorr) and path (grwtolake).
Test
Check deep groundwater percolation parameters (rcgrw,rcgrwst,aqpercorr) and path (grwtolake).
Test
Check aquifer i.e. deepgroundwater model 2: AquiferData file existance, percolation delay and return factor adjustment parameters set (aqdelcorr,aqretcorr >=-1), for nitrogen simulation a valid denitrification parameters (denitaq,hsatINsoil>=0).
Test
Check aquifer for valid data
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_erosion_options()

logical function model_test_routines::valid_erosion_options ( integer, intent(in) current_erosionmodel)
private

Check and test specified erosion model for valid options.

Parameters
[in]current_erosionmodelerosionmodel to be tested for valid options
Test
Checks for erosionmodel 0: Existance of CropData.txt, allowed values for parameters for soil characteristics (soilcoh,soilerod,sreroexp, incorr,oncorr,phoscorr), crop cover and ground cover between zero and one.
Test
Checks for erosion model 1: parameters for soil erosion (erodluse,erodsoil,erodslope,erodexp,erodindex), and erosion index for each subbasins

Check basin slope greater or equal to zero and below 100.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_evap_options()

logical function model_test_routines::valid_evap_options ( integer, intent(in) current_evapmodel)
private

Check and test specified evaporation model for valid options.

Parameters
[in]current_evapmodelsnowevapmodel to be tested for valid options
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_floodplain_options()

logical function model_test_routines::valid_floodplain_options ( integer, intent(in) current_floodplainmodel)
private

Check and test specified floodplain model for valid options.

Parameters
[in]current_floodplainmodelfloodplainmodel to be tested for valid options
Test
Check floodplain model option 2: parameters for snowmelt and saturated surface runoff has valid values as well as recession coefficient correction parameters (cmlt,mactrinf,srrcs,rrcscorr).
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_frozensoil_options()

logical function model_test_routines::valid_frozensoil_options ( integer, intent(in) current_frozensoilmodel)
private

Check and test specified frozensoil model for valid options.

Parameters
[in]current_frozensoilmodelfrozensoil model to be tested for valid options
Test
Check frozensoil model 0: No ice, but ice expansion parameter still used/checked.
Test
Check frozensoil model 1 and 2: positive parameters for frozen soil, ice expansion within (0,1) and soil temperature parameters set.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_glacierini_options()

logical function model_test_routines::valid_glacierini_options ( integer, intent(in) current_glacierinimodel)
private

Check and test specified glacierini model for valid options.

Parameters
[in]current_glacierinimodelglacierinimodel to be tested for valid options
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_growthstart_options()

logical function model_test_routines::valid_growthstart_options ( integer, intent(in) current_growthstartmodel)
private

Check and test specified growthstart model for valid options. Called for nutrient uptak, but should be called for irrigation also.

Parameters
[in]current_growthstartmodelgrowthstartmodel to be tested for valid options
Test
Checks for growthstartmodel 0: sowing date set
Test
Checks for growthstartmodel 1: degree day accumulation method, earliest starting date (firstday) and dayhour limit (daylength) for degreeday accumulation set (positive) as well as degreedaysum determining saw date (gddsow>0).
Test
Checks for growthstartmodel 4: temperature over limit period, earliest starting date (firstday) as well as number of consequtive days (accdays>0).
Test
Check latitude set and between +-90 degree, necessary for southern hemisphere and/or growthstart model 1
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_infiltration_options()

logical function model_test_routines::valid_infiltration_options ( integer, intent(in) current_infiltrationmodel)
private

Check and test specified infiltration model for valid options.

Parameters
[in]current_infiltrationmodelinfiltrationmodel to be tested for valid options
Test
Check infiltration model 1: frozen soil parameters have valid values (>=0).
Test
Check sum of macropore flow and saturated surface runoff fractions larger than zero
Test
Check organic part of nitrogen atmospheric deposition is between zero and one.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_lakeriverice_options()

logical function model_test_routines::valid_lakeriverice_options ( integer, intent(in) current_lakerivericemodel)
private

Check and test specified lakeriverice model for valid options.

Parameters
[in]current_lakerivericemodellakerivericemodel to be tested for valid options
Test
Check for simple air-water temperature exchange model (lakerivericemodel 1): exchange parameters (t2trlake,t2trriver) valid (>0).
Test
Check for new heat transfer model (lakerivericemodel 2): heat transfer parameters correctly given (tcflake,scflake,tcfriver,scfriver >0 or ccfriver,lcfriver,ccflake,lcflake>0, and limt2exch>=0) stability parameters correct (stbcorr1-stbcorr3>=0)
Test
Check lake and river ice parameters set (licekika,ricekika,licekexp, ricekexp,licetmelt,ricetmelt > 0) and that a water class exist.
Test
Check ice freezing temperature not negative (licetf,ricetf)
Test
Check ice breakup porosity parameters set positive and in range
Test
Check heat flux from water to ice (ricecwi,liceqhmn,riceqhmx,liceqhw>=0)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_petmodel_options()

logical function model_test_routines::valid_petmodel_options ( integer, intent(in) current_petmodel)
private

Check and test specified petmodel for valid options.

Parameters
[in]current_petmodelpetmodel to be tested for valid options
Test
Check petmodel 0 (HYPE original model (with Xobs replacement, if available)): Temperature forcing valid and evaporation rate parameter (cevp) positive.
Test
Check petmodel 1 (HYPE original model (without Xobs replacement)): Temperature forcing valid and evaporation rate parameter (cevp) positive.
Test
Check petmodel 2 (Modified Jensen-Haise/McGuinness following Oudin et al (2005)): Temperature forcing valid, latitude given and evaporation parameters (kc,jhtadd,jhtscale) valid
Test
Check petmodel 3 (Hargreaves-Samani): Temperature forcing valid, elevation and latitude given and evaporation parameters (kc,krs) valid. Additional forcing present.
Test
Check petmodel 4 (Priestly Taylor): Temperature forcing valid, elevation and latitude given and evaporation parameters (kc,alb,alfapt) valid. Additional forcing or parameters present.
Test
Check petmodel 5 (FAO Penman Monteith reference crop evapotranspiration): Temperature forcing valid, elevation and latitude given and evaporation parameters (kc,alb) valid. Additional forcing or parameters present.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_sedresusp_model()

logical function model_test_routines::valid_sedresusp_model ( integer, intent(in) sedrespmodel)
private

Check and test sediment/resuspension models for valid options.

Parameters
[in]sedrespmodelsediment/resuspension model to be tested for valid options
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_siltation_model()

logical function model_test_routines::valid_siltation_model ( integer, intent(in) siltationmodel)
private

Check and test siltation modeloption for valid options.

Parameters
[in]siltationmodelsiltation model to be tested for valid options
Test
Check that for all subbasins the fractions of clay, sand and silt are between zero and one
Test
Check that for all subbasins the sum of fractions of clay, sand and silt are one (approximately)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_snowdensity_options()

logical function model_test_routines::valid_snowdensity_options ( integer, intent(in) current_snowdensitymodel)
private

Check and test specified snow density model for valid options.

Parameters
[in]current_snowdensitymodelsnowdensitymodel to be tested for valid options
Test
Check snow density of new snow parameter set (>0)
Test
Check snow density model 0 (depending on age of snow): parameters set (snowdensdt,ricesndens,licesndens)
Test
Check snow density model 1 (depending on compactation factor): parameters set (sdnsrate,sdnsradd,sdnsmax)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_snowevap_options()

logical function model_test_routines::valid_snowevap_options ( integer, intent(in) current_snowevapmodel)
private

Check and test specified snow evaporation model for valid options.

Parameters
[in]current_snowevapmodelsnowevapmodel to be tested for valid options
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_snowfall_options()

logical function model_test_routines::valid_snowfall_options ( integer, intent(in) current_snowfallmodel)
private

Check and test specified snow fall model for valid options.

Parameters
[in]current_snowfallmodelsnowfallmodel to be tested for valid options
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_snowfalldistribution_options()

logical function model_test_routines::valid_snowfalldistribution_options ( integer, intent(in) current_snowfalldistmodel)
private

Check and test specified snow fall model for valid options.

Parameters
[in]current_snowfalldistmodelsnowfall distribution model to be tested for valid options
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_snowheat_options()

logical function model_test_routines::valid_snowheat_options ( integer, intent(in) current_snowheatmodel)
private

Check and test specified snow heat model for valid options.

Parameters
[in]current_snowheatmodelsnowheatmodel to be tested for valid options
Test
Check snow density of new snow parameter set (>0)
Test
Check snow heat model 1: parameters set (sndens0,snkika)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_snowmelt_options()

logical function model_test_routines::valid_snowmelt_options ( integer, intent(in) current_snowmeltmodel)
private

Check and test specified snow melt model for valid options.

Parameters
[in]current_snowmeltmodelsnowmeltmodel to be tested for valid options
Test
Check snowmelt coefficient and efficiency of snowcover fraction set (cmlt>=0,fsceff between zero and one)
Test
Check temperature and radiation index model, with/without snowcover scaling and refreezing (snowmelt model option 2): parameters for snow melt set (snalbmin,snalbmax,snalbkexp,cmrad,cmrefr), forcing from solar radiation or minimum and maximum temperature or elevation and parameter (krs) given.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_surfacerunoff_options()

logical function model_test_routines::valid_surfacerunoff_options ( integer, intent(in) current_surfacerunoffmodel)
private

Check and test specified surface runoff model for valid options.

Parameters
[in]current_surfacerunoffmodelsurfacerunoffmodel to be tested for valid options
Test
Check surface runoff and macropore flow model parameters have valid values
Test
Check sum of macropore flow and saturated surface runoff fractions less than or equal to one.
Test
Check surface runoff model 1: parameters set
Test
Check surface runoff model 2: parameters set
Test
Check surface runoff model 3: parameters set
Test
Check surface runoff model 4: parameters set
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valid_swtemperature_options()

logical function model_test_routines::valid_swtemperature_options ( integer, intent(in) current_swtemperaturemodel)
private

Check and test specified swtemperature model for valid options.

Parameters
[in]current_swtemperaturemodelswtemperaturemodel to be tested for valid options
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ a_abstrwitholake

integer, parameter model_test_routines::a_abstrwitholake = n_max_par + 52
private

◆ a_allirr_subbasins

integer, parameter model_test_routines::a_allirr_subbasins = n_max_par + 87
private

◆ a_aqarea

integer, parameter model_test_routines::a_aqarea = n_max_par + 27
private

◆ a_aqpassivedepth

integer, parameter model_test_routines::a_aqpassivedepth = n_max_par + 160
private

◆ a_aqpassivevol

integer, parameter model_test_routines::a_aqpassivevol = n_max_par + 162
private

◆ a_aqtopdepth

integer, parameter model_test_routines::a_aqtopdepth = n_max_par + 161
private

◆ a_aquiferdata

integer, parameter model_test_routines::a_aquiferdata = n_max_par + 16
private

◆ a_area

integer, parameter model_test_routines::a_area = n_max_par + 10
private

◆ a_atmdepwater

integer, parameter model_test_routines::a_atmdepwater = n_max_par + 201
private

◆ a_basedepth

integer, parameter model_test_routines::a_basedepth = n_max_par + 31
private

◆ a_basinarea

integer, parameter model_test_routines::a_basinarea = n_max_par + 42
private

◆ a_basinidepth

integer, parameter model_test_routines::a_basinidepth = n_max_par + 50
private

◆ a_basinindep

integer, parameter model_test_routines::a_basinindep = n_max_par + 113
private

◆ a_basinindep2

integer, parameter model_test_routines::a_basinindep2 = n_max_par + 114
private

◆ a_basinindep3

integer, parameter model_test_routines::a_basinindep3 = n_max_par + 115
private

◆ a_basinodepth

integer, parameter model_test_routines::a_basinodepth = n_max_par + 49
private

◆ a_basinpartsum

integer, parameter model_test_routines::a_basinpartsum = n_max_par + 48
private

◆ a_basinpospart

integer, parameter model_test_routines::a_basinpospart = n_max_par + 47
private

◆ a_basinregion

integer, parameter model_test_routines::a_basinregion = n_max_par + 122
private

◆ a_basinrivlen

integer, parameter model_test_routines::a_basinrivlen = n_max_par + 46
private

◆ a_basinslcfrac

integer, parameter model_test_routines::a_basinslcfrac = n_max_par + 43
private

◆ a_basinslope

integer, parameter model_test_routines::a_basinslope = n_max_par + 45
private

◆ a_bd2

integer, parameter model_test_routines::a_bd2 = n_max_par + 81
private

◆ a_bd3

integer, parameter model_test_routines::a_bd3 = n_max_par + 82
private

◆ a_bd5

integer, parameter model_test_routines::a_bd5 = n_max_par + 83
private

◆ a_bdaterange

integer, parameter model_test_routines::a_bdaterange = n_max_par + 38
private

◆ a_branch_model

integer, parameter model_test_routines::a_branch_model = n_max_par + 193
private

◆ a_branch_multi

integer, parameter model_test_routines::a_branch_multi = n_max_par + 192
private

◆ a_branchdefined

integer, parameter model_test_routines::a_branchdefined = n_max_par + 125
private

◆ a_buffer

integer, parameter model_test_routines::a_buffer = n_max_par + 69
private

◆ a_ccmax1

integer, parameter model_test_routines::a_ccmax1 = n_max_par + 72
private

◆ a_ccmax2

integer, parameter model_test_routines::a_ccmax2 = n_max_par + 73
private

◆ a_cdaterange

integer, parameter model_test_routines::a_cdaterange = n_max_par + 40
private

◆ a_classdataluse

integer, parameter model_test_routines::a_classdataluse = n_max_par + 56
private

◆ a_classdatasoil

integer, parameter model_test_routines::a_classdatasoil = n_max_par + 57
private

◆ a_clay

integer, parameter model_test_routines::a_clay = n_max_par + 176
private

◆ a_claysandsilt

integer, parameter model_test_routines::a_claysandsilt = n_max_par + 179
private

◆ a_closewater

integer, parameter model_test_routines::a_closewater = n_max_par + 70
private

◆ a_consistent_forcing

integer, parameter model_test_routines::a_consistent_forcing = n_max_par + 64
private

◆ a_consistent_observation

integer, parameter model_test_routines::a_consistent_observation = n_max_par + 124
private

◆ a_consistent_pstimeinfo

integer, parameter model_test_routines::a_consistent_pstimeinfo = n_max_par + 152
private

◆ a_crop2_defined

integer, parameter model_test_routines::a_crop2_defined = n_max_par + 188
private

◆ a_crop_defined

integer, parameter model_test_routines::a_crop_defined = n_max_par + 187
private

◆ a_cropdata

integer, parameter model_test_routines::a_cropdata = n_max_par + 17
private

◆ a_damexpxx

integer, parameter model_test_routines::a_damexpxx = n_max_par + 121
private

◆ a_damlimprod

integer, parameter model_test_routines::a_damlimprod = n_max_par + 118
private

◆ a_damp

integer, parameter model_test_routines::a_damp = n_max_par + 186
private

◆ a_damqamp

integer, parameter model_test_routines::a_damqamp = n_max_par + 119
private

◆ a_damqinfmin

integer, parameter model_test_routines::a_damqinfmin = n_max_par + 120
private

◆ a_damqprod

integer, parameter model_test_routines::a_damqprod = n_max_par + 117
private

◆ a_damregvol

integer, parameter model_test_routines::a_damregvol = n_max_par + 116
private

◆ a_daylimit

integer, parameter model_test_routines::a_daylimit = n_max_par + 24
private

◆ a_dddambuild

integer, parameter model_test_routines::a_dddambuild = n_max_par + 183
private

◆ a_edaterange

integer, parameter model_test_routines::a_edaterange = n_max_par + 39
private

◆ a_elevation

integer, parameter model_test_routines::a_elevation = n_max_par + 8
private

◆ a_eroindex

integer, parameter model_test_routines::a_eroindex = n_max_par + 35
private

◆ a_erosionon

integer, parameter model_test_routines::a_erosionon = n_max_par + 71
private

◆ a_exist_pstimefile

integer, parameter model_test_routines::a_exist_pstimefile = n_max_par + 153
private

◆ a_fertday1

integer, parameter model_test_routines::a_fertday1 = n_max_par + 90
private

◆ a_fertday2

integer, parameter model_test_routines::a_fertday2 = n_max_par + 91
private

◆ a_fertdown1

integer, parameter model_test_routines::a_fertdown1 = n_max_par + 94
private

◆ a_fertdown2

integer, parameter model_test_routines::a_fertdown2 = n_max_par + 95
private

◆ a_fertnamount1

integer, parameter model_test_routines::a_fertnamount1 = n_max_par + 98
private

◆ a_fertnamount2

integer, parameter model_test_routines::a_fertnamount2 = n_max_par + 99
private

◆ a_fertpamount1

integer, parameter model_test_routines::a_fertpamount1 = n_max_par + 102
private

◆ a_fertpamount2

integer, parameter model_test_routines::a_fertpamount2 = n_max_par + 103
private

◆ a_file_exist

integer, parameter model_test_routines::a_file_exist = n_max_par + 88
private

◆ a_firstday

integer, parameter model_test_routines::a_firstday = n_max_par + 25
private

◆ a_flooddata

integer, parameter model_test_routines::a_flooddata = n_max_par + 18
private

◆ a_flushing

integer, parameter model_test_routines::a_flushing = n_max_par + 180
private

◆ a_flushing2

integer, parameter model_test_routines::a_flushing2 = n_max_par + 181
private

◆ a_flushing3

integer, parameter model_test_routines::a_flushing3 = n_max_par + 182
private

◆ a_flushing4

integer, parameter model_test_routines::a_flushing4 = n_max_par + 194
private

◆ a_flushing5

integer, parameter model_test_routines::a_flushing5 = n_max_par + 195
private

◆ a_flushing6

integer, parameter model_test_routines::a_flushing6 = n_max_par + 196
private

◆ a_forcings_stationid

integer, parameter model_test_routines::a_forcings_stationid = n_max_par + 62
private

◆ a_gcmax1

integer, parameter model_test_routines::a_gcmax1 = n_max_par + 74
private

◆ a_gcmax2

integer, parameter model_test_routines::a_gcmax2 = n_max_par + 75
private

◆ a_grwtolake

integer, parameter model_test_routines::a_grwtolake = n_max_par + 12
private

◆ a_hdsdep1

integer, parameter model_test_routines::a_hdsdep1 = n_max_par + 197
private

◆ a_hdsdep2

integer, parameter model_test_routines::a_hdsdep2 = n_max_par + 198
private

◆ a_iforc_no_neg_or_no_miss

integer, parameter model_test_routines::a_iforc_no_neg_or_no_miss = n_max_par + 63
private

◆ a_inc_soildepth

integer, parameter model_test_routines::a_inc_soildepth = n_max_par + 60
private

◆ a_inivol

integer, parameter model_test_routines::a_inivol = n_max_par + 30
private

◆ a_irr_regsrc

integer, parameter model_test_routines::a_irr_regsrc = n_max_par + 167
private

◆ a_irrdam_loc

integer, parameter model_test_routines::a_irrdam_loc = n_max_par + 169
private

◆ a_irrdam_reg

integer, parameter model_test_routines::a_irrdam_reg = n_max_par + 168
private

◆ a_irrigation_gwpart

integer, parameter model_test_routines::a_irrigation_gwpart = n_max_par + 163
private

◆ a_irrigation_loceff

integer, parameter model_test_routines::a_irrigation_loceff = n_max_par + 165
private

◆ a_irrigation_regeff

integer, parameter model_test_routines::a_irrigation_regeff = n_max_par + 166
private

◆ a_irrigation_subid

integer, parameter model_test_routines::a_irrigation_subid = n_max_par + 67
private

◆ a_irrigation_swpart

integer, parameter model_test_routines::a_irrigation_swpart = n_max_par + 164
private

◆ a_irrigation_type

integer, parameter model_test_routines::a_irrigation_type = n_max_par + 170
private

◆ a_iwet_area

integer, parameter model_test_routines::a_iwet_area = n_max_par + 134
private

◆ a_lakeriverice_class

integer, parameter model_test_routines::a_lakeriverice_class = n_max_par + 68
private

◆ a_lakeriverice_thpo

integer, parameter model_test_routines::a_lakeriverice_thpo = n_max_par + 150
private

◆ a_latitude

integer, parameter model_test_routines::a_latitude = n_max_par + 9
private

◆ a_latitude_defined

integer, parameter model_test_routines::a_latitude_defined = n_max_par + 22
private

◆ a_lb_floodplain

integer, parameter model_test_routines::a_lb_floodplain = n_max_par + 205
private

◆ a_lddambuild

integer, parameter model_test_routines::a_lddambuild = n_max_par + 184
private

◆ a_ldfastlake

integer, parameter model_test_routines::a_ldfastlake = n_max_par + 11
private

◆ a_linklbinternal

integer, parameter model_test_routines::a_linklbinternal = n_max_par + 138
private

◆ a_linklbsecondout

integer, parameter model_test_routines::a_linklbsecondout = n_max_par + 139
private

◆ a_linkmain

integer, parameter model_test_routines::a_linkmain = n_max_par + 53
private

◆ a_linksecondary

integer, parameter model_test_routines::a_linksecondary = n_max_par + 54
private

◆ a_lksfarea

integer, parameter model_test_routines::a_lksfarea = n_max_par + 156
private

◆ a_lksficatch

integer, parameter model_test_routines::a_lksficatch = n_max_par + 157
private

◆ a_locconcnp

integer, parameter model_test_routines::a_locconcnp = n_max_par + 112
private

◆ a_locloadnp

integer, parameter model_test_routines::a_locloadnp = n_max_par + 190
private

◆ a_lrwet_area

integer, parameter model_test_routines::a_lrwet_area = n_max_par + 126
private

◆ a_lrwet_depth

integer, parameter model_test_routines::a_lrwet_depth = n_max_par + 128
private

◆ a_lrwet_inflow

integer, parameter model_test_routines::a_lrwet_inflow = n_max_par + 132
private

◆ a_lrwet_part

integer, parameter model_test_routines::a_lrwet_part = n_max_par + 130
private

◆ a_mancamount1

integer, parameter model_test_routines::a_mancamount1 = n_max_par + 202
private

◆ a_mancamount2

integer, parameter model_test_routines::a_mancamount2 = n_max_par + 203
private

◆ a_manday1

integer, parameter model_test_routines::a_manday1 = n_max_par + 92
private

◆ a_manday2

integer, parameter model_test_routines::a_manday2 = n_max_par + 93
private

◆ a_mandown1

integer, parameter model_test_routines::a_mandown1 = n_max_par + 96
private

◆ a_mandown2

integer, parameter model_test_routines::a_mandown2 = n_max_par + 97
private

◆ a_mannamount1

integer, parameter model_test_routines::a_mannamount1 = n_max_par + 100
private

◆ a_mannamount2

integer, parameter model_test_routines::a_mannamount2 = n_max_par + 101
private

◆ a_manpamount1

integer, parameter model_test_routines::a_manpamount1 = n_max_par + 104
private

◆ a_manpamount2

integer, parameter model_test_routines::a_manpamount2 = n_max_par + 105
private

◆ a_missing_pstime_forcing

integer, parameter model_test_routines::a_missing_pstime_forcing = n_max_par + 154
private

◆ a_modeloptionrange

integer, parameter model_test_routines::a_modeloptionrange = n_max_par + 13
private

◆ a_mrwet_area

integer, parameter model_test_routines::a_mrwet_area = n_max_par + 127
private

◆ a_mrwet_depth

integer, parameter model_test_routines::a_mrwet_depth = n_max_par + 129
private

◆ a_mrwet_inflow

integer, parameter model_test_routines::a_mrwet_inflow = n_max_par + 133
private

◆ a_mrwet_part

integer, parameter model_test_routines::a_mrwet_part = n_max_par + 131
private

◆ a_multiple_classes

integer, parameter model_test_routines::a_multiple_classes = n_max_par + 58
private

◆ a_nclass

integer, parameter model_test_routines::a_nclass = n_max_par + 55
private

◆ a_no_neg_value

integer, parameter model_test_routines::a_no_neg_value = n_max_par + 65
private

◆ a_nofprintsteps

integer, parameter model_test_routines::a_nofprintsteps = n_max_par + 123
private

◆ a_noftimesteps

integer, parameter model_test_routines::a_noftimesteps = n_max_par + 37
private

◆ a_numsubst

integer, parameter model_test_routines::a_numsubst = n_max_par + 174
private

◆ a_outregionid

integer, parameter model_test_routines::a_outregionid = n_max_par + 148
private

◆ a_outregionsubid

integer, parameter model_test_routines::a_outregionsubid = n_max_par + 149
private

◆ a_owet_area

integer, parameter model_test_routines::a_owet_area = n_max_par + 135
private

◆ a_parregion2

integer, parameter model_test_routines::a_parregion2 = n_max_par + 32
private

◆ a_percdelay

integer, parameter model_test_routines::a_percdelay = n_max_par + 26
private

◆ a_porosity

integer, parameter model_test_routines::a_porosity = n_max_par + 28
private

◆ a_recievefrac

integer, parameter model_test_routines::a_recievefrac = n_max_par + 33
private

◆ a_regvol1

integer, parameter model_test_routines::a_regvol1 = n_max_par + 137
private

◆ a_regvol2

integer, parameter model_test_routines::a_regvol2 = n_max_par + 175
private

◆ a_regvol3

integer, parameter model_test_routines::a_regvol3 = n_max_par + 191
private

◆ a_resdayno

integer, parameter model_test_routines::a_resdayno = n_max_par + 106
private

◆ a_resdown

integer, parameter model_test_routines::a_resdown = n_max_par + 107
private

◆ a_resfast

integer, parameter model_test_routines::a_resfast = n_max_par + 108
private

◆ a_resnamount

integer, parameter model_test_routines::a_resnamount = n_max_par + 109
private

◆ a_respamount

integer, parameter model_test_routines::a_respamount = n_max_par + 110
private

◆ a_retrate

integer, parameter model_test_routines::a_retrate = n_max_par + 29
private

◆ a_rhobs

integer, parameter model_test_routines::a_rhobs = n_max_par + 5
private

◆ a_rivvel

integer, parameter model_test_routines::a_rivvel = n_max_par + 185
private

◆ a_rrc1

integer, parameter model_test_routines::a_rrc1 = n_max_par + 143
private

◆ a_rrc2

integer, parameter model_test_routines::a_rrc2 = n_max_par + 144
private

◆ a_rrc3

integer, parameter model_test_routines::a_rrc3 = n_max_par + 145
private

◆ a_rrc4

integer, parameter model_test_routines::a_rrc4 = n_max_par + 146
private

◆ a_rrc5

integer, parameter model_test_routines::a_rrc5 = n_max_par + 147
private

◆ a_rrcs_set

integer, parameter model_test_routines::a_rrcs_set = n_max_par + 204
private

◆ a_rrcscorr

integer, parameter model_test_routines::a_rrcscorr = n_max_par + 34
private

◆ a_rurlocarea

integer, parameter model_test_routines::a_rurlocarea = n_max_par + 151
private

◆ a_rurlocleak

integer, parameter model_test_routines::a_rurlocleak = n_max_par + 189
private

◆ a_sand

integer, parameter model_test_routines::a_sand = n_max_par + 177
private

◆ a_scr_exist

integer, parameter model_test_routines::a_scr_exist = n_max_par + 85
private

◆ a_scr_part

integer, parameter model_test_routines::a_scr_part = n_max_par + 84
private

◆ a_sfobs

integer, parameter model_test_routines::a_sfobs = n_max_par + 7
private

◆ a_signfig

integer, parameter model_test_routines::a_signfig = n_max_par + 136
private

◆ a_silt

integer, parameter model_test_routines::a_silt = n_max_par + 178
private

◆ a_slcforolake

integer, parameter model_test_routines::a_slcforolake = n_max_par + 51
private

◆ a_slope

integer, parameter model_test_routines::a_slope = n_max_par + 36
private

◆ a_snalbrange

integer, parameter model_test_routines::a_snalbrange = n_max_par + 14
private

◆ a_soildepth

integer, parameter model_test_routines::a_soildepth = n_max_par + 59
private

◆ a_soilleakage

integer, parameter model_test_routines::a_soilleakage = n_max_par + 89
private

◆ a_sowlimit

integer, parameter model_test_routines::a_sowlimit = n_max_par + 23
private

◆ a_subidrange

integer, parameter model_test_routines::a_subidrange = n_max_par + 44
private

◆ a_sum_lksfarea

integer, parameter model_test_routines::a_sum_lksfarea = n_max_par + 159
private

◆ a_sum_lksficatch

integer, parameter model_test_routines::a_sum_lksficatch = n_max_par + 158
private

◆ a_sum_macratesrrate

integer, parameter model_test_routines::a_sum_macratesrrate = n_max_par + 20
private

◆ a_sum_macratesrrate2

integer, parameter model_test_routines::a_sum_macratesrrate2 = n_max_par + 21
private

◆ a_swobs

integer, parameter model_test_routines::a_swobs = n_max_par + 4
private

◆ a_t2sim

integer, parameter model_test_routines::a_t2sim = n_max_par + 19
private

◆ a_timemapduplicates

integer, parameter model_test_routines::a_timemapduplicates = n_max_par + 41
private

◆ a_timeperiod_forcing

integer, parameter model_test_routines::a_timeperiod_forcing = n_max_par + 66
private

◆ a_tmaxobs

integer, parameter model_test_routines::a_tmaxobs = n_max_par + 3
private

◆ a_tminobs

integer, parameter model_test_routines::a_tminobs = n_max_par + 2
private

◆ a_tobs

integer, parameter model_test_routines::a_tobs = n_max_par + 1
private

◆ a_tobselev

integer, parameter model_test_routines::a_tobselev = n_max_par + 61
private

◆ a_uobs

integer, parameter model_test_routines::a_uobs = n_max_par + 6
private

◆ a_uptake1

integer, parameter model_test_routines::a_uptake1 = n_max_par + 76
private

◆ a_uptake2

integer, parameter model_test_routines::a_uptake2 = n_max_par + 77
private

◆ a_uptake3

integer, parameter model_test_routines::a_uptake3 = n_max_par + 78
private

◆ a_uptakeratio

integer, parameter model_test_routines::a_uptakeratio = n_max_par + 80
private

◆ a_uptakeupper

integer, parameter model_test_routines::a_uptakeupper = n_max_par + 79
private

◆ a_uwobs

integer, parameter model_test_routines::a_uwobs = n_max_par + 141
private

◆ a_volloc

integer, parameter model_test_routines::a_volloc = n_max_par + 111
private

◆ a_vwobs

integer, parameter model_test_routines::a_vwobs = n_max_par + 142
private

◆ a_watertr_no_dwtr

integer, parameter model_test_routines::a_watertr_no_dwtr = n_max_par + 173
private

◆ a_watertr_rcv

integer, parameter model_test_routines::a_watertr_rcv = n_max_par + 172
private

◆ a_watertr_subid

integer, parameter model_test_routines::a_watertr_subid = n_max_par + 171
private

◆ a_wcwp_gt_zero

integer, parameter model_test_routines::a_wcwp_gt_zero = n_max_par + 86
private

◆ a_wcwpwcfcwcep

integer, parameter model_test_routines::a_wcwpwcfcwcep = n_max_par + 15
private

◆ a_weightsub

integer, parameter model_test_routines::a_weightsub = n_max_par + 155
private

◆ a_winddir

integer, parameter model_test_routines::a_winddir = n_max_par + 140
private

◆ a_xcoord_def

integer, parameter model_test_routines::a_xcoord_def = n_max_par + 199
private

◆ a_ycoord_def

integer, parameter model_test_routines::a_ycoord_def = n_max_par + 200
private

◆ all_test_cases

type(testcasetype), dimension(max_testcases) model_test_routines::all_test_cases
private

◆ e_aquiferdata

integer, parameter, public model_test_routines::e_aquiferdata = 11

◆ e_atmdepdata

integer, parameter, public model_test_routines::e_atmdepdata = 22

◆ e_branchdata

integer, parameter, public model_test_routines::e_branchdata = 10

◆ e_cropdata

integer, parameter, public model_test_routines::e_cropdata = 15

◆ e_damdata

integer, parameter, public model_test_routines::e_damdata = 3

◆ e_error

integer, parameter, public model_test_routines::e_error = 1

◆ e_flooddata

integer, parameter, public model_test_routines::e_flooddata = 4

◆ e_forckey

integer, parameter, public model_test_routines::e_forckey = 6

◆ e_geodata

integer, parameter, public model_test_routines::e_geodata = 2

◆ e_glacierdata

integer, parameter, public model_test_routines::e_glacierdata = 12

◆ e_info

integer, parameter, public model_test_routines::e_info = 3

◆ e_info_file

integer, parameter, public model_test_routines::e_info_file = 16

◆ e_lakedata

integer, parameter, public model_test_routines::e_lakedata = 1

◆ e_leakagedata

integer, parameter, public model_test_routines::e_leakagedata = 14

◆ e_mgmtdata

integer, parameter, public model_test_routines::e_mgmtdata = 5

◆ e_model_base_conf_ok

integer, parameter, public model_test_routines::e_model_base_conf_ok = 9

◆ e_npsdata

integer, parameter, public model_test_routines::e_npsdata = 23

◆ e_otest

integer, parameter, public model_test_routines::e_otest = 19

◆ e_output_range_violation

integer, parameter, public model_test_routines::e_output_range_violation = 20

◆ e_outregions

integer, parameter, public model_test_routines::e_outregions = 18

◆ e_par

integer, parameter, public model_test_routines::e_par = 7

◆ e_pointsourcedata

integer, parameter, public model_test_routines::e_pointsourcedata = 13

◆ e_rrcdata

integer, parameter, public model_test_routines::e_rrcdata = 21

◆ e_set_outvar_for_var

integer, parameter, public model_test_routines::e_set_outvar_for_var = 17

◆ e_update

integer, parameter, public model_test_routines::e_update = 8

◆ e_warning

integer, parameter, public model_test_routines::e_warning = 2

◆ eq_missing_value

integer, parameter model_test_routines::eq_missing_value = 24
private

◆ eq_zero

integer, parameter model_test_routines::eq_zero = 1
private

◆ error_halt

logical model_test_routines::error_halt = .TRUE.
private

◆ external_test_names

character(len=32), dimension(1:nof_external_tests) model_test_routines::external_test_names
private

◆ external_tests

type(testexternaltype), dimension(nof_external_tests) model_test_routines::external_tests

◆ force_test

logical model_test_routines::force_test = .FALSE.
private

◆ funit_used

integer model_test_routines::funit_used = 0
private

◆ ge_lowest_natural_point

integer, parameter model_test_routines::ge_lowest_natural_point = 18
private

◆ ge_minus_one

integer, parameter model_test_routines::ge_minus_one = 14
private

◆ ge_minus_one_and_le_plus_one

integer, parameter model_test_routines::ge_minus_one_and_le_plus_one = 12
private

◆ ge_one

integer, parameter model_test_routines::ge_one = 22
private

◆ ge_one_and_le_three

integer, parameter model_test_routines::ge_one_and_le_three = 23
private

◆ ge_zero

integer, parameter model_test_routines::ge_zero = 5
private

◆ ge_zero_and_le_366

integer, parameter model_test_routines::ge_zero_and_le_366 = 20
private

◆ ge_zero_and_le_hundred

integer, parameter model_test_routines::ge_zero_and_le_hundred = 19
private

◆ ge_zero_and_le_one

integer, parameter model_test_routines::ge_zero_and_le_one = 10
private

◆ ge_zero_and_lt_one

integer, parameter model_test_routines::ge_zero_and_lt_one = 8
private

◆ gt_minus_one

integer, parameter model_test_routines::gt_minus_one = 13
private

◆ gt_minus_one_and_lt_plus_one

integer, parameter model_test_routines::gt_minus_one_and_lt_plus_one = 11
private

◆ gt_zero

integer, parameter model_test_routines::gt_zero = 3
private

◆ gt_zero_and_le_one

integer, parameter model_test_routines::gt_zero_and_le_one = 9
private

◆ gt_zero_and_lt_366

integer, parameter model_test_routines::gt_zero_and_lt_366 = 21
private

◆ gt_zero_and_lt_one

integer, parameter model_test_routines::gt_zero_and_lt_one = 7
private

◆ le_zero

integer, parameter model_test_routines::le_zero = 6
private

◆ lt_zero

integer, parameter model_test_routines::lt_zero = 4
private

◆ max_testcases

integer, parameter model_test_routines::max_testcases = n_max_par + 205
private

◆ max_testcases_per_process

integer, parameter model_test_routines::max_testcases_per_process = 64
private

◆ ne_zero

integer, parameter model_test_routines::ne_zero = 2
private

◆ nof_external_msg_types

integer, parameter model_test_routines::nof_external_msg_types = 3
private

◆ nof_external_tests

integer, parameter model_test_routines::nof_external_tests = 23
private

◆ nof_test_processes

integer, parameter model_test_routines::nof_test_processes = 30
private

◆ nof_test_tolerances

integer, parameter model_test_routines::nof_test_tolerances = 24
private

◆ one_plus_minus_point_1_percent

integer, parameter model_test_routines::one_plus_minus_point_1_percent = 17
private

◆ onoff_option

integer model_test_routines::onoff_option = 0
private

◆ p_forcing

integer, parameter model_test_routines::p_forcing = 3
private

◆ p_generic

integer, parameter model_test_routines::p_generic = 4
private

◆ p_input

integer, parameter model_test_routines::p_input = 2
private

◆ p_parameter

integer, parameter model_test_routines::p_parameter = 1
private

◆ plus_minus_180

integer, parameter model_test_routines::plus_minus_180 = 16
private

◆ plus_minus_90

integer, parameter model_test_routines::plus_minus_90 = 15
private

◆ printout_level

integer model_test_routines::printout_level = 0
private

◆ t_aquifers

integer, parameter model_test_routines::t_aquifers = 9
private

◆ t_atmdep

integer, parameter model_test_routines::t_atmdep = 25
private

◆ t_branchdata_generic

integer, parameter model_test_routines::t_branchdata_generic = 29
private

◆ t_damdata_generic

integer, parameter model_test_routines::t_damdata_generic = 15
private

◆ t_evaporation

integer, parameter model_test_routines::t_evaporation = 2
private

◆ t_floodplains

integer, parameter model_test_routines::t_floodplains = 7
private

◆ t_generic

integer, parameter model_test_routines::t_generic = 19
private

◆ t_geoclass_generic

integer, parameter model_test_routines::t_geoclass_generic = 13
private

◆ t_geodata_generic

integer, parameter model_test_routines::t_geodata_generic = 12
private

◆ t_glaciers

integer, parameter model_test_routines::t_glaciers = 8
private

◆ t_info_generic

integer, parameter model_test_routines::t_info_generic = 11
private

◆ t_irrigation

integer, parameter model_test_routines::t_irrigation = 27
private

◆ t_lakedata_generic

integer, parameter model_test_routines::t_lakedata_generic = 14
private

◆ t_lakes

integer, parameter model_test_routines::t_lakes = 6
private

◆ t_mgmtdata_generic

integer, parameter model_test_routines::t_mgmtdata_generic = 16
private

◆ t_nut_source

integer, parameter model_test_routines::t_nut_source = 21
private

◆ t_nutrient_soil

integer, parameter model_test_routines::t_nutrient_soil = 24
private

◆ t_observation

integer, parameter model_test_routines::t_observation = 18
private

◆ t_outregion_generic

integer, parameter model_test_routines::t_outregion_generic = 17
private

◆ t_pointsource

integer, parameter model_test_routines::t_pointsource = 22
private

◆ t_reg_grw

integer, parameter model_test_routines::t_reg_grw = 10
private

◆ t_rivers

integer, parameter model_test_routines::t_rivers = 5
private

◆ t_sedresusp

integer, parameter model_test_routines::t_sedresusp = 30
private

◆ t_siltation

integer, parameter model_test_routines::t_siltation = 28
private

◆ t_snow_routines

integer, parameter model_test_routines::t_snow_routines = 4
private

◆ t_soil_water

integer, parameter model_test_routines::t_soil_water = 3
private

◆ t_soilleakage

integer, parameter model_test_routines::t_soilleakage = 26
private

◆ t_temperature_precipition

integer, parameter model_test_routines::t_temperature_precipition = 1
private

◆ t_veg_soil_surface

integer, parameter model_test_routines::t_veg_soil_surface = 23
private

◆ t_wetland

integer, parameter model_test_routines::t_wetland = 20
private

◆ testing_names

character(len=32), dimension(n_max_par+1:max_testcases) model_test_routines::testing_names
private

◆ testing_tolerances

character(len=32), dimension(nof_test_tolerances) model_test_routines::testing_tolerances
private

◆ tests_c2_process

type(testprocesstype), dimension(max_testcases_per_process,nof_test_processes) model_test_routines::tests_c2_process
private