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.


SuperflexPy is actively developed at Eawag, by researchers in the Hydrological modelling group, with the support of external collaborators.

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.