Last month, I presented a Webinar on Runoff Modeling in GoldSim. You can find the video recording of the presentation here. I learned a couple of lessons while building the models used for the demonstration and I thought it would be helpful to write about these lessons in a blog post.
I built a small GoldSim model that replicates an example that comes with the installation of the latest version of HEC-HMS. It is called the "Tifton" example. AWBM in GoldSim was used to replicate a similar watershed runoff response and input the same rainfall time series. Then I plotted the runoff time history from GoldSim, HEC-HMS and the observed flows on a single plot (see above).
This example model uses only a single catchment node to produce simulated runoff flows given a rainfall time series and catchment properties. The example also provides a time series of observed flow data from the river located just downstream of the watershed.
If you are unfamiliar with GoldSim's AWBM model, you can download it from our Model Library, here. Below is a schematic representation of the model logic.
Originally, I thought I could use GoldSim's built-in optimization functionality to automatically calibrate the model. My objective function is to maximize R^2, which is a measure of model efficiency by comparing the observed time series values with the simulated ones. My optimization variables are the surface store dimensions, recession constants, and base flow index (BFI). I executed the optimizer and found it difficult to achieve a decent calibration, which was surprising, given this has worked well in other cases. Below is a screen capture of the Optimization function in progress.
I decided to take a step back and attempt a manual calibration by adjusting the model parameters myself and re-running the model each time I make a change. Since the model runtime is not very long, this was fairly efficient. Also, it helps that the AWBM model is fairly basic with minimal parameters. It is also fairly easy to understand the functionality and predict the outcome of certain changes made to the model. For example, if you need to increase the peaks of simulated flows and reduce the amount of attenuated tails on the peaks, it would makes sense to increase recession constant for the Baseflow function and decrease the recession constant for the Surface Runoff function. I started doing this and found pretty quickly that I was able to achieve a better calibration than the optimization routine did for me. I looked at key areas within the simulated runoff time history results to assess the goodness of fit visually (see below for an example). Then I continued to make adjustments and re-run the model until I was able to achieve an R^2 value of 0.87, which I felt pretty good about.
What I learned from this is that if you understand the functionality behind the model and know how the results are impacted by the inputs generally, then it might be a good idea to at least start playing around with the model before going to a full blown optimization run.
Something else I found useful was to run GoldSim's sensitivity analysis to determine which variables matter most. I was considering adjusting the surface store fraction factors (A1, A2, and A3) but through sensitivity analysis, found these didn't really change the outcome in a meaningful way. This allowed me to simplify the calibration by a factor of 3. Below is a chart showing the results of the sensitivity analysis with the parameters that affect the model the most shown at the top.
|Tornado Chart from GoldSim's Sensitivity Analysis|