OpenHydroQual is an open-source, agile, and expandable component-based tool for developing and optimizing a wide range of models representing water systems. Some examples of models that can be constructed include reservoir operation, rainfall-runoff models, stormwater management, flow and transport in soil and groundwater, pipe networks, water quality models in surface, subsurface, or both, and integrated urban water management.
Within the OpenHydroQual framework, water system models are depicted as a network of interconnected blocks and links. These models compute balance equations for various state variables within the blocks, facilitating the exchange of water, materials, or energy through the connecting links. State variables may include aspects such as water storage levels, chemical concentrations, energy, cumulative costs, and other variables specified by the user. The key equations governing the exchange of water, materials, or energy are stored in external JSON files, allowing users to modify or supplement them as required.
OpenHydroQual enables users to create custom components through plugins, which can be endowed with unique properties defined by the user. These properties influence how state variables are exchanged between blocks, offering flexibility for users to add specific components required for their modeling projects. Users can then incorporate these tailored components into their models. These plugins are defined as JSON files.
The elements of a model within OpenHydroQual encompass blocks, links, sources, chemical constituents, parameters, and objective functions. Sources act as generators of state variables such as water, materials, or any other user-defined variables. The chemical constituent feature permits the inclusion of an infinite array of chemical elements into models, alongside a reaction network characterized by non-linear reaction rate formulas and stoichiometric constants that dictate the behavior of these constituents. Parameters are quantities with initially unknown values that can be ascertained through optimization techniques or inverse modeling. Objective functions are quantities designed to be optimized through the modification of parameter values.