- Nothing changed yet.
- Change minimum python version to 3.9 in pyproject.toml, update test matrix.
- Check if tables related to use_* settings in model_settings and simulation_template settings are populated
- Warn if tables related to use_* settings in model_settings and simulation_template settings are populated while use_* settings is false
- Add test for check descriptions.
- Collect all foreign key checks and give them a uniform error or warning (0001)
- Add unique check for boundary_condition_1d.connection_node_id
- Add checks for dry_weather_flow_distribution.distribution format, length and sum
- Add check if geometries for orifice, weir and pipe match their connection nodes
- Add check if geometries for control_measure_map, dry_weather_flow_map, surface_map and pump_map match the object they connect
- Add check if windshielding geometry matches with that of the linked channel
- Add check if the geometry of boundary_condition_1d, control_measure_location, lateral_1d, and pump matches with that of the linked connection node
- Add check if the geometry of memory_control or table_control matches to that of the linked object
- Fix descriptions of several checks
- Modify existing checks to work with schema changes for 1D
- Add GDAL 3.6 test to workflow matrix.
- Modify tests for schema 0.227
- Add test to ensure that only one type of measure_variable is associated to a single control
- Modify existing checks to work with schema changes for 2d and 1d2d
- Add checks to test if ExchangeLine.channel_id and PotentialBreach.channel_id refer to existing channels
- Add checks for new tag columns
- Adapt modelchecker to work with schema upgrades for boundary conditions and laterals (0.225)
- Add checks for tags in tables ControlMemory, ControlTable, ControlMeasureLocation and ControlMeasureMap
- Rename groundwater.equilibrium_infiltration_rate_type to equilibrium_infiltration_rate_aggregation
- Rename control_measure_location.object_id to connection_node_id
- Add check for control_table.action_table contents
- Adapt modelchecker to work with schema upgrades for structure control (0.224)
- Adapt modelchecker to work with schema upgrades for inflow (0.223)
- Add explicit support for NumPy 2.
- Require rasterio>=1.3.10.
- Adapt modelchecker to work with schema upgrades for model settings (0.222)
- Expand description of check 188.
- Add missing spaces in error message for check 185.
- Fix bug with check 183
- Add info check 1406 to inform the user if a raster is not compressed.
- Add check 799 to warn if raster friction pixels are < 1 while Chezy friction is selected
- Change error message for check 1500
- Fix check 183 which failed in the QGIS plugin
- Support geopackage
- Support changes in threedi-schema (0.220) needed for geopackage support
- Add warning check (0616) for surfaces for which no inflow is generated because of the surface table not being referred to in global settings.
- Add warning check (0617) to warn if the surface table referred to in global settings is empty and no inflow will be generated for it.
- Remove warning check 0029.
- Add warning check (1500) to warn about a friction value <= 1 for Chezy friction
- Add warning check (1501) to warn about friction values <= 1 or Chezy friction
- Add error check (0020) for CrossSectionLocation.friction_value because that check is no longer included in the factory checks.
- Add error check (0080) for absent CrossSectionLocation.friction_value and CrossSectionDefinition.friction_values for TABULATED_YZ shape
- Add error check (0087) for correct formatting of space separated list of values for variable friction
- Add error check (0180) for variable friction and variable vegetation parameters only be used together with TABULATED_YZ shape
- Add error check (0181) for correct number of values for variable friction and variable vegetation parameters
- Add warning check (0182) for fixed and variable vegetation parameters in combination with non-conveyance friction
- Add warning check (0183) for fixed and variable vegetation parameters in combination with conveyance friction
- Add warning check (0184) for fixed and variable friction in combination with non-conveyance friction
- Add warning check (0185) for fixed and variable friction in combination with conveyance friction
- Add error check (0186) for using variable friction or vegetation with open, monotonically increasing z profile
- Add error check (0187) for correct formatting of space separated list of variable vegetation parameters
- Add error check (0188) for all friction values non-negative and smaller than 1 for Manning friction
- Add error check (0189) for all friction values non-negative for Chezy friction
- Add error check (0190) for non-negative fixed vegetation parameters
- Add error check (0191) for non-negative variable vegetation parameters
- Add error check (0192) for disallowing fixed vegetation with Manning friction
- Add error check (0193) for disallowing variable vegetation with Manning friction
- Add error check (0194) for requiring that either all or none fixed vegetation parameters are defined
- Add error check (0195) for requiring that either all or none variable vegetation parameters are defined
- Order exported schematisation checks rst table to prevent unnecessarily large git diffs in threedi-docs. To facilitate this, sets of strings in error messages have been converted to lists of strings.
- Use Type instead of type so the library works on Python 3.8.
- Add warning check 208 to check if a(n) (impervious) surface's geometrical area differs by more than 1 m2 from its defined area
- Add info check 57 to check if pipes and culverts have closed cross-sections.
- Fix check 325; it was giving a warning whenever an interception_file was used.
- Add info check 802 for grid refinement levels equal to kmax.
- Add warning check 615 to check if a surface map references an invalid surface.
- Add error check 1405 to make sure that a DEM does not have more than 5e9 pixels.
- Unmark checks 26, 27, 28 and 29 as beta.
- Support marking checks as beta, so they will only be executed with allow_beta_features=True
- Add beta check 26 to make sure friction types with conveyance are only used on v2_cross_section_location
- Add beta check 27 to make sure friction types with conveyance are only used on tabulated rectangle, tabulated trapezium, or tabulated yz shapes.
- Add beta check 28 to make sure cross-sections with conveyance friction monotonically increase in width
- Add beta check 29 to advise users to use friction with conveyance on cross-sections where it is possible, but they haven't done so.
- Ignore TypeError raised on check 797 when grid_space is null.
- Fixed check 204; it now only applies to broad crested weirs/orifices.
- Ignore tiny floating-point deviations in RasterGridSizeCheck (check 798).
- Add check 327 to make sure vegetation drag is only used if the friction type is Chezy.
- Change log level of check 63 from ERROR to WARNING
- Rewrite release workflow to use a supported github action for github release.
- Build the release with the build package instead of setuptools.
- Fixed incorrect units in pumpstation check 66.
- Added check 98: cross-section diameters must not be smaller than 0.1 m.
- Changed check 324 to 1151, to keep the aggregation settings checks grouped together.
- Clarified error message for check 206 and Use0DFlowCheck.
- Added --ignore-checks option on the modelchecker check command to ignore all checks matching a regex pattern.
- Added check 614 to make sure that no more than 50 surfaces are linked to a connection node.
- Added check 1152 to ensure all aggregation setting timesteps are the same.
- Added check 1153 to ensure all aggregation setting timesteps are less than the global settings timestep.
- Added check 1154 to ensure aggregation settings are present with all the aggregation_method-flow_variable pairs listed in the docs.
- Added checks 45 and 360 to ensure that channel, pipe and culvert dist_calc_points and global_settings dist_calc_points, respectively, are at least 5 metres.
- Vegetation_drag column names have changed. Update column names in code.
- Bump threedi-schema version to 0.217.0.
- Raster checks 10001-10004 have been renamed to 1401-1404 to stay within 4 digits.
- Added check 1227: if v2_control.control_id references an id, the table it references must contain that id.
- Added check 56: the cross-sections on a channel must either all be open or all be closed.
- Added check 63: pumpstation capacity and storage at the end node must be set so the water level doesn't rise more than 1 m/s.
- Added check 613: the combined surface area linked to a connection node must not be more than 10000 m2.
- Added check 8: all of the ids in the database must be a positive signed 32-bit integer.
- Add support for designating beta features in threedi-schema. If a user puts a non-null value in a column marked as beta in threedi-schema, a BetaFeaturesCheck error 1300 will be raised by the modelchecker. The allow-beta flag has been added to the CLI interface to disable this check temporarily.
- Add errors and warnings for vegetation_drag input. Both rasters and global values.
- Added check 73: groundwater boundaries are allowed only when there is groundwater hydraulic conductivity.
- Added check 74: groundwater boundary types are not allowed on 1D boundary conditions.
- Added groundwater 1D2D range checks for manholes, channels, and pipes for exchange_thickness, hydraulic_conductivity_in, and hydraulic_conductivity_out.
- Pin minor version for threedi-schema dependency.
Add warning 108: the crest_level of a weir or orifice cannot be lower than the bottom_level of any manhole it is connected to.
Add info 109 and 110: the bottom level of a manhole cannot be higher than the reference level of the closest cross-section of any channel it is connected to. threedigrid-builder automatically fixes this, hence info instead of warning.
Rewrite command-line client. The
--sqlite
argument is now an argument of thecheck
command, not of the mainthreedi_modelchecker
group. To run a check, the new syntax isthreedi_modelchecker check -s <your database>.sqlite -l <desired check level>
Add new command,
export-checks
. This exports all checks executed by the model checker as an RsT table or in CSV format, as specified by the optional--format
argument. The check output can also be dumped to a file using--file
.Compatibility fix with rasterio 1.3.6.
Drop SQLAlchemy 1.3 support, add 2.0 support.
Add check 326: this gives an info message if a record exists in the simple_infiltration table, but is not referenced from the global settings.
Add check 66: this raises a warning if a pumpstation empties its storage area in less than one timestep.
Add check 1205 to make sure that a timeseries is not an empty string.
Add checks 1206 to confirm that the timesteps in all boundary condition timesteps are the same.
- Fixed warning 94; warn if height is not empty (instead of width).
- Fixed bug in check 81.
- Separate the schema to a separate package: threedi-schema.
- Removed threedi_modelchecker.schema, threedi_database, threedi_model, ThreediDatabase. Import these from threedi-schema.
- Remove simulation templates generation code.
- Optimize check 275 (potential breach interdistance)
- Snap v2_calculation_point to their channel geometry (with a tolerance of 1E-7 degrees) in migration 213 (v2_connected_pnt -> v2_potential_breach).
- Added range checks on exchange_line and potential_breach (265, 276, 277).
- Added check that a boundary condition timeseries starts at timestamp 0 (1204).
- Add checks for completely empty rasters (extended raster range checks 781-796).
- Fixed error messages 274 and 275.
- Schema version 214: remove v2_connected_pnt, v2_calculation_point, and v2_levee. The 'displaced' 1D2D points (mostly, breaches) are copied to v2_potential_breach, which also contains information about breaches. The levees are copied to v2_obstacle (which resets their primary key). Schema versions 211, 212 and 213 prepared for this change.
- Added error 274; a potential breach cannot be closer than 1m to the channel ending. It can be exactly on it (to allow breaches from connection nodes).
- Added error 275; a potential breach cannot be closer than 1m to another one. It can be exactly on another one (to allow 2 breach options on 1 node).
- Adapt warning 263: only emit a warning when an exchange line length is < 80% of the corresponding channel length.
- Added TABULATED_YZ (7) and INVERTED_EGG (8) cross section definition types.
- Added warning 94 for CIRCLE, EGG and INVERTED EGG crossections having a height.
- Added errors 95, 96 and 97 for invalid YZ profiles.
- Added v2_potential_breach and v2_exchange_line (schema version 211).
- Added RasterIO as an optional raster interface.
- The ThreediModelChecker context now accepts a "context_type" and "raster_interface" fields.
- Python 3.7 support is dropped.
- Added raster checks: file validity, has one band, has crs, range check. For DEM only it is also checked if pixels are square and crs is projected.
- Added warning 325: interception_file given and interception_global not.
- Adapted errors 404, 405, 407, 410, 412, 414, 416, 419 to emit a warning when a raster is given but its corresponding global value is not. This global value will be used as a fallback value on pixels where the supplied raster has no data.
- Added error 421: v2_groundwater.groundwater_hydro_connectivity >= 0.
- New schema version (210): added v2_simple_infiltration.max_infiltration_capacity and corresponding checks 422 (>= 0) and 423 (warning when it is NULL and there is a file).
- Added error 424: v2_interflow.hydraulic_conductivity >= 0.
- Added error 425: v2_groundwater.initial_infiltration_rate >= 0.
- Added error 426: v2_groundwater.equilibrium_infiltration_rate >= 0.
- Added error 427: v2_groundwater.infiltration_decay_period > 0.
- Added warning 428 when v2_groundwater.groundwater_hydro_connectivity is NULL and a groundwater_hydro_connectivity_file is supplied.
- Migration to schema version 210 also fixes errors 421, 424, 425, 426, 427 by replacing negative values with NULL.
- All settings checks are now done only on the first global settings entry.
- Added "AllEqual" warnings (codes 330 and further) that check whether grid builder global settings are all the same in case there are multiple records.
- Added a unique check on v2_manhole.connection_node_id.
- Added error 324: warning when v2_aggregation_settings.flow_variable and .aggregation_method are not unique together.
- Added a check (207) for absence on index on connection_node geometry.
- Removed the side-effect of check 201 that enables spatial indexes.
- Added a check (254) for bottom_level presence for nodes without connected objects.
- Added ModelSchema.set_spatial_indexes and corresponding cli command.
- Emit an error for 0-width cross section definition. Before, only warnings were emitted.
- Changed flooding_threshold (numerical settings) maximum from 0.3 to 0.05.
- Removed PostGIS support.
- Removed v2_surface_map.surface_type.
- Check that refinement_level is not greater than kmax (E0800).
- Require at least python 3.7, sqlalchemy 1.3 and alembic 1.8 to fix a bug in migration 173.
- Updated schema to version 208: altered table settings (v2_global_settings): 'maximum_table_step_size' was added and 'table_step_size_volume_2d' was removed.
- Fixed release script.
- Added ModelSchema().upgrade_spatialite_version (and the same argument to .upgrade) to upgrade the spatialite version from 3 to 4/5.
- Run unittests on spatialite 3 and 4.
- Improved performance of upgrading an empty database.
- Remove all NOT NULL, unique, and foreign key constraints in the spatialite.
- Fixed upgrade with backup=True on Windows.
- Added continuous integration on MacOS and Windows.
- The simulation template worker does not add default for maximum_time_step anymore. This wasn't necessary (the checker ensures that the setting is there when using time step stretch) and it lead to errors if the maximum_time_step was set to a value lower than sim_time_step when not using time step stretch.
- Automatically (re)create views in the spatialite after performing a schema upgrade.
- Fixed bug in timeseries checks 1201 and 1202.
- Prevent usage of GeoAlchemy 0.11 (because of a known issue).
- Add warning: cross section (tabulated) should start with 0.
- Pass temporary database copy file in a different context so it is opened one time, previously it was opened twice which results in errors on Windows.
- Re-enable Python 3.6 compatibility.
- Fix package.
- Updated DWF calculation to match ThreediToolBox update.
- Included Surface in DWF calculation.
- Bugfix: DWF lateral upload wrong api call.
- Allow isolated manholes that are not connected to anything (emit warning instead of error).
- Added threedi_modelchecker.__version__.
- Added automatic release to PyPI.
- Use the threedi-api-client beta release instead of checking out from github.
- Bugfix: DWF lateral upload fails due to incorrect function arguments.
- Bugfix: Need to convert lateral geometry from str to dict representation.
- Add dem_obstacle_detection != True check.
- Added check on water_level_ini_type.
- Interpret empty strings the same as NULL in initial (groundwater) level file fields (simulation template worker).
- Set interpolate flag for boundary conditions from extractor default to True.
- Added dry weather flow calculation.
- Added security measures on connection for untrusted sqlite input.
- Added ThreediDatabase.check_integrity().
- Disabled temporary patch: require initial groundwaterlevel files to be present.
- Added legacy migrations down to version 160.
- Reduced level of bank level check to warning.
- Reduced level of v2_connection_nodes.the_geom_linestring to info.
- Minor typographic fixes.
- Convert v2_global settings enum values before using them in openapi models.
- Added checks for channel and culvert geometry distance to connection nodes.
- Added checks for illegal combinations of use_2d_flow, use_1d_flow, manhole_storage_area and dem file presence.
- Changed cross section location geometry check to WARNING.
- This release requires at least geoalchemy2 0.9.0.
- Changed some nullability and geometry validity checks to WARNING.
- Removed check 0101 (bank level not NULL check).
- Only warn on dist_calc_points <= 0 and MANNING friction_value >= 1.
- Make the cross_section_location.bank_level >= reference_level check a WARNING. It will be corrected anyway in make_tables.
- Temporary patch: do not error if initial groundwaterlevel file is not present.
- Bugfix: Structure controls upload in simulation template generation.
- Bugfix: Correct parsing of discharge_coefficients in table control.
- Removed timed control parsing, there are no models using it.
- Set maximum_time_step to sim_time_step if maximum_time_step is NULL or less than sim_time_step. Reverts change in 0.19.
- Set maximum_time_step to NULL where timestep_plus is not used.
- Replaced the generic timeseries check to more specific ones. The timeseries are not required anymore to be of the same length. Added checks are: timesteps should be >= 0 and increasing.
- Make cross section definition checks more informative.
- Display the table name instead of the internal model name in the error description.
- Accept schematisations with version 173 by re-implementing the last migration from the old stack.
- Updated settings checks to match the current API.
- Added id (boundary sqlite id) and type (1D or 2D) field to generated boundaries JSON file.
- Added support for saving 1D initial waterlevel (from file), 2D initial waterlevel and initial groundwaterlevel in API. Note: uses first initial waterlevel (aggregation) resource found for 1D, 2D or groundwater.
- Simulation templates can be saved (asynchroniously) to the API
- Added support for extracting simulation template information from an sqlite file. This information includes: settings, boundary conditions, laterals, structure controls and initial waterlevels.
- Added log levels (INFO, WARNING, ERROR). The level of the checker can be adjusted through ThreediModelChecker().errors and .checks. The command-line interface also supports the --level parameter.
- Fixed formatting of the command-line interface output.
- Removed the summarize (--sum, --no-sum) option from the command-line interface.
- Complete run through of the checks.
- Added an error codes to each check.
- Added an initial migration (0200) that adds the tables only when necessary. In this way, empty and existing sqlite files can be initialized.
- Added a migration (0201) that replaces friction_type=4 with 2.
- Added a migration (0202) that removes all v1 tables and views.
- Added a migration (0203) that drops v2_connection_nodes.the_geom_linestring and v2_aggregation_settings.aggregation_in_space.
- Fixed compatibility with SQLAlchemy 1.4.*.
- Added FileExistsCheck.
- Fixed Pumpstation.lower_stop_level check.
- Added ThreediDatabase.session_scope context manager.
- Set WARNING in description of check on storage area of an isolated manhole.
- Added database schema revision management using alembic. The ModelSchema has two new methods: .get_version() and .upgrade().
- Add check ConnectionNodesDistance which ensure all connection_nodes have a minimum distance between each other.
- Set the geometry of the following tables as required: impervious_surface, obstacle, cross_section_location, connection_nodes, grid_refinement, surface, 2d_boundary_conditions and 2d_lateral.
- Add check for open cross-section when NumericalSettings.use_of_nested_newton is turned off.
- Add checks to ensure some of the fields in numericalSettings are larger than 0.
- Add check to ensure an isolated pipe always has a storage area.
- Add check to see if a connection_node is connected to an artifact (pipe/channel/culvert/weir/pumpstation/orifice).
- Changed Pipe.calculation_type to include broad- and shortcrest.
- Bugfix: Pumpstation.lower_stop_level should be higher than models.Manhole.bottom_level.
- Bugfix: made the ConnectionNodesLength backwards compatible with sqlalchemy 1.1.
- Added ConnectionNodesLength check to check the length between a start- and end node is above a certain threshold. Configured this check for pipes, weirs and orifices.
- Configured checks to see if the length of a linestring geometry is larger than 0.05m for culverts and channels.
- Chaned GlobalSettings.start_date and GlobalSetting.start_time into type Text and added two checks to see if the fields are valid datetime and date respectively.
- Configured extra check: use_1d_flow must be set to True when your model has 1d elements.
- Removed ConditionalCheck and replaced it with QueryCheck.
- Added type-hinting.
- Created CustomEnum for Enum objects.
- Fixed some misconfigured checks, see #10.
- Set language of travis to python and test for python 3.6 and 3.7.
- Update to following columns to be non-nullable: Levee.the_geom, Culvert.invert_level_start_point and Culvert.invert_level_end_point.
- Removed threedigrid from requirements.
- Configured extra checks: Pumpstation.lower_stop_level > Manhole.bottom_level.
- Configured extra checks: Pipe.invert_level >= .Manhole.bottom_level.
- Added additional check type: QueryCheck.
- Fix setup.py.
- Added missing NotNullChecks to the config.py
- Retry release (release of 0.4 is missing changes).
- Update to readme.
- No longer raise a MigrationTooHighError when the migration is larger than expected.
- Fixed TypeError with CrossSectionShapeCheck when width/height are None.
- Updated some constraints on CrossSectionShapeCheck: - Heights of tabulated shape must be increasing. - Egg only requires a width, which must be greater than 0.
- Added 0 to a valid value for ZoomCategories. Also renamed the ZoomCategories names to something clear names.
- Renamed some methods of ThreediModelChecker.
- Added basic to the 3di model schema: checks if the model has the latest migration applied and raises an error if not.
- Rewrote CrossSectionShape check to no longer use regex and added it to config.
- Initial project structure.
- Added ORM for a threedi-model in sqlalchemy.
- Added several types of checks.
- Manually configured many checks.
- Added check factories, which generate many checks based on the ORM.