I have done some comparisons for results from crhm and Borland CRHM for project sub01_distrib_mod_auto1.prj.
In case it is needed, it can be found from here:
sub01_distrib_mod_auto1.prj.txt
In this prj, I used Macro 'sub_WBvar_estimate' to output water balance variables for the basin average in addition to the basinflow and basingw variables. The comparisons include hourly time-series plot and scatter plot and can be found here:
sub01_test_plot.zip
Overall, plots show fairly close results between crhm and Borland CRHM for variables:
intcp_evap (Interception evaporation):
![sub01_intcp_evap_scatter_comp](https://user-images.githubusercontent.com/23130409/114425207-15419d80-9b76-11eb-8054-2e2d3c5aa7fd.png)
![sub01_intcp_evap_timeseries_comp](https://user-images.githubusercontent.com/23130409/114425318-31ddd580-9b76-11eb-94e6-db5d1a226be0.png)
Subl_Cpy (Interception sublimation):
![sub01_Subl_Cpy_scatter_comp](https://user-images.githubusercontent.com/23130409/114426412-48d0f780-9b77-11eb-8097-e0ce90ff4db9.png)
![sub01_Subl_Cpy_timeseries_comp](https://user-images.githubusercontent.com/23130409/114426428-4d95ab80-9b77-11eb-9501-7dbfa7e6f0b8.png)
hru_rain (Rainfall):
![sub01_hru_rain_scatter_comp](https://user-images.githubusercontent.com/23130409/114426627-7d44b380-9b77-11eb-8ec1-833f57b728d4.png)
![sub01_hru_rain_timeseries_comp](https://user-images.githubusercontent.com/23130409/114426643-8170d100-9b77-11eb-979b-a59508feeb52.png)
This suggests that for the forest HRUs, interception processes in CanopyClearingGap module are handled fairly consistent by crhm when comparing to Borland CRHM; this is likely true for Canopy and CanopyClearing modules as both share majority of code with CanopyClearingGap module.
Other variables have noticeable differences.
Especially for SWE_in, SWE_out, basinflow variables. To investigate these differences, it is good start with variables according to the module sequence, such as hru_rain and hru_snow variables from obs module, so I ran projects sub01_distrib_mod_auto1_hru_rain.prj and sub01_distrib_mod_auto1_hru_snow.prj to output hru_rain and hru_snow for all 54 HRUs for comparisons. Both project files can be found here:
sub01_distrib_mod_auto1_hru_rain.prj.txt
sub01_distrib_mod_auto1_hru_snow.prj.txt
I have comparison plots for hru_rain and hru_snow here:
sub01_test_plot_hru_rain.zip
sub01_test_plot_hru_snow.zip
The plots show that crhm tends to have a very small numbers of slight overestimation of hru_rain for the lower rainfall events (ie. < 5 mm) for HRUs: 31 to 35 and 48 to 52;
The plots show that crhm tends to have a very small numbers of slight underestimation of hru_snow for the moderate snowfall events (ie. < 10 mm) for HRUs: 1 to 25, 31 to 38, 42, 44, and 48 to 52.
In addition, I have comparison plots for SWE variable as it has strong effect on other variables, and the plots can be found here:
sub01_test_plot_SWE.zip
The plots show some noticeable differences for SWE. In this project sub01_distrib_mod_auto1.prj, SWEslope module is used to model the snow transport by gravity, which could introduced these differences.
I have the plots of SWE_out (ie. outgoing snow transport) variable for HRUs dealing with this process:
sub01_test_plot_SWE_out.zip
I have the plots of SWE_in (ie. incoming snow transport) variable for HRUs dealing with this process:
sub01_test_plot_SWE_in.zip
As shown, crhm has noticeable differences in SWE_out and SWE_in variables for these HRUs.
For other HRUs that do not deal with snow transport by SWEslope module, SWE values tend to lower from crhm compared to Borland CRHM.
Here is a Upper Middle t project I tested earlier, I used this to verify whether crhm catches hru_rain, hru_snow SWE correctly:
I used MarmotCreek_UpperMiddle_05-20test_modified_26Feb21_basinaggregationscheme3autoa.prj to output hru_rain and SWE for 5 HRUs in Upper Middle, the project file can be found here:
MarmotCreek_UpperMiddle_05-20test_modified_26Feb21_basinaggregationscheme3autoa.zip
I used MarmotCreek_UpperMiddle_05-20test_modified_26Feb21_basinaggregationscheme3autoa_hru_snow.prj to output hru_snow for 5 HRUs in Upper Middle, the project file can be found here:
MarmotCreek_UpperMiddle_05-20test_modified_26Feb21_basinaggregationscheme3autoa_hru_snow.zip
The plots of 5 HRUs hru_rain, hru_snow and SWE can be found here:
UpperMiddle_test_plot.zip
These plots show that hru_rain and hru_snow are very close between crhm and Borland CRHM for Upper Middle project; for SWE, crhm is not always perfectly aliened with Borland CRHM on 1;1 line, but crhm has both very small overestimation and underestimation.
Both sub01_distrib_mod_auto1.prj and MarmotCreek_UpperMiddle_05-20test_modified_26Feb21_basinaggregationscheme3autoa.prj use Macro 'Precip_Elevation_Adjust' to adjust parameter precip_elev_adj for seasonal variations, and sub01_distrib_mod_auto1.prj also has Macro 'lapse_rate_Adjust' to adjust parameter lapse_rate for seasonal variations. This could also be factor for hru_snow in sub01_distrib_mod_auto1.prj.
In summary, for the project sub01_distrib_mod_auto1.prj, issues at the moment:
-
Whether these Macros 'Precip_Elevation_Adjust' and 'lapse_rate_Adjust' are issues in crhm for hru_rain and hru_snow.
-
Whether obs file used by sub01_distrib_mod_auto1.prj causes the issues for hru_rain and hru_snow.
-
Whether there is a precision issues for some parameters in ClassSWEslope.cpp in crhm to cause SWE_out and SWE_in issues, such as following:
if (use_rho[hh])
den_snow = rho[hh];
else
den_snow = snow_density[hh];
-
Why SWE simulated by crhm tends to be slightly lower than Borland CRHM for those HRUs not affected by SWEslope?