2.0.0b10
catchment modelling framework
|
Here you will learn how to create a complete lumped model in CMF.
The model structure we want to create in this tutorial can be downloaded above. You will not need any additional files except the weather data, that can be downloaded above as well.
The first thing we have to do is to import all the tools we will need further down. Also we will create the CMF project itself and one cell. This one cell will be the basis on which we built our lumped model
We now have a cell and can start adding the storages and define their starting properties.
As we not only want storages of water, but also want to transfer water between them we need connections. Every connection is governed by its parameters. As we do not use Spotpy and are thus unable to get the right values for the parameter created for us, we need to set them our selves. If you want to built your own model, you have to tweak the values yourselves. As you have many possibilites in a model, you should consider starting with a less complex one.
After we now have the parameter values we can start connecting things. CMF offers very different types of connections. From the simple kinematic wave to simple Infiltration and many more, much is possible. For simplicity we stick here to the kinematic wave.
After all connections have been set, we need to fine tune our model by specifying its behaviour regarding evapotranspiration.
Before we can let the model do its work we need one more thing: forcing data. For this the three files from the start of this tutorial need to be present in your working directory. They can be read using the following code:
After we now have the meteorological data, we have to create meteo stations and add the data to them. The stations are CMFs way to make the weather data accessible for the model. Rainfall stations and meteorological stations are handled seperately.
The structure of our model is now complete. We just need it to run. For this we need a solver for the differential equations. A good choice it the CVode Integrator. But you can use other solvers as well.
After our model has now run we have a calculated discharge data for every day. As we also have the really measured discharge for every day we can compare those two, to see how good our model worked.
As you can see the results of our model are not very good and differ quite a lot from the real values. To quantify how good (our bad) our model is we can calculate the percentage bias.
This gives us 92% as a result. Meaning that the difference between the simulated and the observed values is almost larger than the observed values itself. A clear indication that the parameter values we have choosen for our model are not appropriate. Play around a bit with the parameter values and see if you can get the bias below 100 %, 50 % or even 10 %. Always consider what the parameter values are standing for and what would be a realistic value for them.
Now you are able to built a relatively complex lumped model in CMF. Also you have seen that calibrating your model by hand is quite a lot of work, so be sure to check out Spotpy to learn how to let the computer do this work for you.