MARRMoT
MARRMoT copied to clipboard
Modular Assessment of Rainfall-Runoff Models Toolbox - Matlab code for 47 conceptual hydrologic models
MARRMoT
Modular Assessment of Rainfall-Runoff Models Toolbox - Matlab code for 47 conceptual hydrologic models.
If you have any questions about using or running the code, or are willing to contribute, please contact l.trotter[-at-] unimelb.edu.au or wouter.knoben[-at-]usask.ca
MARRMoT v2
The MARRMoT master branch has been updated to version 2.1. Main changes compared to v1 include code refactoring to rely on object-oriented programming and speed-ups in the model solving routines. A paper describing these changes will be submitted to Geoscientific Model Development in the near future. Until such time, please be aware that this version of the code has not yet passed peer review.
The last release of MARRMoT v1 is version 1.4 and can be found as a release here: dx.doi.org/10.5281/zenodo.6460624
Getting Started
These instructions will help you install a copy of MARRMoT and run a few example cases. This process should be straightforward and MARRMoT can (given some knowledge of Github and Matlab) be up and running in a matter of minutes.
Requirements
MARRMoT has been developed on MATLAB version 9.11.0.1873467 (R2021b) and tested with Octave 6.4.0. To run in MATLAB, the Optimization Toolbox is required, while Octave requires the optim package.
Note that the function circshift() that is used by routing routines has markedly different behaviour in Matlab 2016b and higher compared to previous versions. Routing results will be unreliable in Matlab 2016a and below but will not generate any warnings or error messages. User discretion is advised.
Install
To obtain the MARRMoT source code:
EITHER:Download a copy of the files from this repository and extract the files in an appropriate directory;OR:(Optionally fork and) clone this repository onto your own machine.
Then:
- Open Matlab;
- Add the
MARRMoTfolder and its subfoldersFunctions,ModelsandUser Manualto the Matlab path (see image below; open the context menu by right-clicking the main MARRMoT folder inside the Matlab explorer window);
Try an example application
With MARRMoT installed and Matlab open:
- Navigate Matlab's current folder to
./MARRMoT/User Manual; - Open the script
workflow_example_1.m; - Run the script by pressing F5 or clicking the
Runbutton; - Repeat with
workflow_example_2.mandworkflow_example_3.m(workflow_example_4.mshows a calibration example and takes a bit longer).
The User Manual provides further details.
Documentation
The article describing MARRMoT's v2.1 update will soon be submitted to the scientific journal 'Geoscientific Model Development'.
MARRMoT's documentation includes:
- New paper: object-oriented implementation, changes from MARRMoT v1 to v2
- Original paper: rationale behind MARRMoT development, best practices used during development, summary of included model structures and an example application of all structures to simulate streamflow in a single catchment. https://doi.org/10.5194/gmd-12-2463-2019
- User manual: description on how to use MARRMoT v2.- and how to contribute to it.
- User manual appendices: detailed model descriptions (A), flux equations (B) and unit hydrographs (C)
User manual and appendices are found in this repository in ./MARRMoT/User manual.
Model structure summary
MARRMoT model structures are based on a wide variety of different models. However, do to the standardised format of this framework, MARRMoT models resemble, but are not the same as the models they are based on. In addition to a range of unnamed models, the following models provided inspiration for MARRMoT:
- FLEX-Topo
- IHACRES
- GR4J
- TOPMODEL
- SIMHYD
- VIC
- LASCAM
- TCM
- TANK
- XINANJIANG
- HYMOD
- SACRAMENTO
- MODHYDROLOG
- HBV-96
- MCRM
- SMAR
- NAM
- HYCYMODEL
- GSM-SOCONT
- ECHO
- PRMS
- CLASSIC
- IHM19
License
MARRMoT is licensed under the GNU GPL v3 license - see the LICENSE file for details.
DOIs of previous releases
- v2.0: dx.doi.org/10.5281/zenodo.6483914
- v1.4: dx.doi.org/10.5281/zenodo.6460624
- v1.3: dx.doi.org/10.5281/zenodo.3552961
- v1.2: dx.doi.org/10.5281/zenodo.3235664
- v1.1: dx.doi.org/10.5281/zenodo.2677728
- v1.0: dx.doi.org/10.5281/zenodo.2482542
Acknowledgements
MARRMoT could not have been made without the effort that many hydrologists have put into development of their models. Their effors are gratefully acknowledged. Special thanks are extended to:
- Philip Kraft for finding a bug in the flux smoothing code during peer review;
- Sebastian Gnann for suggesting various quality of life fixes;
- Clara Brandes for finding and suggesting a fix for a bug in the water balance calculations and implementing m47;
- Koen Jansen for suggesting various improvements and correcting parameter descriptions;
- Mustafa Kemal Türkeri for making workflow_example_4 operational in Octave; and for performing extensive testing of MARRMoT in Matlab and Octave;
- Thomas Wöhling for suggesting various additional efficiency metrics and a possible implementation for warmup periods;
- Hidde Drost for suggesting a way to clarify MARRMoT install instructions in this readme;
- Dongdong Kong for finding a few typos in the code foe m13 and m28.