SuperflexPy is an open-source Python framework for constructing conceptual hydrological models for lumped and semi-distributed applications.
SuperflexPy builds on our 10 year experience with the development and application of Superflex, including collaborations with colleagues at the Eawag (Switzerland), TU-Delft (Netherlands), LIST (Luxembourg), University of Adelaide (Australia), and others. The SuperflexPy framework offers a brand new implementation of Superflex, allowing to build fully customized, spatially-distributed hydrological models.
Thanks to its object-oriented architecture, SuperflexPy can be easily extended to meet your modelling requirements, including the creation of new components with customized internal structure, in just a few lines of Python code.
Constructing a hydrological model is straightforward with SuperflexPy:
- inputs and outputs are handled directly by the modeler using common Python libraries (e.g. Numpy or Pandas). This means that the modeller can use data files of his/her own design, without the need to pre- and/or post- process data into text formats prescribed by the framework itself;
- the components of the framework are declared and initialized through a Python script;
- all the components of the framework are classes with built-in functionalities for handling parameters and states, routing the fluxes, and solving common structures present in conceptual models (e.g. reservoirs, lag functions, etc.);
- the numerical implementation is separated from the conceptual model, allowing for testing different numerical methods for solving differential equations;
- the framework can be run at multiple levels of complexity, from a single bucket to an entire river network;
- the framework is available as an open source Python package from Github.
- the framework can be easily interfaced with other Python modules for calibration and uncertainty analysis.
The core team consists of:
Stay in touch¶
If you wish to receive e-mails about future developments of the framework, please subscribe to our mailing list clicking here.
Before starting to use SuperflexPy you should have a general knowledge of Python and Numpy. Other Python libraries may be needed for pre- and post- processing of the data.
In line with the Python terminology, we will use the word define when referring to the definition of a class, and initialize when referring to the creation of an instance of a class, i.e. an object.