Water Balance Model | My Assignment Tutor

CIV3285: Engineering Hydrology – S1 2021 Lecturer’s Name: Christoph Rudiger Assignment 2 – Water Balance Model Group 49: Kok Wei Lee – 30630659 Sarith Gunaratne – 29718015 Lauren Guiney – 28801725 Agushan Manoranchan – 26964988 Executive Summary This report details the process of calibrating and validating a water balance model for the Melbourne catchment, to obtain daily soil moisture values and runoff. The model uses a split sample, whereby BoM precipitation data values from 2005-2010 were used to calibrate the model and values from 2011-2016 were used to validate the model. The simple water balance considers the daily change in storage that is a function of precipitation, evapotranspiration, surface runoff and baseflow. The model was constructed with the following simplifying assumptions; soil depth is 785 mm, wilting point is 0.12m3m-3, field capacity is 0.33 m3m-3, and saturation is 0.45 m3m-3. Actual evapotranspiration was considered in the model, with daily areal potential evapotranspiration values obtained from BoM. The model was calibrated to find a suitable value for runoff coefficient (RC) and k (baseflow factor), by linearly spacing 100 values between 0-1 for RC and 0-1 for k, running the model and testing sensitivity through the Nash-Sutcliffe Efficiency (NSE) Coefficient. From the calibration, a value of 0.0101 for k and 0.0606 for RC were determined. The water balance model was then updated to reflect the new constant values for k and RC and implemented for data from 2011-2016. Results of the simulation were compared against known runoff and soil moisture data from BoM for 2011-2016 to validate the accuracy of the model with the calibrated parameters. After comparing the water balance model outputs with the known values from BoM, it was determined that the calibrated parameters were valid when comparing with the runoff from 2011-2016, as the model roughly followed similar patterns to the actual runoff measured. When comparing the soil moisture values, however, the observed and simulated values differed significantly, which is likely attributed to the simplifying assumptions used to initially create the model, such as a constant soil depth, wilting point and maximum saturation. Therefore, there can be a higher level of confidence in using the model to simulate runoff in the Melbourne catchment than exists for storage and soil moisture values. Contents Executive Summary i Introduction 1 1. Water Balance Model 2 1.1 Finding ETa 2 1.2 Finding Total Runoff 2 2. Water Balance Model Calibration 3 3. Water Balance Model Validation 5 Conclusion 6 Appendix A – Calibration Code 6 Introduction The calibration of k was required using a simple calibration approach as the baseflow was calculated as the product of k and the storage of water. This task however required the calculation of daily evapotranspiration values by the water balance model achieved by finding ETa which was done by utilising the relationship between ETp and S. Various assumptions were made throughout the task including a reasonable value for the storage of water in soil based on location and starting time of the simulation. The soil depth was assumed to be 785m, wilting point at 0.12, saturation 0.4 and field capacity at 0.33 (all values in units of m^3 m^-3). Regarding the wilting point, it was believed that once the wilting point was achieved, water cannot be further depleted from the water balance model and once the storage was full, no further water can enter the saturated soil. Parameters in the water balance models such as field capacity, total size and wilting point were tested by individually analysing their response to the model. Moreover, the task regarding calibration and validation was influential to the validity of this task and the standard split-sample test was used which allowed for the utilisation of 0.33-0.5 of the data for calibration and the others for validation. The Monte-Carlo simulation approach was used where the model was run at least 100 times with each combination of parameters that were used because of this. The Nash-Sutcliffe coefficient was then stored in a 100×100 matrix each time thus calculating the objective function which was then run with the best value amongst the whole set of runs. After receiving the Bureau of Meteorology’s soil moisture data for the same period, the found runoff and storage terms were compared for the two methods. With this information, the model was thoroughly analysed for validity and accuracy whilst creating different runs. Water Balance Model The water balance model in this report is based on Equation 1, where P is precipitation (mm/day), ETa is evapotranspiration (mm/day), Rt is the total runoff (mm/day). Precipitation values are known from rainfall observation data, however Eta and Rt are unknown. 1.1 Finding ETa To find the contributing daily value of actual evapotranspiration (ETa), potential evapotranspiration (ETp) data was sourced from the Australian Bureau of Meteorology. ETp can be defined as the potential amount of evapotranspiration that may occur, assuming that conditions are neither energy nor water limited. In practice, it is unlikely that both conditions will be reached, thus the ETa must be determined, taking into consideration the limiting factors for each day. ETa can be found from Equation 1.2. Thus, to find ETa, it is required to first find the value of SI, by using Equation 1.3. The field capacity is known to be 0.33m3m-3 and the wilting point is known to be 0.12 m3m-3. Soil moisture can be found using Equation 1.4. Soil depth is known to be 0.785m, however the daily storage values remain unknown and will be found through running the model. 1.2 Finding Total Runoff The total daily runoff in the catchment consists of both surface runoff and baseflow contributions. The total runoff can be defined by Equation 1.3.1, where Rs is surface runoff and Rb is baseflow. Surface runoff (Rs) can be found through Equation 1.3.2, where RC is runoff coefficient and P is precipitation. The runoff coefficient, RC, must be calibrated using the water balance model. Baseflow (Rb) can be found through Equation 1.3.3. Daily storage data, S, can be found through running the water balance model, however the model must be calibrated to find k. The total runoff in the catchment increases beyond these values when the soil is at saturation and there is further excess runoff. Excess runoff has been calculated by Equation 1.2.4, when storage is higher than the maximum storage. Water Balance Model Calibration The water balance model must be calibrated such that a constant value for both RC and k are determined. Once calibrated, the model can be used to produce daily change in storage data for the Melbourne catchment, including the daily runoff and actual evapotranspiration. To calibrate the model, it must first be initialised with an arbitrary storage value. The initial storage value chosen was the midpoint of the wilting point storage and maximum saturation storage, as this represents the midrange value for storage in the model. The model has been limited based on maximum and minimum storage. When storage is higher than the maximum storage of 0.45m3/m3, no more water can enter the soil matrix. Thus, excess water is converted to runoff and added to the daily runoff value. The minimum storage of the model is set to 0, thus if storage of a particular day is negative, it will be set to 0. For evapotranspiration to occur, the storage must be above the wilting point. Thus, the daily evapotranspiration is set to 0 if the storage is less than or equal to the wilting point. The Monte-Carlo simulation approach was employed in the model, whereby 100 evenly spaced values of k from 0 to 1 and 100 evenly spaced values of RC from 0.09-0.71 were trialled against the objective function, with each combination of both considered. The RC range of 0.09-0.71 was chosen as Melbourne has a temperate climate with wet winters, classified as Cs, which has a 10th percentile runoff coefficient of 0.09 and a 90th percentile coefficient of 0.71. However, upon trialling the simulation, it was found that the RC given from the approach was 0.09, the absolute lower bound of the range. Thus, the range was expanded from 0-1 to ensure that the full range of possible RC values were tested. The model then utilised the Nash-Sutcliffe Efficiency (NSE) Coefficient as the objective function to determine the sensitivity of the model for different values of k and RC. The NSE compares given runoff values from BoM and the runoff values obtained from the model, for each combination of k and RC, using Equation 1.4.1. The results of the NSE were then plotted against each k and RC value to produce a surface, as seen in Figure 1.4.1, and contour plot, as seen in Figure 1.4.2, to determine an appropriate value of k and RC for the model. Figure 1.4.1: NSE Surface Plot Figure 1.4.2: NSE Contour Plot From the two plots, a k value of 0.0101 and an RC value of 0.0606 were chosen for the model, as this point represented the peak of the graph in Figure 1.4.1. These values were then validated against precipitation data from 2011 to 2016. Water Balance Model Validation The calibrated parameters from the above section were tested against an independent data set to determine whether the parameters found were accurate in producing a water balance model for the Melbourne catchment beyond the initial calibration range of 2005-2010. The water balance model was applied to precipitation data from the Melbourne catchment for 2011-2016 and then compared with data provided from the Bureau of Meteorology for runoff and soil moisture. Figure 1.5.1 shows a plot of Observed Runoff from BoM and Calculated Runoff from the simulation for 2011-2016. The graph shows that the simulation follows the same peaks and troughs as the observed runoff through the period. The calculated runoff does not experience the same extreme highs as the observed runoff. This may suggest that the way in which excess runoff has been calculated in the simulation may be underestimating the actual runoff occurring. This may have occurred if the maximum saturation of the catchment was overestimated, thus the excess runoff would be underestimated. Figure 1.5.1 Validation Plot for the two Runoff values Figure 1.5.2: Comparison of the two Storage values http://www.bom.gov.au/water/landscape/#/ma/Actual/year/-27.73/142.65/3/Point/Separate/-37.5/144.9/2005/12/31/ http://www.bom.gov.au/water/landscape/#/sm/Actual/day/-36.23/146.59/6/Point/Separate/-37.8/145/2005/1/1/ FOR BOM ETP DATA Conclusion From this report, it can be concluded that the calibrated parameters of k and RC for the Melbourne catchment provide an invalid representation of the runoff and soil moisture when applied to 2011-2016 precipitation and potential evapotranspiration data. Thus, it has been determined that the presented method of calibration in this report must be further refined to provide parameter estimations that better model the hydrological climate of the Melbourne catchment. Appendix A – Calibration & Validation Code clear all; close all; clc; load(‘qtot_full_A2_MEL.mat’); load(‘rain_A2_MEL.mat’); GivenPrec = BoM_other(1:1825); Givenrunoff = BoM_runoff(1:1825); load(‘sm_full_A2_MEL.mat’); GivenSm = BoM_other(1:1825); data05 = readtable(‘ma_wet_-37.8_145_2005_Actual.csv’); data06 = readtable(‘ma_wet_-37.8_145_2006_Actual.csv’); data07 = readtable(‘ma_wet_-37.8_145_2007_Actual.csv’); data08 = readtable(‘ma_wet_-37.8_145_2008_Actual.csv’); data09 = readtable(‘ma_wet_-37.8_145_2009_Actual.csv’); data010 = readtable(‘ma_wet_-37.8_145_2010_Actual.csv’); ObsDates = dates(1:1825); ValidationDates = dates(2191:4015); fpath = ‘C:UserskokweOneDriveDesktopCIV3285’; ETpdaily = table2array([data05(:,2);data06(:,2);data07(:,2);data08(:,2);data09(:,2)]); %Given parameters m^3 / m^3 wp = 0.12; fc = 0.33; depth = 785; sat = 0.45; Swp= wp*depth; Satdepth = sat*depth; Depthdiff = Satdepth – Swp; %Initializing Matrix S = zeros(100,100,size(Givenrunoff,1)); %Storage SI = zeros(size(Givenrunoff,1),1); S(:,:,1) = 0.5049; %units in m Runoff = zeros(100,100,size(Givenrunoff,1)); ETa = zeros(100,100,size(Givenrunoff,1)); dS = zeros(100,100,size(Givenrunoff,1)); NSE = zeros(100,100); Runoff(:,:,1) = 0; rangeofrc = linspace(0,1,100); %Runoff coefficient rangeofk = linspace(0,1,100); for day=1:size(Givenrunoff,1) for k=1:100 for rc=1:100 Surfacerunoff = rangeofrc(k) * GivenPrec(day); Baseflow = rangeofk(rc) * S(k,rc,day); if S(k,rc,day) < 0 %Making sure Storage is not negative as it isn’t realistic S(k,rc,day)= 0; Runoff(k,rc,day)=Surfacerunoff; elseif S(k,rc,day)> Depthdiff %Making sure Storage does not go beyond the available depth Runoff(k,rc,day)= rangeofk(rc)*(Depthdiff)+ Surfacerunoff + S(k,rc,day) – (Depthdiff); S(k,rc,day)= Depthdiff; else Runoff(k,rc,day)= Baseflow +Surfacerunoff; end %Calculating change in Storage per day SI=(S(k,rc,day)/depth)/(fc-wp); ETa(k,rc,day)=min(ETpdaily(day),SI*ETpdaily(day)); dS(k,rc,day)=GivenPrec(day) – ETa(k,rc,day) – Runoff(k,rc,day); S(k,rc,day+1)= dS(k,rc,day) + S(k,rc,day); end end end % For Objective Function using NSE for k=1:100 for rc=1:100 Requiredrunoff = squeeze(Runoff(k,rc,1:size(Givenrunoff,1))); Averagerunoff = mean(Givenrunoff(1:size(Givenrunoff,1))); ReqGivenrunoff = Givenrunoff(1:size(Givenrunoff,1)); NSE(k,rc)=1-sum((Requiredrunoff-ReqGivenrunoff).^2) / sum((ReqGivenrunoff-Averagerunoff).^2); end end %Finding the best NSE with the corresponding K and rc values [rcindex,kindex] = find(NSE==max(max(NSE))); Koptimum = rangeofk(kindex); RCoptimum = rangeofrc(rcindex); S_validation(1)=S(rcindex,kindex,size(Givenrunoff,1)); % 3D Surface Plot surf(rangeofk,rangeofrc,NSE) xlabel(‘k’) ylabel(‘rc’) zlabel(‘NSE values’) title(‘NSE values based on varying K and runoff coefficients’) print(‘-dpng’,’-r200′,fullfile(fpath,’NSE’)); figure % 2D Contour Graph contour(rangeofk,rangeofrc,NSE) xlabel(‘k’) ylabel(‘rc’) title(‘Contours of varying K and runoff coefficients to NSE’) print(‘-dpng’,’-r200′,fullfile(fpath,’Contours’)); %Initiailising Matrixes for the Validation Part Runoff_valid = zeros(size(Givenrunoff,1),1); ETa_validation = zeros(size(Givenrunoff,1)); dS_validation = zeros(size(Givenrunoff,1)); % Determining S for validation for day = 1:size(Givenrunoff,1) Surfacerunoff_valid = RCoptimum * GivenPrec(day); Baseflow_valid = Koptimum * S_validation(day); if S_validation(day) < 0 S_validation(day)=0; Runoff_valid(day)= Surfacerunoff_valid ; elseif S_validation(day)> Depthdiff Runoff_valid(day)= Koptimum*Depthdiff + Surfacerunoff_valid + S_validation(day)- Depthdiff; S_validation(day)= Depthdiff; else Runoff_valid(day)= Baseflow_valid + Surfacerunoff_valid; end %ETa calculation SMcalc(day) = S_validation(day)/depth; SI=(S_validation(day)/depth)/(fc-wp); ETa_validation(day)=min(ETpdaily(day),SI*ETpdaily(day)); dS_validation(day)=Givenrunoff(day)-ETa_validation(day)- Runoff_valid(day); S_validation(day+1)= dS_validation(day)+ S_validation(day); end %Runoff validation figure plot(ValidationDates,Givenrunoff) hold on plot(ValidationDates,Runoff_valid) xlabel(‘Dates’) ylabel(‘Runoff’) legend(‘Observed Runoff’,’Calculated Runoff’) print(‘-dpng’,’-r200′,fullfile(fpath,’Runoff’)); %Storage Validation figure plot(SMcalc) hold on plot(GivenSm) xlabel(‘Dates’) ylabel(‘Storage’) legend(‘Calculated Storage’,’Observed Storage’) print(‘-dpng’,’-r200′,fullfile(fpath,’Storage’));


Leave a Reply

Your email address will not be published. Required fields are marked *