Package: roger
Runoff Generation Research - a process-based hydrological toolbox model in PythonRoGeR,Runoff Generation Research, is a process-based hydrological model that can be applied from plot to catchment scale. RoGeR is written in pure Python, which facilitates model setup and model workflows. We want to enable high-performance hydrological modelling with a clear focus on flexibility and usability.RoGeR supports a NumPy backend for small-scale problems, and a
high-performanceJAXbackend
with CPU and GPU support. Parallel computation is available via MPI and supports
distributed execution on any number of nodes/CPU cores.Inspired byVeros.DocumentationWe strongly recommend tovisit our documentation.Features(25 square meter resolved simulations 
of the Eberbaechle catchment, 
Germany (2019-2022), click for better
quality)Roger providesgrid-based1D modelsoffline solute transportwith severalStorAge selection (SAS) functionssolute-specific biogeochemical processesimplementations ofcapillary-driven infiltration (Green-Ampt)severalpre-implemented diagnosticssuch as averages or collecting values
at given time interval, variable time aggregation, travel time distributions
and residence time distributions (written to netCDF4 output)pre-configured idealized and realistic setupsthat are ready to
run and easy to adaptaccessibility and extensibilitydue to high-level programming language PythonBasic usageTo run Roger, you need to set up a model --- i.e., specify which settings
and model domain you want to use. This is done by subclassing theRogerSetupbase class in asetup scriptthat is written in Python. A good
place to start is theSVAT Tutorial:After setting up your model, all you need to do is call the model setup:# move into the folder containing the model scriptpythonsvat.pyFor more information on using Roger, have a look atour
documentation.ContributingContributions to Roger are always welcome, no matter if you spotted an
inaccuracy inthe documentation, wrote a
new setup, fixed a bug, or even extended Roger' core mechanics. There
are 2 ways to contribute:If you want to report a bug or request a missing feature, pleaseopen an issue. If you
are reporting a bug, make sure to include all relevant information
for reproducing it (ideally through aminimalcode sample).If you want to fix the issue yourself, or wrote an extension for
Roger - great! You are welcome to submit your code for review by
committing it to a repository and opening apull
request. However,
before you do so, please checkthe contribution
guidefor some tips on testing and benchmarking, and to make sure that
your modifications adhere with our style policies. Most importantly,
please ensure that you follow thePEP8
guidelines, usemeaningfulvariable names, and document your code usingGoogle-style
docstrings.How to citeIf you use Roger in scientific work, please consider citingthe following publication:@article{title={Rogerv3.0.3–aprocess-basedhydrologictoolboxmodelin{Python}},volume = {...},doi = {https://doi.org/10.5194/gmd-2023-118},journal = {Geosci. Model Dev.},author = {Schwemmle, Robin, and Leistert, Hannes, and Weiler, Markus},year = {2023},pages = {...},}Or have a look atour documentationfor more publications involving Roger.TODOimplement runoff and channel routing (e.g. kinematic wave or hydraulic approach)implement distributed model with run-on infiltrationuse coarser spatial and temporal resolution for computation of
groundwater-related processesimplement baseflow in the groundwater routine. requires surface water depth.implement surface runoff generation for gravity-driven infiltrationimplement gravity-driven infiltration and percolation and include it into the transport routineimplement time-variant sowing and harvesting of cropsLicenseThis software can be distributed freely under the MIT license. Please read the LICENSE for further information.
© 2022, Robin Schwemmle (robin.schwemmle@hydrology.uni-freiburg.de)