2.0.0b10
catchment modelling framework
|
Philipp Kraft , Kellie B. Vaché, , Hans-Georg Frede, Lutz Breuer
Hydrological models are created for a wide range of scales and intents. The Catchment Modelling Framework (CMF) extends the Python programming language with hydrology specific language elements, to setup specific hydrological models adapted to the scientific problems and the dominant flow processes of a particular study area. CMF provides a straightforward method to test hydrological theories and serve as a transport module in integrated, interdisciplinary catchment model approaches.
Keywords: Hydrological model, solute transport, model coupling, object orientated programming, catchment models
Software name | Catchment Modelling Framework (CMF) |
---|---|
Software homepage | http://www.uni-giessen.de/cms/faculties/f09/institutes/ilr/ilr-frede/download |
Developers | Philipp Kraft, Kellie B. Vaché |
Contact | Phili.nosp@m.pp.k.nosp@m.raft@.nosp@m.umwe.nosp@m.lt.un.nosp@m.i-gi.nosp@m.essen.nosp@m..de |
Year first available | 2010 |
Availability | free download, GNU public license, v2 |
Software required | Python 2.6 with NumPy (>1.3) and Shapely (>1.2.4) on Linux and Windows |
Hardware required | Multi-core CPU |
Programming language | C++, Python |
Program size | 2.2 MB source code, 4MB documentation |
In the last 40 years, a multitude of more or less physically-based, deterministic hydrological models have been developed for various scopes, scales and regions. Despite the existence of broadly accepted governing equations in hydrology, including the Richards equation describing flow in porous media and the St. Venant equations defining open channel flows, modelling landscape-scale water movement remains hampered by heterogeneity, parameter uncertainty and lacking computational power.
In response to this challenge, Buytaert et al. (2008) suggest that model codes should be fully accessible, modular and portable. The incorporation of these qualities into the code is a mechanism to allow the model developer to aid model users in testing different hypotheses about flow regimes, and, ultimately, in applying the most appropriate model structure to different questions of interest. To these essential characteristics we add the concept of connectability, i.e. that model codes also should focus on between-model connections, particularly in the case of water quality models, to allow integration into a multi-objective landscape model approach.
Our approach presented here, originally based on the rejectionist framework approach by Vaché and McDonnell (2006), represents a model abstraction concept similar to the finite volume method (FVM) approach by Qu and Duffy (2007). The Catchment Modelling Framework (CMF) generalizes the FVM discretization scheme to let the user attach the finite volumes (water storages in CMF) with a variety of flow accounting equations (flux connections in CMF). The compounds of the model are assembled using the well known scripting language Python. The advantages of scripting computer languages for scientific modelling are described by Ousterhout (1998) and Karssenberg et al. (2007), namely rapid application development using very high level instructions and a dynamic typing system. To benefit from the simplicity of scripting languages on the one hand, and from the reduced computation effort of compiled languages, the core components of the framework are written in C++ as an extension for Python, using the "Simplified Wrapper Interface Generator" (SWIG) by Beazley and Lomdahl (1996).
A model built on CMF is composed of a network, a spatial context and a solver (Figure 1). The nodes of the network correspond to the water storages and boundary conditions, and the network edges to the governing equations, like Richard’s or Manning’s equation, amongst others. The differential equation representing the water volume (V) in one storage-object i is then derived from the network, and is defined as:
\[ \frac{{dV_i }}{{dt}} = \sum\limits_{j = 1}^{N_i } {\left( { - q_{i,j} \left( {V_i ,V_j ,t} \right)A_{i,j} } \right)} \hspace{20mm}(3) \]
The flux function q is calculated by the flux connection objects, the edges of the network. N is the number of connected nodes of the actual node i and j denotes a node connected to i. Sources and sinks of water are realized by boundary objects. Solute storages are associated with each water-storage-object. The resulting system of ordinary differential equations for water volume and matter content is in most cases stiff and only integratable with an implicit solver. The CVODE solver (Hindmarsh et al., 2005) has been included in CMF for that purpose, along with other integration methods for the few cases of non-stiff setups. Any solver in CMF supports shared memory parallelism using OpenMP. Each node of the network is part of a spatial context, either the whole study area (the project), like reaches and big aquifers, or of a horizontal discretization unit, the cell.
Using these components a wide range of hydrological catchment models can be build: Lumped conceptual models with physically based boundary conditions, semidistributed models as well as highly detailed physically based fully distributed models. Other modular framework approaches limit the range of models to be built to a specific model type. FUSE (Clark et al., 2008) and FLEX (Fenicia et al., 2006) for example are restricted to lumped and semidistributed approaches and the rejectionist framework by Vaché and McDonnell (2006) constrained to distributed topographic gradient driven approaches. The MIKE SHE model (Refsgaard and Storm 1995) covers a broader range of possible model setups. However due to the closed nature of the source code, the user cannot extend the system by his or herself. Apart from the catchment scale, hillslope models, as well as three dimensional representations of fluxes in a lysimeters can be set up using CMF. A feasibility study concerning the coupling capabilities with biogeochemical models of the CMF approach has recently been published (Kraft et al., 2010).