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_tests) | external_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_testcases) | testing_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_tolerances) | testing_tolerances |
type(testexternaltype), dimension(nof_external_tests) | external_tests |
type(testcasetype), dimension(max_testcases) | all_test_cases |
type(testprocesstype), dimension(max_testcases_per_process, nof_test_processes) | tests_c2_process |
integer | funit_used = 0 |
integer | printout_level = 0 |
integer | onoff_option = 0 |
logical | error_halt = .TRUE. |
logical | force_test = .FALSE. |
Module for writing test cases to a log file.
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.
[in] | test_result | Input logical for result |
[in] | test_id | The index parameter specifying test case |
[in] | test_process | Process assigned to this test case |
[in] | name | Name to describe the generic test to show when printed |
|
private |
Add test case to a specific test process.
[in] | test_id | current test case ID |
[in] | test_process | current test process |
logical function model_test_routines::check_actual_soil_evapotranspiration |
Check and test actual soil evapotranspiration.
|
private |
Check aquifers.
Checking AquiferData and model option settings
[in,out] | status | number of errors |
subroutine model_test_routines::check_atmospheric_deposition | ( | integer, intent(inout) | status | ) |
Check and test atmospheric deposition.
[in,out] | status | Return status |
subroutine model_test_routines::check_branchdata_generic | ( | integer, intent(inout) | status | ) |
Generic BranchData tests.
Checks input data in file BranchData
[in,out] | status | Return status |
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.
[in,out] | status | Return status |
logical function model_test_routines::check_eroded_filtering_delay |
Check and test filtering of eroded material and release pool.
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.
[in] | current_erosionmodel | erosionmodel 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
subroutine model_test_routines::check_evaporation | ( | integer, intent(inout) | status | ) |
Check and test evaporation options.
[in,out] | status | Return status |
Find all petmodels used in model set up
|
private |
Check the external tests if any where propagated.
[in,out] | status | Return status |
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.
[in,out] | io_result | Input and Output logical for "AND" result |
[in] | filename | The filename to test |
[in] | test_id | The index parameter specifying test case |
[in] | test_process | Process assigned to this test case |
subroutine model_test_routines::check_floodplains | ( | integer, intent(inout) | status | ) |
Check and test floodplains options.
[in,out] | status | Return status |
|
private |
Check forcing data present (file exist) and add the test case to the test process. Return the logical AND result.
[in,out] | io_result | Input and Output logical for "AND" result |
[in] | force_param | The forcing parameter to test |
[in] | test_id | The index parameter specifying test case |
[in] | test_process | Process assigned to this test case |
subroutine model_test_routines::check_general_deep | ( | integer, intent(inout) | status | ) |
Check genearal deep process model option.
Checking model option settings
[in,out] | status | number of errors |
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.
[in,out] | status | Return status |
subroutine model_test_routines::check_geoclass_generic | ( | integer, intent(inout) | status | ) |
Generic GeoClass tests.
The GeoClass tests include tests of the GeoClass.txt
[in,out] | status | Return status |
subroutine model_test_routines::check_geodata_generic | ( | integer, intent(inout) | status | ) |
Generic GeoData tests.
[in,out] | status | Return status |
subroutine model_test_routines::check_glaciers | ( | integer, intent(inout) | status | ) |
Check and test glacier options.
[in,out] | status | Return status |
subroutine model_test_routines::check_info_generic | ( | integer, intent(inout) | status | ) |
Generic info tests.
The info tests include tests of the info.txt
[in,out] | status | Return status |
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.
[in,out] | io_result | Input and Output logical for "AND" result |
[in] | vector | The data vector to be tested |
[in] | tolerance | The tolerance to test against |
[in] | test_id | The index parameter specifying test case |
[in] | test_process | Process assigned to this test case |
[in] | force | force the test eventhough already tested |
subroutine model_test_routines::check_lakedata_generic | ( | integer, intent(inout) | status | ) |
subroutine model_test_routines::check_lakes | ( | integer, intent(inout) | status | ) |
Check and test lakes options.
[in,out] | status | Return status |
subroutine model_test_routines::check_mgmtdata_generic | ( | integer, intent(inout) | status | ) |
Generic MgmtData tests.
Checks input data in file MgmtData
[in,out] | status | Return status |
subroutine model_test_routines::check_nutrient_soil | ( | integer, intent(inout) | status | ) |
Check vegetation and soil surface processes.
[in,out] | status | Return status |
subroutine model_test_routines::check_nutrient_sources | ( | integer, intent(inout) | status | ) |
Check nutrient sources; fertilization, plant residues and rural household effluents.
[in,out] | status | Return status |
|
private |
Check forcing data and other observations.
Checking ForcKey and coupling between subbasin and observations
[in,out] | status | error number |
subroutine, public model_test_routines::check_output_ranges | ( | integer, intent(in) | idt | ) |
Check output ranges.
[in] | idt | current timestep index |
Do not do any output testing if not allocated
subroutine model_test_routines::check_outregion_generic | ( | integer, intent(inout) | status | ) |
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.
[in,out] | io_result | Input and Output logical for "AND" result |
[in] | tolerance | The tolerance to test against |
[in] | test_id | HYPE model parameter index specifying the current test case |
[in] | test_process | Process assigned to this test case |
[in] | force | force the test eventhough already tested |
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.
subroutine model_test_routines::check_pointsourcedata | ( | integer, intent(inout) | status | ) |
Check point source data.
Checking PointSourceData and time series of point sources
[in,out] | status | error number |
subroutine model_test_routines::check_rating_curves | ( | integer, intent(inout) | status | ) |
Check that lakes and dams have rating curve set (if needed)
[in,out] | status | Return status |
Check that lakes and dams have rating curve set (if needed, i.e. if wmin=missing)
subroutine model_test_routines::check_reggrw |
Check regional groundwater flow model.
Printing results of model option test
subroutine model_test_routines::check_regvol | ( | integer, intent(inout) | status | ) |
Check that lakes and dams have larger volume than the regulation volume.
[in,out] | status | Return status |
subroutine model_test_routines::check_river_wetlands | ( | integer, intent(inout) | status | ) |
Check and test river wetlands for nutrient retention.
[in,out] | status | Return status |
|
private |
Check and test river options.
[in,out] | status | Return status |
subroutine model_test_routines::check_sediment_sedresusp | ( | integer, intent(inout) | status | ) |
Check and test sediment river sedimentation and resuspension.
[in,out] | status | Return status |
subroutine model_test_routines::check_siltation | ( | integer, intent(inout) | status | ) |
Check and test sediment siltation and flushing.
[in,out] | status | Return status |
subroutine model_test_routines::check_snow | ( | integer, intent(inout) | status | ) |
Check and test snow routine options.
[in,out] | status | Return status |
subroutine model_test_routines::check_soil_leakage_as_input | ( | integer, intent(inout) | status | ) |
Check vegetation and soil surface processes.
[in,out] | status | Return status |
subroutine model_test_routines::check_soil_water | ( | integer, intent(inout) | status | ) |
Check and test soil water options.
[in,out] | status | Return status |
subroutine model_test_routines::check_valid_river_rating_curve_data | ( | logical, intent(inout) | ret | ) |
Check river rating curve data for valid combinations.
subroutine model_test_routines::check_veg_soil_surface | ( | integer, intent(inout) | status | ) |
Check vegetation and soil surface processes.
[in,out] | status | Return status |
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.
[in] | funit | File unit for file |
[in] | infile | Name of file to be read |
[in] | nskip | Total number of comment rows |
[in] | ncols | Total number of columns |
[out] | status | error number |
|
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.
[in] | test_process | Clear 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
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.
[in] | filepath | File |
[in] | twotimefound | Flag for time format: read as one or two strings |
[in] | ncols | Number of data columns in file |
[in] | nskip | Number of rows to skip |
[in] | ns | Number of subbasins, basemodel |
[in] | oindex | Index for columns used in model set-up |
[out] | nummiss | Number of missing values per subbasin |
[out] | missfound | Code for found missing data |
Algoritm
Set default output
Load forcing data
Count missing values
Check if missing values found among the used data
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)
[in] | filepath | File |
[in] | twotimefound | Flag for time format: read as one or two strings |
[in] | ncols | Number of data columns in file |
[in] | nskip | Number of rows to skip |
[in] | ns | Number of subbasins, basemodel |
[in] | oindex | Index for columns used in model set-up |
[in] | miss | Flag for including missing values, 0=count, 1=ignore |
[out] | numneg | Number of negative values per subbasin |
[out] | negfound | Code for found negative data |
Algoritm
Set default output
Load observation data
Count negative data
Check if negative values found among the used data
subroutine, public model_test_routines::finalize_hype_tests |
Finalize tests by closing file, clear all test results and inform of halt cause.
integer function model_test_routines::find_petmodels_used | ( | integer, dimension(:), intent(out) | petmodels_used, |
integer, intent(in) | petmodels_used_size | ||
) |
find petmodels used
[out] | petmodels_used | will hold models found in basins petmodel array |
[in] | petmodels_used_size | size of the petmodels_used array |
|
private |
Check that data is within tolerance Integer.
[in] | vector | Data vector that is being checked |
[in] | aimed_value | Value specifying a wanted value |
[in] | tolerance_min | Value specifying how far below wanted value is ok |
[in] | tolerance_max | Value specifying how far above wanted value is ok |
[out] | num_tolerance | Value specifying how many values in vector is within tolerance |
[out] | retval | Value specifying if vector is within tolerance |
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.
[in] | funit | File unit of log-file |
[in] | petmodels_used | will hold petmodels used |
[in] | num_petmodels_used | number of used petmodels |
|
private |
Print extended information for a test case. The print out is different for different kinds of tests; hype parameter, input, forcing or generic.
[in] | test_id | The test case id |
|
private |
Print extended information of forcing test cases.
[in] | name | The name |
|
private |
Print extended information of generic test cases.
[in] | name | The name |
subroutine model_test_routines::print_input | ( | character(len=*), intent(in) | line | ) |
Print extended information of input test cases.
[in] | line | name and interval of input variable |
|
private |
Print extended information of parameter test cases.
[in] | modpar_index | The parameter modpar index |
|
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.
[in] | process | Current process |
|
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.
[in] | name_string | The name of the (group of) test cases |
[in] | return_logical | The logical result of the (group of) test cases |
prefix | Specify a prefix string to the name if wanted | |
suffix | Specify a suffix string otherwise it becomes "with parameter, ..." |
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.
|
private |
Check if all values of real array are within tolerance.
[in] | vector | The vector to be tested |
[in] | tolerance | The tolerance parameter |
|
private |
Check that data is within tolerance Real.
[in] | vector | Data vector that is being checked |
[in] | aimed_value | Value specifying a wanted value |
[in] | tolerance_min | Value specifying how far below wanted value is ok |
[in] | tolerance_max | Value specifying how far above wanted value is ok |
[out] | num_tolerance | Value specifying how many values in vector is within tolerance |
[out] | retval | Value specifying if vector is within tolerance |
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.
[out] | status | error number |
subroutine, public model_test_routines::run_hype_tests | ( | integer, intent(out) | status | ) |
Runs tests for hype and prints the result in file.
[out] | status | error number |
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.
[in] | funit | Used funit |
[in] | fname | Used filename |
[in] | onoff | Tests onoff option |
[in] | level | level for debug printouts |
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.
[in] | errnum | Error number |
[in] | errtext | Error text |
|
private |
Remove a previously checked test case from a test process.
[in] | test_id | The index parameter specifying test case |
[in] | test_process | Process assigned to this test case |
logical function model_test_routines::valid_connectivity_options | ( | integer, intent(in) | current_connectivitymodel | ) |
Check and test specified swtemperature model for valid options.
[in] | current_connectivitymodel | connectivity to be tested for valid options |
logical function model_test_routines::valid_dam_purpose | ( | integer, intent(in) | current_dam | ) |
Check and test dam purpose for valid options.
[in] | current_dam | petmodel to be tested for valid 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.
[in] | current_deepgroundwatermodel | deepgroundwatermodel to be tested for valid options |
logical function model_test_routines::valid_erosion_options | ( | integer, intent(in) | current_erosionmodel | ) |
Check and test specified erosion model for valid options.
[in] | current_erosionmodel | erosionmodel to be tested for valid options |
Check basin slope greater or equal to zero and below 100.
logical function model_test_routines::valid_floodplain_options | ( | integer, intent(in) | current_floodplainmodel | ) |
Check and test specified floodplain model for valid options.
[in] | current_floodplainmodel | floodplainmodel to be tested for valid options |
logical function model_test_routines::valid_frozensoil_options | ( | integer, intent(in) | current_frozensoilmodel | ) |
Check and test specified frozensoil model for valid options.
[in] | current_frozensoilmodel | frozensoil model to be tested for valid options |
logical function model_test_routines::valid_glacierini_options | ( | integer, intent(in) | current_glacierinimodel | ) |
Check and test specified glacierini model for valid options.
[in] | current_glacierinimodel | glacierinimodel to be tested for valid 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.
[in] | current_growthstartmodel | growthstartmodel to be tested for valid options |
logical function model_test_routines::valid_infiltration_options | ( | integer, intent(in) | current_infiltrationmodel | ) |
Check and test specified infiltration model for valid options.
[in] | current_infiltrationmodel | infiltrationmodel to be tested for valid options |
logical function model_test_routines::valid_lakeriverice_options | ( | integer, intent(in) | current_lakerivericemodel | ) |
Check and test specified lakeriverice model for valid options.
[in] | current_lakerivericemodel | lakerivericemodel to be tested for valid options |
logical function model_test_routines::valid_petmodel_options | ( | integer, intent(in) | current_petmodel | ) |
Check and test specified petmodel for valid options.
[in] | current_petmodel | petmodel to be tested for valid options |
logical function model_test_routines::valid_sedresusp_model | ( | integer, intent(in) | sedrespmodel | ) |
Check and test sediment/resuspension models for valid options.
[in] | sedrespmodel | sediment/resuspension model to be tested for valid options |
logical function model_test_routines::valid_siltation_model | ( | integer, intent(in) | siltationmodel | ) |
Check and test siltation modeloption for valid options.
[in] | siltationmodel | siltation model to be tested for valid options |
logical function model_test_routines::valid_snowdensity_options | ( | integer, intent(in) | current_snowdensitymodel | ) |
Check and test specified snow density model for valid options.
[in] | current_snowdensitymodel | snowdensitymodel to be tested for valid options |
logical function model_test_routines::valid_snowevap_options | ( | integer, intent(in) | current_snowevapmodel | ) |
Check and test specified snow evaporation model for valid options.
[in] | current_snowevapmodel | snowevapmodel to be tested for valid options |
logical function model_test_routines::valid_snowfall_options | ( | integer, intent(in) | current_snowfallmodel | ) |
Check and test specified snow fall model for valid options.
[in] | current_snowfallmodel | snowfallmodel to be tested for valid options |
logical function model_test_routines::valid_snowfalldistribution_options | ( | integer, intent(in) | current_snowfalldistmodel | ) |
Check and test specified snow fall model for valid options.
[in] | current_snowfalldistmodel | snowfall distribution model to be tested for valid options |
logical function model_test_routines::valid_snowheat_options | ( | integer, intent(in) | current_snowheatmodel | ) |
Check and test specified snow heat model for valid options.
[in] | current_snowheatmodel | snowheatmodel to be tested for valid options |
logical function model_test_routines::valid_snowmelt_options | ( | integer, intent(in) | current_snowmeltmodel | ) |
Check and test specified snow melt model for valid options.
[in] | current_snowmeltmodel | snowmeltmodel to be tested for valid options |
logical function model_test_routines::valid_surfacerunoff_options | ( | integer, intent(in) | current_surfacerunoffmodel | ) |
Check and test specified surface runoff model for valid options.
[in] | current_surfacerunoffmodel | surfacerunoffmodel to be tested for valid options |
logical function model_test_routines::valid_swtemperature_options | ( | integer, intent(in) | current_swtemperaturemodel | ) |
Check and test specified swtemperature model for valid options.
[in] | current_swtemperaturemodel | swtemperaturemodel to be tested for valid options |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
integer, parameter, public model_test_routines::e_aquiferdata = 11 |
integer, parameter, public model_test_routines::e_atmdepdata = 22 |
integer, parameter, public model_test_routines::e_branchdata = 10 |
integer, parameter, public model_test_routines::e_cropdata = 15 |
integer, parameter, public model_test_routines::e_damdata = 3 |
integer, parameter, public model_test_routines::e_error = 1 |
integer, parameter, public model_test_routines::e_flooddata = 4 |
integer, parameter, public model_test_routines::e_forckey = 6 |
integer, parameter, public model_test_routines::e_geodata = 2 |
integer, parameter, public model_test_routines::e_glacierdata = 12 |
integer, parameter, public model_test_routines::e_info = 3 |
integer, parameter, public model_test_routines::e_info_file = 16 |
integer, parameter, public model_test_routines::e_lakedata = 1 |
integer, parameter, public model_test_routines::e_leakagedata = 14 |
integer, parameter, public model_test_routines::e_mgmtdata = 5 |
integer, parameter, public model_test_routines::e_model_base_conf_ok = 9 |
integer, parameter, public model_test_routines::e_npsdata = 23 |
integer, parameter, public model_test_routines::e_otest = 19 |
integer, parameter, public model_test_routines::e_output_range_violation = 20 |
integer, parameter, public model_test_routines::e_outregions = 18 |
integer, parameter, public model_test_routines::e_par = 7 |
integer, parameter, public model_test_routines::e_pointsourcedata = 13 |
integer, parameter, public model_test_routines::e_rrcdata = 21 |
integer, parameter, public model_test_routines::e_set_outvar_for_var = 17 |
integer, parameter, public model_test_routines::e_update = 8 |
integer, parameter, public model_test_routines::e_warning = 2 |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |