HYPE
All Classes Namespaces Files Functions Variables Pages
Data Types | Functions/Subroutines | Variables
model_test_routines Module Reference

Data Types

interface  data_is_within_tolerance
 
type  testcasetype
 
type  testexternalinternaltype
 
type  testexternaltype
 
type  testprocesstype
 

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_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_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_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 max_testcases = n_max_par + 201
 
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 
)

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

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.
+ 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)

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)

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)

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

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)

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)

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 
)

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)

Check and test floodplains options.

Parameters
[in,out]statusReturn status
Test:
Check and test floodplain options: specifics elsewhere
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)

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)

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)

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)

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)

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)

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 
)

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_lakedata_generic()

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

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)

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)

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 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)

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)

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)

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 
)

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

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)

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)

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

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)

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)

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)

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)

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)

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)

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)

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 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)

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)

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 
)

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 
)

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 
)

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 
)

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 
)

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)

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)

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)

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)

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)

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_floodplain_options()

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

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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_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_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_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_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
private

◆ 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 + 201
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